Esempio n. 1
0
class FileView(AdminView):
    def _list_thumbnail(view, context, model, name):
        if model.file_type.startswith("image"):
            return Markup('<img src="%s">' % model.url)
        return Markup(
            '<a href="%s" target="_blank">%s</a>' % (model.url, model.name))

    def _prefix_name(obj, file_data):
        part = op.splitext(file_data.filename)
        obj.name = secure_filename('%s%s' % part)
        obj.file_type = file_data.content_type
        obj.size = gen_size(file_data)
        obj.hash = gen_hash(file_data)
        file_data.seek(0)
        return obj.relpath

    column_filters = ["file_type", "path.name"]
    column_editable_list = ["name", "path"]
    column_searchable_list = ["name"]
    column_exclude_list = ["updated_at"]
    column_formatters = {'hash': _list_thumbnail}
    form_excluded_columns = ['hash', "name", "file_type", "size"]

    form_extra_fields = {
        "filename": form.FileUploadField(
            "File",
            namegen=_prefix_name,
            base_path=config.UPLOAD_FOLDER,
            allowed_extensions=config.UPLOAD_ALLOWED_EXTENSIONS,
        )
    }
Esempio n. 2
0
class FileModelView(SecureModelView):
    """ModelView for files."""

    edit_template = "/admin/edit_file.html"
    create_template = "/admin/edit_file.html"
    list_template = "/admin/list_file.html"

    form_extra_fields = {
        "file": form.FileUploadField(
            "Datei", base_path=FILE_DIR
        )
    }

    def on_model_change(self, form, model, is_created):

        if form.file.data is None:
            if request.form["filename"] != request.form["old_filename"]:
                os.rename(
                    files.path(request.form["old_filename"]),
                    files.path(request.form["filename"])
                )

        else:
            if form.filename.data != form.file.data.filename:
                os.rename(
                    files.path(form.file.data.filename),
                    files.path(form.filename.data)
                )
Esempio n. 3
0
class DocumentView(AdminModelView):

    form_extra_fields = {
        "filename": form.FileUploadField(
            "Image",
            base_path=config("UPLOADED_DOCUMENTS_DEST"),
            namegen=_imagename_uuid1_gen,
        )
    }
Esempio n. 4
0
    class FileView(AdminModelView):

        column_list = ["file", "name", "filename", "size", "url"]

        form_extra_fields = {
            "filename":
            form.FileUploadField(
                "File",
                base_path=app.config["UPLOADED_ALL_DEST"],
                namegen=_imagename_uuid1_gen,
            )
        }
Esempio n. 5
0
class PostAdminView(AdminMixin, BaseModelView, sqla.ModelView):
    def _list_thumbnail(view, context, model, name):
        if not model.path:
            return ''

        url = url_for('static',
                      filename=os.path.join('img/post_image/', model.path))

        if model.type in ['jpg', 'jpeg', 'png', 'svg', 'gif']:
            return Markup('<img src="%s" width="100">' % url)

    column_formatters = {'path': _list_thumbnail}

    form_extra_fields = {
        'file': form.FileUploadField('file',
                                     base_path='static/img/post_image/')
    }

    def _change_path_data(self, _form):
        try:
            storage_file = _form.file.data

            if storage_file is not None:
                hash = random.getrandbits(128)
                ext = storage_file.filename.split('.')[-1]
                path = '%s.%s' % (hash, ext)

                storage_file.save(
                    os.path.join(app.config['UPLOADED_PATH'], path))

                _form.name.data = _form.name.data or storage_file.filename
                _form.path.data = path
                _form.type.data = ext

                del _form.file

        except Exception as ex:
            pass

        return _form

    def edit_form(self, obj=None):
        return self._change_path_data(
            super(PostAdminView, self).edit_form(obj))

    def create_form(self, obj=None):
        return self._change_path_data(
            super(PostAdminView, self).create_form(obj))

    form_columns = [
        'title', 'short_description', 'body', 'tags', 'path', 'type', 'file'
    ]
    column_searchable_list = ['id']
Esempio n. 6
0
class StorageAdminModel(sqla.ModelView):
    def _list_thumbnail(view, context, model, name):
        if not model.path:
            return ''

        url = url_for('static', filename=os.path.join('storage/', model.path))

        if model.type in ['jpg', 'jpeg', 'png', 'svg', 'gif']:
            return Markup('<img src="%s" width="100">' % url)

    column_formatters = {'path': _list_thumbnail}

    form_extra_fields = {
        'file': form.FileUploadField('file', '', app.config['STORAGE'])
    }

    def _change_path_data(self, _form):

        try:
            storage_file = _form.file.data

            if storage_file is not None:
                hash = random.getrandbits(128)
                ext = storage_file.filename.split('.')[-1]
                path = '%s.%s' % (hash, ext)

                storage_file.save(os.path.join(app.config['STORAGE'], path))

                _form.name.data = _form.name.data or storage_file.filename
                _form.path.data = path
                _form.type.data = ext

                del _form.file

        except Exception as ex:
            pass
        return _form

    def edit_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).edit_form(obj))

    def create_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).create_form(obj))
