Beispiel #1
0
class UserAdmin(ModelView):
    '''Interface admin de user'''

    def format_user(self, request, user, *args):
        return user.email.split('@')[0]

    column_formatters = {'email': format_user}
    column_list = ['admin', 'email']
    column_labels = {'email': 'User login'}
    column_searchable_list = ['email']
    column_filters = [
        'email',
        'admin',
        filters.FilterLike(
            User.email, 'dominio', options=(
                ('gmail', 'Gmail'), ('uol', 'Uol')
            )
        ),
    ]
    can_edit = False
    can_create = True
    can_delete = True
    # exemple of flask action
    @action('toggle_admin', 'Toggle admin status', 'Are you sure?')
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids))
        for user in users.all():
            user.admin = not user.admin
        db.session.commit()
        flash('Success!', 'success')
Beispiel #2
0
class PostAdmin(sqla.ModelView):
    column_display_pk = True
    column_list = ['id', 'user', 'title', 'date', 'tags', 'background_color', 'created_at',]
    column_editable_list = ['background_color', ]
    column_default_sort = ('date', True)
    column_sortable_list = [
        'id',
        'title',
        'date',
        ('user', ('user.last_name', 'user.first_name')),  # sort on multiple columns
    ]
    column_labels = dict(title='Post Title')  # Rename 'title' column in list view
    column_searchable_list = [
        'title',
        'tags.name',
        'user.first_name',
        'user.last_name',
    ]
    column_labels = {
        'title': 'Title',
        'tags.name': 'tags',
        'user.first_name': 'user\'s first name',
        'user.last_name': 'last name',
    }
    column_filters = [
        'background_color',
        'created_at',
        'user',
        'title',
        'date',
        'tags',
        filters.FilterLike(Post.title, 'Fixed Title', options=(('test1', 'Test 1'), ('test2', 'Test 2'))),
    ]
    can_export = True
    export_max_rows = 1000
    export_types = ['csv', 'xls']

    # Pass arguments to WTForms. In this case, change label for text field to
    # be 'Big Text' and add DataRequired() validator.
    form_args = {
        'text': dict(label='Big Text', validators=[validators.DataRequired()])
    }

    form_ajax_refs = {
        'user': {
            'fields': (User.first_name, User.last_name)
        },
        'tags': {
            'fields': (Tag.name,),
            'minimum_input_length': 0,  # show suggestions, even before any user input
            'placeholder': 'Please select',
            'page_size': 5,
        },
    }

    def __init__(self, session):
        # Just call parent class with predefined model.
        super(PostAdmin, self).__init__(Post, session)
Beispiel #3
0
class UserAdmin(ModelView):
    """Interface admin de user"""

    # def format_user(self, request, user, *args):
    #    return user.email.split("@")[0]
    # column_formatters = {
    #     "email": format_user
    # igual a fç column_formatters
    # }

    column_formatters = {
        "email": lambda s, r, u, *a: Markup(f'<b>{u.email.split("@")[0]}</b>')
    }

    column_list = ["email", "admin"]
    can_edit = False
    can_create = True
    can_delete = True
    column_labels = {"email": "User login"}

    column_searchable_list = ["email"]

    column_filters = [
        "email",
        "admin",
        filters.FilterLike(
            User.email, "dominio", options=(("gmail", "Gmail"), ("uol", "Uol"))
        ),
    ]

    can_edit = False
    can_create = True
    can_delete = True

    @action(
        'toggle_admin',
        'Toggle admin status',
        'Are you sure?'
    )
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids))
        for user in users.all():
            user.admin = not user.admin
        db.session.commit()
        flash(f"{users.count()} usuários alterados com sucesso!", "success")

    @action("send_email", "Send email to all users", "Are you sure?")
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect para um form para escrever a mensagem do email
        # 2) enviar o email
        flash(f"{len(users)} emails enviados.", "success")
