Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
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')
Пример #4
0
    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
Пример #5
0
    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)
Пример #6
0
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]
Пример #7
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)
Пример #8
0
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