Esempio n. 7
0
class SongCustomAdminView(ModelView):
    form_columns = ['name', 'author', 'difficulty', 'lyrics', 'language', 'song_file']

    def is_accessible(self):
        return current_user.has_role('admin')

    def inaccessible_callback(self, name, **kwargs):
        return redirect(url_for('general.index', next=request.url))

    def on_model_change(self, form, model, is_created):
        model.path = form.song_file.data.filename
        return super(SongCustomAdminView, self).on_model_change(form, model, is_created)

    form_extra_fields = {
        'song_file': form.FileUploadField('Song file',
                                          base_path='karaoke_online_hakaton/static/songs',
                                          namegen=generate_song_name)
    }
Esempio n. 8
0
class FileView(AdminView):
    # Override form field to use Flask-Admin FileUploadField
    # form_overrides = {
    #     'video_name': form.FileUploadField('File')
    # }

    # Pass additional parameters to 'path' to FileUploadField constructor
    # form_args = {
    #     'img_path': {
    #         'label': 'File',
    #         'base_path': MEDIA_PATH,
    #         'allow_overwrite': False
    #     }
    # }

    form_extra_fields = {
        'video_name': form.FileUploadField('File', base_path=MEDIA_PATH),
    }
    form_excluded_columns = ['video_url', 'content_html']
Esempio n. 9
0
class ProjectModelView(ModelView):

    form_extra_fields = {
        "photo": form.FileUploadField("photo", base_path="static/img")
    }

    def _change_path_data(self, _form):
        try:
            storage_file = _form.file.data

            if storage_file is not None:
                hash = random.getrandbits(64)
                ext = storage_file.filename.split(".")[-1]
                path = "%s.%s" % (hash, ext)

                print(path)

                storage_file_save(os.path.join(app.config["STORAGE"], path))
                _form.photo.data = path

                del _form.file
        except Exception as ex:
            pass

        return _form

    def edit_form(self, obj=None):
        return self._change_path_data(
            super(ProjectModelView, self).edit_form(obj))

    def create_form(self, obj=None):
        return self._change_path_data(
            super(ProjectModelView, self).create_form(obj))

    def is_accessible(self):
        if current_user.is_authenticated:
            return current_user.login == "root"
        else:
            pass
Esempio n. 10
0
File: av.py Progetto: Etlid/web
class StorageAdminModel(sqla.ModelView):
    form_extra_fields = {
        'file': form.FileUploadField('file')
    }

    def _change_path_data(self, _form):
        try:
            storage_file = _form.file.data

            if storage_file is not None:
                hash = random.getrandbits(128)
                ext = storage_file.filename.split('.')[-1]
                path = '%s.%s' % (hash, ext)

                storage_file.save(
                    os.path.join(app.config['STORAGE'], path)
                )

                _form.name.data = _form.name.data or storage_file.filename
                _form.path.data = path
                _form.type.data = ext

                del _form.file

        except Exception as ex:
            pass

        return _form

    def edit_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).edit_form(obj)
        )

    def create_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).create_form(obj)
        )
Esempio n. 11
0
 class TestForm(form.BaseForm):
     upload = form.FileUploadField('Upload', base_path=path)
Esempio n. 12
0
 class TestForm(form.BaseForm):
     upload = form.FileUploadField('Upload',
                                   base_path=path,
                                   relative_path='inner/')
 class TestNoOverWriteForm(form.BaseForm):
     upload = form.FileUploadField("Upload",
                                   base_path=path,
                                   allow_overwrite=False)
 class TestForm(form.BaseForm):
     upload = form.FileUploadField("Upload",
                                   base_path=path,
                                   relative_path="inner/")