Beispiel #4
0
class UserAdmin(ModelView):
    """ users admin interface """
    column_formatters = { 
        "email": lambda s, r, u, *a: u.email.split("@")[0]
        }

    column_list = ["email", "admin"]

    column_searchable_list = ["email"]

    column_filters = [
        "email",
        "admin",
        filters.FilterLike(
            User.email,
            "domain",
            options=(("gmail", "Gmail"), ("hotmail", "Hotmail")
            )

        )
        ]

    can_edit = False
    can_create = True
    can_delete = True

    @action(
        'toggle_admin',
        'Toggle admin status',
        'Are you sure?'
    )
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f" {len(users)} Usuários alterados com sucesso!", "success")

    @action(
        'send_email',
        'Send email to all users',
        'Are you sure?'
    )
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect to a form write the email context
        # 2) send the email
        flash(f" {len(users)} Usuários alterados com sucesso!", "success")
Beispiel #5
0
class UserAdmin(AdminView):
    """Interface admin de user"""

    @event.listens_for(User.password, 'set', retval=True)
    def hash_user_password(target, value, oldvalue, initiator):
        if value != oldvalue:
            return generate_password_hash(value)
        return value

    column_formatters = {
        # "email": lambda s, r, u, *a: Markup(f'<b>{u.email.split("@")[0]}<b>')
    }

    column_list = ['email', 'name', 'admin']

    column_searchable_list = ['email']

    column_filters = [
        filters.FilterLike(
            User.email,
            "Email",
            options=(("gmail", "Gmail"), ("hotmail", "Hotmail"),
                     ("outlook", "Outlook"))
        ),
        'name',
        'admin'
    ]

    can_edit = False

    @action(
        'togle_admin',
        'Togle admin status',
        'Are you sure?'
    )
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f"{len(users)}Usuário alterados com sucesso.", "success")

    @action("send_email", "send Email to all users", "Are you sure?")
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect para um form para escrever a mensagem do email
        # 2) enviar o email
        flash(f"{len(users)} emails enviados com sucesso.", "success")
Beispiel #6
0
class UserView(sqla.ModelView):
    column_exclude_list = ['username', 'password', 'registration_id']

    column_searchable_list = ('first_name', 'last_name', 'username', 'email',
                              'role', 'services.name')

    column_filters = ('services',
                      filters.FilterLike(User.role,
                                         'Role',
                                         options=(('Worker', 'Worker'),
                                                  ('Customer', 'Customer'))))

    form_excluded_columns = ['bookings', 'addresses', 'feedbacks']

    form_choices = {'role': [('Worker', 'Worker'), ('Customer', 'Customer')]}

    form_ajax_refs = {'services': {'fields': (Service.name, )}}
Beispiel #7
0
class PostAdmin(sqla.ModelView):
    column_exclude_list = ['text']
    column_default_sort = ('date', True)
    column_sortable_list = [
        'title',
        'date',
        ('user', ('user.last_name', 'user.first_name')),  # sort on multiple columns
    ]
    column_labels = dict(title='Post Title')  # Rename 'title' column in list view
    column_searchable_list = [
        'title',
        User.first_name,
        User.last_name,
        'tags.name',
    ]
    column_filters = [
        'user',
        'title',
        'date',
        'tags',
        filters.FilterLike(Post.title, 'Fixed Title', options=(('test1', 'Test 1'), ('test2', 'Test 2'))),
    ]

    # Pass arguments to WTForms. In this case, change label for text field to
    # be 'Big Text' and add required() validator.
    form_args = dict(
                    text=dict(label='Big Text', validators=[validators.required()])
                )

    form_ajax_refs = {
        'user': {
            'fields': (User.first_name, User.last_name)
        },
        'tags': {
            'fields': (Tag.name,),
            'minimum_input_length': 0,  # show suggestions, even before any user input
            'placeholder': 'Please select',
            'page_size': 5,
        },
    }

    def __init__(self, session):
        # Just call parent class with predefined model.
        super(PostAdmin, self).__init__(Post, session)
Beispiel #8
0
class UserAdmin(ModelView):
    """Interface admin """

    column_formatters = {"email": format_user}

    column_list = ["email", "admin"]

    column_searchable_list = ["email"]

    column_filters = [
        "email",
        "admin",
        filters.FilterLike(
            User.email,
            "dominio",
            options=(("gmail", "Gmail"), ("uol", "Uol"))
        )]

    #can_create = False
    #can_edit = False
    #can_delete = False

    @action(
        'toggle_admin',
        'toggle admin status',
        'Are you sure?'
    )
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f"{len(users)} usuários alterados com sucesso!", "success")

    @action(
        'send_admin',
        'send email to all users',
        'Are you sure?'
    )
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect para um form para escrever mensagem do email
        # 2) enviar email
        flash(f"{len(users)} emails enviados com sucesso!", "success")
