def post(self): if 'file' not in request.files: return {'No File Sent'}, 404 file = request.files['file'] if file.filename == '': return {'No File Selected'}, 404 if file: body = request.form.to_dict() file_ext = None scan = None if 'fileExt' in body: file_ext = body['fileExt'] del body['fileExt'] if 'scan' in body: scan = True del body['scan'] form = Storage(**body) form.save(file=file, fileExt=file_ext, scan=scan) send_email_async(get_user_email(), 'notification', get_user_name(), notif=f"Your document {form.fileName} has been successfully uploaded and ready to " f"be used.Please check E-Daftar portal for further updates.") return {'id': str(form.id)}, 200 else: return {'Error: Invalid Document'}, 405
def get(self, doc_id): if 'download' in request.args: q = Storage.objects(Q(id=doc_id) & (Q(creator=get_jwt_identity()['_id']['$oid']) | Q(visibility='public'))) return send_from_directory(directory=UPLOAD_FOLDER, filename=q[0].file) return Response(Storage.objects(Q(id=doc_id) & (Q(creator=get_jwt_identity()['_id']['$oid']) | Q(visibility='public'))).get().to_json(), mimetype="application/json", status=200)
def data_encrypt(request): if request.method == "POST": form = request.POST hash_data = form['data'] u_id = form['user_id'] u = User_conf(user_id=u_id) u.save() #save hash and image meta f = Fernet(b'W4mdwJuyFWo67WzrPu3Z0l79uTu95UVI5yEbstkLmw4=') encryption_suite = f.encrypt(str.encode(hash_data)) m = hashlib.md5() m.update(encryption_suite) l = 10 start = 0 while start < len(encryption_suite): ur = Image.objects.filter(is_used=0) ur.is_used = 1 ur = list(ur)[0] url = os.path.join( r"C:\Users\Gaurav\Desktop\web-d\projects\hackathons\vihaan17\venv\backend\static\img\pic_folder", ) end = start + l - 1 if end > len(encryption_suite): end = len(encryption_suite) - 1 i, j = blobdetector(url) k = i matrix = encode(url, encryption_suite[start:end + 1], i, j) ss = Storage(img_id=ur.id, i=i, j=j, k=k, user=u.id, _hash=m) return render(request, 'success.html') return render(request, 'sub_data.html')
def delete(self, doc_id): s = Storage.objects(Q(id=doc_id) & Q(creator=get_jwt_identity()['_id']['$oid'])).get() file_name = s.fileName s.delete() send_email_async(get_user_email(), 'notification', get_user_name(), notif=f"Your document {file_name} has been deleted successfully.") return 'Success', 200
def get(self): q = Storage.objects(Q(creator=get_jwt_identity()['_id']['$oid']) | Q(visibility='public') | Q(visibility=get_user_role())).order_by('-timestamp') if 'limit' in request.args: limit = int(request.args['limit']) return Response(q[:limit].to_json(), mimetype="application/json", status=200) elif 'excel' in request.args: return send_from_directory(directory=UPLOAD_FOLDER, filename=export_to_excel(q, get_user_id())) return Response(q.to_json(), mimetype="application/json", status=200)
def get_admin_storage(admin_id: int) -> Storage: """ Ищет хранилище администратора и возвращет объект класса Storage. Если хранилище не было найдено, оно создается Args: admin_id: идентификатор администратора Returns: Storage: объект хранилища пользователя """ if is_user_admin(admin_id): return Storage.get_or_create(id=admin_id)[0]
def update_admin_storage(admin_id: int, **kwargs) -> Storage: """ Обновляет хранилище администратора и возвращает объект хранилища. Args: admin_id: идентификатор администратора **kwargs: поля для обновления Returns: Storage: объект хранилища """ store = Storage.update(**kwargs).where(Storage.id == admin_id) store.execute() logger.debug(f"Хранилище id{admin_id} обновлено с {kwargs}") return db.admin.get_admin_storage(admin_id)
def get_active_group(admin_id: int) -> t.Optional[Group]: """ Возвращает объект активной группы администратора. Если администратор управляет одной группой, возвращается идентификатор группы, которой он принадлежит Args: admin_id: идентификатор администратора Returns: Optional[Group]: объект активной группы """ if is_user_admin(admin_id): if len(get_admin_feud(admin_id)) > 1: return Storage.get_by_id(admin_id).active_group return Administrator.get(student_id=admin_id).group_id