summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit0f20062fd4775a2ae4d473516aae2d954ac188f8 (patch)
tree9a872ecf4eee77b1f031025b910e678115da6c83
parent76e65bd4daa5670dd28eec04230a2982c8da3402 (diff)
downloadIshtar-0f20062fd4775a2ae4d473516aae2d954ac188f8.tar.bz2
Ishtar-0f20062fd4775a2ae4d473516aae2d954ac188f8.zip
Context record relations: manage full graph from operation
-rw-r--r--archaeological_context_records/urls.py2
-rw-r--r--archaeological_context_records/views.py31
-rw-r--r--archaeological_operations/models.py8
-rw-r--r--ishtar_common/models.py7
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):