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 | 0f20062fd4775a2ae4d473516aae2d954ac188f8 (patch) | |
| tree | 9a872ecf4eee77b1f031025b910e678115da6c83 | |
| parent | 76e65bd4daa5670dd28eec04230a2982c8da3402 (diff) | |
| download | Ishtar-0f20062fd4775a2ae4d473516aae2d954ac188f8.tar.bz2 Ishtar-0f20062fd4775a2ae4d473516aae2d954ac188f8.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): | 
