コード例 #1
0
class ComponentGrid(grids.Grid):
    class NameColumn(grids.TextColumn):
        def get_value(self, trans, grid, component):
            return escape(component.name)

    class DescriptionColumn(grids.TextColumn):
        def get_value(self, trans, grid, component):
            return escape(component.description)

    title = "Repository review components"
    model_class = model.Component
    template = '/webapps/tool_shed/repository_review/grid.mako'
    default_sort_key = "name"
    use_hide_message = False
    columns = [
        NameColumn("Name",
                   key="Component.name",
                   link=(lambda item: dict(operation="edit", id=item.id)),
                   attach_popup=False),
        DescriptionColumn("Description",
                          key="Component.description",
                          attach_popup=False)
    ]
    global_actions = [
        grids.GridAction(
            "Add new component",
            dict(controller='repository_review',
                 action='manage_components',
                 operation='create'))
    ]
    num_rows_per_page = 50
コード例 #2
0
ファイル: admin_grids.py プロジェクト: msauria/galaxy
class ManageCategoryGrid(CategoryGrid):
    columns = [col for col in CategoryGrid.columns]
    # Override the NameColumn to include an Edit link
    columns[0] = CategoryGrid.NameColumn("Name",
                                         key="Category.name",
                                         link=(lambda item: dict(operation="Edit", id=item.id)),
                                         model_class=model.Category,
                                         attach_popup=False)
    global_actions = [
        grids.GridAction("Add new category",
                         dict(controller='admin', action='manage_categories', operation='create'))
    ]
コード例 #3
0
ファイル: admin_grids.py プロジェクト: msauria/galaxy
class GroupGrid(grids.Grid):

    class NameColumn(grids.TextColumn):

        def get_value(self, trans, grid, group):
            return str(group.name)

    class StatusColumn(grids.GridColumn):

        def get_value(self, trans, grid, group):
            if group.deleted:
                return "deleted"
            return ""

    class RolesColumn(grids.GridColumn):

        def get_value(self, trans, grid, group):
            if group.roles:
                return len(group.roles)
            return 0

    class UsersColumn(grids.GridColumn):

        def get_value(self, trans, grid, group):
            if group.members:
                return len(group.members)
            return 0

    title = "Groups"
    model_class = model.Group
    default_sort_key = "name"
    columns = [
        NameColumn("Name",
                   key="name",
                   link=(lambda item: dict(operation="Manage users and roles", id=item.id)),
                   attach_popup=True),
        UsersColumn("Users", attach_popup=False),
        RolesColumn("Roles", attach_popup=False),
        StatusColumn("Status", attach_popup=False),
        # Columns that are valid for filtering but are not visible.
        grids.DeletedColumn("Deleted",
                            key="deleted",
                            visible=False,
                            filterable="advanced")
    ]
    columns.append(grids.MulticolFilterColumn("Search",
                                              cols_to_filter=[columns[0]],
                                              key="free-text-search",
                                              visible=False,
                                              filterable="standard"))
    global_actions = [
        grids.GridAction("Add new group",
                         dict(controller='admin', action='groups', operation='create'))
    ]
    operations = [grids.GridOperation("Rename",
                                      condition=(lambda item: not item.deleted),
                                      allow_multiple=False,
                                      url_args=dict(action="rename_group")),
                  grids.GridOperation("Delete",
                                      condition=(lambda item: not item.deleted),
                                      allow_multiple=True,
                                      url_args=dict(action="mark_group_deleted")),
                  grids.GridOperation("Undelete",
                                      condition=(lambda item: item.deleted),
                                      allow_multiple=True,
                                      url_args=dict(action="undelete_group")),
                  grids.GridOperation("Purge",
                                      condition=(lambda item: item.deleted),
                                      allow_multiple=True,
                                      url_args=dict(action="purge_group"))]
    standard_filters = [
        grids.GridColumnFilter("Active", args=dict(deleted=False)),
        grids.GridColumnFilter("Deleted", args=dict(deleted=True)),
        grids.GridColumnFilter("All", args=dict(deleted='All'))
    ]

    use_paging = False
