diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-07-11 13:43:17 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-07-11 13:43:17 +0200 |
commit | f9ba4b9a14226aa895a75b63c4d16dfa10102d66 (patch) | |
tree | 9a872ecf4eee77b1f031025b910e678115da6c83 | |
parent | 589f4f1240de240d1bd9b187fd3aa1eaf8045159 (diff) | |
download | Ishtar-f9ba4b9a14226aa895a75b63c4d16dfa10102d66.tar.bz2 Ishtar-f9ba4b9a14226aa895a75b63c4d16dfa10102d66.zip |
Context record relations: manage full graph from operation
-rw-r--r-- | archaeological_context_records/urls.py | 2 | ||||
-rw-r--r-- | archaeological_context_records/views.py | 31 | ||||
-rw-r--r-- | archaeological_operations/models.py | 8 | ||||
-rw-r--r-- | ishtar_common/models.py | 7 |
4 files changed, 33 insertions, 15 deletions
diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py index 48d8e54a3..96882e20d 100644 --- a/archaeological_context_records/urls.py +++ b/archaeological_context_records/urls.py @@ -54,7 +54,7 @@ urlpatterns = [ url(r'revert-contextrecord/(?P<pk>.+)/(?P<date>.+)$', views.revert_contextrecord, name='revert-contextrecord'), url(r'generate-relation-image-contextrecord/(?P<pk>.+)/(' - r'?P<type>(bellow)|(above))?', + r'?P<type>(bellow)|(above)|(full))?', views.GenerateRelationImage.as_view(), name='generate-relation-image-contextrecord'), url(r'get-contextrecord/own/(?P<type>.+)?$', views.get_contextrecord, diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 122da8c2f..e27aacb41 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -165,25 +165,44 @@ def reset_wizards(request): class GenerateRelationImage(IshtarMixin, LoginRequiredMixin, RedirectView): + upper_model = models.Operation model = models.ContextRecord def get_redirect_url(self, *args, **kwargs): + if self.upper_item: + return reverse( + 'display-item', + args=[self.upper_model.SLUG, self.upper_item.pk]) + "#cr" return reverse('display-item', args=[self.model.SLUG, self.item.pk]) + "#relations" def get(self, request, *args, **kwargs): - try: - self.item = self.model.objects.get(pk=kwargs['pk']) - except self.model.DoesNotExist: - raise Http404() - render_above, render_bellow = True, True + self.upper_item = None render_type = kwargs.get("type", None) + if render_type == "full" and self.upper_model: + try: + self.upper_item = self.upper_model.objects.get(pk=kwargs['pk']) + except self.model.DoesNotExist: + raise Http404() + q = self.upper_item.context_record_relations_q() + if not q.count(): + return super(GenerateRelationImage, self).get(request, *args, + **kwargs) + self.item = q.all()[0].left_record + else: + try: + self.item = self.model.objects.get(pk=kwargs['pk']) + except self.model.DoesNotExist: + raise Http404() + render_above, render_bellow, full = True, True, False if render_type == "above": render_bellow = False elif render_type == "bellow": render_above = False + elif render_type == "full": + full = True self.item.generate_relation_image( - render_bellow=render_bellow, render_above=render_above) + render_bellow=render_bellow, render_above=render_above, full=full) return super(GenerateRelationImage, self).get(request, *args, **kwargs) diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index aa4251273..a6e55a59e 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -122,11 +122,6 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem, 'cached_periods': _("Periods"), 'cached_remains': _("Remains"), } - EXTRA_REQUEST_KEYS = { - 'cached_towns_label': 'cached_towns_label', - 'cached_periods': 'cached_periods', - 'cached_remains': 'remains', - } LONG_SLUG = 'archaeologicalsite' STATISTIC_MODALITIES_OPTIONS = OrderedDict([ @@ -164,6 +159,9 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem, EXTRA_REQUEST_KEYS = { 'towns_label': 'towns', 'collaborators__pk': 'collaborators__pk', # dynamic_table_documents + 'cached_towns_label': 'cached_towns_label', + 'cached_periods': 'cached_periods', + 'cached_remains': 'remains', } # alternative names of fields for searches diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 872f740e6..da05955ce 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1242,11 +1242,12 @@ class RelationItem(models.Model): class Meta: abstract = True - def generate_relation_image(self, highlight_current=True, - render_above=True, render_bellow=True): + def generate_relation_image( + self, highlight_current=True, render_above=True, + render_bellow=True, full=False): generate_relation_graph(self, highlight_current=highlight_current, render_above=render_above, - render_bellow=render_bellow) + render_bellow=render_bellow, full=full) class JsonDataSection(models.Model): |