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),
     ]
예제 #4
0
 def get_context_data(self, *args, **kwargs):
     context = super().get_context_data(*args, **kwargs)
     context.update({
         "breadcrumbs": [
             ReversibleBreadcrumb(
                 self.item.newer_item.name,
                 'aristotle:item',
                 url_args=[self.item.newer_item.id]
             ),
             ReversibleBreadcrumb(
                 "Proposed supersede relationships",
                 "aristotle:supersede",
                 url_args=[self.item.newer_item.id]
             ),
             ReversibleBreadcrumb(
                 "Delete proposed supersede relationship",
                 active=False
             )
         ]
     })
     return context
예제 #5
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]
             ),
             ReversibleBreadcrumb(
                 "Supersede relationships",
                 'aristotle:supersede',
                 url_args=[self.item.id]
             ),
             ReversibleBreadcrumb(
                 "Edit supersede relationship",
                 active=True
             )
         ]
     })
     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]
             ),
             ReversibleBreadcrumb(
                 "Proposed supersede relationships",
                 'aristotle:proposed_supersede',
                 url_args=[self.item.id]
             ),
             Breadcrumb(
                 "Add proposed supersede relationship",
                 active=True
             )
         ],
         "proposed": True,
     })
     return context