def get_item_breadcrumbs(item: _concept,
                         user,
                         last_active=True) -> List[Breadcrumb]:
    """ Return a list of breadcrumbs for a metadata item
        through a process of introspection to determine what kind of breadcrumbs to display

        last_active: Make the item link an active link if deeper pages exist"""
    if item.is_sandboxed:
        # It's in a sandbox
        if item.submitter == user:
            # It's in our own sandbox
            return [
                ReversibleBreadcrumb('My Sandbox',
                                     'aristotle_mdr:userSandbox'),
                add_item_url(item, active=last_active)
            ]
        else:
            # It's in another user's sandbox
            no_link_possible = False
            if not item.submitter:
                return []

            if share_link_possible(item.submitter):
                # You are viewing the item without a share being created, this is something only a superuser could do
                other_users_name = item.submitter.display_name
                share = item.submitter.profile.share
                return [
                    ReversibleBreadcrumb(f"{other_users_name}'s Sandbox",
                                         'aristotle:sharedSandbox',
                                         url_args=[share.uuid]),
                    add_item_url(item, active=last_active)
                ]

            else:
                return [
                    Breadcrumb(f"Sandboxed Item"),
                    add_item_url(item, active=last_active)
                ]
    elif item.stewardship_organisation:
        # Item has a stewardship organisation
        content_type = ContentType.objects.get_for_model(type(item))
        return [
            Breadcrumb(item.stewardship_organisation.name,
                       item.stewardship_organisation.get_absolute_url()),
            ReversibleBreadcrumb('Metadata',
                                 'aristotle_mdr:stewards:group:browse',
                                 url_args=[item.stewardship_organisation.slug
                                           ]),
            ReversibleBreadcrumb(
                f'{item.item_type_name}',
                'aristotle_mdr:stewards:group:browse_app_metadata',
                url_args=[
                    item.stewardship_organisation.slug, content_type.app_label,
                    content_type.model
                ]),
            add_item_url(item, active=last_active)
        ]
    return []
def add_item_url(item, active=False) -> Breadcrumb:
    """Helper function to add item breadcrumbs """
    if active:
        return Breadcrumb(item.name, active=True)
    return ReversibleBreadcrumb(item.name,
                                'aristotle:item',
                                url_args=[item.id])
示例#3
0
 def get_breadcrumbs(self):
     return [
         ReversibleBreadcrumb(name="Post",
                              url_name="aristotle:discussionsPost",
                              url_args=[self.discussion_post.pk]),
         Breadcrumb(name="Delete comment", active=True),
     ]
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        breadcrumbs = get_item_breadcrumbs(item=self.link.root_item.item,
                                           user=self.request.user,
                                           last_active=False)
        breadcrumbs.append(Breadcrumb("Edit Link"))

        context.update({'links': [self.link], 'breadcrumbs': breadcrumbs})
        return context
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        breadcrumbs = get_item_breadcrumbs(item=self.link.root_item.item,
                                           user=self.request.user,
                                           last_active=False)
        breadcrumbs.append(Breadcrumb("Edit Link"))

        context.update({
            'roles': self.link.relation.relationrole_set.all(),
            'link': self.link,
            'breadcrumbs': breadcrumbs,
            'relation': self.link.relation,
            'root_item': self.link.root_item
        })
        return context
示例#6
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context.update({
         "breadcrumbs": [
             ReversibleBreadcrumb(
                 self.item.name,
                 'aristotle:item',
                 url_args=[self.item.id]
             ),
             Breadcrumb(
                 "Proposed supersede relationships",
                 active=True
             ),
         ],
     })
     return context