Beispiel #9
0
class UserAdmin(ModelView):
    """Interface admin de user"""
    
    column_formatters = {"email": lambda s, r, u, *a:Markup(f'<b>{u.email.split("@")[0]}</b>')}
    
    column_list =  ["email", "admin"]
    can_edit = False
    can_create = True
    can_delete = True
    column_searchable_list = ["email"]
    column_filters = ["email", 
                    "admin",
                    filters.FilterLike(
                    User.email, 
                    "Dominios email",
                    options=(("gmail", "GMAIL"), ("uol", "UOL"))
                    )]
    
    @action(
        'toggle_admin', 
        'Toggle admin status', 
        'Are you sure?'
    ) 
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
            
        db.session.commit()
        flash(f"{len(users)} Usuarios alterados com Sucesso", "success")
        
        
    @action(
        'send_email',
        'send emails for all users?', 
        'Are yopu sure?'
        
    )
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        flash(f"{len(users)} Usuarios alterados com Sucesso", "success")
        
Beispiel #10
0
class PostAdmin(sqla.ModelView):
    # Visible columns in the list view
    column_exclude_list = ["text"]

    # List of columns that can be sorted. For 'user' column, use User.username as
    # a column.
    column_sortable_list = ("title", ("user", "user.username"), "date")

    # Rename 'title' columns to 'Post Title' in list view
    column_labels = dict(title="Post Title")

    column_searchable_list = ("title", User.username, "tags.name")

    column_filters = (
        "user",
        "title",
        "date",
        "tags",
        filters.FilterLike(
            Post.title,
            "Fixed Title",
            options=(("test1", "Test 1"), ("test2", "Test 2")),
        ),
    )

    # Pass arguments to WTForms. In this case, change label for text field to
    # be 'Big Text' and add required() validator.
    form_args = dict(
        text=dict(label="Big Text", validators=[validators.required()]))

    form_ajax_refs = {
        "user": {
            "fields": (User.username, User.email)
        },
        "tags": {
            "fields": (Tag.name, )
        },
    }

    def __init__(self, session):
        # Just call parent class with predefined model.
        super(PostAdmin, self).__init__(Post, session)
Beispiel #11
0
class UserAdmin(ModelView):
    """ Interface admin de user """
    column_formatters = {"email": format_user}

    column_searchable_list = {"email"}

    column_filters = [
        "email", 
        "admin",
        filters.FilterLike(
            User.email,
            "dominio",
            options=(("gmail", "Gmail"), ("uol", "Uol"))
        )
    ]

    column_list = ["email", "admin"]
    can_edit = False
    can_create = True
    can_delete = True

    @action(
        'toggle_admin',
        'Toggle admin status',
        'Are you sure?'
    )
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f"{len(users)} usuários alterador com sucesso!!", "success")
    
    @action(
        'send_email',
        'Send email to all users',
        'Are you sure?'
    )
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        flash(f"{len(users)} emails enviados", "success")
Beispiel #12
0
class UserAdmin(ModelView):
    column_formatters = {"email": format_user}
    column_list = ["email", "admin"]
    column_searchable_list = ["email"]

    column_filters = [
        "email", "admin",
        filters.FilterLike(User.email,
                           "Dominio",
                           options=(('gmail', 'Gmail'), ('ite', 'ITE')))
    ]

    can_edit = False
    can_create = True
    can_delete = True

    @action("Toggle_admin", "Toggle admin status", "Você tem certeza?")
    def toggle_admin_status(self, ids):
        for user in User.query.filter(User.id.in_(ids)).all():
            user.admin = not user.admin
        db.session.commit()
        flash("Alteração realizada com sucesso!", "success")
