diff --git a/src/rard/research/models/base.py b/src/rard/research/models/base.py index dab1026d3..e2fc171ae 100644 --- a/src/rard/research/models/base.py +++ b/src/rard/research/models/base.py @@ -102,7 +102,7 @@ def get_work_display_name(self): def get_work_display_name_full(self): # to also show the antiquarian link as well as the work link - return "%s [= %s]" % (self.get_work_display_name(), self.get_display_name()) + return f"{self.get_work_display_name()} [= {self.get_display_name()}]" def display_work_order_one_indexed(self): try: @@ -649,8 +649,12 @@ def get_display_name_option_c(self): names = self.get_link_names(show_certainty=False) return self._render_display_name(names, add_also=False) - def get_link_names(self, show_certainty=True): + def get_link_names(self, show_certainty=True, first_work=None): links = self.get_all_links().order_by("work", "antiquarian", "order") + if first_work: + first_links = links.filter(work=first_work) + other_links = links.exclude(work=first_work) + links = list(first_links) + list(other_links) names = [] for link in links: if link.work and not link.work.unknown: @@ -670,3 +674,8 @@ def get_display_name_option_b(self): # option b currently default names = self.get_link_names(show_certainty=False) return self._render_display_name(names) + + def get_display_name_for_work(self, work): + # put the link to the antiquarian first if it exists and then the others + names = self.get_link_names(show_certainty=False, first_work=work) + return self._render_display_name(names) diff --git a/src/rard/research/models/testimonium.py b/src/rard/research/models/testimonium.py index 8bb846196..5880d4d20 100644 --- a/src/rard/research/models/testimonium.py +++ b/src/rard/research/models/testimonium.py @@ -93,10 +93,14 @@ def get_absolute_url(self): def get_all_names(self): return [link.get_display_name() for link in self.get_all_links()] - def get_link_names(self, show_certainty=True): + def get_link_names(self, show_certainty=True, first_work=None): links = self.get_all_links().order_by( "-work__unknown", "work", "antiquarian", "order" ) + if first_work: + first_links = links.filter(work=first_work) + other_links = links.exclude(work=first_work) + links = list(first_links) + list(other_links) names = [] for link in links: if link.work and not link.work.unknown: diff --git a/src/rard/research/templatetags/name_in_context.py b/src/rard/research/templatetags/name_in_context.py new file mode 100644 index 000000000..bb3b9be83 --- /dev/null +++ b/src/rard/research/templatetags/name_in_context.py @@ -0,0 +1,8 @@ +from django import template + +register = template.Library() + + +@register.filter +def name_in_context(obj, work): + return obj.get_display_name_for_work(work) diff --git a/src/rard/templates/research/partials/appositum_fragment_link_list_item.html b/src/rard/templates/research/partials/appositum_fragment_link_list_item.html index 6e6779aca..081c57467 100644 --- a/src/rard/templates/research/partials/appositum_fragment_link_list_item.html +++ b/src/rard/templates/research/partials/appositum_fragment_link_list_item.html @@ -1,6 +1,6 @@ {# Assumes a context object named 'link' and 'link_text'. Optional disable_link_controls to display but disable the link controls #} -{% load i18n %} +{% load i18n name_in_context %} {% with fragment=link.linked %}
@@ -8,7 +8,7 @@