|
|
- from api.modules import utils
-
- from flask import Flask, request,Response
- from flask_restful import Resource, Api, abort
-
- import json
- import os
- import base64
- from PIL import Image
- import cv2
- from io import BytesIO
- import numpy as np
-
- app = Flask(__name__)
- api = Api(app)
-
- db_path = os.path.join(app.root_path, 'databases', 'denunciations.json')
- with open(db_path, 'r') as f:
- denunciations = json.load(f)
-
- users_path = os.path.join(app.root_path, 'databases', 'users.json')
- with open(users_path, 'r') as f:
- users = json.load(f)
-
- def readb64(base64_string):
- sbuf = BytesIO()
-
- sbuf.write(base64.b64decode(base64_string))
- pimg = Image.open(sbuf)
- return cv2.cvtColor(np.array(pimg), cv2.COLOR_RGB2BGR)
-
- class Alert(Resource):
-
- def post(self):
- args = request.form
-
- cvimg = readb64(args["photo"])
- username= ""
- for user in users:
- if users[user]["id"] == args["id"]:
- username=user
- break
- trust = int(users[username]["trustability"])
- if trust > 20 or args["accepted"] == "true":
- return {"success":True}
- else:
- return {"success":False,"penalty":"{}".format(100*(20-trust))}
-
-
- class Denunciations(Resource):
- def get(self):
- resp = Response(json.dumps([
- {
- 'id' : v['id'],
- 'info': v['info'],
- 'priority': v['priority'],
- 'location' : v['location']
- }
- for v in denunciations
- ]
- ))
- resp.headers['Access-Control-Allow-Origin'] = '*'
-
- return resp
-
- class Denounce(Resource):
- def post(self):
- args = request.form
- reporter = args['id']
- if utils.find_by_id(users.values(), reporter):
- denunciation_info = args['info']
- denunciation_priority = args['priority']
- denunciation_location = {
- "latitude": args['latitude'],
- "longitude": args['longitude']
- }
-
- denunciation = {
- 'id': len(denunciations) + 1,
- 'reporter': reporter,
- 'info': denunciation_info,
- 'priority': denunciation_priority,
- 'location': denunciation_location
- }
-
- denunciations.append(denunciation)
-
- with open(db_path, 'w') as f:
- json.dump(denunciations, f, indent=4)
-
- return denunciation
-
- else:
- return {'error': 'User doesn\'t exists'}
|