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])
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
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