コード例 #4
0
ファイル: admin_grids.py プロジェクト: msauria/galaxy
class UserGrid(grids.Grid):

    class UserLoginColumn(grids.TextColumn):

        def get_value(self, trans, grid, user):
            return escape(user.email)

    class UserNameColumn(grids.TextColumn):

        def get_value(self, trans, grid, user):
            if user.username:
                return escape(user.username)
            return 'not set'

    class GroupsColumn(grids.GridColumn):

        def get_value(self, trans, grid, user):
            if user.groups:
                return len(user.groups)
            return 0

    class RolesColumn(grids.GridColumn):

        def get_value(self, trans, grid, user):
            if user.roles:
                return len(user.roles)
            return 0

    class ExternalColumn(grids.GridColumn):

        def get_value(self, trans, grid, user):
            if user.external:
                return 'yes'
            return 'no'

    class LastLoginColumn(grids.GridColumn):

        def get_value(self, trans, grid, user):
            if user.galaxy_sessions:
                return self.format(user.galaxy_sessions[0].update_time)
            return 'never'

    class StatusColumn(grids.GridColumn):

        def get_value(self, trans, grid, user):
            if user.purged:
                return "purged"
            elif user.deleted:
                return "deleted"
            return ""

    class EmailColumn(grids.GridColumn):

        def filter(self, trans, user, query, column_filter):
            if column_filter == 'All':
                return query
            return query.filter(and_(model.Tool.table.c.user_id == model.User.table.c.id,
                                     model.User.table.c.email == column_filter))

    title = "Users"
    model_class = model.User
    default_sort_key = "email"
    columns = [
        UserLoginColumn("Email",
                        key="email",
                        link=(lambda item: dict(operation="information", id=item.id)),
                        attach_popup=True,
                        filterable="advanced"),
        UserNameColumn("User Name",
                       key="username",
                       attach_popup=False,
                       filterable="advanced"),
        GroupsColumn("Groups", attach_popup=False),
        RolesColumn("Roles", attach_popup=False),
        ExternalColumn("External", attach_popup=False),
        LastLoginColumn("Last Login", format=time_ago),
        StatusColumn("Status", attach_popup=False),
        # Columns that are valid for filtering but are not visible.
        EmailColumn("Email",
                    key="email",
                    visible=False)
    ]
    columns.append(grids.MulticolFilterColumn("Search",
                                              cols_to_filter=[columns[0], columns[1]],
                                              key="free-text-search",
                                              visible=False,
                                              filterable="standard"))
    global_actions = [
        grids.GridAction("Create new user",
                         dict(controller='admin', action='users', operation='create'))
    ]
    operations = [
        grids.GridOperation("Manage Roles and Groups",
                            condition=(lambda item: not item.deleted),
                            allow_multiple=False,
                            url_args=dict(action="manage_roles_and_groups_for_user")),
        grids.GridOperation("Reset Password",
                            condition=(lambda item: not item.deleted),
                            allow_multiple=True,
                            allow_popup=False,
                            url_args=dict(action="reset_user_password"))
    ]
    standard_filters = [
        grids.GridColumnFilter("Active", args=dict(deleted=False)),
        grids.GridColumnFilter("Deleted", args=dict(deleted=True, purged=False)),
        grids.GridColumnFilter("Purged", args=dict(purged=True)),
        grids.GridColumnFilter("All", args=dict(deleted='All'))
    ]

    use_paging = False

    def get_current_item(self, trans, **kwargs):
        return trans.user
コード例 #5
0
ファイル: admin_grids.py プロジェクト: msauria/galaxy
class RoleGrid(grids.Grid):

    class NameColumn(grids.TextColumn):

        def get_value(self, trans, grid, role):
            return escape(str(role.name))

    class DescriptionColumn(grids.TextColumn):

        def get_value(self, trans, grid, role):
            if role.description:
                return str(role.description)
            return ''

    class TypeColumn(grids.TextColumn):
        def get_value(self, trans, grid, role):
            return str(role.type)

    class StatusColumn(grids.GridColumn):

        def get_value(self, trans, grid, role):
            if role.deleted:
                return "deleted"
            return ""

    class GroupsColumn(grids.GridColumn):

        def get_value(self, trans, grid, role):
            if role.groups:
                return len(role.groups)
            return 0

    class RepositoriesColumn(grids.GridColumn):

        def get_value(self, trans, grid, role):
            if role.repositories:
                return len(role.repositories)
            return 0

    class UsersColumn(grids.GridColumn):

        def get_value(self, trans, grid, role):
            if role.users:
                return len(role.users)
            return 0

    title = "Roles"
    model_class = model.Role
    default_sort_key = "name"
    columns = [
        NameColumn("Name",
                   key="name",
                   link=(lambda item: dict(operation="Manage role associations", id=item.id)),
                   attach_popup=True,
                   filterable="advanced"),
        DescriptionColumn("Description",
                          key='description',
                          attach_popup=False,
                          filterable="advanced"),
        GroupsColumn("Groups", attach_popup=False),
        RepositoriesColumn("Repositories", attach_popup=False),
        UsersColumn("Users", attach_popup=False),
        # Columns that are valid for filtering but are not visible.
        grids.DeletedColumn("Deleted",
                            key="deleted",
                            visible=False,
                            filterable="advanced")
    ]
    columns.append(grids.MulticolFilterColumn("Search",
                                              cols_to_filter=[columns[0]],
                                              key="free-text-search",
                                              visible=False,
                                              filterable="standard"))
    global_actions = [
        grids.GridAction("Add new role",
                         dict(controller='admin', action='roles', operation='create'))
    ]
    # Repository admin roles currently do not have any operations since they are managed automatically based
    # on other events.  For example, if a repository is renamed, its associated admin role is automatically
    # renamed accordingly and if a repository is deleted its associated admin role is automatically deleted.
    operations = [grids.GridOperation("Rename",
                                      condition=(lambda item: not item.deleted and not item.is_repository_admin_role),
                                      allow_multiple=False,
                                      url_args=dict(action="rename_role")),
                  grids.GridOperation("Delete",
                                      condition=(lambda item: not item.deleted and not item.is_repository_admin_role),
                                      allow_multiple=True,
                                      url_args=dict(action="mark_role_deleted")),
                  grids.GridOperation("Undelete",
                                      condition=(lambda item: item.deleted and not item.is_repository_admin_role),
                                      allow_multiple=True,
                                      url_args=dict(action="undelete_role")),
                  grids.GridOperation("Purge",
                                      condition=(lambda item: item.deleted and not item.is_repository_admin_role),
                                      allow_multiple=True,
                                      url_args=dict(action="purge_role"))]
    standard_filters = [
        grids.GridColumnFilter("Active", args=dict(deleted=False)),
        grids.GridColumnFilter("Deleted", args=dict(deleted=True)),
        grids.GridColumnFilter("All", args=dict(deleted='All'))
    ]

    use_paging = False

    def apply_query_filter(self, trans, query, **kwd):
        return query.filter(model.Role.type != model.Role.types.PRIVATE)