Exemple #1
0
class Show(crud_views.Show):
    """Default show view for model admin."""
    base_template = "admin/base.html"

    form_generator = SQLAlchemyFormGenerator()

    resource_buttons = [
        TraverseLinkButton(id="edit",
                           name="Edit",
                           view_name="edit",
                           permission="edit"),
        TraverseLinkButton(id="delete",
                           name="Delete",
                           view_name="delete",
                           permission="delete"),
        TraverseLinkButton(
            id="shell",
            name="Shell",
            view_name="shell",
            permission="shell",
            tooltip=
            "Open IPython Notebook shell and have this item prepopulated in obj variable.",
            feature="notebook"),
    ]

    @view_config(context=ModelAdmin.Resource,
                 name="show",
                 renderer="crud/show.html",
                 route_name="admin",
                 permission='view')
    def show(self):
        # We override this method just to define admin route_name traversing
        return super(Show, self).show()
Exemple #2
0
    def resource_buttons(self):
        """Customize buttons toolbar."""

        buttons = DefaultShow.resource_buttons.copy()

        # View on site button
        view_on_site = ResourceButton(id="btn-view-on-site", name="View on site")

        def link_on_site(context, request):
            resource = get_post_resource(request, context.get_object().slug)
            return request.resource_url(resource)
        view_on_site.get_link = link_on_site
        buttons.append(view_on_site)

        # Publish button
        if not self.get_object().published_at:
            change_publish_status = TraverseLinkButton(id="btn-change-publish-status", name="Publish", view_name="change_publish_status")
        else:
            change_publish_status = TraverseLinkButton(id="btn-change-publish-status", name="Unpublish", view_name="change_publish_status")

        # This is a state changing action, so we want to do HTTP POST
        change_publish_status.template = "crud/form_button.html"
        buttons.append(change_publish_status)

        return buttons
Exemple #3
0
class UserListing(admin_views.Listing):
    """Listing view for Users."""
    title = "All users"

    table = listing.Table(columns=[
        listing.Column(
            "id",
            "Id",
        ),
        listing.Column("friendly_name", "Friendly name"),
        listing.Column("email", "Email"),
        listing.ControlsColumn()
    ])

    # Include our CSV export button in the user interface
    resource_buttons = admin_views.Listing.resource_buttons + [
        TraverseLinkButton(id="csv-export",
                           name="CSV Export",
                           view_name="csv-export",
                           permission="view")
    ]

    def order_query(self, query):
        return query.order_by(self.get_model().created_at.desc())

    @view_config(context=UserAdmin,
                 route_name="admin",
                 name="listing",
                 renderer="crud/listing.html",
                 permission='view')
    def listing(self):
        return super(UserListing, self).listing()
Exemple #4
0
class UserShow(admin_views.Show):
    """Show one user."""

    resource_buttons = admin_views.Show.resource_buttons + [TraverseLinkButton(id="set-password", name="Set password", view_name="set-password")]

    includes = ["id",
                "uuid",
                "enabled",
                "created_at",
                "updated_at",
                "username",
                colander.SchemaNode(colander.String(), name='full_name'),
                "email",
                "last_login_at",
                "last_login_ip",
                colander.SchemaNode(colander.String(), name="registration_source", missing=colander.drop),
                colander.SchemaNode(colander.String(), name="social"),
                colander.SchemaNode(GroupSet(), name="groups", widget=defer_widget_values(deform.widget.CheckboxChoiceWidget, group_vocabulary, css_class="groups"))
                ]

    form_generator = SQLAlchemyFormGenerator(includes=includes)

    def get_title(self):
        return "{} #{}".format(self.get_object().friendly_name, self.get_object().id)

    @view_config(context=UserAdmin.Resource, route_name="admin", name="show", renderer="crud/show.html", permission='view')
    def show(self):
        return super(UserShow, self).show()
Exemple #5
0
def contribute_admin(event):
    """Add notebook entry to the admin user interface."""

    # XXX: dummy way of adding button on context
    if not isinstance(event.get('context'), UserAdmin.Resource):
        return
    view = event.get('view')
    if view is None or not hasattr(view, 'resource_buttons'):
        return
    if "shell" in [i.id for i in event['view'].resource_buttons]:
        return
    button = TraverseLinkButton(
        id="shell",
        name="Shell",
        view_name="shell",
        permission="shell",
        tooltip=
        "Open IPython Notebook shell and have this item prepopulated in obj variable."
    )
    event['view'].resource_buttons.append(button)