Esempio n. 15
0
class StorageAdminModel(RootView):
    list_template = 'import.html'
    form_extra_fields = {'file': form.FileUploadField('file')}

    def chanse(self, names, type):
        try:
            if type == "int":
                if str(names) == "nan":
                    return 0
                return int(names)
            elif type == "str":
                if str(names) == "nan":
                    return "'"
                return str(names)
            else:
                if str(names) == "nan":
                    return []
                return list(names.split(","))
        except Exception as e:
            print(e)

    # def _change_path_data(self, _form):
    #     try:
    #         storage_file = _form.file.data
    #
    #         if storage_file is not None:
    #             hash = random.getrandbits(128)
    #             ext = storage_file.filename.split('.')[-1]
    #             path = '%s.%s' % (hash, ext)
    #
    #             storage_file.save(
    #                 os.path.join("files", path)
    #             )
    #
    #             _form.name.data = path
    #             _form.type.data = ext
    #             del _form.file
    #
    #             df = pd.read_excel( os.path.join("files", path), sheet_name='Tablib Dataset')
    #
    #             for i in range(0, len(df.values.tolist())):
    #                 try:
    #                     bot = StorageAdminModel.chanse(self, df['Bot'][i], "str")
    #                     bot = ''.join(bot)
    #                     user_id =StorageAdminModel.chanse(self, df['User Id'][i], "int"),
    #                     user_id = user_id[0]
    #                     username = StorageAdminModel.chanse(self, df['Username'][i], "str"),
    #                     username = ''.join(username)
    #                     first_name =StorageAdminModel.chanse(self, df['First Name'][i], "str") ,
    #                     first_name = ''.join(first_name)
    #                     last_name =StorageAdminModel.chanse(self, df['Last Name'][i], "str") ,
    #                     last_name = ''.join(last_name)
    #                     state = StorageAdminModel.chanse(self, df['State'][i], "str"),
    #                     state = ''.join(state)
    #                     is_admin =StorageAdminModel.chanse(self, df['Is Admin'][i], "str") ,
    #                     is_admin = ''.join(is_admin)
    #                     if is_admin == 'True':
    #                         is_admin = True
    #                     else:
    #                         is_admin = False
    #                     city = StorageAdminModel.chanse(self, df['City'][i], "str"),
    #                     city = ''.join(city)
    #                     good = StorageAdminModel.chanse(self, df['Good'][i], "str"),
    #                     good = ''.join(good)
    #                     district = StorageAdminModel.chanse(self, df['District'][i], "str"),
    #                     district = ''.join(district)
    #                     payment = StorageAdminModel.chanse(self, df['Payment'][i], "str"),
    #                     payment = ''.join(payment)
    #                     code = StorageAdminModel.chanse(self, df['Code'][i], "str"),
    #                     code = ''.join(code)
    #                     clicked_goods = StorageAdminModel.chanse(self, df['Clicked Goods'][i], "list"),
    #                     ordered_goods = StorageAdminModel.chanse(self, df['Ordered Goods'][i], "list"),
    #                     balance =StorageAdminModel.chanse(self, df['Balance'][i], "int"),
    #                     balance= balance[0]
    #                     tax = StorageAdminModel.chanse(self, df['Tax'][i], "int"),
    #                     tax = tax[0]
    #                     wallet = StorageAdminModel.chanse(self, df['Wallet'][i], "str"),
    #                     wallet = ''.join(wallet)
    #                     datetime = StorageAdminModel.chanse(self, df['Datetime'][i], "str")
    #                     datetime = ''.join(datetime)
    #                     try:
    #                         bots = BotProfile.objects.get(name=bot)
    #                         # print(bots, "@@@@@")
    #                     except:
    #                         bots = None
    #                     try:
    #                         city = City.objects.get(name=city)
    #                         # print(city, "@@@@@")
    #                     except:
    #                         city = None
    #                     try:
    #                         good = Good.objects.get(name=good)
    #                         # print(good, "@@@@@")
    #                     except:
    #                         good = None
    #                     try:
    #                         cli = []
    #                         clicked_goods = (list(clicked_goods)[0])
    #                         if len(clicked_goods) == 1:
    #                             cli.append(Good.objects.get(name=clicked_goods[0]))
    #                         else:
    #                             for i in clicked_goods:
    #                                 try:
    #                                     cli.append(Good.objects.get(name=i.replace(' ', '')))
    #                                 except Exception as e:
    #                                     print(e)
    #                                     pass
    #                         # print(cli, "@@@@@@!")
    #                         if cli == []:
    #                             cli = None
    #                     except Exception as e:
    #                         print(e)
    #                         cli = None
    #                     try:
    #                         orde = []
    #                         ordered_goods = (list(ordered_goods)[0])
    #                         if len(ordered_goods) == 1:
    #                             orde.append(Good.objects.get(name= ordered_goods[0]))
    #                         else:
    #                             for i in ordered_goods:
    #                                 try:
    #                                     # print(i)
    #                                     orde.append(Good.objects.get(name= i.replace(' ', '')))
    #                                 except Exception as e:
    #                                     print(e)
    #                                     pass
    #                         # print(orde, "@@@@@@!!")
    #                         if orde == []:
    #                             orde = None
    #                     except:
    #                         orde = None
    #                     try:
    #                         district = District.objects.get(name=district)
    #                         # print(district, "@@@@@")
    #                     except:
    #                         district = None
    #                     try:
    #                         payment = Payment.objects.get(payment_name=payment)
    #                         # print(payment, "@@@@@")
    #                     except:
    #                         payment = None
    #                     try:
    #                         User(
    #                             bot=bots,
    #                             user_id=user_id,
    #                             username=username,
    #                             first_name=first_name,
    #                             last_name=last_name,
    #                             state=state,
    #                             is_admin=is_admin,
    #                             city=city,
    #                             good=good,
    #                             district=district,
    #                             payment=payment,
    #                             code=code,
    #                             clicked_goods=cli,
    #                             ordered_goods=orde,
    #                             balance=balance, tax=tax,
    #                             wallet=wallet,
    #                             datetime=datetime).save()
    #                         flash('Отправлено', category='success')
    #                     except Exception as e:
    #                         print(e)
    #                         User(
    #                             # bot=bot,
    #                             user_id=user_id,
    #                             username=username,
    #                             first_name=first_name,
    #                             last_name=last_name,
    #                             state=state,
    #                             is_admin=is_admin,
    #                             # city=city,
    #                             # good=good,district=district, payment=payment,
    #                              code=code,
    #                             # clicked_goods=clicked_goods,
    #                             #  ordered_goods=ordered_goods,
    #                             balance=balance,tax=tax,
    #                              wallet=wallet,
    #                              datetime=datetime).save()
    #                         flash('Отправлено без связанных полеи', category='success')
    #                 except Exception as e:
    #                     print(e)
    #
    #
    #     except Exception as ex:
    #         print(ex)

    #     return _form

    def _change_path_data(self, _form):
        try:
            storage_file = _form.file.data

            if storage_file is not None:
                hash = random.getrandbits(128)
                ext = storage_file.filename.split('.')[-1]
                path = '%s.%s' % (hash, ext)

                storage_file.save(os.path.join("files", path))

                _form.name.data = path
                _form.type.data = ext
                del _form.file

                df = pd.read_excel(os.path.join("files", path),
                                   sheet_name='Tablib Dataset')

                for i in range(0, len(df.values.tolist())):
                    try:

                        user_id = StorageAdminModel.chanse(
                            self, df['User Id'][i], "int"),
                        user_id = user_id[0]
                        first_name = StorageAdminModel.chanse(
                            self, df['First Name'][i], "str"),
                        first_name = ''.join(first_name)
                        last_name = StorageAdminModel.chanse(
                            self, df['Last Name'][i], "str"),
                        last_name = ''.join(last_name)

                        try:
                            User(user_id=user_id,
                                 first_name=first_name,
                                 last_name=last_name).save()
                            flash('Отправлено', category='success')
                        except Exception as e:
                            print(e)
                            flash('Не валидные данные', category='danger')
                    except Exception as e:
                        print(e)
        except Exception as ex:
            print(ex)

        return _form

    def edit_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).edit_form(obj))

    def create_form(self, obj=None):
        return self._change_path_data(
            super(StorageAdminModel, self).create_form(obj))