Beispiel #13
0
class PostAdmin(sqla.ModelView):
    # Visible columns in the list view
    column_exclude_list = ['text']

    # List of columns that can be sorted. For 'user' column, use User.username as
    # a column.
    column_sortable_list = ('title', ('user', 'user.username'), 'date')

    # Rename 'title' columns to 'Post Title' in list view
    column_labels = dict(title='Post Title')

    column_searchable_list = ('title', User.username, 'tags.name')

    column_filters = ('user', 'title', 'date', 'tags',
                      filters.FilterLike(Post.title,
                                         'Fixed Title',
                                         options=(('test1', 'Test 1'),
                                                  ('test2', 'Test 2'))))

    # Pass arguments to WTForms. In this case, change label for text field to
    # be 'Big Text' and add required() validator.
    form_args = dict(
        text=dict(label='Big Text', validators=[validators.required()]))

    form_ajax_refs = {
        'user': {
            'fields': (User.username, User.email)
        },
        'tags': {
            'fields': (Tag.name, ),
            'minimum_input_length': 0,
            'placeholder': 'Please select',
            'page_size': 5,
        },
    }

    def __init__(self, session):
        # Just call parent class with predefined model.
        super(PostAdmin, self).__init__(Post, session)
Beispiel #14
0
class UserAdmin(ModelView):
    """interface admin de users"""

    #column_formatters = {"email": format_user}
    column_formatters = {
        "email":
        lambda s, r, u, *a: Markup(f'<b>{u.email.split("@")[0] + "@****"}</b>')
    }

    column_list = ["email", "admin"]

    column_searchable_list = ["email"]

    column_filters = [
        "email", "admin",
        filters.FilterLike(User.email,
                           "Dominio",
                           options=(("gmail", "Gmail"), ("uol", "Uol")))
    ]

    can_edit = False
    can_create = True
    can_delete = True

    @action('toggle_admin', 'Toggle admin status', 'Are you sure?')
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f" {len(users)} usuários alterados com sucesso!", "sucess")

    @action('send_email', 'Send email to selected users', 'Are you sure?')
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect para um form para escrever a mensagem
        # 2) enviar o email
        flash(f" {len(users)} emails enviados com sucesso!", "sucess")
Beispiel #15
0
class UserAdmin(ModelView):
    """Interface admin de user"""

    # def format_user(self, request, user, *args):
    #     return user.email.split("@")[0]
    # column_formatters = {
    #     "email": format_user
    # }

    column_formatters = {
        "email": lambda s, r, u, *a: Markup(f'<b>{u.email.split("@")[0]}</b>')
    }

    column_list = ["admin", "email"]

    column_labels = {"email": "User login"}

    column_searchable_list = ["email"]

    column_filters = [
        "email",
        "admin",
        filters.FilterLike(User.email,
                           "dominio",
                           options=(("gmail", "Gmail"), ("uol", "Uol"))),
    ]

    can_edit = False
    can_create = True
    can_delete = True

    @action("toggle_admin", "Toggle admin status", "Are you sure?")
    def toggle_admin_status(self, ids):

        for user in (users := User.query.filter(User.id.in_(ids)).all()):
            user.admin = not user.admin
        db.session.commit()
        flash(f"{len(users)} usuários alterados com sucesso!", "success")