Esempio n. 16
0
class ContentView(ModelView):
    column_editable_list = [
        'title',
    ]
    column_searchable_list = [
        'title',
        'subtitle',
    ]
    column_filters = [
        'title',
        'id',
        'subtitle',
    ]
    column_list = [
        "id", "title", "subtitle", "cover_art", "script", "source", "audio",
        "other", "download"
    ]
    # edit_modal = True
    can_export = True
    page_size = 50
    extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']
    can_view_details = True
    column_display_pk = True
    column_hide_backrefs = False
    column_formatters = {
        "cover_art":
        lambda v, context, model, name: model.cover_art.url,
        "source":
        lambda v, context, model, name: enumerate_objects(model.source.all()),
        "audio":
        lambda v, context, model, name: enumerate_objects(model.audio.all()),
        "other":
        lambda v, context, model, name: enumerate_objects(model.other.all()),
        "download":
        lambda v, context, model, name: enumerate_objects(model.download.all()
                                                          ),
    }

    inline_models = (
        Source,
        Audio,
        Other,
        Download,
    )
    column_editable_list = [
        'title',
    ]
    can_export = True

    extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']

    form_overrides = {
        'cover_art': form.FileUploadField,
        'script': CKTextAreaField
    }

    # Pass additional parameters to 'path' to FileUploadField constructor
    form_extra_fields = {
        'cover_art': form.FileUploadField(base_path=tempfile.gettempdir())
    }

    def __init__(self, *args, **kwargs):
        model = Content
        session = db.session
        super().__init__(model, session, *args, **kwargs)
Esempio n. 17
0
def attach_file_field(path="file", **kwargs):
    return form.FileUploadField(base_path=f"static/{path}/",
                                **kwargs,
                                relative_path=path)