Beispiel #16
0
class UserAdmin(ModelView):
    """Interface admin de user"""

    column_formatters = {
        # "email": format_user
        # se usar o lambda, não precisa da função format_user
        "email": lambda s, r, u, *a: Markup(f'<b>{u.email.split("@")[0]}</b>')
    }

    column_list = ['email', 'admin']

    column_searchable_list = ['email']

    column_filters = [
        'email', 'admin',
        filters.FilterLike(User.email,
                           "domínio",
                           options=(("gmail", "Gmail"), ("uol", "Uol")))
    ]

    can_edit = False
    can_create = True
    can_deleste = True

    @action('toggle_admin', 'Toggle admin status', 'Are you sure?')
    def toggle_admin_status(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        for user in users:
            user.admin = not user.admin
        db.session.commit()
        flash(f"{len(users)} usuários alterados com sucesso!", "success")

    @action('send_email', 'Send email to all users', 'Are you sure?')
    def send_email(self, ids):
        users = User.query.filter(User.id.in_(ids)).all()
        # 1) redirect para um form para escrever a mensagem do email
        # 2) enviar o email
        flash(f"{len(users)} emails enviados!", "success")
Beispiel #17
0
class AdminPostView(sqla.ModelView):
    column_exclude_list = ['body']
    column_sortable_list = (
        'id',
        'title',
        ('user', 'user.username'),
        'timestamp',
    )
    column_list = (
        'id',
        'title',
        'user.username',
        'timestamp',
    )

    column_filters = ('user', 'title', 'timestamp',
                      filters.FilterLike(Post.title,
                                         'Fixed Title',
                                         options=(('test1', 'Test 1'),
                                                  ('test2', 'Test 2'))))

    form_args = dict(
        text=dict(label='Big Text', validators=[validators.required()]))
    form_ajax_refs = {'user': {'fields': (User.username, User.email)}}
Beispiel #18
0
class UserAdmin(sqla.ModelView):

    def is_accessible(self):
        return current_user.is_authenticated and current_user.is_admin

    can_view_details = True  # show a modal dialog with records details
    action_disallowed_list = ['delete', ]

    column_default_sort = ('createdon', True)

    form_widget_args = {
        'id': {
            'readonly': True
        },

    }

    column_list = [
        'email',
        'first_name',
        'last_name',
        'id_num',
        'bank_name',
        'bank_account_num',
        'bank_account_name',
        'role',
        'admin',
        'confirmed',
        'createdon',
        'farms',
        'funded_farms'
    ]
    form_columns = [
        'email',
        'bank_name',
        'bank_account_num',
        'bank_account_name',
        'role',
        'admin',
        'confirmed',
        'createdon',
        'farms',
        'funded_farms',
        'password_hash'
    ]
    column_searchable_list = [
        'email',
        'role',
        'confirmed',
        'bank_name',
        'admin'
    ]
    column_filters = [
        'email',
        'bank_name',
        'bank_account_num',
        'bank_account_name',
        'admin',
        'confirmed',
        'createdon',
        'farms',
        'funded_farms',
        filters.FilterLike(User.role, 'Role', options=(('0', 'Funder'), ('1',
                                                                         'Farmner'))),
    ]
    column_editable_list = ['confirmed', 'admin',]

    # column details list
    column_auto_select_related = True

    # custom filter: each filter in the list is a filter operation (equals, not equals, etc)
    # filters with the same name will appear as operations under the same filter
    column_filters = [
        'createdon',
        'email',
        'bank_name',
        'role',
        'admin',
    ]
Beispiel #19
0
class BookAdmin(sqla.ModelView):
    """The representation of the Book model in the Admin."""

    form_choices = {
        "language": AVAILABLE_LANGUAGES,
    }
    form_widget_args = {"id": {"readonly": True}}
    action_disallowed_list = [
        "delete",
    ]
    can_view_details = True
    column_display_pk = True
    column_list = [
        "id",
        "author",
        "title",
        "publ_date",
        "language",
        "tags",
        "record_created",
        "record_modified",
    ]
    column_details_list = [
        "id",
        "author",
        "title",
        "publ_date",
        "description",
        "language",
        "tags",
        "record_created",
        "record_modified",
    ]
    column_default_sort = ("publ_date", True)
    column_editable_list = ["language"]
    column_sortable_list = [
        "id",
        "title",
        "publ_date",
        (
            "author",
            ("author.last_name", "author.first_name"),
        ),
    ]
    column_searchable_list = [
        "title",
        "tags.name",
        "author.first_name",
        "author.last_name",
    ]
    column_labels = {
        "title": "Title",
        "publ_date": "Publication Date",
        "tags.name": "Tags",
        "author.first_name": "Author's first name",
        "author.last_name": "Last name",
    }
    column_filters = [
        "author.last_name",
        "record_created",
        "record_modified",
        "title",
        "publ_date",
        "tags",
        filters.FilterLike(
            Book.title,
            "Common Title Words",
            options=(("library", "Library"), ("service", "Service")),
        ),
    ]
    can_export = True
    export_max_rows = 1000
    export_types = ["csv", "ods", "xlsx"]
    create_modal = True
    edit_modal = True
    form_columns = [
        "id",
        "author",
        "title",
        "publ_date",
        "description",
        "language",
        "tags",
        "record_created",
        "record_modified",
    ]
    form_args = {
        "description":
        dict(label="Book Description", validators=[validators.DataRequired()])
    }
    form_widget_args = {"description": {"rows": 5}}

    form_ajax_refs = {
        "author": {
            "fields": (Author.first_name, Author.last_name)
        },
        "tags": {
            "fields": (Tag.name, ),
            "minimum_input_length": 0,
            "placeholder": "Please select",
            "page_size": 5,
        },
    }

    def __init__(self, session):
        super(BookAdmin, self).__init__(Book, session)