summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-03-19 11:17:58 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-03-19 11:17:58 +0100
commit33e342679b59fa48607c5acdc1fe826b666a1a5f (patch)
tree31b6b0a838b83efce2437d956a4f8d1a54f0aae6 /archaeological_finds
parent0b3d9bb13c3a7d9bab959e8a734d2ba89e48d359 (diff)
downloadIshtar-33e342679b59fa48607c5acdc1fe826b666a1a5f.tar.bz2
Ishtar-33e342679b59fa48607c5acdc1fe826b666a1a5f.zip
Format - black: finds
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/ishtar_menu.py398
-rw-r--r--archaeological_finds/lookups.py51
-rw-r--r--archaeological_finds/models.py88
-rw-r--r--archaeological_finds/models_finds.py2490
-rw-r--r--archaeological_finds/models_treatments.py800
-rw-r--r--archaeological_finds/serializers.py92
-rw-r--r--archaeological_finds/tests.py1733
-rw-r--r--archaeological_finds/urls.py825
-rw-r--r--archaeological_finds/views.py1065
-rw-r--r--archaeological_finds/wizards.py350
10 files changed, 4458 insertions, 3434 deletions
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index ee0d1b908..aa658023d 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -27,173 +27,231 @@ from . import models
# be careful: each access_controls must be relevant with check_rights in urls
MENU_SECTIONS = [
- (50,
- SectionItem(
- 'find_management', _("Find"),
- profile_restriction='find',
- css='menu-find',
- childs=[
- MenuItem(
- 'find_search', _("Search"),
- model=models.Find,
- access_controls=['view_find',
- 'view_own_find']),
- MenuItem(
- 'find_creation', _("Creation"),
- model=models.Find,
- access_controls=['add_find',
- 'add_own_find']),
- MenuItem(
- 'find_modification', _("Modification"),
- model=models.Find,
- access_controls=['change_find',
- 'change_own_find']),
- MenuItem(
- 'find_deletion', _("Deletion"),
- model=models.Find,
- access_controls=['change_find',
- 'change_own_find']),
- SectionItem(
- 'find_basket', _("Basket"),
- childs=[
- MenuItem('find_basket_search',
- _("Search"),
- model=models.FindBasket,
- access_controls=['view_find',
- 'view_own_find']),
- MenuItem('find_basket_creation',
- _("Creation"),
- model=models.FindBasket,
- access_controls=['view_find',
- 'view_own_find']),
- MenuItem('find_basket_modification',
- _("Modification"),
- model=models.FindBasket,
- access_controls=[
- 'view_find',
- 'view_own_find']),
- MenuItem('find_basket_modification_add',
- _("Manage items"),
- model=models.FindBasket,
- access_controls=[
- 'view_find',
- 'view_own_find']),
- MenuItem('find_basket_deletion',
- _("Deletion"),
- model=models.FindBasket,
- access_controls=['view_find',
- 'view_own_find']),
- ]),
- # MenuItem(
- # 'treatment_creation', _("Add a treatment"),
- # model=models.Treatment,
- # access_controls=['change_find',
- # 'change_own_find']),
- ])),
- (60,
- SectionItem(
- 'treatmentfle_management', _("Treatment request"),
- profile_restriction='warehouse',
- css='menu-warehouse',
- childs=[
- MenuItem('treatmentfle_search',
- _("Search"),
- model=models.TreatmentFile,
- access_controls=['view_treatmentfile',
- 'view_own_treatmentfile']),
- MenuItem('treatmentfle_creation',
- _("Creation"),
- model=models.TreatmentFile,
- access_controls=['change_treatmentfile',
- 'change_own_treatmentfile']),
- MenuItem('treatmentfle_modification',
- _("Modification"),
- model=models.TreatmentFile,
- access_controls=['change_treatmentfile',
- 'change_own_treatmentfile']),
- MenuItem('treatmentfle_deletion',
- _("Deletion"),
- model=models.TreatmentFile,
- access_controls=['change_treatmentfile',
- 'change_own_treatmentfile']),
- SectionItem(
- 'admin_act_fletreatments', _("Administrative act"),
- childs=[
- MenuItem('treatmentfle_admacttreatmentfle_search',
- _("Search"),
- model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- MenuItem('treatmentfle_admacttreatmentfle',
- _("Creation"),
- model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- MenuItem('treatmentfle_admacttreatmentfle_modification',
- _("Modification"), model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- MenuItem('treatmentfle_admacttreatmentfle_deletion',
- _("Deletion"),
- model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- ]
- ),
- ]
- )),
- (70,
- SectionItem(
- 'treatment_management', _("Treatment"),
- profile_restriction='warehouse',
- css='menu-warehouse',
- childs=[
- MenuItem('treatment_search',
- _("Search"),
- model=models.Treatment,
- access_controls=['view_treatment',
- 'view_own_treatment']),
- MenuItem(
- 'treatment_creation',
- _("Simple treatment - creation"),
- model=models.Treatment,
- access_controls=['change_find', 'change_own_find']),
- MenuItem(
- 'treatment_creation_n1',
- _("Treatment many to one - creation"),
- model=models.Treatment,
- access_controls=['change_find', 'change_own_find']),
- MenuItem(
- 'treatment_creation_1n',
- _("Treatment one to many - creation"),
- model=models.Treatment,
- access_controls=['change_find', 'change_own_find']),
- MenuItem('treatment_modification',
- _("Modification"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
- MenuItem('treatment_deletion',
- _("Deletion"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
- SectionItem(
- 'admin_act_treatments', _("Administrative act"),
- childs=[
- MenuItem('treatment_admacttreatment_search',
- _("Search"),
- model=AdministrativeAct,
- access_controls=['view_administrativeact']),
- MenuItem('treatment_admacttreatment',
- _("Creation"),
- model=AdministrativeAct,
- access_controls=['add_administrativeact']),
- MenuItem(
- 'treatment_admacttreatment_modification',
- _("Modification"), model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- MenuItem('treatment_admacttreatment_deletion',
- _("Deletion"),
- model=AdministrativeAct,
- access_controls=['change_administrativeact']),
- ]),
- ]
- )),
+ (
+ 50,
+ SectionItem(
+ "find_management",
+ _("Find"),
+ profile_restriction="find",
+ css="menu-find",
+ childs=[
+ MenuItem(
+ "find_search",
+ _("Search"),
+ model=models.Find,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ MenuItem(
+ "find_creation",
+ _("Creation"),
+ model=models.Find,
+ access_controls=["add_find", "add_own_find"],
+ ),
+ MenuItem(
+ "find_modification",
+ _("Modification"),
+ model=models.Find,
+ access_controls=["change_find", "change_own_find"],
+ ),
+ MenuItem(
+ "find_deletion",
+ _("Deletion"),
+ model=models.Find,
+ access_controls=["change_find", "change_own_find"],
+ ),
+ SectionItem(
+ "find_basket",
+ _("Basket"),
+ childs=[
+ MenuItem(
+ "find_basket_search",
+ _("Search"),
+ model=models.FindBasket,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ MenuItem(
+ "find_basket_creation",
+ _("Creation"),
+ model=models.FindBasket,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ MenuItem(
+ "find_basket_modification",
+ _("Modification"),
+ model=models.FindBasket,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ MenuItem(
+ "find_basket_modification_add",
+ _("Manage items"),
+ model=models.FindBasket,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ MenuItem(
+ "find_basket_deletion",
+ _("Deletion"),
+ model=models.FindBasket,
+ access_controls=["view_find", "view_own_find"],
+ ),
+ ],
+ ),
+ # MenuItem(
+ # 'treatment_creation', _("Add a treatment"),
+ # model=models.Treatment,
+ # access_controls=['change_find',
+ # 'change_own_find']),
+ ],
+ ),
+ ),
+ (
+ 60,
+ SectionItem(
+ "treatmentfle_management",
+ _("Treatment request"),
+ profile_restriction="warehouse",
+ css="menu-warehouse",
+ childs=[
+ MenuItem(
+ "treatmentfle_search",
+ _("Search"),
+ model=models.TreatmentFile,
+ access_controls=["view_treatmentfile", "view_own_treatmentfile"],
+ ),
+ MenuItem(
+ "treatmentfle_creation",
+ _("Creation"),
+ model=models.TreatmentFile,
+ access_controls=[
+ "change_treatmentfile",
+ "change_own_treatmentfile",
+ ],
+ ),
+ MenuItem(
+ "treatmentfle_modification",
+ _("Modification"),
+ model=models.TreatmentFile,
+ access_controls=[
+ "change_treatmentfile",
+ "change_own_treatmentfile",
+ ],
+ ),
+ MenuItem(
+ "treatmentfle_deletion",
+ _("Deletion"),
+ model=models.TreatmentFile,
+ access_controls=[
+ "change_treatmentfile",
+ "change_own_treatmentfile",
+ ],
+ ),
+ SectionItem(
+ "admin_act_fletreatments",
+ _("Administrative act"),
+ childs=[
+ MenuItem(
+ "treatmentfle_admacttreatmentfle_search",
+ _("Search"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ MenuItem(
+ "treatmentfle_admacttreatmentfle",
+ _("Creation"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ MenuItem(
+ "treatmentfle_admacttreatmentfle_modification",
+ _("Modification"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ MenuItem(
+ "treatmentfle_admacttreatmentfle_deletion",
+ _("Deletion"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ (
+ 70,
+ SectionItem(
+ "treatment_management",
+ _("Treatment"),
+ profile_restriction="warehouse",
+ css="menu-warehouse",
+ childs=[
+ MenuItem(
+ "treatment_search",
+ _("Search"),
+ model=models.Treatment,
+ access_controls=["view_treatment", "view_own_treatment"],
+ ),
+ MenuItem(
+ "treatment_creation",
+ _("Simple treatment - creation"),
+ model=models.Treatment,
+ access_controls=["change_find", "change_own_find"],
+ ),
+ MenuItem(
+ "treatment_creation_n1",
+ _("Treatment many to one - creation"),
+ model=models.Treatment,
+ access_controls=["change_find", "change_own_find"],
+ ),
+ MenuItem(
+ "treatment_creation_1n",
+ _("Treatment one to many - creation"),
+ model=models.Treatment,
+ access_controls=["change_find", "change_own_find"],
+ ),
+ MenuItem(
+ "treatment_modification",
+ _("Modification"),
+ model=models.Treatment,
+ access_controls=["change_treatment", "change_own_treatment"],
+ ),
+ MenuItem(
+ "treatment_deletion",
+ _("Deletion"),
+ model=models.Treatment,
+ access_controls=["change_treatment", "change_own_treatment"],
+ ),
+ SectionItem(
+ "admin_act_treatments",
+ _("Administrative act"),
+ childs=[
+ MenuItem(
+ "treatment_admacttreatment_search",
+ _("Search"),
+ model=AdministrativeAct,
+ access_controls=["view_administrativeact"],
+ ),
+ MenuItem(
+ "treatment_admacttreatment",
+ _("Creation"),
+ model=AdministrativeAct,
+ access_controls=["add_administrativeact"],
+ ),
+ MenuItem(
+ "treatment_admacttreatment_modification",
+ _("Modification"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ MenuItem(
+ "treatment_admacttreatment_deletion",
+ _("Deletion"),
+ model=AdministrativeAct,
+ access_controls=["change_administrativeact"],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
]
diff --git a/archaeological_finds/lookups.py b/archaeological_finds/lookups.py
index b8ce8400d..acf8895cb 100644
--- a/archaeological_finds/lookups.py
+++ b/archaeological_finds/lookups.py
@@ -9,39 +9,33 @@ from django.utils.html import escape
from archaeological_finds import models
-@register('base_find')
+@register("base_find")
class BaseFindLookup(LookupChannel):
model = models.BaseFind
def get_query(self, q, request):
query = Q()
- for term in q.strip().split(' '):
- subquery = (
- Q(cache_complete_id__icontains=term) |
- Q(label__icontains=term)
- )
+ for term in q.strip().split(" "):
+ subquery = Q(cache_complete_id__icontains=term) | Q(label__icontains=term)
query &= subquery
- return self.model.objects.filter(query).order_by(
- 'cache_complete_id')[:20]
+ return self.model.objects.filter(query).order_by("cache_complete_id")[:20]
def format_item_display(self, item):
return "<span class='ajax-label'>%s</span>" % item.cache_complete_id
-@register('find')
+@register("find")
class FindLookup(LookupChannel):
model = models.Find
def get_query(self, q, request):
query = Q()
- for term in q.strip().split(' '):
- subquery = (
- Q(cached_label__icontains=term) |
- Q(base_finds__cache_complete_id__icontains=term)
+ for term in q.strip().split(" "):
+ subquery = Q(cached_label__icontains=term) | Q(
+ base_finds__cache_complete_id__icontains=term
)
query &= subquery
- return self.model.objects.filter(query).order_by(
- 'cached_label')[:20]
+ return self.model.objects.filter(query).order_by("cached_label")[:20]
def format_item_display(self, item):
return "<span class='ajax-label'>%s</span>" % item.full_label
@@ -50,48 +44,41 @@ class FindLookup(LookupChannel):
return escape(force_text(obj.full_label))
-@register('treatment')
+@register("treatment")
class TreatmentLookup(LookupChannel):
model = models.Treatment
def get_query(self, q, request):
query = Q()
- for term in q.strip().split(' '):
- subquery = (
- Q(cached_label__icontains=term)
- )
+ for term in q.strip().split(" "):
+ subquery = Q(cached_label__icontains=term)
query &= subquery
- return self.model.objects.filter(query).order_by(
- 'cached_label')[:20]
+ return self.model.objects.filter(query).order_by("cached_label")[:20]
def format_item_display(self, item):
return "<span class='ajax-label'>%s</span>" % item.cached_label
-@register('treatment_file')
+@register("treatment_file")
class TreatmentFileLookup(LookupChannel):
model = models.TreatmentFile
def get_query(self, q, request):
query = Q()
- for term in q.strip().split(' '):
- subquery = (
- Q(cached_label__icontains=term)
- )
+ for term in q.strip().split(" "):
+ subquery = Q(cached_label__icontains=term)
query &= subquery
- return self.model.objects.filter(query).order_by(
- 'cached_label')[:20]
+ return self.model.objects.filter(query).order_by("cached_label")[:20]
def format_item_display(self, item):
return "<span class='ajax-label'>%s</span>" % item.cached_label
-@register('material_type')
+@register("material_type")
class MaterialTypeLookup(TypeLookupChannel):
model = models.MaterialType
-@register('object_type')
+@register("object_type")
class MaterialTypeLookup(TypeLookupChannel):
model = models.ObjectType
-
diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py
index 53fa35c40..cd8100aaa 100644
--- a/archaeological_finds/models.py
+++ b/archaeological_finds/models.py
@@ -1,21 +1,69 @@
-from archaeological_finds.models_finds import MaterialType, ConservatoryState, \
- CheckedType, IntegrityType, RemarkabilityType, ObjectType, BaseFind, \
- FindBasket, Find, Property, BatchType, BFBulkView, FBulkView, \
- FirstBaseFindView, AlterationType, AlterationCauseType, \
- TreatmentEmergencyType, TreatmentType, CommunicabilityType, \
- MaterialTypeQualityType, ObjectTypeQualityType, FindInsideContainer
-from archaeological_finds.models_treatments import Treatment, \
- AbsFindTreatments, FindUpstreamTreatments, FindDownstreamTreatments, \
- FindTreatments, TreatmentFile, TreatmentFileType, \
- TreatmentState, FindNonModifTreatments
+from archaeological_finds.models_finds import (
+ MaterialType,
+ ConservatoryState,
+ CheckedType,
+ IntegrityType,
+ RemarkabilityType,
+ ObjectType,
+ BaseFind,
+ FindBasket,
+ Find,
+ Property,
+ BatchType,
+ BFBulkView,
+ FBulkView,
+ FirstBaseFindView,
+ AlterationType,
+ AlterationCauseType,
+ TreatmentEmergencyType,
+ TreatmentType,
+ CommunicabilityType,
+ MaterialTypeQualityType,
+ ObjectTypeQualityType,
+ FindInsideContainer,
+)
+from archaeological_finds.models_treatments import (
+ Treatment,
+ AbsFindTreatments,
+ FindUpstreamTreatments,
+ FindDownstreamTreatments,
+ FindTreatments,
+ TreatmentFile,
+ TreatmentFileType,
+ TreatmentState,
+ FindNonModifTreatments,
+)
-__all__ = ['MaterialType', 'ConservatoryState', 'IntegrityType', 'CheckedType',
- 'RemarkabilityType', 'ObjectType', 'BaseFind', 'FindBasket', 'Find',
- 'Property', 'BFBulkView', 'FBulkView', 'FirstBaseFindView',
- 'AlterationType', 'AlterationCauseType', 'TreatmentEmergencyType',
- 'BatchType', 'TreatmentType', 'TreatmentState',
- 'Treatment', 'AbsFindTreatments', 'FindUpstreamTreatments',
- 'FindNonModifTreatments', 'FindDownstreamTreatments',
- 'FindTreatments', 'TreatmentFile', 'TreatmentFileType',
- 'CommunicabilityType', 'MaterialTypeQualityType',
- 'ObjectTypeQualityType', 'FindInsideContainer']
+__all__ = [
+ "MaterialType",
+ "ConservatoryState",
+ "IntegrityType",
+ "CheckedType",
+ "RemarkabilityType",
+ "ObjectType",
+ "BaseFind",
+ "FindBasket",
+ "Find",
+ "Property",
+ "BFBulkView",
+ "FBulkView",
+ "FirstBaseFindView",
+ "AlterationType",
+ "AlterationCauseType",
+ "TreatmentEmergencyType",
+ "BatchType",
+ "TreatmentType",
+ "TreatmentState",
+ "Treatment",
+ "AbsFindTreatments",
+ "FindUpstreamTreatments",
+ "FindNonModifTreatments",
+ "FindDownstreamTreatments",
+ "FindTreatments",
+ "TreatmentFile",
+ "TreatmentFileType",
+ "CommunicabilityType",
+ "MaterialTypeQualityType",
+ "ObjectTypeQualityType",
+ "FindInsideContainer",
+]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 152e572f9..cf521c2b6 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2012-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -28,44 +28,66 @@ from django.contrib.postgres.indexes import GinIndex
from django.core.urlresolvers import reverse
from django.db import connection
from django.db.models import Max, Q, F
-from django.db.models.signals import m2m_changed, post_save, post_delete, \
- pre_delete
+from django.db.models.signals import m2m_changed, post_save, post_delete, pre_delete
from django.core.exceptions import ObjectDoesNotExist
from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy
from ishtar_common.data_importer import post_importer_action, ImporterError
-from ishtar_common.utils import cached_label_changed, post_save_geo, \
- m2m_historization_changed
+from ishtar_common.utils import (
+ cached_label_changed,
+ post_save_geo,
+ m2m_historization_changed,
+)
from ishtar_common.alternative_configs import ALTERNATE_CONFIGS
from ishtar_common.model_managers import ExternalIdManager, UUIDModelManager
-from ishtar_common.models import Document, GeneralType, \
- HierarchicalType, BaseHistorizedItem, LightHistorizedItem, \
- OwnPerms, Person, Basket, post_save_cache, \
- ValueGetter, get_current_profile, IshtarSiteProfile, \
- GeoItem, BulkUpdatedItem, QuickAction, \
- MainItem, document_attached_changed, HistoryModel, DynamicRequest, \
- SearchAltName, CompleteIdentifierItem, SearchVectorConfig, DocumentItem
+from ishtar_common.models import (
+ Document,
+ GeneralType,
+ HierarchicalType,
+ BaseHistorizedItem,
+ LightHistorizedItem,
+ OwnPerms,
+ Person,
+ Basket,
+ post_save_cache,
+ ValueGetter,
+ get_current_profile,
+ IshtarSiteProfile,
+ GeoItem,
+ BulkUpdatedItem,
+ QuickAction,
+ MainItem,
+ document_attached_changed,
+ HistoryModel,
+ DynamicRequest,
+ SearchAltName,
+ CompleteIdentifierItem,
+ SearchVectorConfig,
+ DocumentItem,
+)
from ishtar_common.models_common import HistoricalRecords
from ishtar_common.utils import PRIVATE_FIELDS
-from archaeological_operations.models import AdministrativeAct, Operation, \
- CulturalAttributionType
+from archaeological_operations.models import (
+ AdministrativeAct,
+ Operation,
+ CulturalAttributionType,
+)
from archaeological_context_records.models import ContextRecord, Dating
from archaeological_warehouse.models import Warehouse
class MaterialType(HierarchicalType):
code = models.CharField(_("Code"), max_length=100, blank=True, null=True)
- recommendation = models.TextField(
- _("Recommendation"), blank=True, default="")
+ recommendation = models.TextField(_("Recommendation"), blank=True, default="")
class Meta:
verbose_name = _("Material type")
verbose_name_plural = _("Material types")
- ordering = ('label',)
+ ordering = ("label",)
post_save.connect(post_save_cache, sender=MaterialType)
@@ -78,7 +100,7 @@ class MaterialTypeQualityType(GeneralType):
class Meta:
verbose_name = _("Material type quality type")
verbose_name_plural = _("Material type quality types")
- ordering = ('order',)
+ ordering = ("order",)
post_save.connect(post_save_cache, sender=MaterialTypeQualityType)
@@ -91,7 +113,10 @@ class ConservatoryState(HierarchicalType):
class Meta:
verbose_name = _("Conservatory state type")
verbose_name_plural = _("Conservatory state types")
- ordering = ('order', 'label',)
+ ordering = (
+ "order",
+ "label",
+ )
post_save.connect(post_save_cache, sender=ConservatoryState)
@@ -103,43 +128,76 @@ class TreatmentType(HierarchicalType):
virtual = models.BooleanField(_("Virtual"))
destructive = models.BooleanField(_("Destructive"), default=False)
create_new_find = models.BooleanField(
- _("Create a new find"), default=False,
- help_text=_("If True when this treatment is applied a new version "
- "of the object will be created."))
+ _("Create a new find"),
+ default=False,
+ help_text=_(
+ "If True when this treatment is applied a new version "
+ "of the object will be created."
+ ),
+ )
upstream_is_many = models.BooleanField(
- _("Upstream is many"), default=False,
+ _("Upstream is many"),
+ default=False,
help_text=_(
- "Check this if for this treatment from many finds you'll get "
- "one."))
+ "Check this if for this treatment from many finds you'll get " "one."
+ ),
+ )
downstream_is_many = models.BooleanField(
- _("Downstream is many"), default=False,
+ _("Downstream is many"),
+ default=False,
help_text=_(
- "Check this if for this treatment from one find you'll get "
- "many."))
+ "Check this if for this treatment from one find you'll get " "many."
+ ),
+ )
change_reference_location = models.BooleanField(
- _("Change reference location"), default=False,
- help_text=_("The treatment change the reference location."))
+ _("Change reference location"),
+ default=False,
+ help_text=_("The treatment change the reference location."),
+ )
change_current_location = models.BooleanField(
- _("Change current location"), default=False,
- help_text=_("The treatment change the current location."))
+ _("Change current location"),
+ default=False,
+ help_text=_("The treatment change the current location."),
+ )
restore_reference_location = models.BooleanField(
- _("Restore the reference location"), default=False,
- help_text=_("The treatment change restore reference location to the "
- "current location."))
+ _("Restore the reference location"),
+ default=False,
+ help_text=_(
+ "The treatment change restore reference location to the "
+ "current location."
+ ),
+ )
class Meta:
verbose_name = _("Treatment type")
verbose_name_plural = _("Treatment types")
- ordering = ('order', 'label',)
+ ordering = (
+ "order",
+ "label",
+ )
@classmethod
- def get_types(cls, dct=None, instances=False, exclude=None,
- empty_first=True, default=None, initial=None, force=False,
- full_hierarchy=False):
+ def get_types(
+ cls,
+ dct=None,
+ instances=False,
+ exclude=None,
+ empty_first=True,
+ default=None,
+ initial=None,
+ force=False,
+ full_hierarchy=False,
+ ):
types = super(TreatmentType, cls).get_types(
- dct=dct, instances=instances, exclude=exclude,
- empty_first=empty_first, default=default, initial=initial,
- force=force, full_hierarchy=full_hierarchy)
+ dct=dct,
+ instances=instances,
+ exclude=exclude,
+ empty_first=empty_first,
+ default=default,
+ initial=initial,
+ force=force,
+ full_hierarchy=full_hierarchy,
+ )
if dct and not exclude:
rank = 0
if instances:
@@ -167,7 +225,7 @@ class IntegrityType(GeneralType):
class Meta:
verbose_name = _("Integrity / interest type")
verbose_name_plural = _("Integrity / interest types")
- ordering = ('label',)
+ ordering = ("label",)
post_save.connect(post_save_cache, sender=IntegrityType)
@@ -178,7 +236,7 @@ class RemarkabilityType(GeneralType):
class Meta:
verbose_name = _("Remarkability type")
verbose_name_plural = _("Remarkability types")
- ordering = ('label',)
+ ordering = ("label",)
post_save.connect(post_save_cache, sender=RemarkabilityType)
@@ -187,10 +245,11 @@ post_delete.connect(post_save_cache, sender=RemarkabilityType)
class BatchType(GeneralType):
order = models.IntegerField(_("Order"), default=10)
+
class Meta:
verbose_name = _("Batch type")
verbose_name_plural = _("Batch types")
- ordering = ('order',)
+ ordering = ("order",)
post_save.connect(post_save_cache, sender=BatchType)
@@ -201,7 +260,10 @@ class ObjectType(HierarchicalType):
class Meta:
verbose_name = _("Object type")
verbose_name_plural = _("Object types")
- ordering = ('parent__label', 'label',)
+ ordering = (
+ "parent__label",
+ "label",
+ )
post_save.connect(post_save_cache, sender=ObjectType)
@@ -214,7 +276,7 @@ class ObjectTypeQualityType(GeneralType):
class Meta:
verbose_name = _("Object type quality type")
verbose_name_plural = _("Object type quality types")
- ordering = ('order',)
+ ordering = ("order",)
post_save.connect(post_save_cache, sender=ObjectTypeQualityType)
@@ -225,7 +287,10 @@ class AlterationType(HierarchicalType):
class Meta:
verbose_name = _("Alteration type")
verbose_name_plural = _("Alteration types")
- ordering = ('parent__label', 'label',)
+ ordering = (
+ "parent__label",
+ "label",
+ )
post_save.connect(post_save_cache, sender=AlterationType)
@@ -236,7 +301,10 @@ class AlterationCauseType(HierarchicalType):
class Meta:
verbose_name = _("Alteration cause type")
verbose_name_plural = _("Alteration cause types")
- ordering = ('parent__label', 'label',)
+ ordering = (
+ "parent__label",
+ "label",
+ )
post_save.connect(post_save_cache, sender=AlterationCauseType)
@@ -247,7 +315,7 @@ class TreatmentEmergencyType(GeneralType):
class Meta:
verbose_name = _("Treatment emergency type")
verbose_name_plural = _("Treatment emergency types")
- ordering = ('label',)
+ ordering = ("label",)
post_save.connect(post_save_cache, sender=TreatmentEmergencyType)
@@ -258,7 +326,10 @@ class CommunicabilityType(HierarchicalType):
class Meta:
verbose_name = _("Communicability type")
verbose_name_plural = _("Communicability types")
- ordering = ('parent__label', 'label',)
+ ordering = (
+ "parent__label",
+ "label",
+ )
post_save.connect(post_save_cache, sender=CommunicabilityType)
@@ -271,7 +342,7 @@ class CheckedType(GeneralType):
class Meta:
verbose_name = _("Checked type")
verbose_name_plural = _("Checked types")
- ordering = ('order',)
+ ordering = ("order",)
post_save.connect(post_save_cache, sender=CheckedType)
@@ -298,51 +369,71 @@ class BFBulkView(object):
"""
-class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
- CompleteIdentifierItem, OwnPerms, ValueGetter):
- EXTERNAL_ID_KEY = 'base_find_external_id'
- EXTERNAL_ID_DEPENDENCIES = ['find']
- SLUG = 'basefind'
+class BaseFind(
+ BulkUpdatedItem,
+ BaseHistorizedItem,
+ GeoItem,
+ CompleteIdentifierItem,
+ OwnPerms,
+ ValueGetter,
+):
+ EXTERNAL_ID_KEY = "base_find_external_id"
+ EXTERNAL_ID_DEPENDENCIES = ["find"]
+ SLUG = "basefind"
uuid = models.UUIDField(default=uuid.uuid4)
label = models.TextField(_("Free ID"))
external_id = models.TextField(_("External ID"), blank=True, default="")
auto_external_id = models.BooleanField(
- _("External ID is set automatically"), default=False)
- excavation_id = models.TextField(
- _("Excavation ID"), blank=True, default="")
- description = models.TextField(
- _("Description"), blank=True, default="")
+ _("External ID is set automatically"), default=False
+ )
+ excavation_id = models.TextField(_("Excavation ID"), blank=True, default="")
+ description = models.TextField(_("Description"), blank=True, default="")
comment = models.TextField(_("Comment"), blank=True, default="")
special_interest = models.CharField(
- _("Special interest"), blank=True, default="", max_length=120)
+ _("Special interest"), blank=True, default="", max_length=120
+ )
context_record = models.ForeignKey(
- ContextRecord, related_name='base_finds',
- verbose_name=_("Context Record"))
- discovery_date = models.DateField(_("Discovery date (exact or TPQ)"),
- blank=True, null=True)
- discovery_date_taq = models.DateField(_("Discovery date (TAQ)"),
- blank=True, null=True)
- batch = models.ForeignKey(BatchType, verbose_name=_("Batch/object"),
- on_delete=models.SET_NULL,
- blank=True, null=True)
+ ContextRecord, related_name="base_finds", verbose_name=_("Context Record")
+ )
+ discovery_date = models.DateField(
+ _("Discovery date (exact or TPQ)"), blank=True, null=True
+ )
+ discovery_date_taq = models.DateField(
+ _("Discovery date (TAQ)"), blank=True, null=True
+ )
+ batch = models.ForeignKey(
+ BatchType,
+ verbose_name=_("Batch/object"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
index = models.IntegerField("Index", default=0)
material_index = models.IntegerField(_("Material index"), default=0)
topographic_localisation = models.CharField(
- _("Point of topographic reference"), blank=True, null=True,
- max_length=120)
+ _("Point of topographic reference"), blank=True, null=True, max_length=120
+ )
# gis
line = models.LineStringField(_("Line"), blank=True, null=True)
cache_short_id = models.TextField(
- _("Short ID"), blank=True, default="", db_index=True,
- help_text=_("Cached value - do not edit"))
+ _("Short ID"),
+ blank=True,
+ default="",
+ db_index=True,
+ help_text=_("Cached value - do not edit"),
+ )
cache_complete_id = models.TextField(
- _("Complete ID"), blank=True, default="", db_index=True,
- help_text=_("Cached value - do not edit"))
+ _("Complete ID"),
+ blank=True,
+ default="",
+ db_index=True,
+ help_text=_("Cached value - do not edit"),
+ )
history = HistoricalRecords()
- RELATED_POST_PROCESS = ['find']
- CACHED_LABELS = ['cache_short_id', 'cache_complete_id']
+ RELATED_POST_PROCESS = ["find"]
+ CACHED_LABELS = ["cache_short_id", "cache_complete_id"]
CACHED_COMPLETE_ID = "cache_complete_id"
- PARENT_SEARCH_VECTORS = ['context_record']
+ PARENT_SEARCH_VECTORS = ["context_record"]
BASE_SEARCH_VECTORS = [
SearchVectorConfig("label"),
SearchVectorConfig("description", "local"),
@@ -364,14 +455,14 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
("delete_own_basefind", "Can delete own Base find"),
)
indexes = [
- GinIndex(fields=['data']),
+ GinIndex(fields=["data"]),
]
def __str__(self):
return self.label
def natural_key(self):
- return (self.uuid, )
+ return (self.uuid,)
def regenerate_external_id(self):
self.skip_history_when_saving = True
@@ -386,24 +477,27 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
def public_representation(self):
dct = super(BaseFind, self).public_representation()
- dct.update({
- "context-record": self.context_record.public_representation(),
- "description": self.description,
- "comment": self.comment,
- "discovery-date": self.discovery_date and
- self.discovery_date.strftime("%Y/%m/%d"),
- "discovery-date-taq": self.discovery_date_taq and
- self.discovery_date_taq.strftime("%Y/%m/%d"),
- "discovery-date-tpq": self.discovery_date_taq and
- self.discovery_date and
- self.discovery_date.strftime("%Y/%m/%d"),
- })
+ dct.update(
+ {
+ "context-record": self.context_record.public_representation(),
+ "description": self.description,
+ "comment": self.comment,
+ "discovery-date": self.discovery_date
+ and self.discovery_date.strftime("%Y/%m/%d"),
+ "discovery-date-taq": self.discovery_date_taq
+ and self.discovery_date_taq.strftime("%Y/%m/%d"),
+ "discovery-date-tpq": self.discovery_date_taq
+ and self.discovery_date
+ and self.discovery_date.strftime("%Y/%m/%d"),
+ }
+ )
return dct
- def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):
+ def get_values(self, prefix="", no_values=False, filtr=None, **kwargs):
no_find = kwargs.get("no_find", False)
values = super(BaseFind, self).get_values(
- prefix=prefix, no_values=no_values, filtr=filtr, **kwargs)
+ prefix=prefix, no_values=no_values, filtr=filtr, **kwargs
+ )
if not filtr or prefix + "complete_id" in filtr:
values[prefix + "complete_id"] = self.complete_id()
if no_find:
@@ -412,7 +506,7 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
kwargs["no_base_finds"] = True
values[prefix + "finds"] = [
find.get_values(no_values=True, filtr=None, **kwargs)
- for find in self.find.order_by('pk').all()
+ for find in self.find.order_by("pk").all()
]
return values
@@ -425,7 +519,7 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
"""
Get the last find which is not related to many base_find
"""
- for find in self.find.order_by('-pk'):
+ for find in self.find.order_by("-pk"):
if find.base_finds.count() == 1:
return find
return
@@ -452,49 +546,48 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
"""
Generate index based on operation or context record (based on
the configuration)
-
+
:return: True if index has been changed.
"""
profile = get_current_profile()
- if profile.find_index == 'O':
+ if profile.find_index == "O":
operation = self.context_record.operation
- q = BaseFind.objects \
- .filter(context_record__operation=operation)
- elif profile.find_index == 'CR':
+ q = BaseFind.objects.filter(context_record__operation=operation)
+ elif profile.find_index == "CR":
cr = self.context_record
- q = BaseFind.objects \
- .filter(context_record=cr)
+ q = BaseFind.objects.filter(context_record=cr)
else:
return False
if self.pk:
q = q.exclude(pk=self.pk)
if q.count():
- self.index = q.aggregate(Max('index'))['index__max'] + 1
+ self.index = q.aggregate(Max("index"))["index__max"] + 1
else:
self.index = 1
return True
def _ope_code(self):
if not self.context_record.operation:
- return ''
+ return ""
profile = get_current_profile()
ope = self.context_record.operation
c_id = []
if ope.code_patriarche:
- c_id.append(profile.operation_prefix +
- ope.code_patriarche)
+ c_id.append(profile.operation_prefix + ope.code_patriarche)
elif ope.year and ope.operation_code:
c_id.append(
- profile.default_operation_prefix +
- str(ope.year or '') + "-" +
- str(ope.operation_code or ''))
+ profile.default_operation_prefix
+ + str(ope.year or "")
+ + "-"
+ + str(ope.operation_code or "")
+ )
else:
- c_id.append('')
+ c_id.append("")
return settings.JOINT.join(c_id)
def complete_id(self):
profile = get_current_profile()
- if profile.has_overload('basefind_complete_id'):
+ if profile.has_overload("basefind_complete_id"):
return ALTERNATE_CONFIGS[profile.config].basefind_complete_id(self)
# OPE|MAT.CODE|UE|FIND_index
c_id = [self._ope_code()]
@@ -504,12 +597,15 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
for mat in find.material_types.all():
if mat.code:
materials.add(mat.code)
- c_id.append('-'.join(sorted(list(materials))))
+ c_id.append("-".join(sorted(list(materials))))
c_id.append(self.context_record.label)
- c_id.append(('{:0' + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + 'd}'
- ).format(self.index))
+ c_id.append(
+ ("{:0" + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + "d}").format(
+ self.index
+ )
+ )
return settings.JOINT.join(c_id)
def _generate_cache_complete_id(self):
@@ -517,12 +613,15 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
def short_id(self):
profile = get_current_profile()
- if profile.has_overload('basefind_short_id'):
+ if profile.has_overload("basefind_short_id"):
return ALTERNATE_CONFIGS[profile.config].basefind_short_id(self)
# OPE|FIND_index
c_id = [self._ope_code()]
- c_id.append(('{:0' + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + 'd}'
- ).format(self.index))
+ c_id.append(
+ ("{:0" + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + "d}").format(
+ self.index
+ )
+ )
return settings.JOINT.join(c_id)
def _generate_cache_short_id(self):
@@ -533,24 +632,32 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
def material_type_label(self):
find = self.get_last_find()
- finds = [find and find.material_type.code or '']
+ finds = [find and find.material_type.code or ""]
ope = self.context_record.operation
- finds += [ope.code_patriarche or
- (str(ope.year) + "-" + ope.operation_code)]
+ finds += [ope.code_patriarche or (str(ope.year) + "-" + ope.operation_code)]
finds += [self.context_record.label, str(self.material_index)]
return settings.JOINT.join(finds)
def _real_label(self):
- if not self.context_record.parcel \
- or not self.context_record.operation \
- or not self.context_record.operation.code_patriarche:
+ if (
+ not self.context_record.parcel
+ or not self.context_record.operation
+ or not self.context_record.operation.code_patriarche
+ ):
return
find = self.get_last_find()
lbl = find.label or self.label
return settings.JOINT.join(
- [it for it in (
- self.context_record.operation.code_patriarche,
- self.context_record.label, lbl) if it])
+ [
+ it
+ for it in (
+ self.context_record.operation.code_patriarche,
+ self.context_record.label,
+ lbl,
+ )
+ if it
+ ]
+ )
def _temp_label(self):
if not self.context_record.parcel:
@@ -558,19 +665,33 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
find = self.get_last_find()
lbl = find.label or self.label
return settings.JOINT.join(
- [str(it) for it in (
- self.context_record.parcel.year, self.index,
- self.context_record.label, lbl) if it])
+ [
+ str(it)
+ for it in (
+ self.context_record.parcel.year,
+ self.index,
+ self.context_record.label,
+ lbl,
+ )
+ if it
+ ]
+ )
@property
def name(self):
return self.label
@classmethod
- def cached_label_bulk_update(cls, operation_id=None, parcel_id=None,
- context_record_id=None, transaction_id=None):
+ def cached_label_bulk_update(
+ cls,
+ operation_id=None,
+ parcel_id=None,
+ context_record_id=None,
+ transaction_id=None,
+ ):
transaction_id, is_recursion = cls.bulk_recursion(
- transaction_id, [operation_id, parcel_id, context_record_id])
+ transaction_id, [operation_id, parcel_id, context_record_id]
+ )
if is_recursion:
return
@@ -580,23 +701,23 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
ON acr.operation_id = %s AND acr.id = mybf.context_record_id
"""
args = [int(operation_id)]
- kwargs = {'operation_id': operation_id}
+ kwargs = {"operation_id": operation_id}
elif parcel_id:
filters = """
INNER JOIN archaeological_context_records_contextrecord acr
ON acr.parcel_id = %s AND acr.id = mybf.context_record_id
"""
args = [int(parcel_id)]
- kwargs = {'parcel_id': parcel_id}
+ kwargs = {"parcel_id": parcel_id}
elif context_record_id:
filters = """
WHERE mybf.context_record_id = %s
"""
args = [int(context_record_id)]
- kwargs = {'context_record_id': context_record_id}
+ kwargs = {"context_record_id": context_record_id}
else:
return
- kwargs['transaction_id'] = transaction_id
+ kwargs["transaction_id"] = transaction_id
profile = get_current_profile()
@@ -672,10 +793,13 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,
SELECT mybf.id FROM archaeological_finds_basefind mybf
{filters}
);
- """.format(main_ope_prefix=profile.operation_prefix,
- ope_prefix=profile.default_operation_prefix,
- join=settings.JOINT, filters=filters,
- zeros=settings.ISHTAR_FINDS_INDEX_ZERO_LEN * "0")
+ """.format(
+ main_ope_prefix=profile.operation_prefix,
+ ope_prefix=profile.default_operation_prefix,
+ join=settings.JOINT,
+ filters=filters,
+ zeros=settings.ISHTAR_FINDS_INDEX_ZERO_LEN * "0",
+ )
with connection.cursor() as c:
c.execute(sql, args)
Find.cached_label_bulk_update(**kwargs)
@@ -689,37 +813,43 @@ def post_save_basefind(sender, **kwargs):
post_save.connect(post_save_basefind, sender=BaseFind)
-WEIGHT_UNIT = (('g', _("g")),
- ('kg', _("kg")),)
+WEIGHT_UNIT = (
+ ("g", _("g")),
+ ("kg", _("kg")),
+)
class FindBasket(Basket, MainItem, ValueGetter):
- SHOW_URL = 'show-findbasket'
+ SHOW_URL = "show-findbasket"
SLUG = "findbasket"
- items = models.ManyToManyField('Find', blank=True, related_name='basket')
+ items = models.ManyToManyField("Find", blank=True, related_name="basket")
QUICK_ACTIONS = [
QuickAction(
- url="findbasket-qa-duplicate", icon_class="fa fa-clone",
- text=_("Duplicate"), target="one",
- rights=['view_find', 'view_own_find']),
+ url="findbasket-qa-duplicate",
+ icon_class="fa fa-clone",
+ text=_("Duplicate"),
+ target="one",
+ rights=["view_find", "view_own_find"],
+ ),
]
class Meta:
verbose_name = _("Basket")
- ordering = ('label', )
+ ordering = ("label",)
permissions = (
("view_find", "Can view all Finds"),
("view_own_find", "Can view own Find"),
)
- def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):
+ def get_values(self, prefix="", no_values=False, filtr=None, **kwargs):
base_exclude = kwargs["exclude"][:] if "exclude" in kwargs else []
base_exclude.append(prefix + "items")
kw = kwargs.copy()
kw["exclude"] = base_exclude
values = super(FindBasket, self).get_values(
- prefix=prefix, no_values=no_values, filtr=filtr, **kw)
+ prefix=prefix, no_values=no_values, filtr=filtr, **kw
+ )
if not filtr or prefix + "items" in filtr:
values[prefix + "items"] = [
item.get_values(no_values=True, filtr=filtr, **kwargs)
@@ -739,30 +869,53 @@ class FindBasket(Basket, MainItem, ValueGetter):
ishtaruser = request.user.ishtaruser
actions = []
if self.user == ishtaruser or ishtaruser.pk in [
- user.pk for user in self.shared_write_with.all()]:
+ user.pk for user in self.shared_write_with.all()
+ ]:
actions = [
- (reverse("select_itemsinbasket", args=[self.pk]),
- _("Manage basket"),
- "fa fa-shopping-basket", "", "", False),
+ (
+ reverse("select_itemsinbasket", args=[self.pk]),
+ _("Manage basket"),
+ "fa fa-shopping-basket",
+ "",
+ "",
+ False,
+ ),
]
- can_edit_find = self.can_do(request, 'change_find')
+ can_edit_find = self.can_do(request, "change_find")
if can_edit_find:
actions += [
- (reverse('findbasket-add-treatment', args=[self.pk]),
- _("Add treatment"), "fa fa-flask", "", "", False),
+ (
+ reverse("findbasket-add-treatment", args=[self.pk]),
+ _("Add treatment"),
+ "fa fa-flask",
+ "",
+ "",
+ False,
+ ),
]
if self.can_do(request, "add_treatmentfile"):
actions += [
- (reverse('findbasket-add-treatmentfile', args=[self.pk]),
- _("Add treatment file"), "fa fa-file-text-o", "", "", False),
+ (
+ reverse("findbasket-add-treatmentfile", args=[self.pk]),
+ _("Add treatment file"),
+ "fa fa-file-text-o",
+ "",
+ "",
+ False,
+ ),
]
if can_edit_find:
duplicate = self.get_quick_action_by_url("findbasket-qa-duplicate")
actions += [
- (reverse(duplicate.url, args=[self.pk]),
- duplicate.text, duplicate.icon_class,
- "", "", True),
+ (
+ reverse(duplicate.url, args=[self.pk]),
+ duplicate.text,
+ duplicate.icon_class,
+ "",
+ "",
+ True,
+ ),
]
return actions
@@ -813,129 +966,153 @@ def query_loan(is_true=True):
:return: (filter, exclude, extra)
"""
if is_true:
- return Q(container_ref__isnull=False, container__isnull=False), \
- Q(container_ref=F('container')), None
+ return (
+ Q(container_ref__isnull=False, container__isnull=False),
+ Q(container_ref=F("container")),
+ None,
+ )
else:
- return Q(container_ref__isnull=False, container__isnull=False,
- container_ref=F('container')), None, None
+ return (
+ Q(
+ container_ref__isnull=False,
+ container__isnull=False,
+ container_ref=F("container"),
+ ),
+ None,
+ None,
+ )
-class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
- CompleteIdentifierItem, OwnPerms, MainItem):
- SLUG = 'find'
+class Find(
+ BulkUpdatedItem,
+ ValueGetter,
+ DocumentItem,
+ BaseHistorizedItem,
+ CompleteIdentifierItem,
+ OwnPerms,
+ MainItem,
+):
+ SLUG = "find"
APP = "archaeological-finds"
MODEL = "find"
- SHOW_URL = 'show-find'
- DELETE_URL = 'delete-find'
- EXTERNAL_ID_KEY = 'find_external_id'
- TABLE_COLS = ['external_id', 'label',
- 'base_finds__context_record__town__name',
- 'base_finds__context_record__operation__common_name',
- 'base_finds__context_record__label',
- 'cached_materials', 'cached_object_types',
- 'cached_periods',
- 'container__cached_label']
- if settings.COUNTRY == 'fr':
- TABLE_COLS.insert(
- 3, 'base_finds__context_record__operation__code_patriarche')
+ SHOW_URL = "show-find"
+ DELETE_URL = "delete-find"
+ EXTERNAL_ID_KEY = "find_external_id"
+ TABLE_COLS = [
+ "external_id",
+ "label",
+ "base_finds__context_record__town__name",
+ "base_finds__context_record__operation__common_name",
+ "base_finds__context_record__label",
+ "cached_materials",
+ "cached_object_types",
+ "cached_periods",
+ "container__cached_label",
+ ]
+ if settings.COUNTRY == "fr":
+ TABLE_COLS.insert(3, "base_finds__context_record__operation__code_patriarche")
TABLE_COLS_FOR_OPE = [
- 'base_finds__cache_short_id',
- 'base_finds__cache_complete_id',
- 'previous_id', 'label',
- 'cached_materials',
- 'cached_periods',
- 'find_number',
- 'cached_object_types',
- 'container__cached_label',
- 'container_ref__cached_label',
- 'description',
- 'base_finds__context_record__town__name',
- 'base_finds__context_record__parcel', ]
+ "base_finds__cache_short_id",
+ "base_finds__cache_complete_id",
+ "previous_id",
+ "label",
+ "cached_materials",
+ "cached_periods",
+ "find_number",
+ "cached_object_types",
+ "container__cached_label",
+ "container_ref__cached_label",
+ "description",
+ "base_finds__context_record__town__name",
+ "base_finds__context_record__parcel",
+ ]
TABLE_COLS_FOR_CR = [
- 'base_finds__cache_short_id',
- 'base_finds__cache_complete_id',
- 'previous_id', 'label',
- 'base_finds__context_record__label',
- 'cached_materials',
- 'cached_periods',
- 'find_number',
- 'cached_object_types',
- 'container__cached_label',
- 'container_ref__cached_label',
- 'description',
- 'base_finds__context_record__town__name',
- 'base_finds__context_record__parcel', ]
+ "base_finds__cache_short_id",
+ "base_finds__cache_complete_id",
+ "previous_id",
+ "label",
+ "base_finds__context_record__label",
+ "cached_materials",
+ "cached_periods",
+ "find_number",
+ "cached_object_types",
+ "container__cached_label",
+ "container_ref__cached_label",
+ "description",
+ "base_finds__context_record__town__name",
+ "base_finds__context_record__parcel",
+ ]
NEW_QUERY_ENGINE = True
COL_LABELS = {
- 'base_finds__context_record__label': _("Context record"),
- 'base_finds__cache_short_id': _("Base find - Short ID"),
- 'base_finds__cache_complete_id': _("Base find - Complete ID"),
- 'base_finds__context_record__operation__code_patriarche': _(
- "Operation (code)"
- ),
- 'base_finds__context_record__town__name': _("Town"),
- 'base_finds__context_record__operation__common_name': _(
- "Operation (name)"
- ),
- 'base_finds__context_record__archaeological_site__name':
- IshtarSiteProfile.get_default_site_label,
- 'base_finds__context_record__parcel': _("Parcel"),
- 'base_finds__batch': _("Batch"),
- 'base_finds__comment': _("Base find - Comment"),
- 'base_finds__description': _("Base find - Description"),
- 'base_finds__topographic_localisation': _("Base find - "
- "Topographic localisation"),
- 'base_finds__special_interest': _("Base find - Special interest"),
- 'base_finds__discovery_date': _(
- "Base find - Discovery date (exact or TPQ)"),
- 'base_finds__discovery_date_taq': _(
- "Base find - Discovery date (TAQ)"),
- 'container__cached_label': _("Current container"),
- 'container_ref__cached_label': _("Reference container"),
- 'datings__period__label': _("Periods"),
- 'cached_periods': _("Periods"),
- 'material_types__label': _("Material types"),
- 'cached_materials': _("Material types"),
- 'object_types__label': _("Object types"),
- 'cached_object_types': _("Object types"),
+ "base_finds__context_record__label": _("Context record"),
+ "base_finds__cache_short_id": _("Base find - Short ID"),
+ "base_finds__cache_complete_id": _("Base find - Complete ID"),
+ "base_finds__context_record__operation__code_patriarche": _("Operation (code)"),
+ "base_finds__context_record__town__name": _("Town"),
+ "base_finds__context_record__operation__common_name": _("Operation (name)"),
+ "base_finds__context_record__archaeological_site__name": IshtarSiteProfile.get_default_site_label,
+ "base_finds__context_record__parcel": _("Parcel"),
+ "base_finds__batch": _("Batch"),
+ "base_finds__comment": _("Base find - Comment"),
+ "base_finds__description": _("Base find - Description"),
+ "base_finds__topographic_localisation": _(
+ "Base find - " "Topographic localisation"
+ ),
+ "base_finds__special_interest": _("Base find - Special interest"),
+ "base_finds__discovery_date": _("Base find - Discovery date (exact or TPQ)"),
+ "base_finds__discovery_date_taq": _("Base find - Discovery date (TAQ)"),
+ "container__cached_label": _("Current container"),
+ "container_ref__cached_label": _("Reference container"),
+ "datings__period__label": _("Periods"),
+ "cached_periods": _("Periods"),
+ "material_types__label": _("Material types"),
+ "cached_materials": _("Material types"),
+ "object_types__label": _("Object types"),
+ "cached_object_types": _("Object types"),
}
EXTRA_FULL_FIELDS = [
- 'datings',
- 'base_finds__cache_short_id', 'base_finds__cache_complete_id',
- 'base_finds__comment', 'base_finds__description',
- 'base_finds__topographic_localisation',
- 'base_finds__special_interest',
- 'base_finds__discovery_date',
- 'base_finds__discovery_date_taq',
+ "datings",
+ "base_finds__cache_short_id",
+ "base_finds__cache_complete_id",
+ "base_finds__comment",
+ "base_finds__description",
+ "base_finds__topographic_localisation",
+ "base_finds__special_interest",
+ "base_finds__discovery_date",
+ "base_finds__discovery_date_taq",
]
- ATTRS_EQUIV = {'get_first_base_find': 'base_finds'}
+ ATTRS_EQUIV = {"get_first_base_find": "base_finds"}
# statistics
- STATISTIC_MODALITIES_OPTIONS = OrderedDict([
- ("base_finds__context_record__operation__operation_type__label",
- _("Operation type")),
- ('base_finds__context_record__operation__year', _("Year")),
- ("base_finds__context_record__operation__towns__areas__label",
- _("Area")),
- ("base_finds__context_record__operation__towns__areas__parent__label",
- _("Extended area")),
- ("datings__period__label", _("Period")),
- ("material_types__label", _("Material type")),
- ("object_types__label", _("Object type")),
- ("preservation_to_considers__label", _("Recommended treatments")),
- ("conservatory_state__label", _("Conservatory state")),
- ("integrities__label", _("Integrity / interest")),
- ("remarkabilities__label", _("Remarkability")),
- ("communicabilities__label", _("Communicability")),
- ("checked_type__label", _("Check")),
- ("alterations__label", _("Alteration")),
- ("alteration_causes__label", _("Alteration cause")),
- ("treatment_emergency__label", _("Treatment emergency")),
- ("documents__source_type__label", _("Associated document type")),
- ])
- STATISTIC_MODALITIES = [
- key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
+ STATISTIC_MODALITIES_OPTIONS = OrderedDict(
+ [
+ (
+ "base_finds__context_record__operation__operation_type__label",
+ _("Operation type"),
+ ),
+ ("base_finds__context_record__operation__year", _("Year")),
+ ("base_finds__context_record__operation__towns__areas__label", _("Area")),
+ (
+ "base_finds__context_record__operation__towns__areas__parent__label",
+ _("Extended area"),
+ ),
+ ("datings__period__label", _("Period")),
+ ("material_types__label", _("Material type")),
+ ("object_types__label", _("Object type")),
+ ("preservation_to_considers__label", _("Recommended treatments")),
+ ("conservatory_state__label", _("Conservatory state")),
+ ("integrities__label", _("Integrity / interest")),
+ ("remarkabilities__label", _("Remarkability")),
+ ("communicabilities__label", _("Communicability")),
+ ("checked_type__label", _("Check")),
+ ("alterations__label", _("Alteration")),
+ ("alteration_causes__label", _("Alteration cause")),
+ ("treatment_emergency__label", _("Treatment emergency")),
+ ("documents__source_type__label", _("Associated document type")),
+ ]
+ )
+ STATISTIC_MODALITIES = [key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
STATISTIC_SUM_VARIABLE = OrderedDict(
(
("pk", (_("Number"), 1)),
@@ -946,65 +1123,54 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
)
# search parameters
- REVERSED_BOOL_FIELDS = ['documents__image__isnull',
- 'documents__associated_url__isnull',
- 'documents__associated_file__isnull']
- BOOL_FIELDS = ['is_complete']
+ REVERSED_BOOL_FIELDS = [
+ "documents__image__isnull",
+ "documents__associated_url__isnull",
+ "documents__associated_file__isnull",
+ ]
+ BOOL_FIELDS = ["is_complete"]
RELATION_TYPES_PREFIX = {
- 'ope_relation_types':
- 'base_finds__context_record__operation__',
- 'cr_relation_types':
- 'base_finds__context_record__',
+ "ope_relation_types": "base_finds__context_record__operation__",
+ "cr_relation_types": "base_finds__context_record__",
}
DATED_FIELDS = [
- 'last_modified__gte',
- 'treatments__file__end_date__lte',
- 'treatments__end_date__lte',
- 'base_finds__discovery_date__lte',
- 'base_finds__discovery_date__gte',
- 'base_finds__discovery_date_tpq__lte',
- 'base_finds__discovery_date_tpq__gte',
- 'base_finds__discovery_date_taq__lte',
- 'base_finds__discovery_date_taq__gte',
- 'check_date__lte',
- 'check_date__gte',
- 'appraisal_date__lte',
- 'appraisal_date__gte',
+ "last_modified__gte",
+ "treatments__file__end_date__lte",
+ "treatments__end_date__lte",
+ "base_finds__discovery_date__lte",
+ "base_finds__discovery_date__gte",
+ "base_finds__discovery_date_tpq__lte",
+ "base_finds__discovery_date_tpq__gte",
+ "base_finds__discovery_date_taq__lte",
+ "base_finds__discovery_date_taq__gte",
+ "check_date__lte",
+ "check_date__gte",
+ "appraisal_date__lte",
+ "appraisal_date__gte",
]
- BASE_REQUEST = {'downstream_treatment__isnull': True}
+ BASE_REQUEST = {"downstream_treatment__isnull": True}
EXTRA_REQUEST_KEYS = {
- 'all_base_finds__context_record':
- 'base_finds__context_record__context_record_tree_parent__cr_parent_id',
- 'base_finds__context_record':
- 'base_finds__context_record__pk',
- 'base_finds__context_record__archaeological_site':
- 'base_finds__context_record__archaeological_site__pk',
- 'archaeological_sites_context_record':
- 'base_finds__context_record__archaeological_site__pk',
- 'base_finds__context_record__operation__year':
- 'base_finds__context_record__operation__year__contains',
- 'base_finds__context_record__operation':
- 'base_finds__context_record__operation__pk',
- 'base_finds__context_record__operation__operation_type':
- 'base_finds__context_record__operation__operation_type__pk',
- 'archaeological_sites':
- 'base_finds__context_record__operation__archaeological_sites__pk',
- 'base_finds__context_record__operation__code_patriarche':
- 'base_finds__context_record__operation__code_patriarche',
- 'base_finds__context_record__town__areas':
- 'base_finds__context_record__town__areas__pk',
- 'base_finds__context_record__archaeological_site__name':
- 'base_finds__context_record__archaeological_site__name',
- 'datings__period': 'datings__period__pk',
- 'description': 'description__icontains',
- 'base_finds__batch': 'base_finds__batch',
- 'basket_id': 'basket__pk',
- 'denomination': 'denomination',
- 'cached_label': 'cached_label__icontains',
- 'documents__image__isnull': 'documents__image__isnull',
- 'container__location': 'container__location__pk',
- 'container_ref__location': 'container_ref__location__pk',
+ "all_base_finds__context_record": "base_finds__context_record__context_record_tree_parent__cr_parent_id",
+ "base_finds__context_record": "base_finds__context_record__pk",
+ "base_finds__context_record__archaeological_site": "base_finds__context_record__archaeological_site__pk",
+ "archaeological_sites_context_record": "base_finds__context_record__archaeological_site__pk",
+ "base_finds__context_record__operation__year": "base_finds__context_record__operation__year__contains",
+ "base_finds__context_record__operation": "base_finds__context_record__operation__pk",
+ "base_finds__context_record__operation__operation_type": "base_finds__context_record__operation__operation_type__pk",
+ "archaeological_sites": "base_finds__context_record__operation__archaeological_sites__pk",
+ "base_finds__context_record__operation__code_patriarche": "base_finds__context_record__operation__code_patriarche",
+ "base_finds__context_record__town__areas": "base_finds__context_record__town__areas__pk",
+ "base_finds__context_record__archaeological_site__name": "base_finds__context_record__archaeological_site__name",
+ "datings__period": "datings__period__pk",
+ "description": "description__icontains",
+ "base_finds__batch": "base_finds__batch",
+ "basket_id": "basket__pk",
+ "denomination": "denomination",
+ "cached_label": "cached_label__icontains",
+ "documents__image__isnull": "documents__image__isnull",
+ "container__location": "container__location__pk",
+ "container_ref__location": "container_ref__location__pk",
}
for table in (TABLE_COLS, TABLE_COLS_FOR_OPE):
for key in table:
@@ -1013,421 +1179,373 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
# alternative names of fields for searches
ALT_NAMES = {
- 'base_finds__cache_short_id':
- SearchAltName(pgettext_lazy("key for text search", "short-id"),
- 'base_finds__cache_short_id__iexact'),
- 'base_finds__cache_complete_id':
- SearchAltName(pgettext_lazy("key for text search", "complete-id"),
- 'base_finds__cache_complete_id__iexact'),
- 'label':
- SearchAltName(pgettext_lazy("key for text search", "free-id"),
- 'label__iexact'),
- 'denomination':
- SearchAltName(pgettext_lazy("key for text search", "denomination"),
- 'denomination__iexact'),
- 'base_finds__context_record__town':
- SearchAltName(
- pgettext_lazy("key for text search", "town"),
- 'base_finds__context_record__town__cached_label__iexact'),
- 'base_finds__context_record__operation__year':
- SearchAltName(pgettext_lazy("key for text search", "year"),
- 'base_finds__context_record__operation__year'),
- 'base_finds__context_record__operation__operation_code':
- SearchAltName(
- pgettext_lazy("key for text search", "operation-code"),
- 'base_finds__context_record__operation__operation_code'),
- 'base_finds__context_record__operation__code_patriarche':
- SearchAltName(
- pgettext_lazy("key for text search", "code-patriarche"),
- 'base_finds__context_record__operation__code_patriarche__iexact'
- ),
- 'base_finds__context_record__operation__operation_type':
- SearchAltName(
- pgettext_lazy("key for text search", "operation-type"),
- 'base_finds__context_record__operation__operation_type'
- '__label__iexact'),
- 'base_finds__context_record__town__areas':
- SearchAltName(
- pgettext_lazy("key for text search", "area"),
- 'base_finds__context_record__town__areas__label__iexact'),
- 'archaeological_sites':
- SearchAltName(
- pgettext_lazy("key for text search", "site"),
- 'base_finds__context_record__operation__archaeological_sites__'
- 'cached_label__icontains'),
- 'archaeological_sites_name':
- SearchAltName(
- pgettext_lazy("key for text search", "site-name"),
- 'base_finds__context_record__operation__archaeological_sites__'
- 'name__iexact'),
- 'archaeological_sites_context_record':
- SearchAltName(
- pgettext_lazy("key for text search", "context-record-site"),
- 'base_finds__context_record__archaeological_site__'
- 'cached_label__icontains'),
- 'archaeological_sites_context_record_name':
- SearchAltName(
- pgettext_lazy("key for text search",
- "context-record-site-name"),
- 'base_finds__context_record__archaeological_site__'
- 'name__iexact'),
- 'base_finds__context_record':
- SearchAltName(
- pgettext_lazy("key for text search", "context-record"),
- 'base_finds__context_record__cached_label__icontains'),
- 'ope_relation_types':
- SearchAltName(
- pgettext_lazy("key for text search", "operation-relation-type"),
- 'ope_relation_types'),
- 'cr_relation_types':
- SearchAltName(
- pgettext_lazy("key for text search",
- "context-record-relation-type"),
- 'cr_relation_types'),
- 'material_types':
- SearchAltName(
- pgettext_lazy("key for text search", "material"),
- 'material_types__label__iexact'),
- 'object_types':
- SearchAltName(
- pgettext_lazy("key for text search", "object-type"),
- 'object_types__label__iexact'),
- 'preservation_to_considers':
- SearchAltName(
- pgettext_lazy("key for text search", "recommended-treatments"),
- 'preservation_to_considers__label__iexact'),
- 'conservatory_state':
- SearchAltName(
- pgettext_lazy("key for text search", "conservatory"),
- 'conservatory_state__label__iexact'),
- 'integrities':
- SearchAltName(
- pgettext_lazy("key for text search", "integrity"),
- 'integrities__label__iexact'),
- 'remarkabilities':
- SearchAltName(
- pgettext_lazy("key for text search", "remarkability"),
- 'remarkabilities__label__iexact'),
- 'description':
- SearchAltName(
- pgettext_lazy("key for text search", "description"),
- 'description__iexact'),
- 'base_finds__batch':
- SearchAltName(
- pgettext_lazy("key for text search", "batch"),
- 'base_finds__batch__label__iexact'),
- 'checked_type':
- SearchAltName(
- pgettext_lazy("key for text search", "checked"),
- 'checked_type__label__iexact'),
- 'container_ref':
- SearchAltName(
- pgettext_lazy("key for text search", "container"),
- 'container_ref__cached_label__iexact'),
- 'container_ref__location':
- SearchAltName(
- pgettext_lazy("key for text search", "location"),
- 'container_ref__location__name__iexact'),
- 'container__location':
- SearchAltName(
- pgettext_lazy("key for text search", "current-location"),
- 'container__location__name__iexact'),
- 'container':
- SearchAltName(
- pgettext_lazy("key for text search", "current-container"),
- 'container__cached_label__iexact'),
- 'basket':
- SearchAltName(
- pgettext_lazy("key for text search", "basket"),
- 'basket__label__iexact'),
- 'base_finds__context_record__operation__cached_label':
- SearchAltName(
- pgettext_lazy("key for text search", "operation"),
- 'base_finds__context_record__operation__cached_label__icontains'
- ),
- 'history_modifier':
- SearchAltName(
- pgettext_lazy("key for text search", "last-modified-by"),
- 'history_modifier__ishtaruser__person__cached_label__icontains'
- ),
- 'history_creator':
- SearchAltName(
- pgettext_lazy("key for text search", "created-by"),
- 'history_creator__ishtaruser__person__cached_label__iexact'
- ),
- 'loan':
- SearchAltName(
- pgettext_lazy("key for text search", "loan"), query_loan),
- 'treatments_file_end_date':
- SearchAltName(
- pgettext_lazy("key for text search",
- "treatment-file-end-date-before"),
- 'treatments__file__end_date__lte'),
- 'treatments_end_date':
- SearchAltName(
- pgettext_lazy("key for text search",
- "treatment-end-date-before"),
- 'treatments__end_date__lte'),
- 'previous_id':
- SearchAltName(
- pgettext_lazy("key for text search", "previous-id"),
- 'previous_id__iexact'),
+ "base_finds__cache_short_id": SearchAltName(
+ pgettext_lazy("key for text search", "short-id"),
+ "base_finds__cache_short_id__iexact",
+ ),
+ "base_finds__cache_complete_id": SearchAltName(
+ pgettext_lazy("key for text search", "complete-id"),
+ "base_finds__cache_complete_id__iexact",
+ ),
+ "label": SearchAltName(
+ pgettext_lazy("key for text search", "free-id"), "label__iexact"
+ ),
+ "denomination": SearchAltName(
+ pgettext_lazy("key for text search", "denomination"), "denomination__iexact"
+ ),
+ "base_finds__context_record__town": SearchAltName(
+ pgettext_lazy("key for text search", "town"),
+ "base_finds__context_record__town__cached_label__iexact",
+ ),
+ "base_finds__context_record__operation__year": SearchAltName(
+ pgettext_lazy("key for text search", "year"),
+ "base_finds__context_record__operation__year",
+ ),
+ "base_finds__context_record__operation__operation_code": SearchAltName(
+ pgettext_lazy("key for text search", "operation-code"),
+ "base_finds__context_record__operation__operation_code",
+ ),
+ "base_finds__context_record__operation__code_patriarche": SearchAltName(
+ pgettext_lazy("key for text search", "code-patriarche"),
+ "base_finds__context_record__operation__code_patriarche__iexact",
+ ),
+ "base_finds__context_record__operation__operation_type": SearchAltName(
+ pgettext_lazy("key for text search", "operation-type"),
+ "base_finds__context_record__operation__operation_type" "__label__iexact",
+ ),
+ "base_finds__context_record__town__areas": SearchAltName(
+ pgettext_lazy("key for text search", "area"),
+ "base_finds__context_record__town__areas__label__iexact",
+ ),
+ "archaeological_sites": SearchAltName(
+ pgettext_lazy("key for text search", "site"),
+ "base_finds__context_record__operation__archaeological_sites__"
+ "cached_label__icontains",
+ ),
+ "archaeological_sites_name": SearchAltName(
+ pgettext_lazy("key for text search", "site-name"),
+ "base_finds__context_record__operation__archaeological_sites__"
+ "name__iexact",
+ ),
+ "archaeological_sites_context_record": SearchAltName(
+ pgettext_lazy("key for text search", "context-record-site"),
+ "base_finds__context_record__archaeological_site__"
+ "cached_label__icontains",
+ ),
+ "archaeological_sites_context_record_name": SearchAltName(
+ pgettext_lazy("key for text search", "context-record-site-name"),
+ "base_finds__context_record__archaeological_site__" "name__iexact",
+ ),
+ "base_finds__context_record": SearchAltName(
+ pgettext_lazy("key for text search", "context-record"),
+ "base_finds__context_record__cached_label__icontains",
+ ),
+ "ope_relation_types": SearchAltName(
+ pgettext_lazy("key for text search", "operation-relation-type"),
+ "ope_relation_types",
+ ),
+ "cr_relation_types": SearchAltName(
+ pgettext_lazy("key for text search", "context-record-relation-type"),
+ "cr_relation_types",
+ ),
+ "material_types": SearchAltName(
+ pgettext_lazy("key for text search", "material"),
+ "material_types__label__iexact",
+ ),
+ "object_types": SearchAltName(
+ pgettext_lazy("key for text search", "object-type"),
+ "object_types__label__iexact",
+ ),
+ "preservation_to_considers": SearchAltName(
+ pgettext_lazy("key for text search", "recommended-treatments"),
+ "preservation_to_considers__label__iexact",
+ ),
+ "conservatory_state": SearchAltName(
+ pgettext_lazy("key for text search", "conservatory"),
+ "conservatory_state__label__iexact",
+ ),
+ "integrities": SearchAltName(
+ pgettext_lazy("key for text search", "integrity"),
+ "integrities__label__iexact",
+ ),
+ "remarkabilities": SearchAltName(
+ pgettext_lazy("key for text search", "remarkability"),
+ "remarkabilities__label__iexact",
+ ),
+ "description": SearchAltName(
+ pgettext_lazy("key for text search", "description"), "description__iexact"
+ ),
+ "base_finds__batch": SearchAltName(
+ pgettext_lazy("key for text search", "batch"),
+ "base_finds__batch__label__iexact",
+ ),
+ "checked_type": SearchAltName(
+ pgettext_lazy("key for text search", "checked"),
+ "checked_type__label__iexact",
+ ),
+ "container_ref": SearchAltName(
+ pgettext_lazy("key for text search", "container"),
+ "container_ref__cached_label__iexact",
+ ),
+ "container_ref__location": SearchAltName(
+ pgettext_lazy("key for text search", "location"),
+ "container_ref__location__name__iexact",
+ ),
+ "container__location": SearchAltName(
+ pgettext_lazy("key for text search", "current-location"),
+ "container__location__name__iexact",
+ ),
+ "container": SearchAltName(
+ pgettext_lazy("key for text search", "current-container"),
+ "container__cached_label__iexact",
+ ),
+ "basket": SearchAltName(
+ pgettext_lazy("key for text search", "basket"), "basket__label__iexact"
+ ),
+ "base_finds__context_record__operation__cached_label": SearchAltName(
+ pgettext_lazy("key for text search", "operation"),
+ "base_finds__context_record__operation__cached_label__icontains",
+ ),
+ "history_modifier": SearchAltName(
+ pgettext_lazy("key for text search", "last-modified-by"),
+ "history_modifier__ishtaruser__person__cached_label__icontains",
+ ),
+ "history_creator": SearchAltName(
+ pgettext_lazy("key for text search", "created-by"),
+ "history_creator__ishtaruser__person__cached_label__iexact",
+ ),
+ "loan": SearchAltName(pgettext_lazy("key for text search", "loan"), query_loan),
+ "treatments_file_end_date": SearchAltName(
+ pgettext_lazy("key for text search", "treatment-file-end-date-before"),
+ "treatments__file__end_date__lte",
+ ),
+ "treatments_end_date": SearchAltName(
+ pgettext_lazy("key for text search", "treatment-end-date-before"),
+ "treatments__end_date__lte",
+ ),
+ "previous_id": SearchAltName(
+ pgettext_lazy("key for text search", "previous-id"), "previous_id__iexact"
+ ),
#'collection':
# SearchAltName(
# pgettext_lazy("key for text search", "collection"),
# 'collection__name__iexact'),
- 'seal_number':
- SearchAltName(
- pgettext_lazy("key for text search", "seal-number"),
- 'seal_number__iexact'),
- 'base_finds__excavation_id':
- SearchAltName(
- pgettext_lazy("key for text search", "excavation-id"),
- 'base_finds__excavation_id__iexact'),
- 'museum_id':
- SearchAltName(
- pgettext_lazy("key for text search", "museum-id"),
- 'museum_id__iexact'),
- 'laboratory_id':
- SearchAltName(
- pgettext_lazy("key for text search", "laboratory-id"),
- 'laboratory_id__iexact'),
- 'mark':
- SearchAltName(
- pgettext_lazy("key for text search", "mark"),
- 'mark__iexact'),
- 'base_finds__discovery_date__before':
- SearchAltName(
- pgettext_lazy("key for text search", "discovery-date-before"),
- 'base_finds__discovery_date__lte'),
- 'base_finds__discovery_date__after':
- SearchAltName(
- pgettext_lazy("key for text search", "discovery-date-after"),
- 'base_finds__discovery_date__gte'),
- 'base_finds__discovery_date_tpq__before':
- SearchAltName(
- pgettext_lazy("key for text search",
- "discovery-date-tpq-before"),
- 'base_finds__discovery_date_tpq__lte'),
- 'base_finds__discovery_date_tpq__after':
- SearchAltName(
- pgettext_lazy("key for text search",
- "discovery-date-tpq-after"),
- 'base_finds__discovery_date_tpq__gte'),
- 'base_finds__discovery_date_taq__before':
- SearchAltName(
- pgettext_lazy("key for text search",
- "discovery-date-taq-before"),
- 'base_finds__discovery_date_taq__lte'),
- 'base_finds__discovery_date_taq__after':
- SearchAltName(
- pgettext_lazy("key for text search",
- "discovery-date-taq-after"),
- 'base_finds__discovery_date_taq__gte'),
- 'is_complete':
- SearchAltName(
- pgettext_lazy("key for text search", "is-complete"),
- 'is_complete'),
- 'material_type_quality':
- SearchAltName(
- pgettext_lazy("key for text search", "material-type-quality"),
- 'material_type_quality__label__iexact'),
- 'object_type_quality':
- SearchAltName(
- pgettext_lazy("key for text search", "object-type-quality"),
- 'object_type_quality__label__iexact'),
- 'find_number':
- SearchAltName(
- pgettext_lazy("key for text search", "find-number"),
- 'find_number'),
- 'min_number_of_individuals':
- SearchAltName(
- pgettext_lazy("key for text search",
- "min-number-of-individuals"),
- 'min_number_of_individuals'),
- 'decoration':
- SearchAltName(
- pgettext_lazy("key for text search", "decoration"),
- 'decoration__iexact'),
- 'inscription':
- SearchAltName(
- pgettext_lazy("key for text search", "inscription"),
- 'inscription__iexact'),
- 'manufacturing_place':
- SearchAltName(
- pgettext_lazy("key for text search", "manufacturing-place"),
- 'manufacturing_place__iexact'),
- 'communicabilities':
- SearchAltName(
- pgettext_lazy("key for text search", "communicabilities"),
- 'communicabilities__label__iexact'),
- 'comment':
- SearchAltName(
- pgettext_lazy("key for text search", "comment"),
- 'comment__iexact'),
- 'material_comment':
- SearchAltName(
- pgettext_lazy("key for text search", "material-comment"),
- 'material_comment__iexact'),
- 'dating_comment':
- SearchAltName(
- pgettext_lazy("key for text search", "dating-comment"),
- 'dating_comment__iexact'),
- 'conservatory_comment':
- SearchAltName(
- pgettext_lazy("key for text search", "conservatory-comment"),
- 'conservatory_comment__iexact'),
- 'length__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "length-lower"),
- 'length__lte'),
- 'width__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "width-lower"),
- 'width__lte'),
- 'height__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "height-lower"),
- 'height__lte'),
- 'thickness__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "thickness-lower"),
- 'thickness__lte'),
- 'diameter__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "diameter-lower"),
- 'diameter__lte'),
- 'circumference__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "circumference-lower"),
- 'circumference__lte'),
- 'volume__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "volume-lower"),
- 'volume__lte'),
- 'weight__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "weight-lower"),
- 'weight__lte'),
- 'clutter_long_side__lower':
- SearchAltName(
- pgettext_lazy("key for text search",
- "clutter-long-side-lower"),
- 'clutter_long_side__lte'),
- 'clutter_short_side__lower':
- SearchAltName(
- pgettext_lazy("key for text search",
- "clutter-short-side-lower"),
- 'clutter_short_side__lte'),
- 'clutter_height__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "clutter-height-lower"),
- 'clutter_height__lte'),
- 'length__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "length-higher"),
- 'length__gte'),
- 'width__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "width-higher"),
- 'width__gte'),
- 'height__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "height-higher"),
- 'height__gte'),
- 'thickness__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "thickness-higher"),
- 'thickness__gte'),
- 'diameter__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "diameter-higher"),
- 'diameter__gte'),
- 'circumference__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "circumference-higher"),
- 'circumference__gte'),
- 'volume__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "volume-higher"),
- 'volume__gte'),
- 'weight__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "weight-higher"),
- 'weight__gte'),
- 'clutter_long_side__higher':
- SearchAltName(
- pgettext_lazy("key for text search",
- "clutter-long-side-higher"),
- 'clutter_long_side__gte'),
- 'clutter_short_side__higher':
- SearchAltName(
- pgettext_lazy("key for text search",
- "clutter-short-side-higher"),
- 'clutter_short_side__gte'),
- 'clutter_height__higher':
- SearchAltName(
- pgettext_lazy("key for text search", "clutter-height-higher"),
- 'clutter_height__gte'),
-
- 'dimensions_comment':
- SearchAltName(
- pgettext_lazy("key for text search", "dimensions-comment"),
- 'dimensions_comment__icontains'),
- 'base_finds__topographic_localisation':
- SearchAltName(
- pgettext_lazy("key for text search",
- "topographic-localisation"),
- 'base_finds__topographic_localisation__iexact'),
- 'check_date__before':
- SearchAltName(
- pgettext_lazy("key for text search", "check-date-before"),
- 'check_date__lte'),
- 'check_date__after':
- SearchAltName(
- pgettext_lazy("key for text search", "check-date-after"),
- 'check_date__gte'),
- 'alterations':
- SearchAltName(
- pgettext_lazy("key for text search", "alterations"),
- 'alterations__label__iexact'),
- 'alteration_causes':
- SearchAltName(
- pgettext_lazy("key for text search", "alteration-causes"),
- 'alteration_causes__label__iexact'),
- 'treatment_emergency':
- SearchAltName(
- pgettext_lazy("key for text search", "treatment-emergency"),
- 'treatment_emergency__label__iexact'),
- 'estimated_value__higher':
- SearchAltName(
- pgettext_lazy("key for text search",
- "estimated-value-higher"),
- 'estimated_value__gte'),
- 'estimated_value__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "estimated-value-lower"),
- 'estimated_value__lte'),
- 'insurance_value__higher':
- SearchAltName(
- pgettext_lazy("key for text search",
- "insurance-value-higher"),
- 'insurance_value__gte'),
- 'insurance_value__lower':
- SearchAltName(
- pgettext_lazy("key for text search", "insurance-value-lower"),
- 'insurance_value__lte'),
- 'appraisal_date__before':
- SearchAltName(
- pgettext_lazy("key for text search", "appraisal-date-before"),
- 'appraisal_date__lte'),
- 'appraisal_date__after':
- SearchAltName(
- pgettext_lazy("key for text search", "appraisal-date-after"),
- 'appraisal_date__gte'),
- 'cultural_attributions': SearchAltName(
+ "seal_number": SearchAltName(
+ pgettext_lazy("key for text search", "seal-number"), "seal_number__iexact"
+ ),
+ "base_finds__excavation_id": SearchAltName(
+ pgettext_lazy("key for text search", "excavation-id"),
+ "base_finds__excavation_id__iexact",
+ ),
+ "museum_id": SearchAltName(
+ pgettext_lazy("key for text search", "museum-id"), "museum_id__iexact"
+ ),
+ "laboratory_id": SearchAltName(
+ pgettext_lazy("key for text search", "laboratory-id"),
+ "laboratory_id__iexact",
+ ),
+ "mark": SearchAltName(
+ pgettext_lazy("key for text search", "mark"), "mark__iexact"
+ ),
+ "base_finds__discovery_date__before": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-before"),
+ "base_finds__discovery_date__lte",
+ ),
+ "base_finds__discovery_date__after": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-after"),
+ "base_finds__discovery_date__gte",
+ ),
+ "base_finds__discovery_date_tpq__before": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-tpq-before"),
+ "base_finds__discovery_date_tpq__lte",
+ ),
+ "base_finds__discovery_date_tpq__after": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-tpq-after"),
+ "base_finds__discovery_date_tpq__gte",
+ ),
+ "base_finds__discovery_date_taq__before": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-taq-before"),
+ "base_finds__discovery_date_taq__lte",
+ ),
+ "base_finds__discovery_date_taq__after": SearchAltName(
+ pgettext_lazy("key for text search", "discovery-date-taq-after"),
+ "base_finds__discovery_date_taq__gte",
+ ),
+ "is_complete": SearchAltName(
+ pgettext_lazy("key for text search", "is-complete"), "is_complete"
+ ),
+ "material_type_quality": SearchAltName(
+ pgettext_lazy("key for text search", "material-type-quality"),
+ "material_type_quality__label__iexact",
+ ),
+ "object_type_quality": SearchAltName(
+ pgettext_lazy("key for text search", "object-type-quality"),
+ "object_type_quality__label__iexact",
+ ),
+ "find_number": SearchAltName(
+ pgettext_lazy("key for text search", "find-number"), "find_number"
+ ),
+ "min_number_of_individuals": SearchAltName(
+ pgettext_lazy("key for text search", "min-number-of-individuals"),
+ "min_number_of_individuals",
+ ),
+ "decoration": SearchAltName(
+ pgettext_lazy("key for text search", "decoration"), "decoration__iexact"
+ ),
+ "inscription": SearchAltName(
+ pgettext_lazy("key for text search", "inscription"), "inscription__iexact"
+ ),
+ "manufacturing_place": SearchAltName(
+ pgettext_lazy("key for text search", "manufacturing-place"),
+ "manufacturing_place__iexact",
+ ),
+ "communicabilities": SearchAltName(
+ pgettext_lazy("key for text search", "communicabilities"),
+ "communicabilities__label__iexact",
+ ),
+ "comment": SearchAltName(
+ pgettext_lazy("key for text search", "comment"), "comment__iexact"
+ ),
+ "material_comment": SearchAltName(
+ pgettext_lazy("key for text search", "material-comment"),
+ "material_comment__iexact",
+ ),
+ "dating_comment": SearchAltName(
+ pgettext_lazy("key for text search", "dating-comment"),
+ "dating_comment__iexact",
+ ),
+ "conservatory_comment": SearchAltName(
+ pgettext_lazy("key for text search", "conservatory-comment"),
+ "conservatory_comment__iexact",
+ ),
+ "length__lower": SearchAltName(
+ pgettext_lazy("key for text search", "length-lower"), "length__lte"
+ ),
+ "width__lower": SearchAltName(
+ pgettext_lazy("key for text search", "width-lower"), "width__lte"
+ ),
+ "height__lower": SearchAltName(
+ pgettext_lazy("key for text search", "height-lower"), "height__lte"
+ ),
+ "thickness__lower": SearchAltName(
+ pgettext_lazy("key for text search", "thickness-lower"), "thickness__lte"
+ ),
+ "diameter__lower": SearchAltName(
+ pgettext_lazy("key for text search", "diameter-lower"), "diameter__lte"
+ ),
+ "circumference__lower": SearchAltName(
+ pgettext_lazy("key for text search", "circumference-lower"),
+ "circumference__lte",
+ ),
+ "volume__lower": SearchAltName(
+ pgettext_lazy("key for text search", "volume-lower"), "volume__lte"
+ ),
+ "weight__lower": SearchAltName(
+ pgettext_lazy("key for text search", "weight-lower"), "weight__lte"
+ ),
+ "clutter_long_side__lower": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-long-side-lower"),
+ "clutter_long_side__lte",
+ ),
+ "clutter_short_side__lower": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-short-side-lower"),
+ "clutter_short_side__lte",
+ ),
+ "clutter_height__lower": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-height-lower"),
+ "clutter_height__lte",
+ ),
+ "length__higher": SearchAltName(
+ pgettext_lazy("key for text search", "length-higher"), "length__gte"
+ ),
+ "width__higher": SearchAltName(
+ pgettext_lazy("key for text search", "width-higher"), "width__gte"
+ ),
+ "height__higher": SearchAltName(
+ pgettext_lazy("key for text search", "height-higher"), "height__gte"
+ ),
+ "thickness__higher": SearchAltName(
+ pgettext_lazy("key for text search", "thickness-higher"), "thickness__gte"
+ ),
+ "diameter__higher": SearchAltName(
+ pgettext_lazy("key for text search", "diameter-higher"), "diameter__gte"
+ ),
+ "circumference__higher": SearchAltName(
+ pgettext_lazy("key for text search", "circumference-higher"),
+ "circumference__gte",
+ ),
+ "volume__higher": SearchAltName(
+ pgettext_lazy("key for text search", "volume-higher"), "volume__gte"
+ ),
+ "weight__higher": SearchAltName(
+ pgettext_lazy("key for text search", "weight-higher"), "weight__gte"
+ ),
+ "clutter_long_side__higher": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-long-side-higher"),
+ "clutter_long_side__gte",
+ ),
+ "clutter_short_side__higher": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-short-side-higher"),
+ "clutter_short_side__gte",
+ ),
+ "clutter_height__higher": SearchAltName(
+ pgettext_lazy("key for text search", "clutter-height-higher"),
+ "clutter_height__gte",
+ ),
+ "dimensions_comment": SearchAltName(
+ pgettext_lazy("key for text search", "dimensions-comment"),
+ "dimensions_comment__icontains",
+ ),
+ "base_finds__topographic_localisation": SearchAltName(
+ pgettext_lazy("key for text search", "topographic-localisation"),
+ "base_finds__topographic_localisation__iexact",
+ ),
+ "check_date__before": SearchAltName(
+ pgettext_lazy("key for text search", "check-date-before"), "check_date__lte"
+ ),
+ "check_date__after": SearchAltName(
+ pgettext_lazy("key for text search", "check-date-after"), "check_date__gte"
+ ),
+ "alterations": SearchAltName(
+ pgettext_lazy("key for text search", "alterations"),
+ "alterations__label__iexact",
+ ),
+ "alteration_causes": SearchAltName(
+ pgettext_lazy("key for text search", "alteration-causes"),
+ "alteration_causes__label__iexact",
+ ),
+ "treatment_emergency": SearchAltName(
+ pgettext_lazy("key for text search", "treatment-emergency"),
+ "treatment_emergency__label__iexact",
+ ),
+ "estimated_value__higher": SearchAltName(
+ pgettext_lazy("key for text search", "estimated-value-higher"),
+ "estimated_value__gte",
+ ),
+ "estimated_value__lower": SearchAltName(
+ pgettext_lazy("key for text search", "estimated-value-lower"),
+ "estimated_value__lte",
+ ),
+ "insurance_value__higher": SearchAltName(
+ pgettext_lazy("key for text search", "insurance-value-higher"),
+ "insurance_value__gte",
+ ),
+ "insurance_value__lower": SearchAltName(
+ pgettext_lazy("key for text search", "insurance-value-lower"),
+ "insurance_value__lte",
+ ),
+ "appraisal_date__before": SearchAltName(
+ pgettext_lazy("key for text search", "appraisal-date-before"),
+ "appraisal_date__lte",
+ ),
+ "appraisal_date__after": SearchAltName(
+ pgettext_lazy("key for text search", "appraisal-date-after"),
+ "appraisal_date__gte",
+ ),
+ "cultural_attributions": SearchAltName(
pgettext_lazy("key for text search", "cultural-attribution"),
- 'cultural_attributions__label__iexact'),
+ "cultural_attributions__label__iexact",
+ ),
}
ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)
ALT_NAMES.update(DocumentItem.ALT_NAMES)
@@ -1457,7 +1575,7 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
}
"""
- PARENT_SEARCH_VECTORS = ['base_finds']
+ PARENT_SEARCH_VECTORS = ["base_finds"]
BASE_SEARCH_VECTORS = [
SearchVectorConfig("cached_label"),
SearchVectorConfig("label"),
@@ -1483,240 +1601,333 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
]
QA_EDIT = QuickAction(
- url="find-qa-bulk-update", icon_class="fa fa-pencil",
- text=_("Bulk update"), target="many",
- rights=['change_find', 'change_own_find'])
+ url="find-qa-bulk-update",
+ icon_class="fa fa-pencil",
+ text=_("Bulk update"),
+ target="many",
+ rights=["change_find", "change_own_find"],
+ )
QA_LOCK = QuickAction(
- url="find-qa-lock", icon_class="fa fa-lock",
- text=_("Lock/Unlock"), target="many",
- rights=['change_find', 'change_own_find']
+ url="find-qa-lock",
+ icon_class="fa fa-lock",
+ text=_("Lock/Unlock"),
+ target="many",
+ rights=["change_find", "change_own_find"],
)
QUICK_ACTIONS = [
QA_EDIT,
QuickAction(
- url="find-qa-duplicate", icon_class="fa fa-clone",
- text=_("Duplicate"), target="one",
- rights=['change_find', 'change_own_find']),
+ url="find-qa-duplicate",
+ icon_class="fa fa-clone",
+ text=_("Duplicate"),
+ target="one",
+ rights=["change_find", "change_own_find"],
+ ),
QuickAction(
- url="find-qa-basket", icon_class="fa fa-shopping-basket",
- text=_("Basket"), target="many",
- rights=['change_find', 'change_own_find']),
+ url="find-qa-basket",
+ icon_class="fa fa-shopping-basket",
+ text=_("Basket"),
+ target="many",
+ rights=["change_find", "change_own_find"],
+ ),
QuickAction(
- url="find-qa-packaging", icon_class="fa fa-gift",
- text=_("Packaging"), target="many",
- rights=['change_find', 'change_own_find'],
- module='warehouse'
+ url="find-qa-packaging",
+ icon_class="fa fa-gift",
+ text=_("Packaging"),
+ target="many",
+ rights=["change_find", "change_own_find"],
+ module="warehouse",
),
- QA_LOCK
+ QA_LOCK,
]
UP_MODEL_QUERY = {
- "operation": (pgettext_lazy("key for text search", "operation"),
- 'cached_label'),
+ "operation": (
+ pgettext_lazy("key for text search", "operation"),
+ "cached_label",
+ ),
"contextrecord": (
pgettext_lazy("key for text search", "context-record"),
- 'cached_label'),
- "warehouse": (
- pgettext_lazy("key for text search", "location"),
- 'name'),
+ "cached_label",
+ ),
+ "warehouse": (pgettext_lazy("key for text search", "location"), "name"),
"site": (
pgettext_lazy("key for text search", "context-record-site"),
- 'cached_label'),
+ "cached_label",
+ ),
}
RELATIVE_SESSION_NAMES = [
- ('contextrecord', 'base_finds__context_record__pk'),
- ('operation', 'base_finds__context_record__operation__pk'),
- ('file', 'base_finds__context_record__operation__associated_file__pk'),
- ('warehouse', 'container__location__pk'),
- ('site', 'base_finds__context_record__archaeological_site__pk')
+ ("contextrecord", "base_finds__context_record__pk"),
+ ("operation", "base_finds__context_record__operation__pk"),
+ ("file", "base_finds__context_record__operation__associated_file__pk"),
+ ("warehouse", "container__location__pk"),
+ ("site", "base_finds__context_record__archaeological_site__pk"),
]
HISTORICAL_M2M = [
- 'material_types', 'datings', 'object_types', 'integrities',
- 'remarkabilities', 'communicabilities', 'preservation_to_considers',
- 'alterations', 'alteration_causes', "cultural_attributions"
+ "material_types",
+ "datings",
+ "object_types",
+ "integrities",
+ "remarkabilities",
+ "communicabilities",
+ "preservation_to_considers",
+ "alterations",
+ "alteration_causes",
+ "cultural_attributions",
]
GET_VALUES_EXTRA_TYPES = ValueGetter.GET_VALUES_EXCLUDE_FIELDS + [
- 'material_types', 'object_types', 'integrities',
- 'remarkabilities', 'communicabilities', 'preservation_to_considers',
- 'alterations', 'alteration_causes'
+ "material_types",
+ "object_types",
+ "integrities",
+ "remarkabilities",
+ "communicabilities",
+ "preservation_to_considers",
+ "alterations",
+ "alteration_causes",
+ ]
+ CACHED_LABELS = [
+ "cached_label",
+ "cached_periods",
+ "cached_object_types",
+ "cached_materials",
]
- CACHED_LABELS = ['cached_label', 'cached_periods',
- 'cached_object_types', 'cached_materials']
objects = UUIDModelManager()
# fields
uuid = models.UUIDField(default=uuid.uuid4)
- base_finds = models.ManyToManyField(BaseFind, verbose_name=_("Base find"),
- related_name='find')
+ base_finds = models.ManyToManyField(
+ BaseFind, verbose_name=_("Base find"), related_name="find"
+ )
external_id = models.TextField(_("External ID"), blank=True, default="")
auto_external_id = models.BooleanField(
- _("External ID is set automatically"), default=False)
+ _("External ID is set automatically"), default=False
+ )
# judiciary operation
seal_number = models.TextField(_("Seal number"), blank=True, default="")
order = models.IntegerField(_("Order"), default=1)
label = models.TextField(_("Free ID"))
- denomination = models.TextField(
- _("Denomination"), blank=True, default="")
- museum_id = models.TextField(
- _("Museum ID"), blank=True, default="")
- laboratory_id = models.TextField(
- _("Laboratory ID"), blank=True, default="")
- description = models.TextField(
- _("Description"), blank=True, default="")
- decoration = models.TextField(
- _("Decoration"), blank=True, default="")
- inscription = models.TextField(
- _("Inscription"), blank=True, default="")
+ denomination = models.TextField(_("Denomination"), blank=True, default="")
+ museum_id = models.TextField(_("Museum ID"), blank=True, default="")
+ laboratory_id = models.TextField(_("Laboratory ID"), blank=True, default="")
+ description = models.TextField(_("Description"), blank=True, default="")
+ decoration = models.TextField(_("Decoration"), blank=True, default="")
+ inscription = models.TextField(_("Inscription"), blank=True, default="")
manufacturing_place = models.TextField(
- _("Manufacturing place"), blank=True, default="")
+ _("Manufacturing place"), blank=True, default=""
+ )
material_types = models.ManyToManyField(
- MaterialType, verbose_name=_("Material types"), related_name='finds',
- blank=True
+ MaterialType, verbose_name=_("Material types"), related_name="finds", blank=True
)
material_type_quality = models.ForeignKey(
MaterialTypeQualityType,
- verbose_name=_("Material type quality"), related_name='finds',
+ verbose_name=_("Material type quality"),
+ related_name="finds",
on_delete=models.SET_NULL,
- blank=True, null=True
+ blank=True,
+ null=True,
)
material_comment = models.TextField(
- _("Comment on the material"), blank=True, default="")
+ _("Comment on the material"), blank=True, default=""
+ )
volume = models.FloatField(_("Volume (l)"), blank=True, null=True)
weight = models.FloatField(_("Weight"), blank=True, null=True)
- weight_unit = models.CharField(_("Weight unit"), max_length=4,
- blank=True, null=True, choices=WEIGHT_UNIT)
+ weight_unit = models.CharField(
+ _("Weight unit"), max_length=4, blank=True, null=True, choices=WEIGHT_UNIT
+ )
find_number = models.IntegerField(_("Find number"), blank=True, null=True)
upstream_treatment = models.ForeignKey(
- "Treatment", blank=True, null=True,
- related_name='downstream', on_delete=models.SET_NULL,
- verbose_name=_("Upstream treatment"))
+ "Treatment",
+ blank=True,
+ null=True,
+ related_name="downstream",
+ on_delete=models.SET_NULL,
+ verbose_name=_("Upstream treatment"),
+ )
downstream_treatment = models.ForeignKey(
- "Treatment", blank=True, null=True, related_name='upstream',
- verbose_name=_("Downstream treatment"), on_delete=models.SET_NULL)
- datings = models.ManyToManyField(Dating, verbose_name=_("Dating"),
- related_name='find')
+ "Treatment",
+ blank=True,
+ null=True,
+ related_name="upstream",
+ verbose_name=_("Downstream treatment"),
+ on_delete=models.SET_NULL,
+ )
+ datings = models.ManyToManyField(
+ Dating, verbose_name=_("Dating"), related_name="find"
+ )
cultural_attributions = models.ManyToManyField(
- CulturalAttributionType, verbose_name=_("Cultural attribution"),
- blank=True)
+ CulturalAttributionType, verbose_name=_("Cultural attribution"), blank=True
+ )
container = models.ForeignKey(
- "archaeological_warehouse.Container", verbose_name=_("Container"),
- blank=True, null=True, related_name='finds', on_delete=models.SET_NULL)
+ "archaeological_warehouse.Container",
+ verbose_name=_("Container"),
+ blank=True,
+ null=True,
+ related_name="finds",
+ on_delete=models.SET_NULL,
+ )
container_ref = models.ForeignKey(
"archaeological_warehouse.Container",
verbose_name=_("Reference container"),
- blank=True, null=True,
- related_name='finds_ref', on_delete=models.SET_NULL)
- is_complete = models.NullBooleanField(_("Is complete?"), blank=True,
- null=True)
+ blank=True,
+ null=True,
+ related_name="finds_ref",
+ on_delete=models.SET_NULL,
+ )
+ is_complete = models.NullBooleanField(_("Is complete?"), blank=True, null=True)
object_types = models.ManyToManyField(
- ObjectType, verbose_name=_("Object types"), related_name='find',
- blank=True
+ ObjectType, verbose_name=_("Object types"), related_name="find", blank=True
)
object_type_quality = models.ForeignKey(
ObjectTypeQualityType,
- verbose_name=_("Object type quality"), related_name='finds',
- on_delete=models.SET_NULL, blank=True, null=True
+ verbose_name=_("Object type quality"),
+ related_name="finds",
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
)
integrities = models.ManyToManyField(
- IntegrityType, verbose_name=_("Integrity / interest"),
- related_name='find', blank=True)
+ IntegrityType,
+ verbose_name=_("Integrity / interest"),
+ related_name="find",
+ blank=True,
+ )
remarkabilities = models.ManyToManyField(
- RemarkabilityType, verbose_name=_("Remarkability"),
- related_name='find', blank=True)
+ RemarkabilityType,
+ verbose_name=_("Remarkability"),
+ related_name="find",
+ blank=True,
+ )
communicabilities = models.ManyToManyField(
- CommunicabilityType, verbose_name=_("Communicability"),
- related_name='find', blank=True)
+ CommunicabilityType,
+ verbose_name=_("Communicability"),
+ related_name="find",
+ blank=True,
+ )
min_number_of_individuals = models.IntegerField(
- _("Minimum number of individuals (MNI)"), blank=True, null=True)
+ _("Minimum number of individuals (MNI)"), blank=True, null=True
+ )
length = models.FloatField(_("Length (cm)"), blank=True, null=True)
width = models.FloatField(_("Width (cm)"), blank=True, null=True)
height = models.FloatField(_("Height (cm)"), blank=True, null=True)
diameter = models.FloatField(_("Diameter (cm)"), blank=True, null=True)
- circumference = models.FloatField(_("Circumference (cm)"), blank=True,
- null=True)
+ circumference = models.FloatField(_("Circumference (cm)"), blank=True, null=True)
thickness = models.FloatField(_("Thickness (cm)"), blank=True, null=True)
clutter_long_side = models.FloatField(
- _("Clutter - long side (cm)"), blank=True, null=True)
+ _("Clutter - long side (cm)"), blank=True, null=True
+ )
clutter_short_side = models.FloatField(
- _("Clutter - short side (cm)"), blank=True, null=True)
+ _("Clutter - short side (cm)"), blank=True, null=True
+ )
clutter_height = models.FloatField(
- _("Clutter - height (cm)"), blank=True, null=True)
+ _("Clutter - height (cm)"), blank=True, null=True
+ )
dimensions_comment = models.TextField(
- _("Dimensions comment"), blank=True, default="")
+ _("Dimensions comment"), blank=True, default=""
+ )
mark = models.TextField(_("Mark"), blank=True, default="")
comment = models.TextField(_("Comment"), blank=True, default="")
- dating_comment = models.TextField(_("Comment on dating"), blank=True,
- default="")
+ dating_comment = models.TextField(_("Comment on dating"), blank=True, default="")
previous_id = models.TextField(_("Previous ID"), blank=True, default="")
index = models.IntegerField("Index", default=0)
- checked_type = models.ForeignKey(CheckedType, verbose_name=_("Check"),
- on_delete=models.SET_NULL,
- blank=True, null=True)
- check_date = models.DateField(_("Check date"),
- default=datetime.date.today)
- estimated_value = models.FloatField(_("Estimated value"), blank=True,
- null=True)
+ checked_type = models.ForeignKey(
+ CheckedType,
+ verbose_name=_("Check"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
+ check_date = models.DateField(_("Check date"), default=datetime.date.today)
+ estimated_value = models.FloatField(_("Estimated value"), blank=True, null=True)
collection = models.ForeignKey(
- "archaeological_warehouse.Warehouse", verbose_name=_("Collection"),
- blank=True, null=True, related_name='finds', on_delete=models.SET_NULL,
+ "archaeological_warehouse.Warehouse",
+ verbose_name=_("Collection"),
+ blank=True,
+ null=True,
+ related_name="finds",
+ on_delete=models.SET_NULL,
help_text=_("Do not use - need evolutions"),
)
# preservation module
conservatory_state = models.ForeignKey(
- ConservatoryState, verbose_name=_("Conservatory state"), blank=True,
- null=True, on_delete=models.SET_NULL)
- conservatory_comment = models.TextField(_("Conservatory comment"),
- blank=True, default="")
+ ConservatoryState,
+ verbose_name=_("Conservatory state"),
+ blank=True,
+ null=True,
+ on_delete=models.SET_NULL,
+ )
+ conservatory_comment = models.TextField(
+ _("Conservatory comment"), blank=True, default=""
+ )
preservation_to_considers = models.ManyToManyField(
TreatmentType,
verbose_name=_("Recommended treatments"),
- related_name='finds_recommended', blank=True)
+ related_name="finds_recommended",
+ blank=True,
+ )
alterations = models.ManyToManyField(
- AlterationType, verbose_name=_("Alteration"), blank=True,
- related_name='finds'
+ AlterationType, verbose_name=_("Alteration"), blank=True, related_name="finds"
)
alteration_causes = models.ManyToManyField(
- AlterationCauseType, verbose_name=_("Alteration cause"), blank=True,
- related_name='finds'
+ AlterationCauseType,
+ verbose_name=_("Alteration cause"),
+ blank=True,
+ related_name="finds",
)
treatment_emergency = models.ForeignKey(
- TreatmentEmergencyType, verbose_name=_("Treatment emergency"),
+ TreatmentEmergencyType,
+ verbose_name=_("Treatment emergency"),
on_delete=models.SET_NULL,
- blank=True, null=True
+ blank=True,
+ null=True,
)
- insurance_value = models.FloatField(_("Insurance value"), blank=True,
- null=True)
- appraisal_date = models.DateField(_("Appraisal date"), blank=True,
- null=True)
+ insurance_value = models.FloatField(_("Insurance value"), blank=True, null=True)
+ appraisal_date = models.DateField(_("Appraisal date"), blank=True, null=True)
public_description = models.TextField(
- _("Public description"), blank=True, default="")
+ _("Public description"), blank=True, default=""
+ )
documents = models.ManyToManyField(
- Document, related_name='finds', verbose_name=_("Documents"),
- blank=True)
+ Document, related_name="finds", verbose_name=_("Documents"), blank=True
+ )
main_image = models.ForeignKey(
- Document, related_name='main_image_finds',
+ Document,
+ related_name="main_image_finds",
on_delete=models.SET_NULL,
- verbose_name=_("Main image"), blank=True, null=True)
+ verbose_name=_("Main image"),
+ blank=True,
+ null=True,
+ )
treatments = models.ManyToManyField(
- "Treatment", verbose_name=_("Treatments"),
- related_name='finds', blank=True,
- help_text=_("Related treatments when no new find is created"))
+ "Treatment",
+ verbose_name=_("Treatments"),
+ related_name="finds",
+ blank=True,
+ help_text=_("Related treatments when no new find is created"),
+ )
cached_label = models.TextField(
- _("Cached name"), blank=True, default="", db_index=True,
- help_text=_("Generated automatically - do not edit")
+ _("Cached name"),
+ blank=True,
+ default="",
+ db_index=True,
+ help_text=_("Generated automatically - do not edit"),
)
cached_periods = models.TextField(
- _("Cached periods label"), blank=True, default="",
- help_text=_("Generated automatically - do not edit")
+ _("Cached periods label"),
+ blank=True,
+ default="",
+ help_text=_("Generated automatically - do not edit"),
)
cached_object_types = models.TextField(
- _("Cached object types label"), blank=True, default="",
- help_text=_("Generated automatically - do not edit")
+ _("Cached object types label"),
+ blank=True,
+ default="",
+ help_text=_("Generated automatically - do not edit"),
)
cached_materials = models.TextField(
- _("Cached material types label"), blank=True, default="",
- help_text=_("Generated automatically - do not edit")
+ _("Cached material types label"),
+ blank=True,
+ default="",
+ help_text=_("Generated automatically - do not edit"),
)
history = HistoricalRecords(bases=[HistoryModel])
BASKET_MODEL = FindBasket
@@ -1731,13 +1942,13 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
("change_own_find", "Can change own Find"),
("delete_own_find", "Can delete own Find"),
)
- ordering = ('cached_label',)
+ ordering = ("cached_label",)
indexes = [
- GinIndex(fields=['data']),
+ GinIndex(fields=["data"]),
]
def natural_key(self):
- return (self.uuid, )
+ return (self.uuid,)
@property
def short_class_name(self):
@@ -1757,10 +1968,14 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@property
def excavation_ids(self):
return " - ".join(
- [base_find['excavation_id']
- for base_find in self.base_finds.values(
- 'excavation_id').order_by('pk').all()
- if base_find['excavation_id']])
+ [
+ base_find["excavation_id"]
+ for base_find in self.base_finds.values("excavation_id")
+ .order_by("pk")
+ .all()
+ if base_find["excavation_id"]
+ ]
+ )
@classmethod
def hierarchic_fields(cls):
@@ -1768,8 +1983,7 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@property
def materials(self):
- return " ; ".join([str(material)
- for material in self.material_types.all()])
+ return " ; ".join([str(material) for material in self.material_types.all()])
def get_first_material_type(self):
model = self.__class__.material_types.through
@@ -1782,35 +1996,38 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@property
def show_url(self):
- return reverse('show-find', args=[self.pk, ''])
+ return reverse("show-find", args=[self.pk, ""])
def public_representation(self):
dct = super(Find, self).public_representation()
- dct.update({
- "denomination": self.denomination,
- "free-id": self.label,
- "description": self.description,
- "public-description": self.public_description,
- "materials": [str(mt) for mt in self.material_types.all()],
- "material-comment": self.material_comment,
- "object-types": [str(ot) for ot in self.object_types.all()],
- "find-number": self.find_number,
- "decoration": self.decoration,
- "inscription": self.inscription,
- "manufacturing-place":self.manufacturing_place,
- "comment": self.comment,
- "length": self.length,
- "width": self.width,
- "height": self.height,
- "thickness": self.thickness,
- "diameter": self.diameter,
- "circumference": self.circumference,
- "volume": self.volume,
- "weight": self.weight,
- "datings": [str(dating) for dating in self.datings.all()],
- "base-finds": [bf.public_representation()
- for bf in self.base_finds.all()]
- })
+ dct.update(
+ {
+ "denomination": self.denomination,
+ "free-id": self.label,
+ "description": self.description,
+ "public-description": self.public_description,
+ "materials": [str(mt) for mt in self.material_types.all()],
+ "material-comment": self.material_comment,
+ "object-types": [str(ot) for ot in self.object_types.all()],
+ "find-number": self.find_number,
+ "decoration": self.decoration,
+ "inscription": self.inscription,
+ "manufacturing-place": self.manufacturing_place,
+ "comment": self.comment,
+ "length": self.length,
+ "width": self.width,
+ "height": self.height,
+ "thickness": self.thickness,
+ "diameter": self.diameter,
+ "circumference": self.circumference,
+ "volume": self.volume,
+ "weight": self.weight,
+ "datings": [str(dating) for dating in self.datings.all()],
+ "base-finds": [
+ bf.public_representation() for bf in self.base_finds.all()
+ ],
+ }
+ )
# images
return dct
@@ -1828,20 +2045,21 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@property
def full_label(self):
lbl = " - ".join(
- getattr(self, attr) for attr in (
- 'label', 'denomination', 'administrative_index')
- if getattr(self, attr))
+ getattr(self, attr)
+ for attr in ("label", "denomination", "administrative_index")
+ if getattr(self, attr)
+ )
base = " - ".join(
base_find.complete_id() for base_find in self.base_finds.all()
)
if base:
- lbl += ' ({})'.format(base)
+ lbl += " ({})".format(base)
return lbl
def get_first_base_find(self):
if not self.base_finds.count():
return
- return self.base_finds.order_by('-pk').all()[0]
+ return self.base_finds.order_by("-pk").all()[0]
DOC_VALUES = [
("base_finds", _("List of associated base finds")),
@@ -1854,8 +2072,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
Return pipe separated material type code inside a container
"""
materials = set()
- for material in self.material_types.exclude(
- code__isnull=True).values_list("code", flat=True):
+ for material in self.material_types.exclude(code__isnull=True).values_list(
+ "code", flat=True
+ ):
materials.add(material)
return "|".join(sorted(materials))
@@ -1864,22 +2083,23 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
Return comma separated string of material types inside a container
"""
materials = set()
- for material in self.material_types.exclude(
- label__isnull=True).values_list("label", flat=True):
+ for material in self.material_types.exclude(label__isnull=True).values_list(
+ "label", flat=True
+ ):
materials.add(material)
return ", ".join(sorted(materials))
- def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):
+ def get_values(self, prefix="", no_values=False, filtr=None, **kwargs):
no_base_finds = False
if "no_base_finds" in kwargs:
no_base_finds = kwargs["no_base_finds"]
values = super(Find, self).get_values(
- prefix=prefix, no_values=no_values, filtr=filtr, **kwargs)
- if not filtr or prefix + 'material_types_label' in filtr:
- values[prefix + 'material_types_label'] = self.get_material_types()
- if not filtr or prefix + 'material_types_code' in filtr:
- values[prefix + 'material_types_code'] = \
- self.get_material_types_code()
+ prefix=prefix, no_values=no_values, filtr=filtr, **kwargs
+ )
+ if not filtr or prefix + "material_types_label" in filtr:
+ values[prefix + "material_types_label"] = self.get_material_types()
+ if not filtr or prefix + "material_types_code" in filtr:
+ values[prefix + "material_types_code"] = self.get_material_types_code()
if no_base_finds:
return values
# by default attach first basefind data
@@ -1887,21 +2107,18 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
bf = self.get_first_base_find()
if not bf:
return values
- v = bf.get_values(
- prefix=prefix,
- no_values=True, filtr=filtr, **kwargs)
+ v = bf.get_values(prefix=prefix, no_values=True, filtr=filtr, **kwargs)
v.update(values)
values = v
kwargs["no_find"] = True
values[prefix + "base_finds"] = [
base_find.get_values(no_values=True, filtr=filtr, **kwargs)
- for base_find in self.base_finds.distinct().order_by('-pk').all()
+ for base_find in self.base_finds.distinct().order_by("-pk").all()
]
return values
- def get_values_for_datings(self, prefix=''):
- return [dating.get_values(prefix=prefix)
- for dating in self.datings.all()]
+ def get_values_for_datings(self, prefix=""):
+ return [dating.get_values(prefix=prefix) for dating in self.datings.all()]
@property
def reference(self):
@@ -1921,24 +2138,52 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
actions = super(Find, self).get_extra_actions(request)
is_locked = hasattr(self, "is_locked") and self.is_locked(request.user)
- can_edit_find = self.can_do(request, 'change_find')
+ can_edit_find = self.can_do(request, "change_find")
if can_edit_find and not is_locked:
actions += [
- (reverse("find-qa-duplicate", args=[self.pk]),
- _("Duplicate"), "fa fa-clone", "", "", True),
- (reverse("find-qa-basket", args=[self.pk]),
- _("Add to basket"),
- "fa fa-shopping-basket", "", "", True),
- (reverse('find-add-treatment', args=[self.pk]),
- _("Simple treatment"), "fa fa-flask", "", "", False),
- (reverse('find-add-divide-treatment', args=[self.pk]),
- _("Divide treatment"), "fa fa-scissors", "", "", False),
+ (
+ reverse("find-qa-duplicate", args=[self.pk]),
+ _("Duplicate"),
+ "fa fa-clone",
+ "",
+ "",
+ True,
+ ),
+ (
+ reverse("find-qa-basket", args=[self.pk]),
+ _("Add to basket"),
+ "fa fa-shopping-basket",
+ "",
+ "",
+ True,
+ ),
+ (
+ reverse("find-add-treatment", args=[self.pk]),
+ _("Simple treatment"),
+ "fa fa-flask",
+ "",
+ "",
+ False,
+ ),
+ (
+ reverse("find-add-divide-treatment", args=[self.pk]),
+ _("Divide treatment"),
+ "fa fa-scissors",
+ "",
+ "",
+ False,
+ ),
]
if get_current_profile().warehouse:
actions.append(
- (reverse("find-qa-packaging", args=[self.pk]),
- _("Packaging"),
- "fa fa-gift", "", "", True)
+ (
+ reverse("find-qa-packaging", args=[self.pk]),
+ _("Packaging"),
+ "fa fa-gift",
+ "",
+ "",
+ True,
+ )
)
return actions
@@ -1949,22 +2194,20 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
if not bf:
return "detached/{}".format(self.SLUG)
ope = bf.context_record.operation
- find_idx = '{:0' + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + 'd}'
+ find_idx = "{:0" + str(settings.ISHTAR_FINDS_INDEX_ZERO_LEN) + "d}"
return ("{}/{}/" + find_idx).format(
- ope._get_base_image_path(), self.SLUG, self.index)
+ ope._get_base_image_path(), self.SLUG, self.index
+ )
@property
def administrative_index(self):
profile = get_current_profile()
- if profile.has_overload('find_administrative_index'):
- return ALTERNATE_CONFIGS[profile.config].find_administrative_index(
- self)
+ if profile.has_overload("find_administrative_index"):
+ return ALTERNATE_CONFIGS[profile.config].find_administrative_index(self)
bf = self.get_first_base_find()
if not bf or not bf.context_record or not bf.context_record.operation:
return ""
- return "{}-{}".format(
- bf.context_record.operation.get_reference(),
- self.index)
+ return "{}-{}".format(bf.context_record.operation.get_reference(), self.index)
@property
def operation(self):
@@ -1977,52 +2220,52 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
return " - ".join(
[bf.context_record.cached_label for bf in self.base_finds.all()]
)
+
context_records_lbl.short_description = _("Context record")
- context_records_lbl.admin_order_field = \
- "base_finds__context_record__cached_label"
+ context_records_lbl.admin_order_field = "base_finds__context_record__cached_label"
def operations_lbl(self):
return " - ".join(
- [bf.context_record.operation.cached_label
- for bf in self.base_finds.all()]
+ [bf.context_record.operation.cached_label for bf in self.base_finds.all()]
)
+
operations_lbl.short_description = _("Operation")
- operations_lbl.admin_order_field = \
+ operations_lbl.admin_order_field = (
"base_finds__context_record__operation__cached_label"
+ )
- def _get_treatments(self, model, rel='upstream', limit=None, count=False):
+ def _get_treatments(self, model, rel="upstream", limit=None, count=False):
treatments, findtreats = [], []
- q = model.objects.filter(
- find_id=self.pk).order_by(
- '-treatment__year', '-treatment__index', '-treatment__start_date',
- '-treatment__end_date')
+ q = model.objects.filter(find_id=self.pk).order_by(
+ "-treatment__year",
+ "-treatment__index",
+ "-treatment__start_date",
+ "-treatment__end_date",
+ )
if count:
return q.count()
for findtreat in q.distinct().all():
if findtreat.pk in findtreats:
continue
findtreats.append(findtreat.pk)
- q = getattr(findtreat.treatment, rel).distinct().order_by(
- 'label')
+ q = getattr(findtreat.treatment, rel).distinct().order_by("label")
if limit:
q = q[:limit]
treatments.append((q.all(), findtreat.treatment))
return treatments
def upstream_treatments(self, limit=None):
- from archaeological_finds.models_treatments import \
- FindUpstreamTreatments
- return self._get_treatments(FindUpstreamTreatments, 'upstream',
- limit=limit)
+ from archaeological_finds.models_treatments import FindUpstreamTreatments
+
+ return self._get_treatments(FindUpstreamTreatments, "upstream", limit=limit)
def limited_upstream_treatments(self):
return self.upstream_treatments(15)
def downstream_treatments(self, limit=None):
- from archaeological_finds.models_treatments import \
- FindDownstreamTreatments
- return self._get_treatments(FindDownstreamTreatments, 'downstream',
- limit=limit)
+ from archaeological_finds.models_treatments import FindDownstreamTreatments
+
+ return self._get_treatments(FindDownstreamTreatments, "downstream", limit=limit)
def limited_downstream_treatments(self):
return self.downstream_treatments(15)
@@ -2031,26 +2274,24 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
return self.upstream_treatments() + self.downstream_treatments()
def non_modif_treatments(self, limit=None):
- from archaeological_finds.models_treatments import \
- FindNonModifTreatments
- return self._get_treatments(FindNonModifTreatments, 'finds',
- limit=limit)
+ from archaeological_finds.models_treatments import FindNonModifTreatments
+
+ return self._get_treatments(FindNonModifTreatments, "finds", limit=limit)
def non_modif_treatments_count(self):
- from archaeological_finds.models_treatments import \
- FindNonModifTreatments
- return self._get_treatments(FindNonModifTreatments, 'finds',
- count=True)
+ from archaeological_finds.models_treatments import FindNonModifTreatments
+
+ return self._get_treatments(FindNonModifTreatments, "finds", count=True)
def limited_non_modif_treatments(self):
return self.non_modif_treatments(15)
def associated_treatment_files(self):
- from archaeological_finds.models_treatments import \
- TreatmentFile
+ from archaeological_finds.models_treatments import TreatmentFile
+
return TreatmentFile.objects.filter(
- associated_basket__items__pk=self.pk).order_by(
- 'reception_date', 'creation_date', 'end_date')
+ associated_basket__items__pk=self.pk
+ ).order_by("reception_date", "creation_date", "end_date")
def associated_treatment_files_count(self):
return self.associated_treatment_files().count()
@@ -2074,13 +2315,13 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
return bf.context_record.operation.get_town_label()
@classmethod
- def get_periods(cls, slice='year', fltr=None):
+ def get_periods(cls, slice="year", fltr=None):
if not fltr:
fltr = {}
q = cls.objects
if fltr:
q = q.filter(**fltr)
- if slice == 'year':
+ if slice == "year":
years = set()
finds = q.filter(downstream_treatment__isnull=True)
for find in finds:
@@ -2102,7 +2343,8 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
q = q.filter(**fltr)
return q.filter(
downstream_treatment__isnull=True,
- base_finds__context_record__operation__start_date__year=year)
+ base_finds__context_record__operation__start_date__year=year,
+ )
@classmethod
def get_operations(cls):
@@ -2121,7 +2363,8 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
def get_by_operation(cls, operation_id):
return cls.objects.filter(
downstream_treatment__isnull=True,
- base_finds__context_record__operation__pk=operation_id)
+ base_finds__context_record__operation__pk=operation_id,
+ )
@classmethod
def get_total_number(cls, fltr=None):
@@ -2130,8 +2373,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
q = q.filter(**fltr)
return q.filter(downstream_treatment__isnull=True).count()
- def duplicate(self, user, copy_datings=True, duplicate_for_treatment=True,
- data=None):
+ def duplicate(
+ self, user, copy_datings=True, duplicate_for_treatment=True, data=None
+ ):
model = self.__class__
new = model.objects.get(pk=self.pk)
@@ -2150,16 +2394,20 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
setattr(new, k, data[k])
# remove associated treatments
if not duplicate_for_treatment and (
- new.upstream_treatment or new.downstream_treatment):
+ new.upstream_treatment or new.downstream_treatment
+ ):
new.upstream_treatment, new.downstream_treatment = None, None
new.uuid = uuid.uuid4()
new.save()
# m2m fields
- m2m = [field.name for field in model._meta.many_to_many
- if field.name not in PRIVATE_FIELDS]
+ m2m = [
+ field.name
+ for field in model._meta.many_to_many
+ if field.name not in PRIVATE_FIELDS
+ ]
for field in m2m:
- if field == 'datings' and copy_datings:
+ if field == "datings" and copy_datings:
for dating in self.datings.all():
is_present = False
for current_dating in new.datings.all():
@@ -2179,8 +2427,11 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
bf = self.get_first_base_find()
new.base_finds.clear()
if bf:
- new.base_finds.add(bf.duplicate(
- user=user, data={"label": new.label, "external_id": ''}))
+ new.base_finds.add(
+ bf.duplicate(
+ user=user, data={"label": new.label, "external_id": ""}
+ )
+ )
# remove documents for this kind of duplicate (data entry)
new.documents.clear()
# remove associated treatments
@@ -2189,45 +2440,53 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@classmethod
def get_query_owns(cls, ishtaruser):
- q = cls._construct_query_own(
- 'container__location__',
- Warehouse._get_query_owns_dicts(ishtaruser)
- ) | cls._construct_query_own(
- 'container__responsible__',
- Warehouse._get_query_owns_dicts(ishtaruser)
- ) | cls._construct_query_own(
- 'base_finds__context_record__operation__',
- Operation._get_query_owns_dicts(ishtaruser)
- ) | cls._construct_query_own(
- 'basket__',
- [{"shared_with": ishtaruser, "shared_write_with": ishtaruser}]
- ) | cls._construct_query_own('', [
- {'history_creator': ishtaruser.user_ptr},
- {'base_finds__context_record__operation__end_date__isnull': True}
- ])
+ q = (
+ cls._construct_query_own(
+ "container__location__", Warehouse._get_query_owns_dicts(ishtaruser)
+ )
+ | cls._construct_query_own(
+ "container__responsible__", Warehouse._get_query_owns_dicts(ishtaruser)
+ )
+ | cls._construct_query_own(
+ "base_finds__context_record__operation__",
+ Operation._get_query_owns_dicts(ishtaruser),
+ )
+ | cls._construct_query_own(
+ "basket__",
+ [{"shared_with": ishtaruser, "shared_write_with": ishtaruser}],
+ )
+ | cls._construct_query_own(
+ "",
+ [
+ {"history_creator": ishtaruser.user_ptr},
+ {"base_finds__context_record__operation__end_date__isnull": True},
+ ],
+ )
+ )
return q
@classmethod
- def get_owns(cls, user, menu_filtr=None, limit=None,
- values=None, get_short_menu_class=None):
+ def get_owns(
+ cls, user, menu_filtr=None, limit=None, values=None, get_short_menu_class=None
+ ):
replace_query = None
- if menu_filtr and 'contextrecord' in menu_filtr:
- replace_query = Q(
- base_finds__context_record=menu_filtr['contextrecord']
- )
+ if menu_filtr and "contextrecord" in menu_filtr:
+ replace_query = Q(base_finds__context_record=menu_filtr["contextrecord"])
owns = super(Find, cls).get_owns(
- user, replace_query=replace_query, limit=limit, values=values,
- get_short_menu_class=get_short_menu_class)
+ user,
+ replace_query=replace_query,
+ limit=limit,
+ values=values,
+ get_short_menu_class=get_short_menu_class,
+ )
return cls._return_get_owns(owns, values, get_short_menu_class)
def _generate_cached_label(self):
self.cached_label_bulk_update(find_id=self.pk)
- return Find.objects.filter(pk=self.pk).values(
- 'cached_label')[0]['cached_label']
+ return Find.objects.filter(pk=self.pk).values("cached_label")[0]["cached_label"]
def _generate_cached_periods(self):
- return " & ".join([dating.period.label
- for dating in self.datings.all()])
+ return " & ".join([dating.period.label for dating in self.datings.all()])
def _generate_cached_object_types(self):
return " & ".join([str(obj) for obj in self.object_types.all()])
@@ -2237,11 +2496,16 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
@classmethod
def cached_label_bulk_update(
- cls, operation_id=None, parcel_id=None, context_record_id=None,
- find_id=None, transaction_id=None):
+ cls,
+ operation_id=None,
+ parcel_id=None,
+ context_record_id=None,
+ find_id=None,
+ transaction_id=None,
+ ):
transaction_id, is_recursion = cls.bulk_recursion(
- transaction_id, [operation_id, parcel_id, context_record_id,
- find_id])
+ transaction_id, [operation_id, parcel_id, context_record_id, find_id]
+ )
if is_recursion:
return
@@ -2287,7 +2551,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
if profile.find_use_index:
index = """|| '-' ||
to_char(find_cached_bulk_update.index, 'fm{zeros}')
- """.format(zeros=settings.ISHTAR_FINDS_INDEX_ZERO_LEN * "0")
+ """.format(
+ zeros=settings.ISHTAR_FINDS_INDEX_ZERO_LEN * "0"
+ )
sql = """
UPDATE "archaeological_finds_find" AS f
@@ -2322,10 +2588,13 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
SELECT myf.id FROM archaeological_finds_find myf
{filters}
);
- """.format(main_ope_prefix=profile.operation_prefix,
- ope_prefix=profile.default_operation_prefix,
- join=settings.JOINT, filters=filters,
- index=index)
+ """.format(
+ main_ope_prefix=profile.operation_prefix,
+ ope_prefix=profile.default_operation_prefix,
+ join=settings.JOINT,
+ filters=filters,
+ index=index,
+ )
with connection.cursor() as c:
c.execute(sql, args)
@@ -2421,8 +2690,7 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
def localisation_9(self):
return self.get_localisation(8)
- def set_localisation(self, place, context, value, is_ref=False,
- static=False):
+ def set_localisation(self, place, context, value, is_ref=False, static=False):
"""
Get localisation reference in the warehouse
@@ -2443,240 +2711,269 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
return
if is_ref:
raise ImporterError(
- _("No reference container have been set - the "
- "localisation cannot be set."))
+ _(
+ "No reference container have been set - the "
+ "localisation cannot be set."
+ )
+ )
else:
raise ImporterError(
- _("No container have been set - the localisation cannot "
- "be set."))
+ _("No container have been set - the localisation cannot " "be set.")
+ )
localisation, error = container.set_localisation(
- place, value, static=static, return_errors=True)
+ place, value, static=static, return_errors=True
+ )
if error:
raise ImporterError(error)
@post_importer_action
def set_reference_localisation_1(self, context, value):
return self.set_localisation(0, context, value, is_ref=True)
+
set_reference_localisation_1.post_save = True
@post_importer_action
def set_reference_localisation_2(self, context, value):
return self.set_localisation(1, context, value, is_ref=True)
+
set_reference_localisation_2.post_save = True
@post_importer_action
def set_reference_localisation_3(self, context, value):
return self.set_localisation(2, context, value, is_ref=True)
+
set_reference_localisation_3.post_save = True
@post_importer_action
def set_reference_localisation_4(self, context, value):
return self.set_localisation(3, context, value, is_ref=True)
+
set_reference_localisation_4.post_save = True
@post_importer_action
def set_reference_localisation_5(self, context, value):
return self.set_localisation(4, context, value, is_ref=True)
+
set_reference_localisation_5.post_save = True
@post_importer_action
def set_reference_localisation_6(self, context, value):
return self.set_localisation(5, context, value, is_ref=True)
+
set_reference_localisation_6.post_save = True
@post_importer_action
def set_reference_localisation_7(self, context, value):
return self.set_localisation(6, context, value, is_ref=True)
+
set_reference_localisation_7.post_save = True
@post_importer_action
def set_reference_localisation_8(self, context, value):
return self.set_localisation(7, context, value, is_ref=True)
+
set_reference_localisation_8.post_save = True
@post_importer_action
def set_reference_localisation_9(self, context, value):
return self.set_localisation(8, context, value, is_ref=True)
+
set_reference_localisation_9.post_save = True
@post_importer_action
def set_reference_static_localisation_1(self, context, value):
- return self.set_localisation(0, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(0, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_1.post_save = True
@post_importer_action
def set_reference_static_localisation_2(self, context, value):
- return self.set_localisation(1, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(1, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_2.post_save = True
@post_importer_action
def set_reference_static_localisation_3(self, context, value):
- return self.set_localisation(2, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(2, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_3.post_save = True
@post_importer_action
def set_reference_static_localisation_4(self, context, value):
- return self.set_localisation(3, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(3, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_4.post_save = True
@post_importer_action
def set_reference_static_localisation_5(self, context, value):
- return self.set_localisation(4, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(4, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_5.post_save = True
@post_importer_action
def set_reference_static_localisation_6(self, context, value):
- return self.set_localisation(5, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(5, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_6.post_save = True
@post_importer_action
def set_reference_static_localisation_7(self, context, value):
- return self.set_localisation(6, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(6, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_7.post_save = True
@post_importer_action
def set_reference_static_localisation_8(self, context, value):
- return self.set_localisation(7, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(7, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_8.post_save = True
@post_importer_action
def set_reference_static_localisation_9(self, context, value):
- return self.set_localisation(8, context, value, is_ref=True,
- static=True)
+ return self.set_localisation(8, context, value, is_ref=True, static=True)
+
set_reference_static_localisation_9.post_save = True
@post_importer_action
def set_localisation_1(self, context, value):
return self.set_localisation(0, context, value)
+
set_localisation_1.post_save = True
@post_importer_action
def set_localisation_2(self, context, value):
return self.set_localisation(1, context, value)
+
set_localisation_2.post_save = True
@post_importer_action
def set_localisation_3(self, context, value):
return self.set_localisation(2, context, value)
+
set_localisation_3.post_save = True
@post_importer_action
def set_localisation_4(self, context, value):
return self.set_localisation(3, context, value)
+
set_localisation_4.post_save = True
@post_importer_action
def set_localisation_5(self, context, value):
return self.set_localisation(4, context, value)
+
set_localisation_5.post_save = True
@post_importer_action
def set_localisation_6(self, context, value):
return self.set_localisation(5, context, value)
+
set_localisation_6.post_save = True
@post_importer_action
def set_localisation_7(self, context, value):
return self.set_localisation(6, context, value)
+
set_localisation_7.post_save = True
@post_importer_action
def set_localisation_8(self, context, value):
return self.set_localisation(7, context, value)
+
set_localisation_8.post_save = True
@post_importer_action
def set_localisation_9(self, context, value):
return self.set_localisation(8, context, value)
+
set_localisation_9.post_save = True
@post_importer_action
def set_static_localisation_1(self, context, value):
return self.set_localisation(0, context, value, static=True)
+
set_static_localisation_1.post_save = True
@post_importer_action
def set_static_localisation_2(self, context, value):
return self.set_localisation(1, context, value, static=True)
+
set_static_localisation_2.post_save = True
@post_importer_action
def set_static_localisation_3(self, context, value):
return self.set_localisation(2, context, value, static=True)
+
set_static_localisation_3.post_save = True
@post_importer_action
def set_static_localisation_4(self, context, value):
return self.set_localisation(3, context, value, static=True)
+
set_static_localisation_4.post_save = True
@post_importer_action
def set_static_localisation_5(self, context, value):
return self.set_localisation(4, context, value, static=True)
+
set_static_localisation_5.post_save = True
@post_importer_action
def set_static_localisation_6(self, context, value):
return self.set_localisation(5, context, value, static=True)
+
set_static_localisation_6.post_save = True
@post_importer_action
def set_static_localisation_7(self, context, value):
return self.set_localisation(6, context, value, static=True)
+
set_static_localisation_7.post_save = True
@post_importer_action
def set_static_localisation_8(self, context, value):
return self.set_localisation(7, context, value, static=True)
+
set_static_localisation_8.post_save = True
@post_importer_action
def set_static_localisation_9(self, context, value):
return self.set_localisation(8, context, value, static=True)
+
set_static_localisation_9.post_save = True
def generate_index(self):
"""
Generate index based on operation or context record (based on
the configuration)
-
+
:return: True if index has been changed.
"""
bfs = self.base_finds
profile = get_current_profile()
- if profile.find_index == 'O':
- bfs = bfs.filter(
- context_record__operation__pk__isnull=False).order_by(
- '-context_record__operation__start_date')
+ if profile.find_index == "O":
+ bfs = bfs.filter(context_record__operation__pk__isnull=False).order_by(
+ "-context_record__operation__start_date"
+ )
if not bfs.count():
return False
operation = bfs.all()[0].context_record.operation
- q = Find.objects \
- .filter(base_finds__context_record__operation=operation)
- elif profile.find_index == 'CR':
- bfs = bfs.filter(
- context_record__pk__isnull=False).order_by(
- 'context_record__pk')
+ q = Find.objects.filter(base_finds__context_record__operation=operation)
+ elif profile.find_index == "CR":
+ bfs = bfs.filter(context_record__pk__isnull=False).order_by(
+ "context_record__pk"
+ )
if not bfs.count():
return False
cr = bfs.all()[0].context_record
- q = Find.objects \
- .filter(base_finds__context_record=cr)
+ q = Find.objects.filter(base_finds__context_record=cr)
else:
return False
if self.pk:
q = q.exclude(pk=self.pk)
if q.count():
- self.index = q.aggregate(Max('index'))['index__max'] + 1
+ self.index = q.aggregate(Max("index"))["index__max"] + 1
else:
self.index = 1
return True
@@ -2685,8 +2982,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
old_container = None
# fetch in db
if self.pk:
- old_container = self.__class__.objects.filter(
- pk=self.pk).values_list("container_id", flat=True)[0]
+ old_container = self.__class__.objects.filter(pk=self.pk).values_list(
+ "container_id", flat=True
+ )[0]
super(Find, self).save(*args, **kwargs)
self.skip_history_when_saving = True
@@ -2715,7 +3013,8 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
self._cached_label_checked = False
self.save()
for base_find in self.base_finds.filter(
- context_record__operation__pk__isnull=False).all():
+ context_record__operation__pk__isnull=False
+ ).all():
modified = False
if self.label and not base_find.label:
base_find.label = self.label
@@ -2752,9 +3051,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,
def pre_clean_find(sender, **kwargs):
- if not kwargs.get('instance'):
+ if not kwargs.get("instance"):
return
- instance = kwargs.get('instance')
+ instance = kwargs.get("instance")
for bf in instance.base_finds.all():
# no other find is associated
@@ -2782,7 +3081,7 @@ pre_delete.connect(pre_clean_find, sender=Find)
def base_find_find_changed(sender, **kwargs):
- obj = kwargs.get('instance', None)
+ obj = kwargs.get("instance", None)
if not obj:
return
obj.skip_history_when_saving = True
@@ -2792,8 +3091,7 @@ def base_find_find_changed(sender, **kwargs):
m2m_changed.connect(base_find_find_changed, sender=Find.base_finds.through)
-m2m_changed.connect(document_attached_changed,
- sender=Find.documents.through)
+m2m_changed.connect(document_attached_changed, sender=Find.documents.through)
class FindInsideContainer(models.Model):
@@ -2818,39 +3116,39 @@ class FindInsideContainer(models.Model):
DROP VIEW IF EXISTS find_inside_container;
"""
TABLE_COLS = ["find__" + t for t in Find.TABLE_COLS]
- COL_LABELS = {
- "find__" + k: Find.COL_LABELS[k] for k in Find.COL_LABELS.keys()
- }
+ COL_LABELS = {"find__" + k: Find.COL_LABELS[k] for k in Find.COL_LABELS.keys()}
EXTRA_REQUEST_KEYS = {
- "find__" + k:
- "find__" + Find.EXTRA_REQUEST_KEYS[k]
+ "find__" + k: "find__" + Find.EXTRA_REQUEST_KEYS[k]
for k in Find.EXTRA_REQUEST_KEYS.keys()
}
SLUG = "find_inside_container"
find = models.OneToOneField(
- Find, verbose_name=_("Find"), related_name="inside_container",
- primary_key=True)
- container = models.ForeignKey("archaeological_warehouse.Container",
- verbose_name=_("Container"),
- related_name="container_content")
+ Find, verbose_name=_("Find"), related_name="inside_container", primary_key=True
+ )
+ container = models.ForeignKey(
+ "archaeological_warehouse.Container",
+ verbose_name=_("Container"),
+ related_name="container_content",
+ )
class Meta:
managed = False
- db_table = 'find_inside_container'
+ db_table = "find_inside_container"
for attr in Find.HISTORICAL_M2M:
- m2m_changed.connect(m2m_historization_changed,
- sender=getattr(Find, attr).through)
+ m2m_changed.connect(m2m_historization_changed, sender=getattr(Find, attr).through)
class Property(LightHistorizedItem):
find = models.ForeignKey(Find, verbose_name=_("Find"))
administrative_act = models.ForeignKey(
- AdministrativeAct, verbose_name=_("Administrative act"))
- person = models.ForeignKey(Person, verbose_name=_("Person"),
- related_name='properties')
+ AdministrativeAct, verbose_name=_("Administrative act")
+ )
+ person = models.ForeignKey(
+ Person, verbose_name=_("Person"), related_name="properties"
+ )
start_date = models.DateField(_("Start date"))
end_date = models.DateField(_("End date"))
@@ -2858,7 +3156,7 @@ class Property(LightHistorizedItem):
verbose_name = _("Property")
verbose_name_plural = _("Properties")
indexes = [
- GinIndex(fields=['data']),
+ GinIndex(fields=["data"]),
]
def __str__(self):
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 7f3aab284..be7b07ee5 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2016-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -24,8 +24,7 @@ from django.contrib.gis.db import models
from django.contrib.postgres.indexes import GinIndex
from django.core.urlresolvers import reverse
from django.db.models import Max, Q
-from django.db.models.signals import post_save, post_delete, pre_delete, \
- m2m_changed
+from django.db.models.signals import post_save, post_delete, pre_delete, m2m_changed
from django.template.defaultfilters import slugify
from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy
@@ -34,14 +33,31 @@ from archaeological_operations.models import ClosedItem, Operation
from archaeological_context_records.models import Dating
from archaeological_warehouse.models import Warehouse, Container
from ishtar_common.model_managers import ExternalIdManager
-from ishtar_common.models import Document, GeneralType, \
- ImageModel, BaseHistorizedItem, OwnPerms, Person, \
- Organization, ValueGetter, post_save_cache, ShortMenuItem, \
- DashboardFormItem, document_attached_changed, \
- HistoryModel, SearchAltName, SearchVectorConfig, DocumentItem
+from ishtar_common.models import (
+ Document,
+ GeneralType,
+ ImageModel,
+ BaseHistorizedItem,
+ OwnPerms,
+ Person,
+ Organization,
+ ValueGetter,
+ post_save_cache,
+ ShortMenuItem,
+ DashboardFormItem,
+ document_attached_changed,
+ HistoryModel,
+ SearchAltName,
+ SearchVectorConfig,
+ DocumentItem,
+)
from ishtar_common.models_common import HistoricalRecords
-from ishtar_common.utils import cached_label_changed, get_current_year, \
- update_data, m2m_historization_changed
+from ishtar_common.utils import (
+ cached_label_changed,
+ get_current_year,
+ update_data,
+ m2m_historization_changed,
+)
class TreatmentState(GeneralType):
@@ -51,7 +67,10 @@ class TreatmentState(GeneralType):
class Meta:
verbose_name = _("Treatment state type")
verbose_name_plural = _("Treatment state types")
- ordering = ('order', 'label',)
+ ordering = (
+ "order",
+ "label",
+ )
@classmethod
def get_default(cls):
@@ -65,27 +84,39 @@ post_save.connect(post_save_cache, sender=TreatmentState)
post_delete.connect(post_save_cache, sender=TreatmentState)
-class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
- BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
- SLUG = 'treatment'
- SHOW_URL = 'show-treatment'
- TABLE_COLS = ('year', 'index', 'treatment_types__label',
- 'treatment_state__label',
- 'label', 'scientific_monitoring_manager__cached_label',
- 'person__cached_label',
- 'start_date', 'downstream_cached_label',
- 'upstream_cached_label')
+class Treatment(
+ DashboardFormItem,
+ ValueGetter,
+ DocumentItem,
+ BaseHistorizedItem,
+ ImageModel,
+ OwnPerms,
+ ShortMenuItem,
+):
+ SLUG = "treatment"
+ SHOW_URL = "show-treatment"
+ TABLE_COLS = (
+ "year",
+ "index",
+ "treatment_types__label",
+ "treatment_state__label",
+ "label",
+ "scientific_monitoring_manager__cached_label",
+ "person__cached_label",
+ "start_date",
+ "downstream_cached_label",
+ "upstream_cached_label",
+ )
REVERSED_BOOL_FIELDS = [
- 'documents__image__isnull',
- 'documents__associated_file__isnull',
- 'documents__associated_url__isnull',
+ "documents__image__isnull",
+ "documents__associated_file__isnull",
+ "documents__associated_url__isnull",
]
EXTRA_REQUEST_KEYS = {
"downstream_cached_label": "downstream__cached_label",
"upstream_cached_label": "upstream__cached_label",
- 'person__cached_label': 'person__cached_label',
- 'scientific_monitoring_manager__cached_label':
- 'scientific_monitoring_manager__cached_label',
+ "person__cached_label": "person__cached_label",
+ "scientific_monitoring_manager__cached_label": "scientific_monitoring_manager__cached_label",
"person__pk": "person__pk", # used by dynamic_table_documents
}
COL_LABELS = {
@@ -95,44 +126,44 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
"treatment_state__label": _("State"),
"person__cached_label": _("Responsible"),
"scientific_monitoring_manager__cached_label": _(
- "Scientific monitoring manager"),
+ "Scientific monitoring manager"
+ ),
}
# extra keys than can be passed to save method
- EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items',
- 'resulting_finds', 'upstream_item',
- 'treatment_type_list')
+ EXTRA_SAVED_KEYS = (
+ "items",
+ "user",
+ "resulting_find",
+ "upstream_items",
+ "resulting_finds",
+ "upstream_item",
+ "treatment_type_list",
+ )
# alternative names of fields for searches
ALT_NAMES = {
- 'label': SearchAltName(
- pgettext_lazy("key for text search", "label"),
- 'label__iexact'
+ "label": SearchAltName(
+ pgettext_lazy("key for text search", "label"), "label__iexact"
),
- 'other_reference': SearchAltName(
+ "other_reference": SearchAltName(
pgettext_lazy("key for text search", "other-reference"),
- 'other_reference__iexact'
- ),
- 'year': SearchAltName(
- pgettext_lazy("key for text search", "year"),
- 'year'
+ "other_reference__iexact",
),
- 'index': SearchAltName(
- pgettext_lazy("key for text search", "index"),
- 'index'
- ),
- 'treatment_types': SearchAltName(
+ "year": SearchAltName(pgettext_lazy("key for text search", "year"), "year"),
+ "index": SearchAltName(pgettext_lazy("key for text search", "index"), "index"),
+ "treatment_types": SearchAltName(
pgettext_lazy("key for text search", "type"),
- 'treatment_types__label__iexact'
+ "treatment_types__label__iexact",
),
- 'scientific_monitoring_manager': SearchAltName(
+ "scientific_monitoring_manager": SearchAltName(
pgettext_lazy("key for text search", "scientific-manager"),
- 'scientific_monitoring_manager__cached_label__iexact'
+ "scientific_monitoring_manager__cached_label__iexact",
),
}
ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)
ALT_NAMES.update(DocumentItem.ALT_NAMES)
HISTORICAL_M2M = [
- 'treatment_types',
+ "treatment_types",
]
BASE_SEARCH_VECTORS = [
@@ -156,77 +187,104 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
SearchVectorConfig("downstream__cached_label"),
SearchVectorConfig("upstream__cached_label"),
]
- PARENT_SEARCH_VECTORS = ['person', 'organization']
+ PARENT_SEARCH_VECTORS = ["person", "organization"]
objects = ExternalIdManager()
- label = models.CharField(_("Label"), blank=True, null=True,
- max_length=200)
- other_reference = models.CharField(_("Other ref."), blank=True, null=True,
- max_length=200)
+ label = models.CharField(_("Label"), blank=True, null=True, max_length=200)
+ other_reference = models.CharField(
+ _("Other ref."), blank=True, null=True, max_length=200
+ )
year = models.IntegerField(_("Year"), default=get_current_year)
index = models.IntegerField(_("Index"), default=1)
file = models.ForeignKey(
- 'TreatmentFile', related_name='treatments', blank=True, null=True,
+ "TreatmentFile",
+ related_name="treatments",
+ blank=True,
+ null=True,
on_delete=models.SET_NULL,
- verbose_name=_("Associated request"))
+ verbose_name=_("Associated request"),
+ )
treatment_types = models.ManyToManyField(
- TreatmentType, verbose_name=_("Treatment type"))
+ TreatmentType, verbose_name=_("Treatment type")
+ )
treatment_state = models.ForeignKey(
- TreatmentState, verbose_name=_("State"),
- default=TreatmentState.get_default
+ TreatmentState, verbose_name=_("State"), default=TreatmentState.get_default
)
- executed = models.BooleanField(
- _("Treatment have been executed"), default=False)
+ executed = models.BooleanField(_("Treatment have been executed"), default=False)
location = models.ForeignKey(
- Warehouse, verbose_name=_("Location"), blank=True, null=True,
+ Warehouse,
+ verbose_name=_("Location"),
+ blank=True,
+ null=True,
on_delete=models.SET_NULL,
help_text=_(
- "Location where the treatment is done. Target warehouse for "
- "a move."))
+ "Location where the treatment is done. Target warehouse for " "a move."
+ ),
+ )
person = models.ForeignKey(
- Person, verbose_name=_("Responsible"), blank=True, null=True,
- on_delete=models.SET_NULL, related_name='treatments')
+ Person,
+ verbose_name=_("Responsible"),
+ blank=True,
+ null=True,
+ on_delete=models.SET_NULL,
+ related_name="treatments",
+ )
scientific_monitoring_manager = models.ForeignKey(
- Person, verbose_name=_('Scientific monitoring manager'), blank=True,
- null=True, on_delete=models.SET_NULL,
- related_name='manage_treatments')
+ Person,
+ verbose_name=_("Scientific monitoring manager"),
+ blank=True,
+ null=True,
+ on_delete=models.SET_NULL,
+ related_name="manage_treatments",
+ )
organization = models.ForeignKey(
- Organization, verbose_name=_("Organization"), blank=True, null=True,
- on_delete=models.SET_NULL, related_name='treatments')
- external_id = models.CharField(_("External ID"), blank=True, null=True,
- max_length=200)
+ Organization,
+ verbose_name=_("Organization"),
+ blank=True,
+ null=True,
+ on_delete=models.SET_NULL,
+ related_name="treatments",
+ )
+ external_id = models.CharField(
+ _("External ID"), blank=True, null=True, max_length=200
+ )
comment = models.TextField(_("Comment"), blank=True, default="")
description = models.TextField(_("Description"), blank=True, default="")
goal = models.TextField(_("Goal"), blank=True, default="")
start_date = models.DateField(_("Start date"), blank=True, null=True)
end_date = models.DateField(_("Closing date"), blank=True, null=True)
creation_date = models.DateTimeField(default=datetime.datetime.now)
- container = models.ForeignKey(Container, verbose_name=_("Container"),
- on_delete=models.SET_NULL,
- blank=True, null=True)
- estimated_cost = models.FloatField(_("Estimated cost"),
- blank=True, null=True)
- quoted_cost = models.FloatField(_("Quoted cost"),
- blank=True, null=True)
- realized_cost = models.FloatField(_("Realized cost"),
- blank=True, null=True)
- insurance_cost = models.FloatField(_("Insurance cost"),
- blank=True, null=True)
+ container = models.ForeignKey(
+ Container,
+ verbose_name=_("Container"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
+ estimated_cost = models.FloatField(_("Estimated cost"), blank=True, null=True)
+ quoted_cost = models.FloatField(_("Quoted cost"), blank=True, null=True)
+ realized_cost = models.FloatField(_("Realized cost"), blank=True, null=True)
+ insurance_cost = models.FloatField(_("Insurance cost"), blank=True, null=True)
documents = models.ManyToManyField(
- Document, related_name='treatments', verbose_name=_("Documents"),
- blank=True)
+ Document, related_name="treatments", verbose_name=_("Documents"), blank=True
+ )
main_image = models.ForeignKey(
- Document, related_name='main_image_treatments',
+ Document,
+ related_name="main_image_treatments",
on_delete=models.SET_NULL,
- verbose_name=_("Main image"), blank=True, null=True)
- cached_label = models.TextField(_("Cached name"), blank=True, default="",
- db_index=True)
+ verbose_name=_("Main image"),
+ blank=True,
+ null=True,
+ )
+ cached_label = models.TextField(
+ _("Cached name"), blank=True, default="", db_index=True
+ )
history = HistoricalRecords(bases=[HistoryModel])
class Meta:
verbose_name = _("Treatment")
verbose_name_plural = _("Treatments")
- unique_together = ('year', 'index')
+ unique_together = ("year", "index")
permissions = (
("view_treatment", "Can view all Treatments"),
("view_own_treatment", "Can view own Treatment"),
@@ -236,7 +294,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
)
ordering = ("-year", "-index", "-start_date")
indexes = [
- GinIndex(fields=['data']),
+ GinIndex(fields=["data"]),
]
def __str__(self):
@@ -251,7 +309,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
return self.finds.all()[:15]
def natural_key(self):
- return (self.external_id, )
+ return (self.external_id,)
@property
def year_index(self):
@@ -259,38 +317,46 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
@classmethod
def get_query_owns(cls, ishtaruser):
- return (Q(history_creator=ishtaruser.user_ptr) |
- Q(person__ishtaruser=ishtaruser)) \
- & Q(end_date__isnull=True)
+ return (
+ Q(history_creator=ishtaruser.user_ptr) | Q(person__ishtaruser=ishtaruser)
+ ) & Q(end_date__isnull=True)
@classmethod
- def get_owns(cls, user, menu_filtr=None, limit=None, values=None,
- get_short_menu_class=None):
+ def get_owns(
+ cls, user, menu_filtr=None, limit=None, values=None, get_short_menu_class=None
+ ):
replace_query = None
if menu_filtr:
- if 'treatmentfile' in menu_filtr:
- replace_query = Q(file=menu_filtr['treatmentfile'])
- if 'find' in menu_filtr and \
- 'basket' not in str(menu_filtr['find']):
- q = Q(upstream=menu_filtr['find']) | Q(
- downstream=menu_filtr['find'])
+ if "treatmentfile" in menu_filtr:
+ replace_query = Q(file=menu_filtr["treatmentfile"])
+ if "find" in menu_filtr and "basket" not in str(menu_filtr["find"]):
+ q = Q(upstream=menu_filtr["find"]) | Q(downstream=menu_filtr["find"])
replace_query = replace_query | q if replace_query else q
owns = super(Treatment, cls).get_owns(
- user, replace_query=replace_query, limit=limit,
- values=values, get_short_menu_class=get_short_menu_class)
+ user,
+ replace_query=replace_query,
+ limit=limit,
+ values=values,
+ get_short_menu_class=get_short_menu_class,
+ )
return cls._return_get_owns(owns, values, get_short_menu_class)
def get_query_operations(self):
return Operation.objects.filter(
- context_record__base_finds__find__downstream_treatment=self)
+ context_record__base_finds__find__downstream_treatment=self
+ )
def _generate_cached_label(self):
- items = [str(getattr(self, k))
- for k in ['year', 'index', 'other_reference', 'label'] if
- getattr(self, k)]
- return '{} | {}'.format("-".join(items), self.treatment_types_lbl())
+ items = [
+ str(getattr(self, k))
+ for k in ["year", "index", "other_reference", "label"]
+ if getattr(self, k)
+ ]
+ return "{} | {}".format("-".join(items), self.treatment_types_lbl())
- def _get_base_image_path(self,):
+ def _get_base_image_path(
+ self,
+ ):
return "{}/{}/{}".format(self.SLUG, self.year, self.index)
def treatment_types_lbl(self):
@@ -299,8 +365,9 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
:return: string
"""
return " ; ".join(str(t) for t in self.treatment_types.all())
+
treatment_types_lbl.short_description = _("Treatment types")
- treatment_types_lbl.admin_order_field = 'treatment_types__label'
+ treatment_types_lbl.admin_order_field = "treatment_types__label"
def downstream_lbl(self):
"""
@@ -308,8 +375,9 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
:return: string
"""
return " ; ".join(f.cached_label for f in self.downstream.all())
+
downstream_lbl.short_description = _("Downstream finds")
- downstream_lbl.admin_order_field = 'downstream__cached_label'
+ downstream_lbl.admin_order_field = "downstream__cached_label"
def upstream_lbl(self):
"""
@@ -317,23 +385,30 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
:return: string
"""
return " ; ".join(f.cached_label for f in self.upstream.all())
+
upstream_lbl.short_description = _("Upstream finds")
- upstream_lbl.admin_order_field = 'upstream__cached_label'
+ upstream_lbl.admin_order_field = "upstream__cached_label"
def get_extra_actions(self, request):
# url, base_text, icon, extra_text, extra css class, is a quick action
actions = super(Treatment, self).get_extra_actions(request)
- if self.can_do(request, 'add_administrativeact'):
+ if self.can_do(request, "add_administrativeact"):
actions += [
- (reverse('treatment-add-adminact', args=[self.pk]),
- _("Add associated administrative act"), "fa fa-plus",
- _("admin. act"), "", False),
+ (
+ reverse("treatment-add-adminact", args=[self.pk]),
+ _("Add associated administrative act"),
+ "fa fa-plus",
+ _("admin. act"),
+ "",
+ False,
+ ),
]
return actions
- def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):
+ def get_values(self, prefix="", no_values=False, filtr=None, **kwargs):
values = super(Treatment, self).get_values(
- prefix=prefix, no_values=no_values, filtr=filtr, **kwargs)
+ prefix=prefix, no_values=no_values, filtr=filtr, **kwargs
+ )
if not filtr or prefix + "upstream_finds" in filtr:
values[prefix + "upstream_finds"] = " ; ".join(
str(up) for up in self.upstream.all()
@@ -344,18 +419,19 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
str(up) for up in self.downstream.all()
)
-
if not filtr or prefix + "operations" in filtr:
values[prefix + "operations"] = " ; ".join(
str(ope) for ope in self.get_query_operations().all()
)
- if 'associatedfind_' not in prefix and self.upstream.count():
+ if "associatedfind_" not in prefix and self.upstream.count():
find = self.upstream.all()[0]
- new_prefix = prefix + 'associatedfind_'
+ new_prefix = prefix + "associatedfind_"
values.update(
- find.get_values(prefix=new_prefix, no_values=True,
- filtr=filtr, **kwargs))
+ find.get_values(
+ prefix=new_prefix, no_values=True, filtr=filtr, **kwargs
+ )
+ )
return values
def pre_save(self):
@@ -366,10 +442,11 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
self.index = 1
q = Treatment.objects.filter(year=self.year)
if q.count():
- self.index = q.all().aggregate(Max('index'))['index__max'] + 1
+ self.index = q.all().aggregate(Max("index"))["index__max"] + 1
- def _create_n_1_resulting_find(self, resulting_find, upstream_items,
- treatment_types):
+ def _create_n_1_resulting_find(
+ self, resulting_find, upstream_items, treatment_types
+ ):
"""
Manage creation of n<->1 treatment
"""
@@ -382,7 +459,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
if values:
m2m[k + "s"] = values
- resulting_find['history_modifier'] = self.history_modifier
+ resulting_find["history_modifier"] = self.history_modifier
new_find = Find.objects.create(**resulting_find)
for k, v in m2m.items():
@@ -393,8 +470,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
except TypeError:
m2m_field.add(v)
- create_new_find = bool([tp for tp in treatment_types
- if tp.create_new_find])
+ create_new_find = bool([tp for tp in treatment_types if tp.create_new_find])
current_base_finds = []
current_documents = []
@@ -428,8 +504,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
new_find.documents.add(document)
# data
- new_find.data = update_data(new_find.data, upstream_item.data,
- merge=True)
+ new_find.data = update_data(new_find.data, upstream_item.data, merge=True)
if create_new_find:
upstream_item.downstream_treatment = self
@@ -442,25 +517,24 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
new_find.skip_history_when_saving = True
new_find.save()
- def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user,
- treatment_types):
+ def _create_1_n_resulting_find(
+ self, resulting_finds, upstream_item, user, treatment_types
+ ):
"""
Manage creation of 1<->n treatment
"""
new_items = []
- start_number = resulting_finds['start_number']
- for idx in range(resulting_finds['number']):
- label = resulting_finds['label'] + str(start_number + idx)
- new_find = Find.objects.get(
- pk=upstream_item.pk).duplicate(user)
+ start_number = resulting_finds["start_number"]
+ for idx in range(resulting_finds["number"]):
+ label = resulting_finds["label"] + str(start_number + idx)
+ new_find = Find.objects.get(pk=upstream_item.pk).duplicate(user)
new_find.upstream_treatment = self
new_find.label = label
new_find.skip_history_when_saving = True
new_find.save()
new_items.append(new_find)
- create_new_find = bool([tp for tp in treatment_types
- if tp.create_new_find])
+ create_new_find = bool([tp for tp in treatment_types if tp.create_new_find])
if create_new_find:
upstream_item.downstream_treatment = self
@@ -469,9 +543,10 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
else:
self.finds.add(upstream_item)
- if getattr(user, 'ishtaruser', None):
+ if getattr(user, "ishtaruser", None):
b = FindBasket.objects.create(
- label=resulting_finds['basket_name'], user=user.ishtaruser)
+ label=resulting_finds["basket_name"], user=user.ishtaruser
+ )
for item in new_items:
b.items.add(item)
@@ -480,23 +555,23 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
upstream_items, upstream_item, resulting_finds = [], None, None
treatment_types, return_new = [], False
if "items" in kwargs:
- items = kwargs.pop('items')
+ items = kwargs.pop("items")
if "resulting_find" in kwargs:
- resulting_find = kwargs.pop('resulting_find')
+ resulting_find = kwargs.pop("resulting_find")
if "resulting_finds" in kwargs:
- resulting_finds = kwargs.pop('resulting_finds')
+ resulting_finds = kwargs.pop("resulting_finds")
if "upstream_items" in kwargs:
- upstream_items = kwargs.pop('upstream_items')
+ upstream_items = kwargs.pop("upstream_items")
if "upstream_item" in kwargs:
- upstream_item = kwargs.pop('upstream_item')
+ upstream_item = kwargs.pop("upstream_item")
if "user" in kwargs:
- user = kwargs.pop('user')
+ user = kwargs.pop("user")
if "extra_args_for_new" in kwargs:
- extra_args_for_new = kwargs.pop('extra_args_for_new')
+ extra_args_for_new = kwargs.pop("extra_args_for_new")
if "treatment_type_list" in kwargs:
- treatment_types = kwargs.pop('treatment_type_list')
+ treatment_types = kwargs.pop("treatment_type_list")
if "return_new" in kwargs:
- return_new = kwargs.pop('return_new')
+ return_new = kwargs.pop("return_new")
self.pre_save()
super(Treatment, self).save(*args, **kwargs)
to_be_executed = not self.executed and self.treatment_state.executed
@@ -517,8 +592,9 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
if not to_be_executed:
# should not happen but bad validation check...
return
- self._create_n_1_resulting_find(resulting_find, upstream_items,
- treatment_types)
+ self._create_n_1_resulting_find(
+ resulting_find, upstream_items, treatment_types
+ )
self.executed = True
self.save()
return
@@ -528,14 +604,13 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
# should not happen but bad validation check...
return
self._create_1_n_resulting_find(
- resulting_finds, upstream_item, self.history_modifier,
- treatment_types)
+ resulting_finds, upstream_item, self.history_modifier, treatment_types
+ )
self.executed = True
self.save()
return
- create_new_find = bool([tp for tp in treatment_types
- if tp.create_new_find])
+ create_new_find = bool([tp for tp in treatment_types if tp.create_new_find])
new_items = []
for item in items:
@@ -553,8 +628,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
updated.append(new.pk)
new_items.append(new)
# update baskets
- for basket in \
- FindBasket.objects.filter(items__pk=item.pk).all():
+ for basket in FindBasket.objects.filter(items__pk=item.pk).all():
basket.items.remove(item)
basket.items.add(new)
@@ -591,13 +665,13 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
container_attrs = []
for tp in treatment_types:
if tp.change_current_location:
- if 'container' in container_attrs:
+ if "container" in container_attrs:
continue
- container_attrs.append('container')
+ container_attrs.append("container")
if tp.change_reference_location:
- if 'container_ref' in container_attrs:
+ if "container_ref" in container_attrs:
continue
- container_attrs.append('container_ref')
+ container_attrs.append("container_ref")
if not container_attrs:
# non consistent treatment
@@ -621,8 +695,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,
@property
def associated_filename(self):
return "-".join(
- str(slugify(getattr(self, attr)))
- for attr in ('year', 'index', 'label')
+ str(slugify(getattr(self, attr))) for attr in ("year", "index", "label")
)
@@ -630,7 +703,7 @@ post_save.connect(cached_label_changed, sender=Treatment)
def pre_delete_treatment(sender, **kwargs):
- treatment = kwargs.get('instance')
+ treatment = kwargs.get("instance")
for find in Find.objects.filter(upstream_treatment=treatment).all():
if find.downstream_treatment:
# a new treatment have be done since the deleted treatment
@@ -645,41 +718,43 @@ def pre_delete_treatment(sender, **kwargs):
pre_delete.connect(pre_delete_treatment, sender=Treatment)
-m2m_changed.connect(document_attached_changed,
- sender=Treatment.documents.through)
+m2m_changed.connect(document_attached_changed, sender=Treatment.documents.through)
for attr in Treatment.HISTORICAL_M2M:
- m2m_changed.connect(m2m_historization_changed,
- sender=getattr(Treatment, attr).through)
+ m2m_changed.connect(
+ m2m_historization_changed, sender=getattr(Treatment, attr).through
+ )
class AbsFindTreatments(models.Model):
- find = models.ForeignKey(Find, verbose_name=_("Find"),
- related_name='%(class)s_related')
- treatment = models.OneToOneField(Treatment, verbose_name=_("Treatment"),
- primary_key=True)
+ find = models.ForeignKey(
+ Find, verbose_name=_("Find"), related_name="%(class)s_related"
+ )
+ treatment = models.OneToOneField(
+ Treatment, verbose_name=_("Treatment"), primary_key=True
+ )
# primary_key is set to prevent django to ask for an id column
# treatment is not a real primary key
treatment_nb = models.IntegerField(_("Order"))
- TABLE_COLS = ["treatment__" + col for col in Treatment.TABLE_COLS] + \
- ['treatment_nb']
+ TABLE_COLS = ["treatment__" + col for col in Treatment.TABLE_COLS] + [
+ "treatment_nb"
+ ]
COL_LABELS = {
- 'treatment__treatment_type': _("Treatment type"),
- 'treatment__start_date': _("Start date"),
- 'treatment__end_date': _("End date"),
- 'treatment__location': _("Location"),
- 'treatment__container': _("Container"),
- 'treatment__person': _("Doer"),
- 'treatment__upstream': _("Related finds"),
- 'treatment__downstream': _("Related finds"),
+ "treatment__treatment_type": _("Treatment type"),
+ "treatment__start_date": _("Start date"),
+ "treatment__end_date": _("End date"),
+ "treatment__location": _("Location"),
+ "treatment__container": _("Container"),
+ "treatment__person": _("Doer"),
+ "treatment__upstream": _("Related finds"),
+ "treatment__downstream": _("Related finds"),
}
class Meta:
abstract = True
def __str__(self):
- return "{} - {} [{}]".format(
- self.find, self.treatment, self.treatment_nb)
+ return "{} - {} [{}]".format(self.find, self.treatment, self.treatment_nb)
class FindNonModifTreatments(AbsFindTreatments):
@@ -734,20 +809,25 @@ class FindNonModifTreatments(AbsFindTreatments):
DROP VIEW IF EXISTS find_nonmodif_treatments;
DROP VIEW IF EXISTS find_nonmodif_treatments_tree;
"""
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__upstream',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
+ TABLE_COLS = [
+ "treatment__treatment_type",
+ "treatment__upstream",
+ "treatment__start_date",
+ "treatment__end_date",
+ "treatment__location",
+ "treatment__container",
+ "treatment__person",
+ "treatment_nb",
+ ]
# search parameters
- EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
+ EXTRA_REQUEST_KEYS = {"find_id": "find_id"}
class Meta:
managed = False
- db_table = 'find_nonmodif_treatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', '-treatment_nb')
+ db_table = "find_nonmodif_treatments"
+ unique_together = ("find", "treatment")
+ ordering = ("find", "-treatment_nb")
class FindUpstreamTreatments(AbsFindTreatments):
@@ -791,20 +871,25 @@ class FindUpstreamTreatments(AbsFindTreatments):
DROP VIEW IF EXISTS find_uptreatments;
DROP VIEW IF EXISTS find_uptreatments_tree;
"""
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__upstream',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
+ TABLE_COLS = [
+ "treatment__treatment_type",
+ "treatment__upstream",
+ "treatment__start_date",
+ "treatment__end_date",
+ "treatment__location",
+ "treatment__container",
+ "treatment__person",
+ "treatment_nb",
+ ]
# search parameters
- EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
+ EXTRA_REQUEST_KEYS = {"find_id": "find_id"}
class Meta:
managed = False
- db_table = 'find_uptreatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', '-treatment_nb')
+ db_table = "find_uptreatments"
+ unique_together = ("find", "treatment")
+ ordering = ("find", "-treatment_nb")
class FindDownstreamTreatments(AbsFindTreatments):
@@ -848,20 +933,25 @@ class FindDownstreamTreatments(AbsFindTreatments):
DROP VIEW IF EXISTS find_downtreatments;
DROP VIEW IF EXISTS find_downtreatments_tree;
"""
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__downstream',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
+ TABLE_COLS = [
+ "treatment__treatment_type",
+ "treatment__downstream",
+ "treatment__start_date",
+ "treatment__end_date",
+ "treatment__location",
+ "treatment__container",
+ "treatment__person",
+ "treatment_nb",
+ ]
# search parameters
- EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
+ EXTRA_REQUEST_KEYS = {"find_id": "find_id"}
class Meta:
managed = False
- db_table = 'find_downtreatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', '-treatment_nb')
+ db_table = "find_downtreatments"
+ unique_together = ("find", "treatment")
+ ordering = ("find", "-treatment_nb")
class FindTreatments(AbsFindTreatments):
@@ -885,9 +975,9 @@ class FindTreatments(AbsFindTreatments):
class Meta:
managed = False
- db_table = 'find_treatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', 'upstream', '-treatment_nb')
+ db_table = "find_treatments"
+ unique_together = ("find", "treatment")
+ ordering = ("find", "upstream", "-treatment_nb")
class TreatmentFileType(GeneralType):
@@ -896,19 +986,26 @@ class TreatmentFileType(GeneralType):
class Meta:
verbose_name = _("Treatment request type")
verbose_name_plural = _("Treatment request types")
- ordering = ('label',)
+ ordering = ("label",)
post_save.connect(post_save_cache, sender=TreatmentFileType)
post_delete.connect(post_save_cache, sender=TreatmentFileType)
-class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,
- BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
- SLUG = 'treatmentfile'
- SHOW_URL = 'show-treatmentfile'
- DELETE_URL = 'delete-treatmentfile'
- TABLE_COLS = ['type', 'year', 'index', 'internal_reference', 'name']
+class TreatmentFile(
+ DashboardFormItem,
+ ClosedItem,
+ DocumentItem,
+ BaseHistorizedItem,
+ OwnPerms,
+ ValueGetter,
+ ShortMenuItem,
+):
+ SLUG = "treatmentfile"
+ SHOW_URL = "show-treatmentfile"
+ DELETE_URL = "delete-treatmentfile"
+ TABLE_COLS = ["type", "year", "index", "internal_reference", "name"]
BASE_SEARCH_VECTORS = [
SearchVectorConfig("type__label"),
SearchVectorConfig("internal_reference"),
@@ -919,147 +1016,162 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,
SearchVectorConfig("year"),
SearchVectorConfig("index"),
]
- PARENT_SEARCH_VECTORS = ['in_charge', 'applicant', 'applicant_organisation']
+ PARENT_SEARCH_VECTORS = ["in_charge", "applicant", "applicant_organisation"]
EXTRA_REQUEST_KEYS = {
"in_charge__pk": "in_charge__pk", # used by dynamic_table_documents
"applicant__pk": "applicant__pk", # used by dynamic_table_documents
}
REVERSED_BOOL_FIELDS = [
- 'documents__image__isnull',
- 'documents__associated_file__isnull',
- 'documents__associated_url__isnull',
+ "documents__image__isnull",
+ "documents__associated_file__isnull",
+ "documents__associated_url__isnull",
]
# alternative names of fields for searches
ALT_NAMES = {
- 'name': SearchAltName(
- pgettext_lazy("key for text search", "name"),
- 'name__iexact'
+ "name": SearchAltName(
+ pgettext_lazy("key for text search", "name"), "name__iexact"
),
- 'internal_reference': SearchAltName(
+ "internal_reference": SearchAltName(
pgettext_lazy("key for text search", "reference"),
- 'internal_reference__iexact'
- ),
- 'year': SearchAltName(
- pgettext_lazy("key for text search", "year"),
- 'year'
- ),
- 'index': SearchAltName(
- pgettext_lazy("key for text search", "index"),
- 'index'
+ "internal_reference__iexact",
),
- 'type': SearchAltName(
- pgettext_lazy("key for text search", "type"),
- 'type__label__iexact'
+ "year": SearchAltName(pgettext_lazy("key for text search", "year"), "year"),
+ "index": SearchAltName(pgettext_lazy("key for text search", "index"), "index"),
+ "type": SearchAltName(
+ pgettext_lazy("key for text search", "type"), "type__label__iexact"
),
- 'in_charge': SearchAltName(
+ "in_charge": SearchAltName(
pgettext_lazy("key for text search", "in-charge"),
- 'in_charge__cached_label__iexact'
+ "in_charge__cached_label__iexact",
),
- 'applicant': SearchAltName(
+ "applicant": SearchAltName(
pgettext_lazy("key for text search", "applicant"),
- 'applicant__cached_label__iexact'
+ "applicant__cached_label__iexact",
),
- 'applicant_organisation': SearchAltName(
+ "applicant_organisation": SearchAltName(
pgettext_lazy("key for text search", "applicant-organisation"),
- 'applicant_organisation__cached_label__iexact'
+ "applicant_organisation__cached_label__iexact",
),
- 'exhibition_start_before': SearchAltName(
+ "exhibition_start_before": SearchAltName(
pgettext_lazy("key for text search", "exhibition-start-before"),
- 'exhibition_start_date__lte'
+ "exhibition_start_date__lte",
),
- 'exhibition_start_after': SearchAltName(
+ "exhibition_start_after": SearchAltName(
pgettext_lazy("key for text search", "exhibition-start-after"),
- 'exhibition_start_date__gte'
+ "exhibition_start_date__gte",
),
- 'exhibition_end_before': SearchAltName(
+ "exhibition_end_before": SearchAltName(
pgettext_lazy("key for text search", "exhibition-end-before"),
- 'exhibition_end_date__lte'
+ "exhibition_end_date__lte",
),
- 'exhibition_end_after': SearchAltName(
+ "exhibition_end_after": SearchAltName(
pgettext_lazy("key for text search", "exhibition-end-after"),
- 'exhibition_end_date__gte'
+ "exhibition_end_date__gte",
),
}
ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)
ALT_NAMES.update(DocumentItem.ALT_NAMES)
- DATED_FIELDS = ['exhibition_start_date__lte',
- 'exhibition_start_date__gte',
- 'exhibition_end_date__lte',
- 'exhibition_end_date__gte']
+ DATED_FIELDS = [
+ "exhibition_start_date__lte",
+ "exhibition_start_date__gte",
+ "exhibition_end_date__lte",
+ "exhibition_end_date__gte",
+ ]
# fields
year = models.IntegerField(_("Year"), default=get_current_year)
index = models.IntegerField(_("Index"), default=1)
- internal_reference = models.CharField(_("Internal reference"), blank=True,
- null=True, max_length=200)
- external_id = models.CharField(_("External ID"), blank=True, null=True,
- max_length=200)
+ internal_reference = models.CharField(
+ _("Internal reference"), blank=True, null=True, max_length=200
+ )
+ external_id = models.CharField(
+ _("External ID"), blank=True, null=True, max_length=200
+ )
name = models.TextField(_("Name"), blank=True, default="")
- type = models.ForeignKey(TreatmentFileType,
- verbose_name=_("Treatment request type"))
+ type = models.ForeignKey(
+ TreatmentFileType, verbose_name=_("Treatment request type")
+ )
in_charge = models.ForeignKey(
- Person, related_name='treatmentfile_responsability',
- verbose_name=_("Person in charge"), on_delete=models.SET_NULL,
- blank=True, null=True)
+ Person,
+ related_name="treatmentfile_responsability",
+ verbose_name=_("Person in charge"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
applicant = models.ForeignKey(
- Person, related_name='treatmentfile_applicant',
- verbose_name=_("Applicant"), on_delete=models.SET_NULL,
- blank=True, null=True)
+ Person,
+ related_name="treatmentfile_applicant",
+ verbose_name=_("Applicant"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
applicant_organisation = models.ForeignKey(
- Organization, related_name='treatmentfile_applicant',
- verbose_name=_("Applicant organisation"), on_delete=models.SET_NULL,
- blank=True, null=True)
+ Organization,
+ related_name="treatmentfile_applicant",
+ verbose_name=_("Applicant organisation"),
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ )
end_date = models.DateField(_("Closing date"), null=True, blank=True)
creation_date = models.DateField(
- _("Creation date"), default=datetime.date.today, blank=True,
- null=True)
- reception_date = models.DateField(_('Reception date'), blank=True,
- null=True)
+ _("Creation date"), default=datetime.date.today, blank=True, null=True
+ )
+ reception_date = models.DateField(_("Reception date"), blank=True, null=True)
# exhibition
- exhibition_name = models.TextField(_("Exhibition name"), blank=True,
- default="")
- exhibition_start_date = models.DateField(_("Exhibition start date"),
- blank=True, null=True)
- exhibition_end_date = models.DateField(_("Exhibition end date"),
- blank=True, null=True)
+ exhibition_name = models.TextField(_("Exhibition name"), blank=True, default="")
+ exhibition_start_date = models.DateField(
+ _("Exhibition start date"), blank=True, null=True
+ )
+ exhibition_end_date = models.DateField(
+ _("Exhibition end date"), blank=True, null=True
+ )
comment = models.TextField(_("Comment"), blank=True, default="")
documents = models.ManyToManyField(
- Document, related_name='treatment_files', verbose_name=_("Documents"),
- blank=True)
+ Document,
+ related_name="treatment_files",
+ verbose_name=_("Documents"),
+ blank=True,
+ )
main_image = models.ForeignKey(
- Document, related_name='main_image_treatment_files',
+ Document,
+ related_name="main_image_treatment_files",
on_delete=models.SET_NULL,
- verbose_name=_("Main image"), blank=True, null=True)
+ verbose_name=_("Main image"),
+ blank=True,
+ null=True,
+ )
associated_basket = models.ForeignKey(
- FindBasket, null=True, blank=True, on_delete=models.SET_NULL,
- related_name='treatment_files'
+ FindBasket,
+ null=True,
+ blank=True,
+ on_delete=models.SET_NULL,
+ related_name="treatment_files",
+ )
+ cached_label = models.TextField(
+ _("Cached name"), blank=True, default="", db_index=True
)
- cached_label = models.TextField(_("Cached name"), blank=True, default="",
- db_index=True)
history = HistoricalRecords()
class Meta:
verbose_name = _("Treatment request")
verbose_name_plural = _("Treatment requests")
- unique_together = ('year', 'index')
+ unique_together = ("year", "index")
permissions = (
- ("view_treatmentfile",
- "Can view all Treatment requests"),
- ("view_own_treatmentfile",
- "Can view own Treatment request"),
- ("add_own_treatmentfile",
- "Can add own Treatment request"),
- ("change_own_treatmentfile",
- "Can change own Treatment request"),
- ("delete_own_treatmentfile",
- "Can delete own Treatment request"),
+ ("view_treatmentfile", "Can view all Treatment requests"),
+ ("view_own_treatmentfile", "Can view own Treatment request"),
+ ("add_own_treatmentfile", "Can add own Treatment request"),
+ ("change_own_treatmentfile", "Can change own Treatment request"),
+ ("delete_own_treatmentfile", "Can delete own Treatment request"),
)
- ordering = ('cached_label',)
+ ordering = ("cached_label",)
indexes = [
- GinIndex(fields=['data']),
+ GinIndex(fields=["data"]),
]
def __str__(self):
@@ -1071,57 +1183,76 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,
@classmethod
def get_query_owns(cls, ishtaruser):
- return (Q(history_creator=ishtaruser.user_ptr) |
- Q(in_charge__ishtaruser=ishtaruser)) \
- & Q(end_date__isnull=True)
+ return (
+ Q(history_creator=ishtaruser.user_ptr) | Q(in_charge__ishtaruser=ishtaruser)
+ ) & Q(end_date__isnull=True)
@property
def associated_filename(self):
return "-".join(
str(slugify(getattr(self, attr)))
- for attr in ('year', 'index', 'internal_reference', 'name')
+ for attr in ("year", "index", "internal_reference", "name")
if getattr(self, attr)
)
def get_extra_actions(self, request):
# url, base_text, icon, extra_text, extra css class, is a quick action
actions = super(TreatmentFile, self).get_extra_actions(request)
- if self.can_do(request, 'add_administrativeact'):
+ if self.can_do(request, "add_administrativeact"):
actions += [
- (reverse('treatmentfile-add-adminact', args=[self.pk]),
- _("Add associated administrative act"), "fa fa-plus",
- _("admin. act"), "", False),
+ (
+ reverse("treatmentfile-add-adminact", args=[self.pk]),
+ _("Add associated administrative act"),
+ "fa fa-plus",
+ _("admin. act"),
+ "",
+ False,
+ ),
]
if not self.associated_basket:
return actions
- if self.type.treatment_type and self.treatments.filter(
- treatment_types__pk=self.type.treatment_type.pk).count():
+ if (
+ self.type.treatment_type
+ and self.treatments.filter(
+ treatment_types__pk=self.type.treatment_type.pk
+ ).count()
+ ):
# a treatment of this type already exists
return actions
- can_edit_find = self.can_do(request, 'change_find')
+ can_edit_find = self.can_do(request, "change_find")
if can_edit_find:
actions += [
- (reverse('treatmentfile-add-treatment', args=[self.pk]),
- _("Add associated treatment"), "fa fa-flask", "", "",
- False),
+ (
+ reverse("treatmentfile-add-treatment", args=[self.pk]),
+ _("Add associated treatment"),
+ "fa fa-flask",
+ "",
+ "",
+ False,
+ ),
]
return actions
@classmethod
- def get_owns(cls, user, menu_filtr=None, limit=None, values=None,
- get_short_menu_class=None):
+ def get_owns(
+ cls, user, menu_filtr=None, limit=None, values=None, get_short_menu_class=None
+ ):
owns = super(TreatmentFile, cls).get_owns(
- user, limit=limit, values=values,
- get_short_menu_class=get_short_menu_class)
+ user, limit=limit, values=values, get_short_menu_class=get_short_menu_class
+ )
return cls._return_get_owns(owns, values, get_short_menu_class)
def _generate_cached_label(self):
- items = [str(getattr(self, k))
- for k in ['year', 'index', 'internal_reference', 'name'] if
- getattr(self, k)]
+ items = [
+ str(getattr(self, k))
+ for k in ["year", "index", "internal_reference", "name"]
+ if getattr(self, k)
+ ]
return settings.JOINT.join(items)
- def _get_base_image_path(self,):
+ def _get_base_image_path(
+ self,
+ ):
return "{}/{}/{}".format(self.SLUG, self.year, self.index)
def pre_save(self):
@@ -1131,14 +1262,13 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,
self.index = 1
q = TreatmentFile.objects.filter(year=self.year)
if q.count():
- self.index = q.all().aggregate(Max('index'))['index__max'] + 1
+ self.index = q.all().aggregate(Max("index"))["index__max"] + 1
def save(self, *args, **kwargs):
self.pre_save()
super(TreatmentFile, self).save(*args, **kwargs)
-m2m_changed.connect(document_attached_changed,
- sender=TreatmentFile.documents.through)
+m2m_changed.connect(document_attached_changed, sender=TreatmentFile.documents.through)
post_save.connect(cached_label_changed, sender=TreatmentFile)
diff --git a/archaeological_finds/serializers.py b/archaeological_finds/serializers.py
index e130a0ef8..54e9108b3 100644
--- a/archaeological_finds/serializers.py
+++ b/archaeological_finds/serializers.py
@@ -1,13 +1,10 @@
from django.db.models import Q
-from ishtar_common.serializers_utils import generic_get_results, \
- archive_serialization
+from ishtar_common.serializers_utils import generic_get_results, archive_serialization
from archaeological_finds import models
-FIND_MODEL_LIST = [
- models.BaseFind, models.Find
-]
+FIND_MODEL_LIST = [models.BaseFind, models.Find]
# TODO: associated documents, property, findbasket, treatments
@@ -17,12 +14,10 @@ def generate_warehouse_queryset(ids):
for container_key in ("container", "container_ref"):
for warehouse_key in ("location", "responsible"):
- q_f = Q(**
- {"{}__{}__id__in".format(
- container_key, warehouse_key): ids})
- q_bf = Q(**
- {"find__{}__{}__id__in".format(
- container_key, warehouse_key): ids})
+ q_f = Q(**{"{}__{}__id__in".format(container_key, warehouse_key): ids})
+ q_bf = Q(
+ **{"find__{}__{}__id__in".format(container_key, warehouse_key): ids}
+ )
if not q_find:
q_find = q_f
q_basefind = q_bf
@@ -31,30 +26,36 @@ def generate_warehouse_queryset(ids):
q_basefind |= q_bf
result_queryset = {
- models.BaseFind.__name__:
- models.BaseFind.objects.filter(q_basefind),
- models.Find.__name__:
- models.Find.objects.filter(q_find),
+ models.BaseFind.__name__: models.BaseFind.objects.filter(q_basefind),
+ models.Find.__name__: models.Find.objects.filter(q_find),
}
return result_queryset
-def find_serialization(archive=False, return_empty_types=False,
- archive_name=None, operation_queryset=None,
- site_queryset=None, cr_queryset=None,
- find_queryset=None, warehouse_queryset=None,
- get_queryset=False, no_geo=True,
- put_locks=False, lock_user=None):
+def find_serialization(
+ archive=False,
+ return_empty_types=False,
+ archive_name=None,
+ operation_queryset=None,
+ site_queryset=None,
+ cr_queryset=None,
+ find_queryset=None,
+ warehouse_queryset=None,
+ get_queryset=False,
+ no_geo=True,
+ put_locks=False,
+ lock_user=None,
+):
result_queryset = {}
if operation_queryset:
operation_ids = operation_queryset.values_list("id", flat=True)
result_queryset = {
- models.BaseFind.__name__:
- models.BaseFind.objects.filter(
- context_record__operation_id__in=operation_ids),
- models.Find.__name__:
- models.Find.objects.filter(
- base_finds__context_record__operation_id__in=operation_ids),
+ models.BaseFind.__name__: models.BaseFind.objects.filter(
+ context_record__operation_id__in=operation_ids
+ ),
+ models.Find.__name__: models.Find.objects.filter(
+ base_finds__context_record__operation_id__in=operation_ids
+ ),
}
elif site_queryset:
sites = site_queryset.values_list("id", flat=True)
@@ -62,28 +63,27 @@ def find_serialization(archive=False, return_empty_types=False,
"base_finds__context_record__operation__archaeological_sites__id__in": sites
}
result_queryset = {
- models.BaseFind.__name__:
- models.BaseFind.objects.filter(
- context_record__operation__archaeological_sites__id__in=sites
- ),
- models.Find.__name__:
- models.Find.objects.filter(**f_q),
+ models.BaseFind.__name__: models.BaseFind.objects.filter(
+ context_record__operation__archaeological_sites__id__in=sites
+ ),
+ models.Find.__name__: models.Find.objects.filter(**f_q),
}
elif cr_queryset:
cr_ids = cr_queryset.values_list("id", flat=True)
result_queryset = {
- models.BaseFind.__name__:
- models.BaseFind.objects.filter(
- context_record__in=cr_ids),
- models.Find.__name__:
- models.Find.objects.filter(
- base_finds__context_record__in=cr_ids),
+ models.BaseFind.__name__: models.BaseFind.objects.filter(
+ context_record__in=cr_ids
+ ),
+ models.Find.__name__: models.Find.objects.filter(
+ base_finds__context_record__in=cr_ids
+ ),
}
elif find_queryset:
find_ids = find_queryset.values_list("id", flat=True)
result_queryset = {
models.BaseFind.__name__: models.BaseFind.objects.filter(
- find__id__in=find_ids),
+ find__id__in=find_ids
+ ),
models.Find.__name__: find_queryset,
}
elif warehouse_queryset:
@@ -93,8 +93,9 @@ def find_serialization(archive=False, return_empty_types=False,
if get_queryset:
return result_queryset
- result = generic_get_results(FIND_MODEL_LIST, "finds",
- result_queryset=result_queryset, no_geo=no_geo)
+ result = generic_get_results(
+ FIND_MODEL_LIST, "finds", result_queryset=result_queryset, no_geo=no_geo
+ )
if put_locks:
for model in FIND_MODEL_LIST:
if not hasattr(model, "locked"):
@@ -105,7 +106,10 @@ def find_serialization(archive=False, return_empty_types=False,
q.update(locked=True, lock_user=lock_user)
full_archive = archive_serialization(
- result, archive_dir="operations", archive=archive,
- return_empty_types=return_empty_types, archive_name=archive_name,
+ result,
+ archive_dir="operations",
+ archive=archive,
+ return_empty_types=return_empty_types,
+ archive_name=archive_name,
)
return full_archive
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 61caca858..bb249e2ea 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -35,27 +35,63 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.urlresolvers import reverse
from django.test import tag
from django.test.client import Client
-from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
- FormaterType, ImportTarget, IshtarSiteProfile, ProfileType, ImporterModel, \
- DocumentTemplate
+from ishtar_common.models import (
+ ImporterType,
+ IshtarUser,
+ ImporterColumn,
+ FormaterType,
+ ImportTarget,
+ IshtarSiteProfile,
+ ProfileType,
+ ImporterModel,
+ DocumentTemplate,
+)
from django.utils.text import slugify
from django.utils.translation import pgettext_lazy, gettext_lazy as _
-from ishtar_common.models import Person, get_current_profile, UserProfile, \
- Town, Area, Document, SpatialReferenceSystem
-from archaeological_context_records.models import Period, Dating, \
- ContextRecord, DatingType, DatingQuality
+from ishtar_common.models import (
+ Person,
+ get_current_profile,
+ UserProfile,
+ Town,
+ Area,
+ Document,
+ SpatialReferenceSystem,
+)
+from archaeological_context_records.models import (
+ Period,
+ Dating,
+ ContextRecord,
+ DatingType,
+ DatingQuality,
+)
from archaeological_finds import models, views
-from archaeological_warehouse.models import Warehouse, WarehouseType, \
- ContainerType, Container, WarehouseDivisionLink
+from archaeological_warehouse.models import (
+ Warehouse,
+ WarehouseType,
+ ContainerType,
+ Container,
+ WarehouseDivisionLink,
+)
from archaeological_operations.models import Operation, OperationType
from ishtar_common import forms_common
-from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
- TestCase, create_user, create_superuser, AutocompleteTestBase, AcItem, \
- FIND_FIXTURES, FIND_TOWNS_FIXTURES, WAREHOUSE_FIXTURES, \
- COMMON_FIXTURES, GenericSerializationTest, SearchText
+from ishtar_common.tests import (
+ WizardTest,
+ WizardTestFormData as FormData,
+ TestCase,
+ create_user,
+ create_superuser,
+ AutocompleteTestBase,
+ AcItem,
+ FIND_FIXTURES,
+ FIND_TOWNS_FIXTURES,
+ WAREHOUSE_FIXTURES,
+ COMMON_FIXTURES,
+ GenericSerializationTest,
+ SearchText,
+)
from archaeological_operations.tests import ImportTest, create_operation
from archaeological_context_records.tests import ContextRecordInit
@@ -72,22 +108,25 @@ class FindInit(ContextRecordInit):
data_base = {}
if not data:
data = {}
- if not getattr(self, 'finds', None):
+ if not getattr(self, "finds", None):
self.finds = []
- if not getattr(self, 'base_finds', None):
+ if not getattr(self, "base_finds", None):
self.base_finds = []
- default = {'label': "Base find"}
+ default = {"label": "Base find"}
if user:
- data_base['history_modifier'] = user
- elif not data_base.get('history_modifier') or not data_base[
- 'history_modifier'].pk:
+ data_base["history_modifier"] = user
+ elif (
+ not data_base.get("history_modifier")
+ or not data_base["history_modifier"].pk
+ ):
user = self.get_default_user()
user.save()
- data_base['history_modifier'] = user
- if force or not data_base.get('context_record'):
- data_base['context_record'] = self.get_default_context_record(
- force=force, user=user)
+ data_base["history_modifier"] = user
+ if force or not data_base.get("context_record"):
+ data_base["context_record"] = self.get_default_context_record(
+ force=force, user=user
+ )
default.update(data_base)
base_find = models.BaseFind.objects.create(**default)
self.base_finds.append(base_find)
@@ -106,14 +145,14 @@ class FindInit(ContextRecordInit):
def tearDown(self):
super(FindInit, self).tearDown()
- if hasattr(self, 'finds'):
+ if hasattr(self, "finds"):
for f in self.finds:
try:
f.delete()
except:
pass
self.finds = []
- if hasattr(self, 'base_finds'):
+ if hasattr(self, "base_finds"):
for f in self.base_finds:
try:
f.delete()
@@ -128,12 +167,8 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase):
def setUp(self):
ope1 = self.create_operation()[0]
ope2 = self.create_operation()[1]
- cr = self.create_context_record(
- data={"label": "CR 1", "operation": ope1}
- )[0]
- cr2 = self.create_context_record(
- data={"label": "CR 2", "operation": ope2}
- )[1]
+ cr = self.create_context_record(data={"label": "CR 1", "operation": ope1})[0]
+ cr2 = self.create_context_record(data={"label": "CR 2", "operation": ope2})[1]
self.create_finds(data_base={"context_record": cr})[0]
self.create_finds(data_base={"context_record": cr2})[1]
# basket = models.FindBasket.objects.create(label="Hophop")
@@ -142,164 +177,145 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase):
def test_serialization(self):
res = self.generic_serialization_test(serializers.find_serialization)
- find_json = json.loads(
- res[('finds', 'archaeological_finds__Find')]
- )
+ find_json = json.loads(res[("finds", "archaeological_finds__Find")])
self.assertEqual(len(find_json), 2)
- bfind_json = json.loads(
- res[('finds', 'archaeological_finds__BaseFind')]
- )
+ bfind_json = json.loads(res[("finds", "archaeological_finds__BaseFind")])
self.assertEqual(len(bfind_json), 2)
result_queryset = Operation.objects.filter(uuid=self.operations[0].uuid)
res = self.generic_serialization_test(
- serializers.find_serialization, no_test=True,
- kwargs={"operation_queryset": result_queryset}
- )
- find_json = json.loads(
- res[('finds', 'archaeological_finds__Find')]
+ serializers.find_serialization,
+ no_test=True,
+ kwargs={"operation_queryset": result_queryset},
)
+ find_json = json.loads(res[("finds", "archaeological_finds__Find")])
self.assertEqual(len(find_json), 1)
- bfind_json = json.loads(
- res[('finds', 'archaeological_finds__BaseFind')]
- )
+ bfind_json = json.loads(res[("finds", "archaeological_finds__BaseFind")])
self.assertEqual(len(bfind_json), 1)
result_queryset = ContextRecord.objects.filter(
- uuid=self.context_records[0].uuid)
- res = self.generic_serialization_test(
- serializers.find_serialization, no_test=True,
- kwargs={"cr_queryset": result_queryset}
+ uuid=self.context_records[0].uuid
)
- find_json = json.loads(
- res[('finds', 'archaeological_finds__Find')]
+ res = self.generic_serialization_test(
+ serializers.find_serialization,
+ no_test=True,
+ kwargs={"cr_queryset": result_queryset},
)
+ find_json = json.loads(res[("finds", "archaeological_finds__Find")])
self.assertEqual(len(find_json), 1)
- bfind_json = json.loads(
- res[('finds', 'archaeological_finds__BaseFind')]
- )
+ bfind_json = json.loads(res[("finds", "archaeological_finds__BaseFind")])
self.assertEqual(len(bfind_json), 1)
- result_queryset = models.Find.objects.filter(
- uuid=self.finds[0].uuid)
+ result_queryset = models.Find.objects.filter(uuid=self.finds[0].uuid)
res = self.generic_serialization_test(
- serializers.find_serialization, no_test=True,
- kwargs={"find_queryset": result_queryset}
- )
- find_json = json.loads(
- res[('finds', 'archaeological_finds__Find')]
+ serializers.find_serialization,
+ no_test=True,
+ kwargs={"find_queryset": result_queryset},
)
+ find_json = json.loads(res[("finds", "archaeological_finds__Find")])
self.assertEqual(len(find_json), 1)
- bfind_json = json.loads(
- res[('finds', 'archaeological_finds__BaseFind')]
- )
+ bfind_json = json.loads(res[("finds", "archaeological_finds__BaseFind")])
self.assertEqual(len(bfind_json), 1)
def test_ope_serialization_with_find_filter(self):
res = self.generic_serialization_test(
- operation_serialization, no_test=True,
+ operation_serialization,
+ no_test=True,
)
ope_json = json.loads(
- res[('operations', 'archaeological_operations__Operation')]
+ res[("operations", "archaeological_operations__Operation")]
)
self.assertEqual(len(ope_json), 2)
- result_queryset = models.Find.objects.filter(
- uuid=self.finds[0].uuid)
+ result_queryset = models.Find.objects.filter(uuid=self.finds[0].uuid)
res = self.generic_serialization_test(
- operation_serialization, no_test=True,
- kwargs={"find_queryset": result_queryset}
+ operation_serialization,
+ no_test=True,
+ kwargs={"find_queryset": result_queryset},
)
ope_json = json.loads(
- res[('operations', 'archaeological_operations__Operation')]
+ res[("operations", "archaeological_operations__Operation")]
)
self.assertEqual(len(ope_json), 1)
def test_cr_serialization_with_find_filter(self):
res = self.generic_serialization_test(
- cr_serialization, no_test=True,
+ cr_serialization,
+ no_test=True,
)
cr_json = json.loads(
- res[('context_records',
- 'archaeological_context_records__ContextRecord')]
+ res[("context_records", "archaeological_context_records__ContextRecord")]
)
self.assertEqual(len(cr_json), 2)
- result_queryset = models.Find.objects.filter(
- uuid=self.finds[0].uuid)
+ result_queryset = models.Find.objects.filter(uuid=self.finds[0].uuid)
res = self.generic_serialization_test(
- cr_serialization, no_test=True,
- kwargs={"find_queryset": result_queryset}
+ cr_serialization, no_test=True, kwargs={"find_queryset": result_queryset}
)
cr_json = json.loads(
- res[('context_records',
- 'archaeological_context_records__ContextRecord')]
+ res[("context_records", "archaeological_context_records__ContextRecord")]
)
self.assertEqual(len(cr_json), 1)
def test_restore(self):
current_number, zip_filename = self.generic_restore_test_genzip(
- serializers.FIND_MODEL_LIST,
- serializers.find_serialization)
- self.generic_restore_test(zip_filename, current_number,
- serializers.FIND_MODEL_LIST)
+ serializers.FIND_MODEL_LIST, serializers.find_serialization
+ )
+ self.generic_restore_test(
+ zip_filename, current_number, serializers.FIND_MODEL_LIST
+ )
class FindWizardCreationTest(WizardTest, FindInit, TestCase):
fixtures = WAREHOUSE_FIXTURES
- url_name = 'find_creation'
- wizard_name = 'find_wizard'
+ url_name = "find_creation"
+ wizard_name = "find_wizard"
steps = views.find_creation_steps
- redirect_url = "/find_modification/selec-find_modification?open_item="\
- "{last_id}"
+ redirect_url = "/find_modification/selec-find_modification?open_item=" "{last_id}"
model = models.Find
form_datas = [
FormData(
- 'Find creation',
+ "Find creation",
form_datas={
- 'selecrecord-find_creation': {'pk': 1},
- 'find-find_creation': {
- 'label': 'hop',
- 'checked': 'NC',
- 'check_date': '2016-01-01'
+ "selecrecord-find_creation": {"pk": 1},
+ "find-find_creation": {
+ "label": "hop",
+ "checked": "NC",
+ "check_date": "2016-01-01",
},
- 'dating-find_creation': [
+ "dating-find_creation": [
{
- 'period': None,
- 'start_date': '0',
- 'end_date': '200',
+ "period": None,
+ "start_date": "0",
+ "end_date": "200",
},
{
- 'period': None,
- 'start_date': '0',
- 'end_date': '200',
- }
- ]
+ "period": None,
+ "start_date": "0",
+ "end_date": "200",
+ },
+ ],
},
- ignored=['preservation-find_creation']
+ ignored=["preservation-find_creation"],
)
]
def pre_wizard(self):
cr = self.create_context_record(
- data={'parcel': self.create_parcel()[-1]}, force=True)[-1]
+ data={"parcel": self.create_parcel()[-1]}, force=True
+ )[-1]
- self.form_datas[0].form_datas['selecrecord-find_creation']['pk'] = \
- cr.pk
+ self.form_datas[0].form_datas["selecrecord-find_creation"]["pk"] = cr.pk
period = Period.objects.all()[0].pk
- self.form_datas[0].form_datas['dating-find_creation'][0]['period'] = \
- period
- self.form_datas[0].form_datas['dating-find_creation'][1]['period'] = \
- period
+ self.form_datas[0].form_datas["dating-find_creation"][0]["period"] = period
+ self.form_datas[0].form_datas["dating-find_creation"][1]["period"] = period
self.find_number = models.Find.objects.count()
self.basefind_number = models.BaseFind.objects.count()
super(FindWizardCreationTest, self).pre_wizard()
def post_wizard(self):
- self.assertEqual(models.BaseFind.objects.count(),
- self.basefind_number + 1)
- self.assertEqual(models.Find.objects.count(),
- self.find_number + 1)
+ self.assertEqual(models.BaseFind.objects.count(), self.basefind_number + 1)
+ self.assertEqual(models.Find.objects.count(), self.find_number + 1)
# identical datings, only one should be finaly save
f = models.Find.objects.order_by("-pk").all()[0]
self.assertEqual(f.datings.count(), 1)
@@ -307,42 +323,44 @@ class FindWizardCreationTest(WizardTest, FindInit, TestCase):
class FindWizardModificationTest(WizardTest, FindInit, TestCase):
fixtures = WAREHOUSE_FIXTURES
- url_name = 'find_modification'
- wizard_name = url_name + '_wizard'
+ url_name = "find_modification"
+ wizard_name = url_name + "_wizard"
steps = views.find_modification_steps
- redirect_url = "/find_modification/selec-find_modification?open_item=" \
- "{last_id}"
+ redirect_url = "/find_modification/selec-find_modification?open_item=" "{last_id}"
model = models.Find
form_datas = [
FormData(
- 'Find modification',
+ "Find modification",
form_datas={
- 'selec-find_modification': {'pk': ''},
- 'selecrecord-find_modification': {
+ "selec-find_modification": {"pk": ""},
+ "selecrecord-find_modification": {
"get_first_base_find__context_record": ""
},
- 'find-find_modification': {
- 'label': 'hop',
- 'checked': 'NC',
- 'check_date': '2016-01-01'
+ "find-find_modification": {
+ "label": "hop",
+ "checked": "NC",
+ "check_date": "2016-01-01",
},
- 'dating-find_modification': [
+ "dating-find_modification": [
{
- 'period': None,
- 'start_date': '',
- 'end_date': '',
+ "period": None,
+ "start_date": "",
+ "end_date": "",
},
- ]
+ ],
},
- ignored=['preservation-find_modification',
- 'selecw-find_modification',
- 'simplefind-find_modification']
+ ignored=[
+ "preservation-find_modification",
+ "selecw-find_modification",
+ "simplefind-find_modification",
+ ],
)
]
def pre_wizard(self):
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.warehouse = False
profile.save()
find, __ = self.get_default_find(force=True)
@@ -352,29 +370,28 @@ class FindWizardModificationTest(WizardTest, FindInit, TestCase):
find.save()
data = self.form_datas[0].form_datas
- data['selec-find_modification']['pk'] = find.pk
- data['selecrecord-find_modification'][
- 'get_first_base_find__context_record'] = \
- find.base_finds.all()[0].context_record.pk
+ data["selec-find_modification"]["pk"] = find.pk
+ data["selecrecord-find_modification"][
+ "get_first_base_find__context_record"
+ ] = find.base_finds.all()[0].context_record.pk
self.period = Period.objects.all()[0]
self.period2 = Period.objects.all()[1]
- find.datings.add(Dating.objects.create(
- period=self.period, start_date='0', end_date='200'))
+ find.datings.add(
+ Dating.objects.create(period=self.period, start_date="0", end_date="200")
+ )
find.datings.add(Dating.objects.create(period=self.period2))
- data['dating-find_modification'][0]['period'] = self.period.pk
+ data["dating-find_modification"][0]["period"] = self.period.pk
self.find_number = models.Find.objects.count()
self.basefind_number = models.BaseFind.objects.count()
super(FindWizardModificationTest, self).pre_wizard()
def post_wizard(self):
# no creation
- self.assertEqual(models.BaseFind.objects.count(),
- self.basefind_number)
- self.assertEqual(models.Find.objects.count(),
- self.find_number)
+ self.assertEqual(models.BaseFind.objects.count(), self.basefind_number)
+ self.assertEqual(models.Find.objects.count(), self.find_number)
f = models.Find.objects.get(pk=self.find.pk)
self.assertEqual(f.datings.count(), 1)
dating = f.datings.all()[0]
@@ -385,109 +402,109 @@ class FindWizardModificationTest(WizardTest, FindInit, TestCase):
class FindWizardDeletionWithWarehouseModTest(WizardTest, FindInit, TestCase):
fixtures = WAREHOUSE_FIXTURES
- url_name = 'find_deletion'
- wizard_name = 'find_deletion_wizard'
+ url_name = "find_deletion"
+ wizard_name = "find_deletion_wizard"
steps = views.find_deletion_steps
redirect_url = "/{}/selecw-{}".format(url_name, url_name)
form_datas = [
FormData(
- 'Find deletion',
+ "Find deletion",
form_datas={
- 'selecw': {},
+ "selecw": {},
},
- ignored=['selec-find_deletion']
+ ignored=["selec-find_deletion"],
)
]
def pre_wizard(self):
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.warehouse = True
profile.save()
find, bf = self.get_default_find(force=True)
- self.form_datas[0].set('selecw', 'pks', find.pk)
+ self.form_datas[0].set("selecw", "pks", find.pk)
self.find_number = models.Find.objects.count()
super(FindWizardDeletionWithWarehouseModTest, self).pre_wizard()
def post_wizard(self):
- self.assertEqual(models.Find.objects.count(),
- self.find_number - 1)
+ self.assertEqual(models.Find.objects.count(), self.find_number - 1)
class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
fixtures = WAREHOUSE_FIXTURES
- url_name = 'treatment_creation'
- wizard_name = 'treatment_wizard'
+ url_name = "treatment_creation"
+ wizard_name = "treatment_wizard"
steps = views.treatment_wizard_steps
- redirect_url = "/treatment_search/general-treatment_search?" \
- "open_item={last_id}"
+ redirect_url = "/treatment_search/general-treatment_search?" "open_item={last_id}"
model = models.Treatment
form_datas = [
FormData(
- 'Move treatment (planned)',
+ "Move treatment (planned)",
form_datas={
- 'file': {},
- 'basetreatment': {
- 'treatment_type': None,
- 'person': 1, # doer
- 'location': 1, # associated warehouse
- 'year': 2016,
- 'container': None,
+ "file": {},
+ "basetreatment": {
+ "treatment_type": None,
+ "person": 1, # doer
+ "location": 1, # associated warehouse
+ "year": 2016,
+ "container": None,
},
- 'selecfind': {
- 'pk': 1,
- 'resulting_pk': 1
- }
+ "selecfind": {"pk": 1, "resulting_pk": 1},
},
- ignored=('resultfind-treatment_creation',
- 'selecbasket-treatment_creation',
- 'resultfinds-treatment_creation')),
+ ignored=(
+ "resultfind-treatment_creation",
+ "selecbasket-treatment_creation",
+ "resultfinds-treatment_creation",
+ ),
+ ),
FormData(
- 'Move treatment (done)',
+ "Move treatment (done)",
form_datas={
- 'file': {},
- 'basetreatment': {
- 'treatment_type': None,
- 'person': 1, # doer
- 'location': 1, # associated warehouse
- 'year': 2016,
- 'container': None,
+ "file": {},
+ "basetreatment": {
+ "treatment_type": None,
+ "person": 1, # doer
+ "location": 1, # associated warehouse
+ "year": 2016,
+ "container": None,
},
- 'selecfind': {
- 'pk': 1,
- 'resulting_pk': 1
- }
+ "selecfind": {"pk": 1, "resulting_pk": 1},
},
- ignored=('resultfind-treatment_creation',
- 'selecbasket-treatment_creation',
- 'resultfinds-treatment_creation')),
+ ignored=(
+ "resultfind-treatment_creation",
+ "selecbasket-treatment_creation",
+ "resultfinds-treatment_creation",
+ ),
+ ),
FormData(
- 'Loan treatment (done)',
+ "Loan treatment (done)",
form_datas={
- 'file': {},
- 'basetreatment': {
- 'treatment_type': None,
- 'person': 1, # doer
- 'location': 1, # associated warehouse
- 'year': 2016,
- 'container': None,
+ "file": {},
+ "basetreatment": {
+ "treatment_type": None,
+ "person": 1, # doer
+ "location": 1, # associated warehouse
+ "year": 2016,
+ "container": None,
},
- 'selecfind': {
- 'pk': 1,
- 'resulting_pk': 1
- }
+ "selecfind": {"pk": 1, "resulting_pk": 1},
},
- ignored=('resultfind-treatment_creation',
- 'selecbasket-treatment_creation',
- 'resultfinds-treatment_creation')),
+ ignored=(
+ "resultfind-treatment_creation",
+ "selecbasket-treatment_creation",
+ "resultfinds-treatment_creation",
+ ),
+ ),
]
def pre_wizard(self):
q = Warehouse.objects.filter(pk=1)
if not q.count():
warehouse = Warehouse.objects.create(
- name="default", warehouse_type=WarehouseType.objects.all()[0])
+ name="default", warehouse_type=WarehouseType.objects.all()[0]
+ )
warehouse.id = 1
warehouse.save()
else:
@@ -501,19 +518,19 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
self.container_ref = Container.objects.create(
location=warehouse,
responsible=warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
self.container1 = Container.objects.create(
location=warehouse,
responsible=warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
self.container2 = Container.objects.create(
location=warehouse,
responsible=warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
self.find, base_find = self.get_default_find(force=True)
@@ -521,50 +538,44 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
self.find.container = self.container_ref
self.find.save()
for idx in (0, 1):
- self.form_datas[idx].form_datas['selecfind']["pk"] = self.find.pk
- self.form_datas[idx].form_datas['selecfind']["resulting_pk"] = \
- self.find.pk
- self.form_datas[idx].set('basetreatment', 'container',
- self.container1.pk)
+ self.form_datas[idx].form_datas["selecfind"]["pk"] = self.find.pk
+ self.form_datas[idx].form_datas["selecfind"]["resulting_pk"] = self.find.pk
+ self.form_datas[idx].set("basetreatment", "container", self.container1.pk)
self.find_2, base_find = self.get_default_find(force=True)
self.find_2.container_ref = self.container_ref
self.find_2.container = self.container_ref
self.find_2.save()
- self.form_datas[2].form_datas['selecfind']["pk"] = self.find_2.pk
- self.form_datas[2].form_datas['selecfind']["resulting_pk"] = \
- self.find_2.pk
- self.form_datas[2].set('basetreatment', 'container', self.container2.pk)
+ self.form_datas[2].form_datas["selecfind"]["pk"] = self.find_2.pk
+ self.form_datas[2].form_datas["selecfind"]["resulting_pk"] = self.find_2.pk
+ self.form_datas[2].set("basetreatment", "container", self.container2.pk)
- moving = models.TreatmentType.objects.get(txt_idx='moving')
+ moving = models.TreatmentType.objects.get(txt_idx="moving")
moving.change_reference_location = True
moving.change_current_location = True
moving.save()
- self.form_datas[0].set('basetreatment', 'treatment_type',
- moving.pk)
- self.form_datas[1].set('basetreatment', 'treatment_type',
- moving.pk)
- loan = models.TreatmentType.objects.get(txt_idx='loan')
+ self.form_datas[0].set("basetreatment", "treatment_type", moving.pk)
+ self.form_datas[1].set("basetreatment", "treatment_type", moving.pk)
+ loan = models.TreatmentType.objects.get(txt_idx="loan")
loan.change_reference_location = False
loan.change_current_location = True
loan.save()
- self.form_datas[2].set('basetreatment', 'treatment_type',
- loan.pk)
+ self.form_datas[2].set("basetreatment", "treatment_type", loan.pk)
planned, __ = models.TreatmentState.objects.get_or_create(
- txt_idx='planned', defaults={"executed": False, "label": "Planned"}
+ txt_idx="planned", defaults={"executed": False, "label": "Planned"}
)
planned.executed = False
planned.save()
- self.form_datas[0].set('basetreatment', 'treatment_state', planned.pk)
+ self.form_datas[0].set("basetreatment", "treatment_state", planned.pk)
completed, created = models.TreatmentState.objects.get_or_create(
- txt_idx='completed', defaults={"executed": True, "label": "Done"}
+ txt_idx="completed", defaults={"executed": True, "label": "Done"}
)
completed.executed = True
completed.save()
- self.form_datas[1].set('basetreatment', 'treatment_state', completed.pk)
- self.form_datas[2].set('basetreatment', 'treatment_state', completed.pk)
+ self.form_datas[1].set("basetreatment", "treatment_state", completed.pk)
+ self.form_datas[2].set("basetreatment", "treatment_state", completed.pk)
self.treatment_number = models.Treatment.objects.count()
@@ -572,8 +583,8 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
# treatment planned - no changes
find = models.Find.objects.get(pk=test_object.find.pk)
test_object.assertEqual(find.container, test_object.container_ref)
- test_object.assertEqual(find.container_ref,
- test_object.container_ref)
+ test_object.assertEqual(find.container_ref, test_object.container_ref)
+
self.form_datas[0].extra_tests = [post_first_wizard]
def post_second_wizard(test_object, final_step_response):
@@ -581,21 +592,21 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
find = models.Find.objects.get(pk=test_object.find.pk)
test_object.assertEqual(find.container, test_object.container1)
test_object.assertEqual(find.container_ref, test_object.container1)
+
self.form_datas[1].extra_tests = [post_second_wizard]
def post_third_wizard(test_object, final_step_response):
# loan done
find = models.Find.objects.get(pk=test_object.find_2.pk)
- test_object.assertEqual(find.container_ref,
- test_object.container_ref)
+ test_object.assertEqual(find.container_ref, test_object.container_ref)
test_object.assertEqual(find.container, test_object.container2)
+
self.form_datas[2].extra_tests = [post_third_wizard]
super(TreatmentWizardCreationTest, self).pre_wizard()
def post_wizard(self):
- self.assertEqual(models.Treatment.objects.count(),
- self.treatment_number + 3)
+ self.assertEqual(models.Treatment.objects.count(), self.treatment_number + 3)
self.find = models.Find.objects.get(pk=self.find.pk)
self.assertEqual(self.find.treatments.count(), 2)
self.find_2 = models.Find.objects.get(pk=self.find_2.pk)
@@ -608,8 +619,7 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
class ImportFindTest(ImportTest, FindInit, TestCase):
fixtures = FIND_TOWNS_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_finds/tests/import_loca_test.json',
+ settings.ROOT_PATH + "../archaeological_finds/tests/import_loca_test.json",
]
def setUp(self):
@@ -623,38 +633,42 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
old_nb_find = models.Find.objects.count()
MCC = ImporterType.objects.get(name="MCC - Mobilier")
- col = ImporterColumn.objects.create(col_number=25,
- importer_type_id=MCC.pk)
- formater = FormaterType.objects.filter(
- formater_type='FileFormater').all()[0]
- ImportTarget.objects.create(target='documents__image',
- formater_type_id=formater.pk,
- column_id=col.pk)
+ col = ImporterColumn.objects.create(col_number=25, importer_type_id=MCC.pk)
+ formater = FormaterType.objects.filter(formater_type="FileFormater").all()[0]
+ ImportTarget.objects.create(
+ target="documents__image", formater_type_id=formater.pk, column_id=col.pk
+ )
mcc_file = open(
- settings.ROOT_PATH +
- '../archaeological_finds/tests/MCC-finds-example.csv', 'rb')
+ settings.ROOT_PATH + "../archaeological_finds/tests/MCC-finds-example.csv",
+ "rb",
+ )
mcc_images = open(
- settings.ROOT_PATH +
- '../archaeological_finds/tests/images.zip', 'rb')
- file_dict = {'imported_file': SimpleUploadedFile(mcc_file.name,
- mcc_file.read()),
- 'imported_images': SimpleUploadedFile(mcc_images.name,
- mcc_images.read())}
- post_dict = {'importer_type': MCC.pk, 'skip_lines': 1,
- "encoding": 'utf-8', "name": 'init_find_import',
- "csv_sep": ","}
- form = forms_common.NewImportForm(data=post_dict, files=file_dict,
- user=self.user)
+ settings.ROOT_PATH + "../archaeological_finds/tests/images.zip", "rb"
+ )
+ file_dict = {
+ "imported_file": SimpleUploadedFile(mcc_file.name, mcc_file.read()),
+ "imported_images": SimpleUploadedFile(mcc_images.name, mcc_images.read()),
+ }
+ post_dict = {
+ "importer_type": MCC.pk,
+ "skip_lines": 1,
+ "encoding": "utf-8",
+ "name": "init_find_import",
+ "csv_sep": ",",
+ }
+ form = forms_common.NewImportForm(
+ data=post_dict, files=file_dict, user=self.user
+ )
form.is_valid()
self.assertTrue(form.is_valid())
impt = form.save(self.ishtar_user)
impt.initialize()
# doing manual connections
- ceram = models.MaterialType.objects.get(txt_idx='ceramic').pk
- glass = models.MaterialType.objects.get(txt_idx='glass').pk
- self.set_target_key('material_types', 'terre-cuite', ceram)
- self.set_target_key('material_types', 'verre', glass)
+ ceram = models.MaterialType.objects.get(txt_idx="ceramic").pk
+ glass = models.MaterialType.objects.get(txt_idx="glass").pk
+ self.set_target_key("material_types", "terre-cuite", ceram)
+ self.set_target_key("material_types", "verre", glass)
impt.importation()
# new finds has now been imported
current_nb = models.BaseFind.objects.count()
@@ -662,9 +676,11 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
current_nb = models.Find.objects.count()
self.assertEqual(current_nb, (old_nb_find + 4))
self.assertEqual(
- models.Find.objects.filter(material_types__pk=ceram).count(), 4)
+ models.Find.objects.filter(material_types__pk=ceram).count(), 4
+ )
self.assertEqual(
- models.Find.objects.filter(material_types__pk=glass).count(), 1)
+ models.Find.objects.filter(material_types__pk=glass).count(), 1
+ )
images = []
for find in models.Find.objects.all():
images += [1 for im in find.images.all() if im.image.name]
@@ -676,15 +692,19 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
bf = bfs[idx]
expected_index = 4 - idx
self.assertEqual(
- bf.index, expected_index,
+ bf.index,
+ expected_index,
"Bad index for imported base find: {} where {} is "
- "expected".format(bf.index, expected_index))
+ "expected".format(bf.index, expected_index),
+ )
f = bf.find.all()[0]
self.assertEqual(
- f.index, expected_index,
+ f.index,
+ expected_index,
"Bad index for imported find: {} where {} is expected".format(
f.index, expected_index
- ))
+ ),
+ )
def test_import_locations(self):
self.create_finds()
@@ -701,8 +721,7 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
warehouse, __ = Warehouse.objects.get_or_create(
external_id="warehouse-test",
- defaults={"name": "Warehouse test",
- "warehouse_type": wt}
+ defaults={"name": "Warehouse test", "warehouse_type": wt},
)
container_types = []
@@ -717,7 +736,7 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
WarehouseDivisionLink.objects.get_or_create(
warehouse=warehouse,
container_type=container_types[idx],
- order=(idx + 1) * 10
+ order=(idx + 1) * 10,
)
old_nb = models.BaseFind.objects.count()
@@ -730,29 +749,56 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
with open(imp_filename, "w") as impfile:
w = csv.writer(impfile)
- w.writerow(['External ID', "Warehouse", "Ref.",
- "Container type", "Localisation 1", "Localisation 2",
- "Localisation 3"])
+ w.writerow(
+ [
+ "External ID",
+ "Warehouse",
+ "Ref.",
+ "Container type",
+ "Localisation 1",
+ "Localisation 2",
+ "Localisation 3",
+ ]
+ )
for idx, ext_id in enumerate(external_ids):
if idx < 2:
- w.writerow([ext_id, "warehouse-test",
- "Réf. {}".format((idx + 1) * 10),
- container_types[-1].name,
- "A", "42", idx + 1])
+ w.writerow(
+ [
+ ext_id,
+ "warehouse-test",
+ "Réf. {}".format((idx + 1) * 10),
+ container_types[-1].name,
+ "A",
+ "42",
+ idx + 1,
+ ]
+ )
else:
- w.writerow([ext_id, "warehouse-test",
- "Réf. {}".format((idx + 1) * 10),
- container_types[-1].name,
- "A", 43])
+ w.writerow(
+ [
+ ext_id,
+ "warehouse-test",
+ "Réf. {}".format((idx + 1) * 10),
+ container_types[-1].name,
+ "A",
+ 43,
+ ]
+ )
imp_file = open(imp_filename, "rb")
- file_dict = {'imported_file': SimpleUploadedFile(imp_file.name,
- imp_file.read())}
- post_dict = {'importer_type': importer_type.pk, 'skip_lines': 1,
- "encoding": 'utf-8', "name": 'init_find_import',
- "csv_sep": ","}
- form = forms_common.NewImportForm(data=post_dict, files=file_dict,
- user=self.user)
+ file_dict = {
+ "imported_file": SimpleUploadedFile(imp_file.name, imp_file.read())
+ }
+ post_dict = {
+ "importer_type": importer_type.pk,
+ "skip_lines": 1,
+ "encoding": "utf-8",
+ "name": "init_find_import",
+ "csv_sep": ",",
+ }
+ form = forms_common.NewImportForm(
+ data=post_dict, files=file_dict, user=self.user
+ )
form.is_valid()
self.assertTrue(form.is_valid())
impt = form.save(self.ishtar_user)
@@ -807,12 +853,15 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
self.assertIn(box.parent_id, [s.pk for s in areas])
importer_type = ImporterType.objects.get(slug="importeur-test")
- cols = list(ImporterColumn.objects.filter(
- importer_type=importer_type,
- col_number__gte=5).values_list("id", flat=True))
+ cols = list(
+ ImporterColumn.objects.filter(
+ importer_type=importer_type, col_number__gte=5
+ ).values_list("id", flat=True)
+ )
for target in ImportTarget.objects.filter(column_id__in=cols):
- target.target = target.target.replace("set_localisation",
- "set_static_localisation")
+ target.target = target.target.replace(
+ "set_localisation", "set_static_localisation"
+ )
target.save()
# delete area 43 and all boxes
@@ -826,9 +875,9 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
self.assertEqual(len(impt.errors), 2)
for error in impt.errors:
self.assertEqual(
- error['error'],
- "The division Area 43 do not exist for the location Warehouse "
- "test.")
+ error["error"],
+ "The division Area 43 do not exist for the location Warehouse " "test.",
+ )
def tearDown(self):
self.tmpdir.cleanup()
@@ -840,10 +889,9 @@ class FindTest(FindInit, TestCase):
def setUp(self):
self.create_finds(force=True)
- self.password = 'mypassword'
- self.username = 'myuser'
- User.objects.create_superuser(self.username, 'myemail@test.com',
- self.password)
+ self.password = "mypassword"
+ self.username = "myuser"
+ User.objects.create_superuser(self.username, "myemail@test.com", self.password)
self.client = Client()
self.client.login(username=self.username, password=self.password)
@@ -853,21 +901,20 @@ class FindTest(FindInit, TestCase):
self.assertEqual(
find.external_id,
"{}-{}".format(
- find.get_first_base_find().context_record.external_id,
- find.label))
+ find.get_first_base_find().context_record.external_id, find.label
+ ),
+ )
self.assertEqual(
base_find.external_id,
- "{}-{}".format(
- base_find.context_record.external_id,
- base_find.label))
+ "{}-{}".format(base_find.context_record.external_id, base_find.label),
+ )
base_find.label = "New label"
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertEqual(
base_find.external_id,
- "{}-{}".format(
- base_find.context_record.external_id,
- "New label"))
+ "{}-{}".format(base_find.context_record.external_id, "New label"),
+ )
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
cr.label = "new-label-too"
cr.skip_history_when_saving = True
@@ -893,22 +940,21 @@ class FindTest(FindInit, TestCase):
# default: {get_first_base_find__context_record__external_id}-{label}
self.assertEqual(find.external_id, "PAT-12345-A1-new-label-too-hop")
profile = get_current_profile(force=True)
- profile.find_external_id = \
- "{get_first_base_find__context_record__external_id}-{label}-"\
- "{label}"
+ profile.find_external_id = (
+ "{get_first_base_find__context_record__external_id}-{label}-" "{label}"
+ )
profile.save()
find.save()
find = models.Find.objects.get(pk=find.pk)
- self.assertEqual(find.external_id,
- "PAT-12345-A1-new-label-too-hop-hop")
- profile.find_external_id = \
- "{get_first_base_find__context_record__external_id}-{label}-" \
+ self.assertEqual(find.external_id, "PAT-12345-A1-new-label-too-hop-hop")
+ profile.find_external_id = (
+ "{get_first_base_find__context_record__external_id}-{label}-"
"{label}||lower||deduplicate"
+ )
profile.save()
find.save()
find = models.Find.objects.get(pk=find.pk)
- self.assertEqual(find.external_id,
- "pat-12345-a1-new-label-too-hop")
+ self.assertEqual(find.external_id, "pat-12345-a1-new-label-too-hop")
def testIndex(self):
profile = get_current_profile()
@@ -918,26 +964,29 @@ class FindTest(FindInit, TestCase):
op1 = self.create_operation()[-1]
op2 = self.create_operation()[-1]
- op1_cr1 = self.create_context_record(data={'label': "CR1",
- 'operation': op1})[-1]
- op1_cr2 = self.create_context_record(data={'label': "CR2",
- 'operation': op1})[-1]
- op2_cr1 = self.create_context_record(data={'label': "CR3",
- 'operation': op2})[-1]
- self.create_finds(data_base={'context_record': op1_cr1})
+ op1_cr1 = self.create_context_record(data={"label": "CR1", "operation": op1})[
+ -1
+ ]
+ op1_cr2 = self.create_context_record(data={"label": "CR2", "operation": op1})[
+ -1
+ ]
+ op2_cr1 = self.create_context_record(data={"label": "CR3", "operation": op2})[
+ -1
+ ]
+ self.create_finds(data_base={"context_record": op1_cr1})
find_1 = self.finds[-1]
bf_1 = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_1.index, 1)
self.assertEqual(bf_1.index, 1)
# index is based on operations
- self.create_finds(data_base={'context_record': op1_cr2})
+ self.create_finds(data_base={"context_record": op1_cr2})
find_2 = self.finds[-1]
bf_2 = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_2.index, 2)
self.assertEqual(bf_2.index, 2)
- self.create_finds(data_base={'context_record': op2_cr1})
+ self.create_finds(data_base={"context_record": op2_cr1})
find_3 = self.finds[-1]
bf_3 = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_3.index, 1)
@@ -949,24 +998,26 @@ class FindTest(FindInit, TestCase):
profile = get_current_profile(force=True)
op3 = self.create_operation()[-1]
- op3_cr1 = self.create_context_record(data={'label': "CR1",
- 'operation': op3})[-1]
- op3_cr2 = self.create_context_record(data={'label': "CR2",
- 'operation': op3})[-1]
- self.create_finds(data_base={'context_record': op3_cr1})
+ op3_cr1 = self.create_context_record(data={"label": "CR1", "operation": op3})[
+ -1
+ ]
+ op3_cr2 = self.create_context_record(data={"label": "CR2", "operation": op3})[
+ -1
+ ]
+ self.create_finds(data_base={"context_record": op3_cr1})
find_1b = self.finds[-1]
bf_1b = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_1b.index, 1)
self.assertEqual(bf_1b.index, 1)
# index now based on context records
- self.create_finds(data_base={'context_record': op3_cr2})
+ self.create_finds(data_base={"context_record": op3_cr2})
find_2b = self.finds[-1]
bf_2b = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_2b.index, 1)
self.assertEqual(bf_2b.index, 1)
- self.create_finds(data_base={'context_record': op3_cr2})
+ self.create_finds(data_base={"context_record": op3_cr2})
find_3b = self.finds[-1]
bf_3b = models.BaseFind.objects.get(pk=self.base_finds[-1].pk)
self.assertEqual(find_3b.index, 2)
@@ -974,17 +1025,18 @@ class FindTest(FindInit, TestCase):
def test_show(self):
obj = self.finds[0]
- response = self.client.get(reverse('display-find', args=[obj.pk]))
+ response = self.client.get(reverse("display-find", args=[obj.pk]))
self.assertEqual(response.status_code, 200)
- self.assertIn('load_window("/show-find/{}/");'.format(obj.pk),
- response.content.decode())
+ self.assertIn(
+ 'load_window("/show-find/{}/");'.format(obj.pk), response.content.decode()
+ )
c = Client()
- response = c.get(reverse('show-find', kwargs={'pk': obj.pk}))
+ response = c.get(reverse("show-find", kwargs={"pk": obj.pk}))
# empty content when not allowed
self.assertRedirects(response, "/")
c.login(username=self.username, password=self.password)
- response = self.client.get(reverse('show-find', kwargs={'pk': obj.pk}))
+ response = self.client.get(reverse("show-find", kwargs={"pk": obj.pk}))
self.assertEqual(response.status_code, 200)
self.assertIn(b'class="card sheet"', response.content)
@@ -996,11 +1048,13 @@ class FindTest(FindInit, TestCase):
self.finds[0].delete()
# on delete the selected base find is not deleted if another find
# is related to it
- self.assertEqual(models.BaseFind.objects.filter(
- pk=self.base_finds[0].pk).count(), 1)
+ self.assertEqual(
+ models.BaseFind.objects.filter(pk=self.base_finds[0].pk).count(), 1
+ )
self.finds[1].delete()
- self.assertEqual(models.BaseFind.objects.filter(
- pk=self.base_finds[0].pk).count(), 0)
+ self.assertEqual(
+ models.BaseFind.objects.filter(pk=self.base_finds[0].pk).count(), 0
+ )
def test_get_material_types(self):
mat0 = models.MaterialType.objects.all()[0]
@@ -1014,71 +1068,68 @@ class FindTest(FindInit, TestCase):
find0.material_types.add(mat1)
self.assertEqual(
- find0.get_material_types(),
- ", ".join(sorted([mat0.label, mat1.label])))
+ find0.get_material_types(), ", ".join(sorted([mat0.label, mat1.label]))
+ )
self.assertEqual(
- find0.get_material_types_code(),
- "|".join(sorted([mat0.code, mat1.code])))
+ find0.get_material_types_code(), "|".join(sorted([mat0.code, mat1.code]))
+ )
class FindSearchTest(FindInit, TestCase, SearchText):
fixtures = WAREHOUSE_FIXTURES
model = models.Find
- SEARCH_URL = 'get-find'
+ SEARCH_URL = "get-find"
def setUp(self):
self.create_finds(force=True)
self.create_finds(force=True)
- self.username = 'myuser'
- self.password = 'mypassword'
- User.objects.create_superuser(self.username, 'myemail@test.com',
- self.password)
+ self.username = "myuser"
+ self.password = "mypassword"
+ User.objects.create_superuser(self.username, "myemail@test.com", self.password)
self.client = Client()
def test_material_type_hierarchic_search(self):
find = self.finds[0]
c = Client()
- metal = models.MaterialType.objects.get(txt_idx='metal')
- iron_metal = models.MaterialType.objects.get(txt_idx='iron_metal')
- not_iron_metal = models.MaterialType.objects.get(
- txt_idx='not_iron_metal')
+ metal = models.MaterialType.objects.get(txt_idx="metal")
+ iron_metal = models.MaterialType.objects.get(txt_idx="iron_metal")
+ not_iron_metal = models.MaterialType.objects.get(txt_idx="not_iron_metal")
find.material_types.add(iron_metal)
find = models.Find.objects.get(pk=find.pk)
find.save()
- search = {'material_types': iron_metal.pk}
+ search = {"material_types": iron_metal.pk}
# no result when no authentication
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertRedirects(response, "/")
c.login(username=self.username, password=self.password)
# one result for exact search
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
- self.assertEqual(res['recordsTotal'], 1)
- self.assertEqual(res["rows"][0]["cached_materials"],
- str(iron_metal))
+ self.assertEqual(res["recordsTotal"], 1)
+ self.assertEqual(res["rows"][0]["cached_materials"], str(iron_metal))
# no result for the brother
- search = {'material_types': not_iron_metal.pk}
- response = c.get(reverse('get-find'), search)
+ search = {"material_types": not_iron_metal.pk}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 0)
+ self.assertEqual(json.loads(content)["recordsTotal"], 0)
# one result for the father
- search = {'material_types': metal.pk}
- response = c.get(reverse('get-find'), search)
+ search = {"material_types": metal.pk}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
# test on text search
- material_key = str(pgettext_lazy("key for text search", 'material'))
+ material_key = str(pgettext_lazy("key for text search", "material"))
result = [
('{}="{}"'.format(material_key, str(iron_metal)), 1),
('{}="{}"'.format(material_key, str(not_iron_metal)), 0),
@@ -1093,67 +1144,67 @@ class FindSearchTest(FindInit, TestCase, SearchText):
# operation with no associated find
operation = create_operation(self.user, values={"year": 2017})
c.get(reverse("pin", args=["operation", operation.pk]))
- response = c.get(reverse('get-find'), {}) # empty search -> check pined
+ response = c.get(reverse("get-find"), {}) # empty search -> check pined
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 0)
+ self.assertEqual(json.loads(content)["recordsTotal"], 0)
# pinned operation with current find
find = self.finds[0]
- c.get(reverse(
- "pin",
- args=["operation",
- find.get_first_base_find().context_record.operation.pk]))
- response = c.get(reverse('get-find'), {}) # empty search -> check pined
+ c.get(
+ reverse(
+ "pin",
+ args=[
+ "operation",
+ find.get_first_base_find().context_record.operation.pk,
+ ],
+ )
+ )
+ response = c.get(reverse("get-find"), {}) # empty search -> check pined
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
def test_period_hierarchic_search(self):
find = self.finds[0]
c = Client()
- neo = Period.objects.get(txt_idx='neolithic')
- final_neo = Period.objects.get(txt_idx='final-neolithic')
- recent_neo = Period.objects.get(txt_idx='recent-neolithic')
- dating = Dating.objects.create(
- period=final_neo
- )
+ neo = Period.objects.get(txt_idx="neolithic")
+ final_neo = Period.objects.get(txt_idx="final-neolithic")
+ recent_neo = Period.objects.get(txt_idx="recent-neolithic")
+ dating = Dating.objects.create(period=final_neo)
find.datings.add(dating)
find = models.Find.objects.get(pk=find.pk)
find.save()
- search = {'datings__period': final_neo.pk}
+ search = {"datings__period": final_neo.pk}
# no result when no authentication
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertRedirects(response, "/")
# one result for exact search
c.login(username=self.username, password=self.password)
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
res = json.loads(response.content.decode())
- self.assertEqual(res['recordsTotal'], 1)
- self.assertEqual(res["rows"][0]["cached_periods"],
- str(final_neo))
+ self.assertEqual(res["recordsTotal"], 1)
+ self.assertEqual(res["rows"][0]["cached_periods"], str(final_neo))
# no result for the brother
- search = {'datings__period': recent_neo.pk}
- response = c.get(reverse('get-find'), search)
+ search = {"datings__period": recent_neo.pk}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
- self.assertEqual(
- json.loads(response.content.decode())['recordsTotal'], 0)
+ self.assertEqual(json.loads(response.content.decode())["recordsTotal"], 0)
# one result for the father
- search = {'datings__period': neo.pk}
- response = c.get(reverse('get-find'), search)
+ search = {"datings__period": neo.pk}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
- self.assertEqual(
- json.loads(response.content.decode())['recordsTotal'], 1)
+ self.assertEqual(json.loads(response.content.decode())["recordsTotal"], 1)
# test on text search
- period_key = str(pgettext_lazy("key for text search", 'datings-period'))
+ period_key = str(pgettext_lazy("key for text search", "datings-period"))
result = [
('{}="{}"'.format(period_key, str(final_neo)), 1),
('{}="{}"'.format(period_key, str(recent_neo)), 0),
@@ -1176,36 +1227,36 @@ class FindSearchTest(FindInit, TestCase, SearchText):
find.conservatory_state = cs2
find.save()
- search = {'search_vector': f'conservatory="{cs2.name}"'}
+ search = {"search_vector": f'conservatory="{cs2.name}"'}
# no result when no authentication
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertRedirects(response, "/")
c.login(username=self.username, password=self.password)
# one result for exact search
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
# no result for the brother
- search = {'search_vector': f'conservatory="{cs3.name}"'}
- response = c.get(reverse('get-find'), search)
+ search = {"search_vector": f'conservatory="{cs3.name}"'}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 0)
+ self.assertEqual(json.loads(content)["recordsTotal"], 0)
# one result for the father
- search = {'search_vector': f'conservatory="{cs1.name}"'}
- response = c.get(reverse('get-find'), search)
+ search = {"search_vector": f'conservatory="{cs1.name}"'}
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
content = response.content.decode()
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
# test on text search
- key = str(pgettext_lazy("key for text search", 'conservatory'))
+ key = str(pgettext_lazy("key for text search", "conservatory"))
result = [
('{}="{}"'.format(key, str(cs2)), 1),
('{}="{}"'.format(key, str(cs3)), 0),
@@ -1216,27 +1267,30 @@ class FindSearchTest(FindInit, TestCase, SearchText):
def test_image_search(self):
c = Client()
c.login(username=self.username, password=self.password)
- search = {'documents__image__isnull': 2} # 2 for nullboolfield is None
- response = c.get(reverse('get-find'), search)
+ search = {"documents__image__isnull": 2} # 2 for nullboolfield is None
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
res = json.loads(response.content.decode())
- self.assertEqual(res['recordsTotal'], 0)
+ self.assertEqual(res["recordsTotal"], 0)
# add an image to the first find
document = Document.objects.create(title="Image!")
- image_path = settings.ROOT_PATH + \
- '../ishtar_common/static/media/images/ishtar-bg.jpg'
+ image_path = (
+ settings.ROOT_PATH + "../ishtar_common/static/media/images/ishtar-bg.jpg"
+ )
document.image = SimpleUploadedFile(
- name='ishtar-bg.jpg', content=open(image_path, 'rb').read(),
- content_type='image/jpeg')
+ name="ishtar-bg.jpg",
+ content=open(image_path, "rb").read(),
+ content_type="image/jpeg",
+ )
document.save()
self.finds[0].documents.add(document)
self.finds[0].save()
- response = c.get(reverse('get-find'), search)
+ response = c.get(reverse("get-find"), search)
self.assertEqual(response.status_code, 200)
res = json.loads(response.content.decode())
- self.assertEqual(res['recordsTotal'], 1)
+ self.assertEqual(res["recordsTotal"], 1)
def test_search_with_callable(self):
find = self.finds[0]
@@ -1244,21 +1298,21 @@ class FindSearchTest(FindInit, TestCase, SearchText):
c = Client()
c.login(username=self.username, password=self.password)
- loan_key = str(pgettext_lazy("key for text search", 'loan'))
+ loan_key = str(pgettext_lazy("key for text search", "loan"))
result = [
('{}="{}"'.format(loan_key, str(_("Yes"))), 0),
('{}="{}"'.format(loan_key, str(_("No"))), 0),
- ]
+ ]
self._test_search(c, result, context="No container defined")
warehouse = Warehouse.objects.create(
- name="Lambda warehouse",
- warehouse_type=WarehouseType.objects.all()[0])
+ name="Lambda warehouse", warehouse_type=WarehouseType.objects.all()[0]
+ )
container = Container.objects.create(
location=warehouse,
responsible=warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
find.container_ref = container
find.container = container
@@ -1266,7 +1320,7 @@ class FindSearchTest(FindInit, TestCase, SearchText):
container2 = Container.objects.create(
location=warehouse,
responsible=warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
find2.container_ref = container2
find2.container = container2
@@ -1276,8 +1330,9 @@ class FindSearchTest(FindInit, TestCase, SearchText):
('{}="{}"'.format(loan_key, str(_("Yes"))), 0),
('{}="{}"'.format(loan_key, str(_("No"))), 2),
]
- self._test_search(c, result, context="All container in their "
- "reference location")
+ self._test_search(
+ c, result, context="All container in their " "reference location"
+ )
find2.container = container
find2.save()
@@ -1285,8 +1340,9 @@ class FindSearchTest(FindInit, TestCase, SearchText):
('{}="{}"'.format(loan_key, str(_("Yes"))), 1),
('{}="{}"'.format(loan_key, str(_("No"))), 1),
]
- self._test_search(c, result, context="One container in his "
- "reference location")
+ self._test_search(
+ c, result, context="One container in his " "reference location"
+ )
class FindAutocompleteTest(FindInit, TestCase):
@@ -1298,10 +1354,9 @@ class FindAutocompleteTest(FindInit, TestCase):
self.create_finds(force=True)
self.create_finds(force=True)
self.create_finds(force=True)
- self.username = 'myuser'
- self.password = 'mypassword'
- User.objects.create_superuser(self.username, 'myemail@test.com',
- self.password)
+ self.username = "myuser"
+ self.password = "mypassword"
+ User.objects.create_superuser(self.username, "myemail@test.com", self.password)
self.client = Client()
def test_autocomplete(self):
@@ -1319,14 +1374,14 @@ class FindAutocompleteTest(FindInit, TestCase):
find4.save()
c = Client()
c.login(username=self.username, password=self.password)
- response = c.get(reverse('autocomplete-find') + "?term=12")
+ response = c.get(reverse("autocomplete-find") + "?term=12")
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
self.assertEqual(len(res), 3)
- self.assertEqual(res[0]['id'], find2.pk) # " 12" - startswith
- self.assertEqual(res[1]['id'], find.pk) # 12 - endswith
- self.assertEqual(res[2]['id'], find4.pk) # 12 - contains
+ self.assertEqual(res[0]["id"], find2.pk) # " 12" - startswith
+ self.assertEqual(res[1]["id"], find.pk) # 12 - endswith
+ self.assertEqual(res[2]["id"], find4.pk) # 12 - contains
class FindPermissionTest(FindInit, TestCase):
@@ -1336,23 +1391,26 @@ class FindPermissionTest(FindInit, TestCase):
def setUp(self):
self.username, self.password, self.user = create_superuser()
self.alt_username, self.alt_password, self.alt_user = create_user()
- ct_find = ContentType.objects.get(app_label='archaeological_finds',
- model='find')
- self.alt_user.user_permissions.add(Permission.objects.get(
- codename='view_own_find', content_type=ct_find))
- self.alt_user.user_permissions.add(Permission.objects.get(
- codename='change_own_find', content_type=ct_find))
+ ct_find = ContentType.objects.get(
+ app_label="archaeological_finds", model="find"
+ )
+ self.alt_user.user_permissions.add(
+ Permission.objects.get(codename="view_own_find", content_type=ct_find)
+ )
+ self.alt_user.user_permissions.add(
+ Permission.objects.get(codename="change_own_find", content_type=ct_find)
+ )
self.alt_username2, self.alt_password2, self.alt_user2 = create_user(
- username='luke', password='iamyourfather'
+ username="luke", password="iamyourfather"
)
profile = UserProfile.objects.create(
- profile_type=ProfileType.objects.get(txt_idx='collaborator'),
+ profile_type=ProfileType.objects.get(txt_idx="collaborator"),
person=self.alt_user2.ishtaruser.person,
- current=True
+ current=True,
)
- town = Town.objects.create(name='Tatouine', numero_insee='66000')
- area = Area.objects.create(label='Galaxie', txt_idx='galaxie')
+ town = Town.objects.create(name="Tatouine", numero_insee="66000")
+ area = Area.objects.create(label="Galaxie", txt_idx="galaxie")
area.towns.add(town)
profile.areas.add(area)
@@ -1361,18 +1419,20 @@ class FindPermissionTest(FindInit, TestCase):
self.create_operation(self.alt_user, self.orgas[0])
self.create_context_record(
- user=self.user,
- data={"label": "CR 1", "operation": self.operations[0]})
+ user=self.user, data={"label": "CR 1", "operation": self.operations[0]}
+ )
self.create_context_record(
- user=self.alt_user,
- data={"label": "CR 2", "operation": self.operations[1]})
+ user=self.alt_user, data={"label": "CR 2", "operation": self.operations[1]}
+ )
self.cr_1 = self.context_records[-2]
self.cr_2 = self.context_records[-1]
- self.create_finds(data_base={'context_record': self.cr_1},
- user=self.user, force=True)
- self.create_finds(data_base={'context_record': self.cr_2},
- user=self.alt_user, force=True)
+ self.create_finds(
+ data_base={"context_record": self.cr_1}, user=self.user, force=True
+ )
+ self.create_finds(
+ data_base={"context_record": self.cr_2}, user=self.alt_user, force=True
+ )
self.find_1 = self.finds[-2]
self.find_2 = self.finds[-1]
@@ -1381,27 +1441,26 @@ class FindPermissionTest(FindInit, TestCase):
def test_own_search(self):
# no result when no authentification
c = Client()
- response = c.get(reverse('get-find'))
- self.assertTrue(not response.content or
- not json.loads(response.content))
+ response = c.get(reverse("get-find"))
+ self.assertTrue(not response.content or not json.loads(response.content))
# possession
c = Client()
c.login(username=self.alt_username, password=self.alt_password)
- response = c.get(reverse('get-find'))
+ response = c.get(reverse("get-find"))
# only one "own" context record available
content = response.content.decode()
self.assertTrue(json.loads(content))
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
# area filter
c = Client()
c.login(username=self.alt_username2, password=self.alt_password2)
- response = c.get(reverse('get-find'))
+ response = c.get(reverse("get-find"))
# only one "own" operation available
content = response.content.decode()
self.assertTrue(json.loads(content))
- self.assertEqual(json.loads(content)['recordsTotal'], 1)
+ self.assertEqual(json.loads(content)["recordsTotal"], 1)
class FindQATest(FindInit, TestCase):
@@ -1413,17 +1472,16 @@ class FindQATest(FindInit, TestCase):
self.create_finds(data_base={"label": "Find 2"}, force=True)
self.username, self.password, self.user = create_superuser()
self.alt_username, self.alt_password, self.alt_user = create_user()
- self.alt_user.user_permissions.add(Permission.objects.get(
- codename='change_find'))
+ self.alt_user.user_permissions.add(
+ Permission.objects.get(codename="change_find")
+ )
def test_duplicate(self):
t1, __ = models.Treatment.objects.get_or_create(
- label="Treatment 1",
- treatment_state=models.TreatmentState.objects.all()[0]
+ label="Treatment 1", treatment_state=models.TreatmentState.objects.all()[0]
)
t2, __ = models.Treatment.objects.get_or_create(
- label="Treatment 1",
- treatment_state=models.TreatmentState.objects.all()[0]
+ label="Treatment 1", treatment_state=models.TreatmentState.objects.all()[0]
)
find = self.finds[0]
default_desc = "Description for duplicate"
@@ -1435,9 +1493,9 @@ class FindQATest(FindInit, TestCase):
find.treatments.add(t2)
c = Client()
- url = reverse('find-qa-duplicate', args=[find.pk])
+ url = reverse("find-qa-duplicate", args=[find.pk])
response = c.get(url)
- self.assertRedirects(response, '/')
+ self.assertRedirects(response, "/")
c = Client()
c.login(username=self.username, password=self.password)
@@ -1449,19 +1507,16 @@ class FindQATest(FindInit, TestCase):
response = c.get(url)
self.assertEqual(response.status_code, 200)
- data = {
- "denomination": "clone",
- "label": "clone - free id"
- }
+ data = {"denomination": "clone", "label": "clone - free id"}
nb_find = models.Find.objects.count()
nb_bf = models.BaseFind.objects.count()
response = c.post(url, data)
self.assertEqual(response.status_code, 302) # success redirect
self.assertEqual(models.Find.objects.count(), nb_find + 1)
self.assertEqual(models.BaseFind.objects.count(), nb_bf + 1)
- new = models.Find.objects.order_by('-pk').all()[0]
+ new = models.Find.objects.order_by("-pk").all()[0]
self.assertEqual(new.description, default_desc)
- new_bf = models.BaseFind.objects.order_by('-pk').all()[0]
+ new_bf = models.BaseFind.objects.order_by("-pk").all()[0]
base_bf = find.get_first_base_find()
self.assertEqual(new_bf.context_record, base_bf.context_record)
self.assertNotIn(d, list(new.documents.all()))
@@ -1473,17 +1528,17 @@ class FindQATest(FindInit, TestCase):
def test_bulk_update(self):
c = Client()
pks = "{}-{}".format(self.finds[0].pk, self.finds[1].pk)
- response = c.get(reverse('find-qa-bulk-update', args=[pks]))
- self.assertRedirects(response, '/')
+ response = c.get(reverse("find-qa-bulk-update", args=[pks]))
+ self.assertRedirects(response, "/")
c = Client()
c.login(username=self.username, password=self.password)
- response = c.get(reverse('find-qa-bulk-update', args=[pks]))
+ response = c.get(reverse("find-qa-bulk-update", args=[pks]))
self.assertEqual(response.status_code, 200)
c = Client()
c.login(username=self.alt_username, password=self.alt_password)
- response = c.get(reverse('find-qa-bulk-update', args=[pks]))
+ response = c.get(reverse("find-qa-bulk-update", args=[pks]))
self.assertEqual(response.status_code, 200)
find_0 = self.finds[0]
@@ -1496,51 +1551,45 @@ class FindQATest(FindInit, TestCase):
find_1.save()
period = Period.objects.all()[0].pk
- self.assertNotIn(period,
- [dating.period.pk for dating in find_0.datings.all()])
- self.assertNotIn(period,
- [dating.period.pk for dating in find_1.datings.all()])
+ self.assertNotIn(period, [dating.period.pk for dating in find_0.datings.all()])
+ self.assertNotIn(period, [dating.period.pk for dating in find_1.datings.all()])
extra_desc = "Extra description"
response = c.post(
- reverse('find-qa-bulk-update-confirm', args=[pks]),
- {'qa_period': period, 'qa_description': extra_desc}
+ reverse("find-qa-bulk-update-confirm", args=[pks]),
+ {"qa_period": period, "qa_description": extra_desc},
)
if response.status_code != 200:
- self.assertRedirects(response, '/success/')
- self.assertIn(period,
- [dating.period.pk for dating in find_0.datings.all()])
- self.assertIn(period,
- [dating.period.pk for dating in find_1.datings.all()])
- self.assertEqual(models.Find.objects.get(pk=find_0.pk).description,
- base_desc_0 + "\n" + extra_desc)
- self.assertEqual(models.Find.objects.get(pk=find_1.pk).description,
- base_desc_1 + "\n" + extra_desc)
+ self.assertRedirects(response, "/success/")
+ self.assertIn(period, [dating.period.pk for dating in find_0.datings.all()])
+ self.assertIn(period, [dating.period.pk for dating in find_1.datings.all()])
+ self.assertEqual(
+ models.Find.objects.get(pk=find_0.pk).description,
+ base_desc_0 + "\n" + extra_desc,
+ )
+ self.assertEqual(
+ models.Find.objects.get(pk=find_1.pk).description,
+ base_desc_1 + "\n" + extra_desc,
+ )
def test_basket(self):
find_0 = self.finds[0]
find_1 = self.finds[1]
nb_basket = models.FindBasket.objects.count()
- url = reverse('find-qa-basket', args=[find_0.pk])
+ url = reverse("find-qa-basket", args=[find_0.pk])
c = Client()
response = c.get(url)
- self.assertRedirects(response, '/')
+ self.assertRedirects(response, "/")
c.login(username=self.username, password=self.password)
response = c.get(url)
self.assertEqual(response.status_code, 200)
label = "Test - basket"
- data = {
- "qa_bf_create_or_update": "create",
- "qa_bf_label": label
- }
+ data = {"qa_bf_create_or_update": "create", "qa_bf_label": label}
response = c.post(url, data)
if response.status_code != 200:
- self.assertRedirects(response, '/success/')
- self.assertEqual(
- nb_basket + 1,
- models.FindBasket.objects.count())
- q = models.FindBasket.objects.filter(
- user=self.user.ishtaruser, label=label)
+ self.assertRedirects(response, "/success/")
+ self.assertEqual(nb_basket + 1, models.FindBasket.objects.count())
+ q = models.FindBasket.objects.filter(user=self.user.ishtaruser, label=label)
self.assertEqual(q.count(), 1)
# no duplicate with same user, same name
c.post(url, data)
@@ -1549,12 +1598,9 @@ class FindQATest(FindInit, TestCase):
self.assertEqual(basket.items.count(), 1)
# update
- url = reverse('find-qa-basket', args=[find_1.pk])
+ url = reverse("find-qa-basket", args=[find_1.pk])
self.assertEqual(basket.items.count(), 1)
- data = {
- "qa_bf_create_or_update": "update",
- "qa_bf_basket": basket.pk
- }
+ data = {"qa_bf_create_or_update": "update", "qa_bf_basket": basket.pk}
c.post(url, data)
self.assertEqual(basket.items.count(), 2)
self.assertIn(find_1, list(basket.items.all()))
@@ -1578,11 +1624,12 @@ class FindQATest(FindInit, TestCase):
find_0 = self.finds[0]
find_1 = self.finds[1]
pks = "{}-{}".format(find_0.pk, find_1.pk)
- url = reverse('find-qa-packaging', args=[pks])
+ url = reverse("find-qa-packaging", args=[pks])
response = c.get(url)
- self.assertRedirects(response, '/')
+ self.assertRedirects(response, "/")
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.warehouse = False
profile.save()
@@ -1603,60 +1650,61 @@ class FindQATest(FindInit, TestCase):
self.assertEqual(response.status_code, 200)
main_warehouse = Warehouse.objects.create(
- name="Main",
- warehouse_type=WarehouseType.objects.all()[0]
+ name="Main", warehouse_type=WarehouseType.objects.all()[0]
)
container = Container.objects.create(
- reference="Test", responsible=main_warehouse,
+ reference="Test",
+ responsible=main_warehouse,
location=main_warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
container2 = Container.objects.create(
- reference="Test2", responsible=main_warehouse,
+ reference="Test2",
+ responsible=main_warehouse,
location=main_warehouse,
- container_type=ContainerType.objects.all()[0]
+ container_type=ContainerType.objects.all()[0],
)
- packaging = models.TreatmentType.objects.get(txt_idx='packaging')
+ packaging = models.TreatmentType.objects.get(txt_idx="packaging")
packaging.change_reference_location = True
packaging.save()
data_check_lst = [
- ({
- 'qa-packaging-container': container.pk,
- 'qa-packaging-container_to_change': 'reference',
- },
- {
- 'container_ref': container,
- 'container': None
- }, 0),
- ({
- 'qa-packaging-container': container2.pk,
- 'qa-packaging-container_to_change': 'current',
- },
- {
- 'container_ref': None,
- 'container': container2
- }, 0),
- ({
- 'qa-packaging-container': container.pk,
- 'qa-packaging-container_to_change': 'current-and-reference',
- },
- {
- 'container_ref': container,
- 'container': container
- }, 0),
- ({
- 'qa-packaging-container': container2.pk,
- 'qa-packaging-container_to_change': 'reference',
- 'qa-packaging-create_treatment': True,
- 'qa-packaging-year': 2019,
- 'qa-packaging-treatment_type': packaging.pk
- },
- {
- 'container_ref': container2,
- 'container': None
- }, 1),
+ (
+ {
+ "qa-packaging-container": container.pk,
+ "qa-packaging-container_to_change": "reference",
+ },
+ {"container_ref": container, "container": None},
+ 0,
+ ),
+ (
+ {
+ "qa-packaging-container": container2.pk,
+ "qa-packaging-container_to_change": "current",
+ },
+ {"container_ref": None, "container": container2},
+ 0,
+ ),
+ (
+ {
+ "qa-packaging-container": container.pk,
+ "qa-packaging-container_to_change": "current-and-reference",
+ },
+ {"container_ref": container, "container": container},
+ 0,
+ ),
+ (
+ {
+ "qa-packaging-container": container2.pk,
+ "qa-packaging-container_to_change": "reference",
+ "qa-packaging-create_treatment": True,
+ "qa-packaging-year": 2019,
+ "qa-packaging-treatment_type": packaging.pk,
+ },
+ {"container_ref": container2, "container": None},
+ 1,
+ ),
]
for data, check, nb_treat in data_check_lst:
@@ -1670,10 +1718,8 @@ class FindQATest(FindInit, TestCase):
init_nb_treat = models.Treatment.objects.count()
- response = c.post(
- reverse('find-qa-packaging', args=[pks]),
- data)
- self.assertRedirects(response, '/success/')
+ response = c.post(reverse("find-qa-packaging", args=[pks]), data)
+ self.assertRedirects(response, "/success/")
for k in check:
find = models.Find.objects.get(pk=find_0.pk)
self.assertEqual(getattr(find, k), check[k])
@@ -1696,31 +1742,29 @@ class FindHistoryTest(FindInit, TestCase):
def _add_datings(self, find):
d1_attrs = {
- "period": Period.objects.get(txt_idx='neolithic'),
+ "period": Period.objects.get(txt_idx="neolithic"),
"start_date": 5000,
- 'end_date': 5001,
- 'dating_type': DatingType.objects.get(
- txt_idx='from_absolute_dating'),
- "quality": DatingQuality.objects.get(txt_idx='sure'),
- "precise_dating": "Blah !!!"
+ "end_date": 5001,
+ "dating_type": DatingType.objects.get(txt_idx="from_absolute_dating"),
+ "quality": DatingQuality.objects.get(txt_idx="sure"),
+ "precise_dating": "Blah !!!",
}
d1 = Dating.objects.create(**d1_attrs)
d2_attrs = {
- "period": Period.objects.get(txt_idx='paleolithic'),
+ "period": Period.objects.get(txt_idx="paleolithic"),
}
d2 = Dating.objects.create(**d2_attrs)
d1_dct, d2_dct = {}, {}
for k in Dating.HISTORY_ATTR:
- for dct, attr in ((d1_dct, d1_attrs) ,
- (d2_dct, d2_attrs)):
+ for dct, attr in ((d1_dct, d1_attrs), (d2_dct, d2_attrs)):
if k in attr:
- if hasattr(attr[k], 'txt_idx'):
+ if hasattr(attr[k], "txt_idx"):
dct[k] = attr[k].txt_idx
else:
dct[k] = str(attr[k])
else:
- dct[k] = ''
+ dct[k] = ""
find.datings.add(d1)
find.datings.add(d2)
@@ -1730,8 +1774,8 @@ class FindHistoryTest(FindInit, TestCase):
find = self.finds[0]
user = self.get_default_user()
- ceram = models.MaterialType.objects.get(txt_idx='ceramic').pk
- glass = models.MaterialType.objects.get(txt_idx='glass').pk
+ ceram = models.MaterialType.objects.get(txt_idx="ceramic").pk
+ glass = models.MaterialType.objects.get(txt_idx="glass").pk
find = models.Find.objects.get(pk=find.pk)
nb_hist = find.history.count()
@@ -1745,49 +1789,50 @@ class FindHistoryTest(FindInit, TestCase):
find = models.Find.objects.get(pk=find.pk)
self.assertIsNotNone(find.history_m2m)
- self.assertIn('material_types', find.history_m2m)
+ self.assertIn("material_types", find.history_m2m)
self.assertIn(
- find.history_m2m['material_types'],
- [['ceramic', 'glass'], # order do not
- ['glass', 'ceramic']]) # matter
- self.assertIn('datings', find.history_m2m)
+ find.history_m2m["material_types"],
+ [["ceramic", "glass"], ["glass", "ceramic"]], # order do not
+ ) # matter
+ self.assertIn("datings", find.history_m2m)
self.assertIn(
- find.history_m2m['datings'],
- [[d1_txt, d2_txt], # order do not
- [d2_txt, d1_txt]]) # matter
+ find.history_m2m["datings"],
+ [[d1_txt, d2_txt], [d2_txt, d1_txt]], # order do not
+ ) # matter
self.assertEqual(find.history.count(), nb_hist + 1)
- historical_material_types = find.history_m2m['material_types']
+ historical_material_types = find.history_m2m["material_types"]
find = models.Find.objects.get(pk=find.pk)
find.label = "hop hop hop2"
find.history_modifier = user
- if hasattr(find, 'skip_history_when_saving'):
- delattr(find, 'skip_history_when_saving')
+ if hasattr(find, "skip_history_when_saving"):
+ delattr(find, "skip_history_when_saving")
find._force_history = True
find.save()
find.material_types.remove(ceram)
find.datings.clear()
find = models.Find.objects.get(pk=find.pk)
- self.assertEqual(find.history_m2m['material_types'], ['glass'])
- self.assertEqual(find.history_m2m['datings'], [])
+ self.assertEqual(find.history_m2m["material_types"], ["glass"])
+ self.assertEqual(find.history_m2m["datings"], [])
self.assertEqual(find.history.count(), nb_hist + 2)
- self.assertEqual(find.history.all()[1].history_m2m['material_types'],
- historical_material_types)
- self.assertEqual(find.history.all()[0].history_m2m['material_types'],
- ["glass"])
+ self.assertEqual(
+ find.history.all()[1].history_m2m["material_types"],
+ historical_material_types,
+ )
+ self.assertEqual(find.history.all()[0].history_m2m["material_types"], ["glass"])
def _init_m2m(self, find, user):
- ceram = models.MaterialType.objects.get(txt_idx='ceramic').pk
- glass = models.MaterialType.objects.get(txt_idx='glass').pk
+ ceram = models.MaterialType.objects.get(txt_idx="ceramic").pk
+ glass = models.MaterialType.objects.get(txt_idx="glass").pk
find = models.Find.objects.get(pk=find.pk)
find.history_modifier = user
find.label = "hop hop hop1"
find._force_history = True
- if hasattr(find, 'skip_history_when_saving'):
- delattr(find, 'skip_history_when_saving')
+ if hasattr(find, "skip_history_when_saving"):
+ delattr(find, "skip_history_when_saving")
find.save()
find.material_types.add(ceram)
find.material_types.add(glass)
@@ -1797,8 +1842,8 @@ class FindHistoryTest(FindInit, TestCase):
find.history_modifier = user
find.label = "hop hop hop2"
find._force_history = True
- if hasattr(find, 'skip_history_when_saving'):
- delattr(find, 'skip_history_when_saving')
+ if hasattr(find, "skip_history_when_saving"):
+ delattr(find, "skip_history_when_saving")
find.save()
find.datings.clear()
find.material_types.remove(ceram)
@@ -1810,32 +1855,35 @@ class FindHistoryTest(FindInit, TestCase):
self._init_m2m(find, user)
find = models.Find.objects.get(pk=find.pk)
- history_date = find.history.order_by('-history_date').all()[
- 1].history_date.strftime('%Y-%m-%dT%H:%M:%S.%f')
+ history_date = (
+ find.history.order_by("-history_date")
+ .all()[1]
+ .history_date.strftime("%Y-%m-%dT%H:%M:%S.%f")
+ )
c.login(username=self.username, password=self.password)
- response = c.get(reverse('show-find',
- kwargs={'pk': find.pk}))
+ response = c.get(reverse("show-find", kwargs={"pk": find.pk}))
self.assertEqual(response.status_code, 200)
self.assertIn(b'class="card sheet"', response.content)
- content = response.content.decode('utf-8')
- self.assertNotIn(
- Period.objects.get(txt_idx='neolithic').label, content)
+ content = response.content.decode("utf-8")
+ self.assertNotIn(Period.objects.get(txt_idx="neolithic").label, content)
self.assertNotIn("5001", content)
- response = c.get(reverse('show-historized-find',
- kwargs={'pk': find.pk,
- 'date': history_date}))
+ response = c.get(
+ reverse(
+ "show-historized-find", kwargs={"pk": find.pk, "date": history_date}
+ )
+ )
self.assertEqual(response.status_code, 200)
- content = response.content.decode('utf-8')
+ content = response.content.decode("utf-8")
self.assertIn('class="card sheet"', content)
self.assertIn(
- models.MaterialType.objects.get(txt_idx='ceramic').label, content,
- msg="ceramic not found in historical sheet")
- self.assertIn("5001", content, msg="5001 not found in historical "
- "sheet")
- self.assertIn(
- Period.objects.get(txt_idx='neolithic').label, content)
+ models.MaterialType.objects.get(txt_idx="ceramic").label,
+ content,
+ msg="ceramic not found in historical sheet",
+ )
+ self.assertIn("5001", content, msg="5001 not found in historical " "sheet")
+ self.assertIn(Period.objects.get(txt_idx="neolithic").label, content)
def test_m2m_history_restore(self):
user = self.get_default_user()
@@ -1843,16 +1891,15 @@ class FindHistoryTest(FindInit, TestCase):
self._init_m2m(find, user)
find = models.Find.objects.get(pk=find.pk)
- ceram = models.MaterialType.objects.get(txt_idx='ceramic')
- glass = models.MaterialType.objects.get(txt_idx='glass')
+ ceram = models.MaterialType.objects.get(txt_idx="ceramic")
+ glass = models.MaterialType.objects.get(txt_idx="glass")
materials = list(find.material_types.all())
self.assertNotIn(ceram, materials)
self.assertIn(glass, materials)
self.assertEqual(list(find.datings.all()), [])
- history_date = find.history.order_by('-history_date').all()[
- 1].history_date
+ history_date = find.history.order_by("-history_date").all()[1].history_date
find.rollback(history_date)
find = models.Find.objects.get(pk=find.pk)
@@ -1865,10 +1912,10 @@ class FindHistoryTest(FindInit, TestCase):
dating_dct = {}
for k in self.d1_dct.keys():
if not getattr(dating, k):
- dating_dct[k] = ''
+ dating_dct[k] = ""
continue
dating_dct[k] = getattr(dating, k)
- if hasattr(dating_dct[k], 'txt_idx'):
+ if hasattr(dating_dct[k], "txt_idx"):
dating_dct[k] = dating_dct[k].txt_idx
dating_dct[k] = str(dating_dct[k])
@@ -1883,31 +1930,34 @@ class TreatmentTest(FindInit, TestCase):
model = models.Find
def setUp(self):
- base_img = settings.ROOT_PATH + \
- '../ishtar_common/static/media/images/ishtar-bg.jpg'
+ base_img = (
+ settings.ROOT_PATH + "../ishtar_common/static/media/images/ishtar-bg.jpg"
+ )
temp_dir = tempfile.gettempdir()
- img = os.path.join(temp_dir, 'ishtar-bg.jpg')
+ img = os.path.join(temp_dir, "ishtar-bg.jpg")
shutil.copy2(base_img, img)
self.create_finds(data_base={"label": "Find 1"}, force=True)
self.create_finds(data_base={"label": "Find 2"}, force=True)
image = Document.objects.create(title="Image!")
- image.image.save('ishtar-bg.jpg', File(open(img, "rb")))
+ image.image.save("ishtar-bg.jpg", File(open(img, "rb")))
self.finds[0].documents.add(image)
self.finds[0].save()
self.basket = models.FindBasket.objects.create(
- label="My basket", user=IshtarUser.objects.get(
- pk=self.get_default_user().pk))
+ label="My basket",
+ user=IshtarUser.objects.get(pk=self.get_default_user().pk),
+ )
self.other_basket = models.FindBasket.objects.create(
- label="My other basket", user=IshtarUser.objects.get(
- pk=self.get_default_user().pk))
+ label="My other basket",
+ user=IshtarUser.objects.get(pk=self.get_default_user().pk),
+ )
for find in self.finds:
self.basket.items.add(find)
self.other_basket.items.add(find)
def test_packaging_with_new_find_creation(self):
- treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ treatment_type = models.TreatmentType.objects.get(txt_idx="packaging")
# make packaging a treatment with a new version of the find created
treatment_type.create_new_find = True
treatment_type.save()
@@ -1918,45 +1968,52 @@ class TreatmentTest(FindInit, TestCase):
first_find = self.finds[0]
completed, created = models.TreatmentState.objects.get_or_create(
- txt_idx='completed', defaults={"executed": True, "label": "Done"}
+ txt_idx="completed", defaults={"executed": True, "label": "Done"}
)
completed.executed = True
completed.save()
treatment.treatment_state = completed
treatment.save(
- user=self.get_default_user(), items=self.basket,
+ user=self.get_default_user(),
+ items=self.basket,
treatment_type_list=[treatment_type],
)
treatment.treatment_types.add(treatment_type)
- self.assertEqual(items_nb + self.basket.items.count(),
- models.Find.objects.count(),
- msg="Packaging doesn't generate enough new finds")
+ self.assertEqual(
+ items_nb + self.basket.items.count(),
+ models.Find.objects.count(),
+ msg="Packaging doesn't generate enough new finds",
+ )
resulting_find = models.Find.objects.get(
upstream_treatment__upstream=first_find,
- base_finds__pk=first_find.base_finds.all()[0].pk
+ base_finds__pk=first_find.base_finds.all()[0].pk,
)
# image names used to be altered on save: check for this bug
self.assertEqual(
resulting_find.documents.all()[0].title,
- models.Find.objects.get(pk=first_find.pk).documents.all()[0].title
+ models.Find.objects.get(pk=first_find.pk).documents.all()[0].title,
)
# new version of the find is in the basket
for item in self.basket.items.all():
self.assertNotIn(
- item, self.finds,
- msg="Original basket have not been upgraded after packaging")
+ item,
+ self.finds,
+ msg="Original basket have not been upgraded after packaging",
+ )
for item in self.other_basket.items.all():
self.assertNotIn(
- item, self.finds,
- msg="Other basket have not been upgraded after packaging")
+ item,
+ self.finds,
+ msg="Other basket have not been upgraded after packaging",
+ )
def test_simple_delete(self):
- treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ treatment_type = models.TreatmentType.objects.get(txt_idx="packaging")
treatment_type.create_new_find = False
treatment_type.save()
@@ -1966,14 +2023,15 @@ class TreatmentTest(FindInit, TestCase):
initial_find = self.finds[0]
completed, created = models.TreatmentState.objects.get_or_create(
- txt_idx='completed', defaults={"executed": True, "label": "Done"}
+ txt_idx="completed", defaults={"executed": True, "label": "Done"}
)
completed.executed = True
completed.save()
treatment.treatment_state = completed
treatment.save(
- user=self.get_default_user(), items=self.basket,
+ user=self.get_default_user(),
+ items=self.basket,
treatment_type_list=[treatment_type],
)
treatment.treatment_types.add(treatment_type)
@@ -1981,8 +2039,7 @@ class TreatmentTest(FindInit, TestCase):
self.assertEqual(nb_find, models.Find.objects.count())
treatment.delete()
- self.assertEqual(
- models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
+ self.assertEqual(models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
q = models.Find.objects.filter(pk=initial_find.pk)
# initial find not deleted
@@ -1991,7 +2048,7 @@ class TreatmentTest(FindInit, TestCase):
self.assertEqual(initial_find.upstream_treatment, None)
def test_upstream_find_delete(self):
- treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ treatment_type = models.TreatmentType.objects.get(txt_idx="packaging")
# make packaging a treatment with a new version of the find created
treatment_type.create_new_find = True
treatment_type.save()
@@ -2002,30 +2059,29 @@ class TreatmentTest(FindInit, TestCase):
initial_find = self.finds[0]
completed, created = models.TreatmentState.objects.get_or_create(
- txt_idx='completed', defaults={"executed": True, "label": "Done"}
+ txt_idx="completed", defaults={"executed": True, "label": "Done"}
)
completed.executed = True
completed.save()
treatment.treatment_state = completed
treatment.save(
- user=self.get_default_user(), items=self.basket,
+ user=self.get_default_user(),
+ items=self.basket,
treatment_type_list=[treatment_type],
)
treatment.treatment_types.add(treatment_type)
nb_b = self.basket.items.count()
- self.assertEqual(
- nb_find + nb_b, models.Find.objects.count())
+ self.assertEqual(nb_find + nb_b, models.Find.objects.count())
resulting_find = models.Find.objects.get(
upstream_treatment__upstream=initial_find,
- base_finds__pk=initial_find.base_finds.all()[0].pk
+ base_finds__pk=initial_find.base_finds.all()[0].pk,
)
resulting_find.delete()
- self.assertEqual(
- models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
+ self.assertEqual(models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
q = models.Find.objects.filter(pk=initial_find.pk)
# initial find not deleted
self.assertEqual(q.count(), 1)
@@ -2033,7 +2089,7 @@ class TreatmentTest(FindInit, TestCase):
self.assertEqual(initial_find.upstream_treatment, None)
def test_treatment_delete(self):
- treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ treatment_type = models.TreatmentType.objects.get(txt_idx="packaging")
treatment_type.create_new_find = True
treatment_type.save()
@@ -2043,28 +2099,27 @@ class TreatmentTest(FindInit, TestCase):
initial_find = self.finds[0]
completed, created = models.TreatmentState.objects.get_or_create(
- txt_idx='completed', defaults={"executed": True, "label": "Done"}
+ txt_idx="completed", defaults={"executed": True, "label": "Done"}
)
completed.executed = True
completed.save()
treatment.treatment_state = completed
treatment.save(
- user=self.get_default_user(), items=self.basket,
+ user=self.get_default_user(),
+ items=self.basket,
treatment_type_list=[treatment_type],
)
treatment.treatment_types.add(treatment_type)
nb_b = self.basket.items.count()
- self.assertEqual(
- nb_find + nb_b, models.Find.objects.count())
+ self.assertEqual(nb_find + nb_b, models.Find.objects.count())
treatment.delete()
self.assertEqual(nb_find, models.Find.objects.count())
- self.assertEqual(
- models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
+ self.assertEqual(models.Treatment.objects.filter(pk=treatment.pk).count(), 0)
q = models.Find.objects.filter(pk=initial_find.pk)
# initial find not deleted
self.assertEqual(q.count(), 1)
@@ -2081,12 +2136,12 @@ class GeomaticTest(FindInit, TestCase):
self.create_finds(data_base={"label": "Find 1"}, force=True)
def test_point_precision(self):
- self.username = 'myuser'
- self.password = 'mypassword'
- User.objects.create_superuser(self.username, 'myemail@test.com',
- self.password)
+ self.username = "myuser"
+ self.password = "mypassword"
+ User.objects.create_superuser(self.username, "myemail@test.com", self.password)
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.mapping = True
profile.save()
wgs84 = SpatialReferenceSystem.objects.get(srid=4326)
@@ -2101,19 +2156,18 @@ class GeomaticTest(FindInit, TestCase):
find = base_find.find.all()[0]
c = Client()
c.login(username=self.username, password=self.password)
- response = c.get(
- reverse('show-find', kwargs={'pk': find.pk}))
- self.assertIn(b'33.12999', response.content)
+ response = c.get(reverse("show-find", kwargs={"pk": find.pk}))
+ self.assertIn(b"33.12999", response.content)
profile.point_precision = 2
profile.save()
- response = c.get(
- reverse('show-find', kwargs={'pk': find.pk}))
- self.assertIn(b'33.13', response.content)
+ response = c.get(reverse("show-find", kwargs={"pk": find.pk}))
+ self.assertIn(b"33.13", response.content)
def test_update_container_localisation_on_warehouse_update(self):
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.mapping = True
profile.save()
wgs84 = SpatialReferenceSystem.objects.get(srid=4326)
@@ -2122,17 +2176,15 @@ class GeomaticTest(FindInit, TestCase):
base_find = find.base_finds.all()[0]
self.assertEqual(base_find.x, None)
- operation = Operation.objects.get(
- pk=base_find.context_record.operation.pk
- )
+ operation = Operation.objects.get(pk=base_find.context_record.operation.pk)
operation.x, operation.y = 33, 42
operation.spatial_reference_system = wgs84
operation.save()
# an update is pending for the linked context record
q = ContextRecord.objects.filter(
- pk=base_find.context_record.pk,
- need_update=True)
+ pk=base_find.context_record.pk, need_update=True
+ )
self.assertEqual(q.count(), 1)
# process pending update
@@ -2163,15 +2215,15 @@ class GeomaticTest(FindInit, TestCase):
base_find = find.base_finds.all()[0]
srs, __ = SpatialReferenceSystem.objects.get_or_create(
- txt_idx='wgs84', defaults={"srid": 4326, "label": 'WGS84',
- 'auth_name': 'EPSG'}
+ txt_idx="wgs84",
+ defaults={"srid": 4326, "label": "WGS84", "auth_name": "EPSG"},
)
profile = get_current_profile()
profile.mapping = True
profile.save()
# db source
- geom = GEOSGeometry('POINT({} {} {})'.format(2, 43, 1), srid=4326)
+ geom = GEOSGeometry("POINT({} {} {})".format(2, 43, 1), srid=4326)
base_find.point = geom
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
@@ -2180,9 +2232,10 @@ class GeomaticTest(FindInit, TestCase):
self.assertIsNotNone(base_find.x)
self.assertIsNotNone(base_find.y)
self.assertIsNotNone(base_find.z)
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
# re-save do not change sources
base_find.save()
@@ -2192,9 +2245,10 @@ class GeomaticTest(FindInit, TestCase):
self.assertIsNotNone(base_find.x)
self.assertIsNotNone(base_find.y)
self.assertIsNotNone(base_find.z)
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
# form input
base_find.x = 2
@@ -2205,17 +2259,19 @@ class GeomaticTest(FindInit, TestCase):
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
self.assertIsNotNone(base_find.point)
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
# re-save do not change sources
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
self.assertIsNotNone(base_find.point)
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
# reinit
base_find.x = None
@@ -2229,18 +2285,21 @@ class GeomaticTest(FindInit, TestCase):
self.assertEqual(base_find.point_source_item, None)
profile, created = IshtarSiteProfile.objects.get_or_create(
- slug='default', active=True)
+ slug="default", active=True
+ )
profile.use_town_for_geo = True
profile.save()
# geom from context record town
- center = 'POINT(6 10)'
- limit = 'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),'\
- '((6 3,9 2,9 4,6 3)))'
+ center = "POINT(6 10)"
+ limit = (
+ "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),"
+ "((6 3,9 2,9 4,6 3)))"
+ )
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
t = cr.town
- t.center = 'SRID=4326;' + center
- t.limit = 'SRID=4326;' + limit
+ t.center = "SRID=4326;" + center
+ t.limit = "SRID=4326;" + limit
t.save()
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
base_find = models.BaseFind.objects.get(pk=base_find.pk)
@@ -2252,9 +2311,10 @@ class GeomaticTest(FindInit, TestCase):
tp.transform(4326)
self.assertLess(bfp.distance(tp), 0.0001)
self.assertEqual(base_find.multi_polygon, cr.town.limit)
- self.assertEqual(base_find.point_source, 'T') # town
- self.assertEqual(base_find.point_source_item,
- str(ContextRecord._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "T") # town
+ self.assertEqual(
+ base_find.point_source_item, str(ContextRecord._meta.verbose_name)
+ )
# re-save do not change sources
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
@@ -2264,15 +2324,16 @@ class GeomaticTest(FindInit, TestCase):
tp.transform(4326)
self.assertTrue(bfp.distance(tp) < 0.0001)
self.assertEqual(base_find.multi_polygon, cr.town.limit)
- self.assertEqual(base_find.point_source, 'T') # town
- self.assertEqual(base_find.point_source_item,
- str(ContextRecord._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "T") # town
+ self.assertEqual(
+ base_find.point_source_item, str(ContextRecord._meta.verbose_name)
+ )
# geom from context record
- center = 'POINT(8 6)'
+ center = "POINT(8 6)"
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
- cr.point_2d = 'SRID=4326;' + center
- cr.point_source = 'P'
+ cr.point_2d = "SRID=4326;" + center
+ cr.point_source = "P"
cr.point_source_item = str(ContextRecord._meta.verbose_name)
cr.save()
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
@@ -2289,9 +2350,10 @@ class GeomaticTest(FindInit, TestCase):
tp.transform(4326)
self.assertTrue(bfp.distance(tp) < 0.0001)
self.assertEqual(base_find.multi_polygon, cr.multi_polygon)
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(ContextRecord._meta.verbose_name))
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(ContextRecord._meta.verbose_name)
+ )
# overload of coordinates by form
base_find = models.BaseFind.objects.get(pk=base_find.pk)
@@ -2304,19 +2366,21 @@ class GeomaticTest(FindInit, TestCase):
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
self.assertIsNotNone(base_find.point)
- self.assertEqual(base_find.point_2d.wkt, 'POINT (5 6)')
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_2d.wkt, "POINT (5 6)")
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
# re-save do not change sources
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
self.assertIsNotNone(base_find.point)
- self.assertEqual(base_find.point_2d.wkt, 'POINT (5 6)')
- self.assertEqual(base_find.point_source, 'P') # precise
- self.assertEqual(base_find.point_source_item,
- str(models.BaseFind._meta.verbose_name))
+ self.assertEqual(base_find.point_2d.wkt, "POINT (5 6)")
+ self.assertEqual(base_find.point_source, "P") # precise
+ self.assertEqual(
+ base_find.point_source_item, str(models.BaseFind._meta.verbose_name)
+ )
def test_post_save_polygon(self):
profile = get_current_profile()
@@ -2326,16 +2390,18 @@ class GeomaticTest(FindInit, TestCase):
find = self.finds[0]
base_find = find.base_finds.all()[0]
srs, __ = SpatialReferenceSystem.objects.get_or_create(
- txt_idx='wgs84', defaults={"srid": 4326, "label": 'WGS84',
- 'auth_name': 'EPSG'}
+ txt_idx="wgs84",
+ defaults={"srid": 4326, "label": "WGS84", "auth_name": "EPSG"},
)
base_find = models.BaseFind.objects.get(pk=base_find.pk)
# get centroid geom from poly
- limit = 'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),' \
- '((6 3,9 2,9 4,6 3)))'
- base_find.multi_polygon = 'SRID=4326;' + limit
+ limit = (
+ "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),"
+ "((6 3,9 2,9 4,6 3)))"
+ )
+ base_find.multi_polygon = "SRID=4326;" + limit
base_find.point_source = None
base_find.point_2d = None
base_find.point = None
@@ -2343,19 +2409,21 @@ class GeomaticTest(FindInit, TestCase):
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
- self.assertEqual(base_find.point_source, 'M') # from multi polygon
+ self.assertEqual(base_find.point_source, "M") # from multi polygon
# resaving do not change source
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertIsNotNone(base_find.point_2d)
- self.assertEqual(base_find.point_source, 'M') # from multi polygon
+ self.assertEqual(base_find.point_source, "M") # from multi polygon
# geom from context record
- limit = 'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),' \
- '((6 3,9 2,9 4,6 3)))'
+ limit = (
+ "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),"
+ "((6 3,9 2,9 4,6 3)))"
+ )
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
- cr.multi_polygon = 'SRID=4326;' + limit
- cr.multi_polygon_source = 'P'
+ cr.multi_polygon = "SRID=4326;" + limit
+ cr.multi_polygon_source = "P"
cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name)
cr.save()
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
@@ -2364,9 +2432,10 @@ class GeomaticTest(FindInit, TestCase):
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertEqual(base_find.multi_polygon, cr.multi_polygon)
- self.assertEqual(base_find.multi_polygon_source, 'P') # precise
- self.assertEqual(base_find.multi_polygon_source_item,
- str(ContextRecord._meta.verbose_name))
+ self.assertEqual(base_find.multi_polygon_source, "P") # precise
+ self.assertEqual(
+ base_find.multi_polygon_source_item, str(ContextRecord._meta.verbose_name)
+ )
base_find = models.BaseFind.objects.get(pk=base_find.pk)
base_find.point_source = None
@@ -2376,42 +2445,50 @@ class GeomaticTest(FindInit, TestCase):
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertEqual(base_find.point_2d.ewkt, "SRID=4326;POINT (42 3)")
- self.assertEqual(base_find.point_source, 'P')
+ self.assertEqual(base_find.point_source, "P")
# resaving do not change source
base_find.save()
base_find = models.BaseFind.objects.get(pk=base_find.pk)
self.assertEqual(base_find.point_2d.ewkt, "SRID=4326;POINT (42 3)")
- self.assertEqual(base_find.point_source, 'P')
+ self.assertEqual(base_find.point_source, "P")
class AutocompleteTest(AutocompleteTestBase, TestCase):
fixtures = FIND_FIXTURES
models = [
- AcItem(models.ObjectType, 'autocomplete-objecttype'),
- AcItem(models.MaterialType, 'autocomplete-materialtype'),
- AcItem(models.TreatmentType, 'autocomplete-treatmenttype',
- default_values={"virtual": False}),
- AcItem(models.IntegrityType, 'autocomplete-integritytype'),
- AcItem(models.TreatmentFile, 'autocomplete-treatmentfile',
- prepare_func="create_treatmentfile"),
- AcItem(models.FindBasket, 'autocomplete-findbasket',
- prepare_func="create_findbasket"),
- AcItem(models.Find, 'autocomplete-find', prepare_func="create_find"),
- AcItem(models.Treatment, 'autocomplete-treatment',
- prepare_func='create_treatment'),
+ AcItem(models.ObjectType, "autocomplete-objecttype"),
+ AcItem(models.MaterialType, "autocomplete-materialtype"),
+ AcItem(
+ models.TreatmentType,
+ "autocomplete-treatmenttype",
+ default_values={"virtual": False},
+ ),
+ AcItem(models.IntegrityType, "autocomplete-integritytype"),
+ AcItem(
+ models.TreatmentFile,
+ "autocomplete-treatmentfile",
+ prepare_func="create_treatmentfile",
+ ),
+ AcItem(
+ models.FindBasket,
+ "autocomplete-findbasket",
+ prepare_func="create_findbasket",
+ ),
+ AcItem(models.Find, "autocomplete-find", prepare_func="create_find"),
+ AcItem(
+ models.Treatment, "autocomplete-treatment", prepare_func="create_treatment"
+ ),
]
def create_treatmentfile(self, base_name):
item, __ = models.TreatmentFile.objects.get_or_create(
- name=base_name,
- type=models.TreatmentFileType.objects.all()[0]
+ name=base_name, type=models.TreatmentFileType.objects.all()[0]
)
return item, None
def create_treatment(self, base_name):
item, __ = models.Treatment.objects.get_or_create(
- label=base_name,
- treatment_state=models.TreatmentState.objects.all()[0]
+ label=base_name, treatment_state=models.TreatmentState.objects.all()[0]
)
return item, None
@@ -2425,13 +2502,9 @@ class AutocompleteTest(AutocompleteTestBase, TestCase):
def create_find(self, base_name):
ope, __ = Operation.objects.get_or_create(
- common_name="Test",
- operation_type=OperationType.objects.all()[0]
- )
- cr, __ = ContextRecord.objects.get_or_create(
- operation=ope,
- label=base_name
+ common_name="Test", operation_type=OperationType.objects.all()[0]
)
+ cr, __ = ContextRecord.objects.get_or_create(operation=ope, label=base_name)
base_find = models.BaseFind.objects.create(context_record=cr)
find = models.Find.objects.create(
label=base_name,
@@ -2447,38 +2520,44 @@ class PublicAPITest(FindInit, APITestCase):
def setUp(self):
self.create_finds(data_base={"label": "Find 1"}, force=True)
self.basket = models.FindBasket.objects.create(
- slug="my-basket", label="My basket",
- user=IshtarUser.objects.get(pk=self.get_default_user().pk))
+ slug="my-basket",
+ label="My basket",
+ user=IshtarUser.objects.get(pk=self.get_default_user().pk),
+ )
for find in self.finds:
self.basket.items.add(find)
- self.username = 'myuser'
- self.password = 'mypassword'
- user = User.objects.create_user(self.username, 'myemail@test.com',
- self.password)
- self.auth_token = 'Token '+ Token.objects.create(user=user).key
+ self.username = "myuser"
+ self.password = "mypassword"
+ user = User.objects.create_user(
+ self.username, "myemail@test.com", self.password
+ )
+ self.auth_token = "Token " + Token.objects.create(user=user).key
def test_authentication(self):
- url = reverse('api-public-find') + "?basket=my-basket"
- response = self.client.get(url, format='json')
+ url = reverse("api-public-find") + "?basket=my-basket"
+ response = self.client.get(url, format="json")
self.assertEqual(response.status_code, 401)
- response = self.client.get(url, format='json',
- HTTP_AUTHORIZATION=self.auth_token)
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
self.assertEqual(response.status_code, 200)
def test_basket(self):
# unknown basket
- url = reverse('api-public-find') + "?basket=non-exist-basket"
- response = self.client.get(url, format='json',
- HTTP_AUTHORIZATION=self.auth_token)
+ url = reverse("api-public-find") + "?basket=non-exist-basket"
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
self.assertEqual(res, [])
# basket is not public
- url = reverse('api-public-find') + "?basket=my-basket"
- response = self.client.get(url, format='json',
- HTTP_AUTHORIZATION=self.auth_token)
+ url = reverse("api-public-find") + "?basket=my-basket"
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
@@ -2487,8 +2566,9 @@ class PublicAPITest(FindInit, APITestCase):
# ok
self.basket.public = True
self.basket.save()
- response = self.client.get(url, format='json',
- HTTP_AUTHORIZATION=self.auth_token)
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
@@ -2497,26 +2577,31 @@ class PublicAPITest(FindInit, APITestCase):
def test_basket_content(self):
find = self.finds[0]
find.denomination = "denomination"
- ceram = models.MaterialType.objects.get(txt_idx='ceramic')
+ ceram = models.MaterialType.objects.get(txt_idx="ceramic")
find.material_types.add(ceram)
find.save()
- url = reverse('api-public-find') + "?basket=my-basket"
+ url = reverse("api-public-find") + "?basket=my-basket"
self.basket.public = True
self.basket.save()
- response = self.client.get(url, format='json',
- HTTP_AUTHORIZATION=self.auth_token)
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
self.assertEqual(response.status_code, 200)
content = response.content.decode()
res = json.loads(content)
expected_results = [
- ((0, 'denomination',), 'denomination'),
- ((0, 'materials', 0), 'Céramique'),
- ((0, 'base-finds', 0, 'context-record', 'label'),
- 'Context record'),
- ((0, 'base-finds', 0, 'context-record', 'town'),
- 'default_town (12345)'),
- ((0, 'base-finds', 0, 'context-record', 'operation', 'year'), 2010),
+ (
+ (
+ 0,
+ "denomination",
+ ),
+ "denomination",
+ ),
+ ((0, "materials", 0), "Céramique"),
+ ((0, "base-finds", 0, "context-record", "label"), "Context record"),
+ ((0, "base-finds", 0, "context-record", "town"), "default_town (12345)"),
+ ((0, "base-finds", 0, "context-record", "operation", "year"), 2010),
]
for path, result in expected_results:
path = list(reversed(path))
@@ -2537,19 +2622,24 @@ class LabelTest(FindInit, TestCase):
def setUp(self):
templates = [
- settings.ROOT_PATH + '../archaeological_finds/tests/' + t
- for t in ("etiquettes-mobilier.odt", "etiquettes-mobilier",
- "etiquettes-mobilier.txt", "bad_lo.zip",
- "truncated_xml.zip")
+ settings.ROOT_PATH + "../archaeological_finds/tests/" + t
+ for t in (
+ "etiquettes-mobilier.odt",
+ "etiquettes-mobilier",
+ "etiquettes-mobilier.txt",
+ "bad_lo.zip",
+ "truncated_xml.zip",
+ )
]
self.templates = []
for template in templates:
filename = template.split("/")[-1]
- shutil.copy(template,
- os.path.join(settings.MEDIA_ROOT, filename),
- follow_symlinks=True)
- self.templates.append(
- os.path.join(settings.MEDIA_ROOT, filename))
+ shutil.copy(
+ template,
+ os.path.join(settings.MEDIA_ROOT, filename),
+ follow_symlinks=True,
+ )
+ self.templates.append(os.path.join(settings.MEDIA_ROOT, filename))
def tearDown(self):
for tpl in self.templates:
@@ -2563,19 +2653,22 @@ class LabelTest(FindInit, TestCase):
(base_tpl, base_targets, True, "OK"),
(base_tpl, "", False, "no target"),
(base_tpl, "-;Cadre2;Cadre3", False, "bad first target"),
- (base_tpl, "Cadre1;Frame2;Frame3", True,
- "first target OK, silently failed other targets"),
+ (
+ base_tpl,
+ "Cadre1;Frame2;Frame3",
+ True,
+ "first target OK, silently failed other targets",
+ ),
(missing_ext, base_targets, True, "missing extension"),
(text_file, base_targets, False, "text file"),
(bad_lo, base_targets, False, "missing content.xml"),
(trunc_xml, base_targets, False, "truncated content.xml"),
)
for tpl_file, targets, is_ok, msg in dataset:
- with open(tpl_file, 'rb') as tpl:
- template = SimpleUploadedFile("etiquettes-mobilier.odt",
- tpl.read())
+ with open(tpl_file, "rb") as tpl:
+ template = SimpleUploadedFile("etiquettes-mobilier.odt", tpl.read())
model, __ = ImporterModel.objects.get_or_create(
- klass='archaeological_finds.models.Find'
+ klass="archaeological_finds.models.Find"
)
q = DocumentTemplate.objects.filter(slug="test")
if q.count():
@@ -2586,7 +2679,8 @@ class LabelTest(FindInit, TestCase):
associated_model=model,
available=True,
label_targets=targets,
- label_template=template)
+ label_template=template,
+ )
self.templates.append(doc.label_template.path)
doc = DocumentTemplate.objects.get(pk=doc.pk)
msg = "Fail on dataset: " + msg
@@ -2602,22 +2696,19 @@ class TemplateTest(FindInit, TestCase):
model = models.Find
def setUp(self):
- template = settings.ROOT_PATH + \
- '../archaeological_finds/tests/notices-panier.odt'
+ template = (
+ settings.ROOT_PATH + "../archaeological_finds/tests/notices-panier.odt"
+ )
filename = template.split("/")[-1]
- shutil.copy(template,
- os.path.join(settings.MEDIA_ROOT, filename),
- follow_symlinks=True)
+ shutil.copy(
+ template, os.path.join(settings.MEDIA_ROOT, filename), follow_symlinks=True
+ )
self.template = os.path.join(settings.MEDIA_ROOT, filename)
self.templates = [self.template]
ope1 = self.create_operation()[0]
ope2 = self.create_operation()[1]
- cr = self.create_context_record(
- data={"label": "CR 1", "operation": ope1}
- )[0]
- cr2 = self.create_context_record(
- data={"label": "CR 2", "operation": ope2}
- )[1]
+ cr = self.create_context_record(data={"label": "CR 1", "operation": ope1})[0]
+ cr2 = self.create_context_record(data={"label": "CR 2", "operation": ope2})[1]
self.create_finds(data_base={"context_record": cr})[0]
self.create_finds(data_base={"context_record": cr2})[1]
self.basket = models.FindBasket.objects.create(label="Hophop")
@@ -2627,17 +2718,14 @@ class TemplateTest(FindInit, TestCase):
location = Warehouse.objects.create(name="Warehouse", warehouse_type=wt)
ct, __ = ContainerType.objects.get_or_create(label="CT", txt_idx="CT")
self.container = Container.objects.create(
- location=location,
- reference="Reférence",
- container_type=ct
+ location=location, reference="Reférence", container_type=ct
)
def test_label(self):
- with open(self.template, 'rb') as tpl:
- template = SimpleUploadedFile("template.odt",
- tpl.read())
+ with open(self.template, "rb") as tpl:
+ template = SimpleUploadedFile("template.odt", tpl.read())
model, __ = ImporterModel.objects.get_or_create(
- klass='archaeological_finds.models.Find'
+ klass="archaeological_finds.models.Find"
)
q = DocumentTemplate.objects.filter(slug="test")
if q.count():
@@ -2647,7 +2735,8 @@ class TemplateTest(FindInit, TestCase):
slug="test",
associated_model=model,
available=True,
- template=template)
+ template=template,
+ )
self.templates.append(doc.template.path)
doc = DocumentTemplate.objects.get(pk=doc.pk)
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 7bf85d9a4..8d49e7acb 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -29,316 +29,545 @@ from archaeological_finds import models
# forms
urlpatterns = [
- url(r'find_search/(?P<step>.+)?$',
- check_rights(['view_find', 'view_own_find'])(
- views.find_search_wizard), name='find_search'),
- url(r'find_creation/(?P<step>.+)?$',
- check_rights(['add_find', 'add_own_find'])(
- views.find_creation_wizard), name='find_creation'),
- url(r'find_modification/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.find_modification_wizard), name='find_modification'),
- url(r'find_modify/(?P<pk>.+)/$',
- views.find_modify, name='find_modify'),
- url(r'find_deletion/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.find_deletion_wizard), name='find_deletion'),
- url(r'find_delete/(?P<pk>.+)/$',
- views.find_delete, name='delete-find'),
- url(r'^find-qa-duplicate/(?P<pks>[0-9-]+)?/$',
- check_rights(['change_find', 'change_own_find'])(
- views.QAFindDuplicateFormView.as_view()),
- name='find-qa-duplicate'),
- url(r'get-findbasket/$', views.get_find_basket,
- name='get-findbasket'),
- url(r'get-findbasket-write/$', views.get_find_basket_for_write,
- name='get-findbasket-write'),
- url(r'find_basket_search/(?P<step>.+)?$',
- check_rights(['view_find', 'view_own_find'])(
- views.basket_search_wizard), name='find_basket_search'),
- url(r'^find_basket_creation/$',
- check_rights(['view_find', 'view_own_find'])(
- views.NewFindBasketView.as_view()), name='new_findbasket'),
- url(r'^find_basket_modification/(?P<step>.+)?$',
- check_rights(['view_find', 'view_own_find'])(
- views.basket_modify_wizard),
- name='find_basket_modification'),
- url(r'find_basket_modify/(?P<pk>.+)/$',
- views.find_basket_modify, name='find_basket_modify'),
- url(r'^find_basket_modification_add/$',
- check_rights(['view_find', 'view_own_find'])(
- views.SelectBasketForManagement.as_view()),
- name='select_findbasketforadd'),
- url(r'^find_basket_modification_add/(?P<pk>[0-9]+)?/$',
- check_rights(['view_find', 'view_own_find'])(
- views.SelectItemsInBasket.as_view()),
- name='select_itemsinbasket'),
- url(r'^find_basket_modification_add_item/$',
- check_rights(['view_find', 'view_own_find'])(
- views.FindBasketAddItemView.as_view()),
- name='add_iteminbasket'),
- url(r'^find_basket_modification_delete_item/(?P<basket>[0-9]+)?'
- r'/(?P<find_pk>[0-9]+)?/$',
- check_rights(['view_find', 'view_own_find'])(
- views.FindBasketDeleteItemView.as_view()),
- name='delete_iteminbasket'),
- url(r'^find_basket_list/(?P<pk>[0-9]+)?/$',
- check_rights(['view_find', 'view_own_find'])(
- views.FindBasketListView.as_view()),
- name='list_iteminbasket'),
- url(r'^find_basket_deletion/(?P<step>.+)?$',
- check_rights(['view_find', 'view_own_find'])(
- views.basket_delete_wizard),
- name='find_basket_deletion'),
- url(r'^findbasket-qa-duplicate/(?P<pks>[0-9-]+)?/$',
- check_rights(['view_find', 'view_own_find'])(
- views.QAFindbasketDuplicateFormView.as_view()),
- name='findbasket-qa-duplicate'),
-
- url(r'^findbasket-add-treatment/(?P<pk>[0-9-]+)/$',
- check_rights(['change_find', 'change_own_find'])(
- views.findbasket_treatment_add),
- name='findbasket-add-treatment'),
- url(r'^findbasket-add-treatmentfile/(?P<pk>[0-9-]+)/$',
+ url(
+ r"find_search/(?P<step>.+)?$",
+ check_rights(["view_find", "view_own_find"])(views.find_search_wizard),
+ name="find_search",
+ ),
+ url(
+ r"find_creation/(?P<step>.+)?$",
+ check_rights(["add_find", "add_own_find"])(views.find_creation_wizard),
+ name="find_creation",
+ ),
+ url(
+ r"find_modification/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.find_modification_wizard
+ ),
+ name="find_modification",
+ ),
+ url(r"find_modify/(?P<pk>.+)/$", views.find_modify, name="find_modify"),
+ url(
+ r"find_deletion/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(views.find_deletion_wizard),
+ name="find_deletion",
+ ),
+ url(r"find_delete/(?P<pk>.+)/$", views.find_delete, name="delete-find"),
+ url(
+ r"^find-qa-duplicate/(?P<pks>[0-9-]+)?/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.QAFindDuplicateFormView.as_view()
+ ),
+ name="find-qa-duplicate",
+ ),
+ url(r"get-findbasket/$", views.get_find_basket, name="get-findbasket"),
+ url(
+ r"get-findbasket-write/$",
+ views.get_find_basket_for_write,
+ name="get-findbasket-write",
+ ),
+ url(
+ r"find_basket_search/(?P<step>.+)?$",
+ check_rights(["view_find", "view_own_find"])(views.basket_search_wizard),
+ name="find_basket_search",
+ ),
+ url(
+ r"^find_basket_creation/$",
+ check_rights(["view_find", "view_own_find"])(views.NewFindBasketView.as_view()),
+ name="new_findbasket",
+ ),
+ url(
+ r"^find_basket_modification/(?P<step>.+)?$",
+ check_rights(["view_find", "view_own_find"])(views.basket_modify_wizard),
+ name="find_basket_modification",
+ ),
+ url(
+ r"find_basket_modify/(?P<pk>.+)/$",
+ views.find_basket_modify,
+ name="find_basket_modify",
+ ),
+ url(
+ r"^find_basket_modification_add/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.SelectBasketForManagement.as_view()
+ ),
+ name="select_findbasketforadd",
+ ),
+ url(
+ r"^find_basket_modification_add/(?P<pk>[0-9]+)?/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.SelectItemsInBasket.as_view()
+ ),
+ name="select_itemsinbasket",
+ ),
+ url(
+ r"^find_basket_modification_add_item/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.FindBasketAddItemView.as_view()
+ ),
+ name="add_iteminbasket",
+ ),
+ url(
+ r"^find_basket_modification_delete_item/(?P<basket>[0-9]+)?"
+ r"/(?P<find_pk>[0-9]+)?/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.FindBasketDeleteItemView.as_view()
+ ),
+ name="delete_iteminbasket",
+ ),
+ url(
+ r"^find_basket_list/(?P<pk>[0-9]+)?/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.FindBasketListView.as_view()
+ ),
+ name="list_iteminbasket",
+ ),
+ url(
+ r"^find_basket_deletion/(?P<step>.+)?$",
+ check_rights(["view_find", "view_own_find"])(views.basket_delete_wizard),
+ name="find_basket_deletion",
+ ),
+ url(
+ r"^findbasket-qa-duplicate/(?P<pks>[0-9-]+)?/$",
+ check_rights(["view_find", "view_own_find"])(
+ views.QAFindbasketDuplicateFormView.as_view()
+ ),
+ name="findbasket-qa-duplicate",
+ ),
+ url(
+ r"^findbasket-add-treatment/(?P<pk>[0-9-]+)/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.findbasket_treatment_add
+ ),
+ name="findbasket-add-treatment",
+ ),
+ url(
+ r"^findbasket-add-treatmentfile/(?P<pk>[0-9-]+)/$",
check_rights(["add_treatmentfile", "add_own_treatmentfile"])(
- views.findbasket_treatmentfile_add),
- name='findbasket-add-treatmentfile'),
-
- url(r'^find-add-treatment/(?P<pk>[0-9-]+)/$',
- check_rights(['change_find', 'change_own_find'])(
- views.find_treatment_add),
- name='find-add-treatment'),
- url(r'^find-add-divide-treatment/(?P<pk>[0-9-]+)/$',
- check_rights(['change_find', 'change_own_find'])(
- views.find_divide_treatment_add),
- name='find-add-divide-treatment'),
- url(r'^treatmentfile-add-treatment/(?P<pk>[0-9-]+)/$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatmentfile_treatment_add),
- name='treatmentfile-add-treatment'),
- url(r'^treatment-add-adminact/(?P<pk>[0-9-]+)/$',
- check_rights(['add_administrativeact'])(
- views.treatment_adminact_add),
- name='treatment-add-adminact'),
-
- url(r'^treatmentfile-add-adminact/(?P<pk>[0-9-]+)/$',
- check_rights(['add_administrativeact'])(
- views.treatmentfile_adminact_add),
- name='treatmentfile-add-adminact'),
-
- url(r'^find-qa-bulk-update/(?P<pks>[0-9-]+)?/$',
- check_rights(['change_find', 'change_own_find'])(
- views.QAFindForm.as_view()),
- name='find-qa-bulk-update'),
- url(r'^find-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$',
- check_rights(['change_find', 'change_own_find'])(
- views.QAFindForm.as_view()),
- name='find-qa-bulk-update-confirm', kwargs={"confirm": True}),
- url(r'^find-qa-basket/(?P<pks>[0-9-]+)?/$',
- check_rights(['change_find', 'change_own_find'])(
- views.QAFindBasketFormView.as_view()),
- name='find-qa-basket'),
-
- url(r'^find-qa-packaging/(?P<pks>[0-9-]+)?/$',
- check_rights(['change_find', 'change_own_find'])(
- views.QAFindTreatmentFormView.as_view()),
- name='find-qa-packaging'),
-
- url(r'^find-qa-lock/(?P<pks>[0-9-]+)?/$',
- views.QAFindLockView.as_view(), name='find-qa-lock',
- kwargs={"model": models.Find}),
-
- url(r'^treatment_creation/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatment_creation_wizard), name='treatment_creation'),
- url(r'^treatment_creation_n1/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatment_creation_n1_wizard), name='treatment_creation_n1'),
- url(r'^treatment_creation_1n/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatment_creation_1n_wizard), name='treatment_creation_1n'),
-
- url(r'^treatment_modification/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatment_modification_wizard),
- name='treatment_modification'),
- url(r'treatment_modify/(?P<pk>.+)/$',
- views.treatment_modify, name='treatment_modify'),
- url(r'^treatment_search/(?P<step>.+)?$',
- check_rights(['view_find', 'view_own_find'])(
- views.treatment_search_wizard), name='treatment_search'),
- url(r'^treatment_deletion/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatment_deletion_wizard), name='treatment_deletion'),
- url(r'treatment_delete/(?P<pk>.+)/$',
- views.treatment_delete, name='delete-treatment'),
-
- url(r'^treatment_admacttreatment_search/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatment_administrativeact_search_wizard),
- name='treatment_admacttreatment_search'),
- url(r'^treatment_admacttreatment/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatment_administrativeact_wizard),
- name='treatment_admacttreatment'),
- url(r'^treatment_admacttreatment_modification/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatment_administrativeact_modification_wizard),
- name='treatment_admacttreatment_modification'),
- url(r'^treatment_administrativeacttreatment_modify/(?P<pk>.+)/$',
+ views.findbasket_treatmentfile_add
+ ),
+ name="findbasket-add-treatmentfile",
+ ),
+ url(
+ r"^find-add-treatment/(?P<pk>[0-9-]+)/$",
+ check_rights(["change_find", "change_own_find"])(views.find_treatment_add),
+ name="find-add-treatment",
+ ),
+ url(
+ r"^find-add-divide-treatment/(?P<pk>[0-9-]+)/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.find_divide_treatment_add
+ ),
+ name="find-add-divide-treatment",
+ ),
+ url(
+ r"^treatmentfile-add-treatment/(?P<pk>[0-9-]+)/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatmentfile_treatment_add
+ ),
+ name="treatmentfile-add-treatment",
+ ),
+ url(
+ r"^treatment-add-adminact/(?P<pk>[0-9-]+)/$",
+ check_rights(["add_administrativeact"])(views.treatment_adminact_add),
+ name="treatment-add-adminact",
+ ),
+ url(
+ r"^treatmentfile-add-adminact/(?P<pk>[0-9-]+)/$",
+ check_rights(["add_administrativeact"])(views.treatmentfile_adminact_add),
+ name="treatmentfile-add-adminact",
+ ),
+ url(
+ r"^find-qa-bulk-update/(?P<pks>[0-9-]+)?/$",
+ check_rights(["change_find", "change_own_find"])(views.QAFindForm.as_view()),
+ name="find-qa-bulk-update",
+ ),
+ url(
+ r"^find-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",
+ check_rights(["change_find", "change_own_find"])(views.QAFindForm.as_view()),
+ name="find-qa-bulk-update-confirm",
+ kwargs={"confirm": True},
+ ),
+ url(
+ r"^find-qa-basket/(?P<pks>[0-9-]+)?/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.QAFindBasketFormView.as_view()
+ ),
+ name="find-qa-basket",
+ ),
+ url(
+ r"^find-qa-packaging/(?P<pks>[0-9-]+)?/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.QAFindTreatmentFormView.as_view()
+ ),
+ name="find-qa-packaging",
+ ),
+ url(
+ r"^find-qa-lock/(?P<pks>[0-9-]+)?/$",
+ views.QAFindLockView.as_view(),
+ name="find-qa-lock",
+ kwargs={"model": models.Find},
+ ),
+ url(
+ r"^treatment_creation/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatment_creation_wizard
+ ),
+ name="treatment_creation",
+ ),
+ url(
+ r"^treatment_creation_n1/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatment_creation_n1_wizard
+ ),
+ name="treatment_creation_n1",
+ ),
+ url(
+ r"^treatment_creation_1n/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatment_creation_1n_wizard
+ ),
+ name="treatment_creation_1n",
+ ),
+ url(
+ r"^treatment_modification/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatment_modification_wizard
+ ),
+ name="treatment_modification",
+ ),
+ url(
+ r"treatment_modify/(?P<pk>.+)/$",
+ views.treatment_modify,
+ name="treatment_modify",
+ ),
+ url(
+ r"^treatment_search/(?P<step>.+)?$",
+ check_rights(["view_find", "view_own_find"])(views.treatment_search_wizard),
+ name="treatment_search",
+ ),
+ url(
+ r"^treatment_deletion/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatment_deletion_wizard
+ ),
+ name="treatment_deletion",
+ ),
+ url(
+ r"treatment_delete/(?P<pk>.+)/$",
+ views.treatment_delete,
+ name="delete-treatment",
+ ),
+ url(
+ r"^treatment_admacttreatment_search/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatment_administrativeact_search_wizard
+ ),
+ name="treatment_admacttreatment_search",
+ ),
+ url(
+ r"^treatment_admacttreatment/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatment_administrativeact_wizard
+ ),
+ name="treatment_admacttreatment",
+ ),
+ url(
+ r"^treatment_admacttreatment_modification/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatment_administrativeact_modification_wizard
+ ),
+ name="treatment_admacttreatment_modification",
+ ),
+ url(
+ r"^treatment_administrativeacttreatment_modify/(?P<pk>.+)/$",
views.treatment_administrativeacttreatment_modify,
- name='treatment_administrativeacttreatment_modify'),
- url(r'^treatment_admacttreatment_deletion/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatment_admacttreatment_deletion_wizard),
- name='treatment_admacttreatment_deletion'),
- url(r'^get-administrativeacttreatment/(?P<type>.+)?$',
+ name="treatment_administrativeacttreatment_modify",
+ ),
+ url(
+ r"^treatment_admacttreatment_deletion/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatment_admacttreatment_deletion_wizard
+ ),
+ name="treatment_admacttreatment_deletion",
+ ),
+ url(
+ r"^get-administrativeacttreatment/(?P<type>.+)?$",
views.get_administrativeacttreatment,
- name='get-administrativeacttreatment'),
- url(r'^treatment_administrativeacttreatment_delete/(?P<pk>.+)/$',
+ name="get-administrativeacttreatment",
+ ),
+ url(
+ r"^treatment_administrativeacttreatment_delete/(?P<pk>.+)/$",
views.treatment_administrativeacttreatment_delete,
- name='delete-administrativeact-treatment'),
-
- url(r'^treatmentfle_admacttreatmentfle_search/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatmentfile_admacttreatmentfile_search_wizard),
- name='treatmentfle_admacttreatmentfle_search'),
- url(r'^treatmentfle_admacttreatmentfle_modification/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatmentfile_admacttreatmentfile_modification_wizard),
- name='treatmentfle_admacttreatmentfle_modification'),
- url(r'^treatmentfle_admacttreatmentfle/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatmentfile_admacttreatmentfile_wizard),
- name='treatmentfle_admacttreatmentfle'),
- url(r'^treatmentfile_administrativeacttreatmentfile_modify/(?P<pk>.+)/$',
+ name="delete-administrativeact-treatment",
+ ),
+ url(
+ r"^treatmentfle_admacttreatmentfle_search/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatmentfile_admacttreatmentfile_search_wizard
+ ),
+ name="treatmentfle_admacttreatmentfle_search",
+ ),
+ url(
+ r"^treatmentfle_admacttreatmentfle_modification/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatmentfile_admacttreatmentfile_modification_wizard
+ ),
+ name="treatmentfle_admacttreatmentfle_modification",
+ ),
+ url(
+ r"^treatmentfle_admacttreatmentfle/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatmentfile_admacttreatmentfile_wizard
+ ),
+ name="treatmentfle_admacttreatmentfle",
+ ),
+ url(
+ r"^treatmentfile_administrativeacttreatmentfile_modify/(?P<pk>.+)/$",
views.treatmentfile_administrativeacttreatmentfile_modify,
- name='treatmentfile_administrativeacttreatmentfile_modify'),
- url(r'^treatmentfle_admacttreatmentfle_deletion/(?P<step>.+)?$',
- check_rights(['change_administrativeact'])(
- views.treatmentfile_admacttreatmentfile_deletion_wizard),
- name='treatmentfle_admacttreatmentfle_deletion'),
- url(r'^treatmentfile_administrativeacttreatmentfile_delete/(?P<pk>.+)/$',
+ name="treatmentfile_administrativeacttreatmentfile_modify",
+ ),
+ url(
+ r"^treatmentfle_admacttreatmentfle_deletion/(?P<step>.+)?$",
+ check_rights(["change_administrativeact"])(
+ views.treatmentfile_admacttreatmentfile_deletion_wizard
+ ),
+ name="treatmentfle_admacttreatmentfle_deletion",
+ ),
+ url(
+ r"^treatmentfile_administrativeacttreatmentfile_delete/(?P<pk>.+)/$",
views.treatmentfile_administrativeacttreatmentfile_delete,
- name='delete-administrativeact-treatmentfile'),
-
- url(r'^treatmentfle_search/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatmentfile_search_wizard),
- name='treatmentfile_search'),
- url(r'treatmentfle_creation/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatmentfile_creation_wizard),
- name='treatmentfile_creation'),
- url(r'treatmentfle_modification/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatmentfile_modification_wizard),
- name='treatmentfile_modification'),
- url(r'^treatmentfile_modify/(?P<pk>.+)/$',
- views.treatmentfile_modify, name='treatmentfile_modify'),
- url(r'^treatmentfle_deletion/(?P<step>.+)?$',
- check_rights(['change_find', 'change_own_find'])(
- views.treatmentfile_deletion_wizard),
- name='treatmentfile_deletion'),
- url(r'^treatmentfle_delete/(?P<pk>.+)/$',
- views.treatmentfile_delete, name='delete-treatmentfile'),
-
- url(r'get-administrativeacttreatmentfile/(?P<type>.+)?$',
+ name="delete-administrativeact-treatmentfile",
+ ),
+ url(
+ r"^treatmentfle_search/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatmentfile_search_wizard
+ ),
+ name="treatmentfile_search",
+ ),
+ url(
+ r"treatmentfle_creation/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatmentfile_creation_wizard
+ ),
+ name="treatmentfile_creation",
+ ),
+ url(
+ r"treatmentfle_modification/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatmentfile_modification_wizard
+ ),
+ name="treatmentfile_modification",
+ ),
+ url(
+ r"^treatmentfile_modify/(?P<pk>.+)/$",
+ views.treatmentfile_modify,
+ name="treatmentfile_modify",
+ ),
+ url(
+ r"^treatmentfle_deletion/(?P<step>.+)?$",
+ check_rights(["change_find", "change_own_find"])(
+ views.treatmentfile_deletion_wizard
+ ),
+ name="treatmentfile_deletion",
+ ),
+ url(
+ r"^treatmentfle_delete/(?P<pk>.+)/$",
+ views.treatmentfile_delete,
+ name="delete-treatmentfile",
+ ),
+ url(
+ r"get-administrativeacttreatmentfile/(?P<type>.+)?$",
views.get_administrativeacttreatmentfile,
- name='get-administrativeacttreatmentfile'),
- url(r'get-upstreamtreatment/(?P<type>.+)?$', views.get_upstreamtreatment,
- name='get-upstreamtreatment'),
- url(r'get-downstreamtreatment/(?P<type>.+)?$',
+ name="get-administrativeacttreatmentfile",
+ ),
+ url(
+ r"get-upstreamtreatment/(?P<type>.+)?$",
+ views.get_upstreamtreatment,
+ name="get-upstreamtreatment",
+ ),
+ url(
+ r"get-downstreamtreatment/(?P<type>.+)?$",
views.get_downstreamtreatment,
- name='get-downstreamtreatment'),
- url(r'autocomplete-objecttype/$', views.autocomplete_objecttype,
- name='autocomplete-objecttype'),
- url(r'autocomplete-materialtype/$', views.autocomplete_materialtype,
- name='autocomplete-materialtype'),
- url(r'autocomplete-treatmenttype/$', views.autocomplete_treatmenttype,
- name='autocomplete-treatmenttype'),
- url(r'autocomplete-integritytype/$', views.autocomplete_integritytype,
- name='autocomplete-integritytype'),
- url(r'autocomplete-treatmentfile/$', views.autocomplete_treatmentfile,
- name='autocomplete-treatmentfile'),
- url(r'get-find-for-ope/own/(?P<type>.+)?$', views.get_find_for_ope,
- name='get-own-find-for-ope', kwargs={'force_own': True}),
- url(r'get-find-for-ope/(?P<type>.+)?$', views.get_find_for_ope,
- name='get-find-for-ope'),
- url(r'get-find-for-cr/cr/(?P<type>.+)?$', views.get_find_for_cr,
- name='get-own-find-for-cr', kwargs={'force_own': True}),
- url(r'get-find-for-cr/(?P<type>.+)?$', views.get_find_for_cr,
- name='get-find-for-cr'),
- url(r'get-find-for-treatment/own/(?P<type>.+)?$',
+ name="get-downstreamtreatment",
+ ),
+ url(
+ r"autocomplete-objecttype/$",
+ views.autocomplete_objecttype,
+ name="autocomplete-objecttype",
+ ),
+ url(
+ r"autocomplete-materialtype/$",
+ views.autocomplete_materialtype,
+ name="autocomplete-materialtype",
+ ),
+ url(
+ r"autocomplete-treatmenttype/$",
+ views.autocomplete_treatmenttype,
+ name="autocomplete-treatmenttype",
+ ),
+ url(
+ r"autocomplete-integritytype/$",
+ views.autocomplete_integritytype,
+ name="autocomplete-integritytype",
+ ),
+ url(
+ r"autocomplete-treatmentfile/$",
+ views.autocomplete_treatmentfile,
+ name="autocomplete-treatmentfile",
+ ),
+ url(
+ r"get-find-for-ope/own/(?P<type>.+)?$",
+ views.get_find_for_ope,
+ name="get-own-find-for-ope",
+ kwargs={"force_own": True},
+ ),
+ url(
+ r"get-find-for-ope/(?P<type>.+)?$",
+ views.get_find_for_ope,
+ name="get-find-for-ope",
+ ),
+ url(
+ r"get-find-for-cr/cr/(?P<type>.+)?$",
+ views.get_find_for_cr,
+ name="get-own-find-for-cr",
+ kwargs={"force_own": True},
+ ),
+ url(
+ r"get-find-for-cr/(?P<type>.+)?$", views.get_find_for_cr, name="get-find-for-cr"
+ ),
+ url(
+ r"get-find-for-treatment/own/(?P<type>.+)?$",
+ views.get_find_for_treatment,
+ name="get-own-find-for-treatment",
+ kwargs={"force_own": True},
+ ),
+ url(
+ r"get-find-for-treatment/(?P<type>.+)?$",
views.get_find_for_treatment,
- name='get-own-find-for-treatment', kwargs={'force_own': True}),
- url(r'get-find-for-treatment/(?P<type>.+)?$', views.get_find_for_treatment,
- name='get-find-for-treatment'),
- url(r'get-find-inside-container/own/(?P<type>.+)?$',
+ name="get-find-for-treatment",
+ ),
+ url(
+ r"get-find-inside-container/own/(?P<type>.+)?$",
views.get_find_inside_container,
- name='get-find-inside-container', kwargs={'force_own': True}),
- url(r'get-find-inside-container/(?P<type>.+)?$',
- views.get_find_inside_container, name='get-find-inside-container'),
- url(r'get-find-full/own/(?P<type>.+)?$', views.get_find,
- name='get-own-find-full', kwargs={'full': True, 'force_own': True}),
- url(r'get-find-full/(?P<type>.+)?$', views.get_find,
- name='get-find-full', kwargs={'full': True}),
- url(r'get-find-shortcut/(?P<type>.+)?$',
- views.get_find, name='get-find-shortcut',
- kwargs={'full': 'shortcut'}),
- url(r'^show-find/basket-(?:(?P<pk>.+)/(?P<type>.+)?)?$',
+ name="get-find-inside-container",
+ kwargs={"force_own": True},
+ ),
+ url(
+ r"get-find-inside-container/(?P<type>.+)?$",
+ views.get_find_inside_container,
+ name="get-find-inside-container",
+ ),
+ url(
+ r"get-find-full/own/(?P<type>.+)?$",
+ views.get_find,
+ name="get-own-find-full",
+ kwargs={"full": True, "force_own": True},
+ ),
+ url(
+ r"get-find-full/(?P<type>.+)?$",
+ views.get_find,
+ name="get-find-full",
+ kwargs={"full": True},
+ ),
+ url(
+ r"get-find-shortcut/(?P<type>.+)?$",
+ views.get_find,
+ name="get-find-shortcut",
+ kwargs={"full": "shortcut"},
+ ),
+ url(
+ r"^show-find/basket-(?:(?P<pk>.+)/(?P<type>.+)?)?$",
views.show_findbasket,
- name='show-findbasket'),
- url(r'^show-basefind/(?:(?P<pk>.+)/(?P<type>.+)?)?$',
- views.show_basefind, name='show-basefind'),
- url(r'^display-find/basket-(?P<pk>.+)/$', views.display_findbasket,
- name='display-findbasket'),
- url(r'^show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$',
- views.show_find, name='show-historized-find'),
- url(r'^revert-find/(?P<pk>.+)/(?P<date>.+)$',
- views.revert_find, name='revert-find'),
- url(r'get-treatment-shortcut/(?P<type>.+)?$',
- views.get_treatment, name='get-treatment-shortcut',
- kwargs={'full': 'shortcut'}),
- url(r'show-historized-treatment/(?P<pk>.+)?/(?P<date>.+)?$',
- views.show_treatment, name='show-historized-treatment'),
- url(r'^revert-treatment/(?P<pk>.+)/(?P<date>.+)$',
- views.revert_treatment, name='revert-treatment'),
- url(r'get-treatmentfile/(?P<type>.+)?$',
- views.get_treatmentfile, name='get-treatmentfile'),
- url(r'get-treatmentfile-shortcut/(?P<type>.+)?$',
- views.get_treatmentfile, name='get-treatmentfile-shortcut',
- kwargs={'full': 'shortcut'}),
- url(r'^show-treatmentfile(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ name="show-findbasket",
+ ),
+ url(
+ r"^show-basefind/(?:(?P<pk>.+)/(?P<type>.+)?)?$",
+ views.show_basefind,
+ name="show-basefind",
+ ),
+ url(
+ r"^display-find/basket-(?P<pk>.+)/$",
+ views.display_findbasket,
+ name="display-findbasket",
+ ),
+ url(
+ r"^show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$",
+ views.show_find,
+ name="show-historized-find",
+ ),
+ url(
+ r"^revert-find/(?P<pk>.+)/(?P<date>.+)$", views.revert_find, name="revert-find"
+ ),
+ url(
+ r"get-treatment-shortcut/(?P<type>.+)?$",
+ views.get_treatment,
+ name="get-treatment-shortcut",
+ kwargs={"full": "shortcut"},
+ ),
+ url(
+ r"show-historized-treatment/(?P<pk>.+)?/(?P<date>.+)?$",
+ views.show_treatment,
+ name="show-historized-treatment",
+ ),
+ url(
+ r"^revert-treatment/(?P<pk>.+)/(?P<date>.+)$",
+ views.revert_treatment,
+ name="revert-treatment",
+ ),
+ url(
+ r"get-treatmentfile/(?P<type>.+)?$",
+ views.get_treatmentfile,
+ name="get-treatmentfile",
+ ),
+ url(
+ r"get-treatmentfile-shortcut/(?P<type>.+)?$",
+ views.get_treatmentfile,
+ name="get-treatmentfile-shortcut",
+ kwargs={"full": "shortcut"},
+ ),
+ url(
+ r"^show-treatmentfile(?:/(?P<pk>.+))?/(?P<type>.+)?$",
+ views.show_treatmentfile,
+ name=models.TreatmentFile.SHOW_URL,
+ ),
+ url(
+ r"show-historized-treatmentfile/(?P<pk>.+)?/(?P<date>.+)?$",
views.show_treatmentfile,
- name=models.TreatmentFile.SHOW_URL),
- url(r'show-historized-treatmentfile/(?P<pk>.+)?/(?P<date>.+)?$',
- views.show_treatmentfile, name='show-historized-treatmentfile'),
- url(r'^revert-treatmentfile/(?P<pk>.+)/(?P<date>.+)$',
- views.revert_treatmentfile, name='revert-treatmentfile'),
- url(r'^treatment_administrativeact_document/$',
+ name="show-historized-treatmentfile",
+ ),
+ url(
+ r"^revert-treatmentfile/(?P<pk>.+)/(?P<date>.+)$",
+ views.revert_treatmentfile,
+ name="revert-treatmentfile",
+ ),
+ url(
+ r"^treatment_administrativeact_document/$",
administrativeactfile_document,
- name='treatment-administrativeact-document',
- kwargs={'treatment': True}),
- url(r'^treatmentfle_administrativeact_document/$',
+ name="treatment-administrativeact-document",
+ kwargs={"treatment": True},
+ ),
+ url(
+ r"^treatmentfle_administrativeact_document/$",
administrativeactfile_document,
- name='treatmentfle-administrativeact-document',
- kwargs={'treatment_file': True}),
- url(r'autocomplete-findbasket/$',
- check_rights(['change_find', 'change_own_find'])(
- views.autocomplete_findbasket),
- name='autocomplete-findbasket'),
- url(r'autocomplete-findbasket-write/$',
- check_rights(['change_find', 'change_own_find'])(
- views.autocomplete_findbasket_write),
- name='autocomplete-findbasket-write'),
-
- url(r'api/public/find/$', views.PublicFindAPI.as_view(),
- name='api-public-find'),
+ name="treatmentfle-administrativeact-document",
+ kwargs={"treatment_file": True},
+ ),
+ url(
+ r"autocomplete-findbasket/$",
+ check_rights(["change_find", "change_own_find"])(views.autocomplete_findbasket),
+ name="autocomplete-findbasket",
+ ),
+ url(
+ r"autocomplete-findbasket-write/$",
+ check_rights(["change_find", "change_own_find"])(
+ views.autocomplete_findbasket_write
+ ),
+ name="autocomplete-findbasket-write",
+ ),
+ url(r"api/public/find/$", views.PublicFindAPI.as_view(), name="api-public-find"),
]
-urlpatterns += get_urls_for_model(models.Find, views, own=True,
- autocomplete=True)
-urlpatterns += get_urls_for_model(models.Treatment, views,
- autocomplete=True)
-
+urlpatterns += get_urls_for_model(models.Find, views, own=True, autocomplete=True)
+urlpatterns += get_urls_for_model(models.Treatment, views, autocomplete=True)
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 978afc759..561227f7c 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2010-2018 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -41,22 +41,34 @@ from archaeological_operations.models import AdministrativeAct
from archaeological_finds import models
from ishtar_common.forms import FinalForm
-from archaeological_context_records.forms \
- import RecordFormSelection as RecordFormSelectionTable
+from archaeological_context_records.forms import (
+ RecordFormSelection as RecordFormSelectionTable,
+)
from archaeological_operations.forms import FinalAdministrativeActDeleteForm
from archaeological_finds import forms
-from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \
- LoginRequiredMixin, QAItemEditForm, QAItemForm, QABaseLockView, \
- wizard_is_available
-from ishtar_common.views_item import display_item, get_item, show_item, \
- revert_item, get_autocomplete_item, get_autocomplete_queries
+from ishtar_common.views import (
+ get_autocomplete_generic,
+ IshtarMixin,
+ LoginRequiredMixin,
+ QAItemEditForm,
+ QAItemForm,
+ QABaseLockView,
+ wizard_is_available,
+)
+from ishtar_common.views_item import (
+ display_item,
+ get_item,
+ show_item,
+ revert_item,
+ get_autocomplete_item,
+ get_autocomplete_queries,
+)
from archaeological_operations.wizards import AdministrativeActDeletionWizard
from archaeological_finds import wizards
-get_find = get_item(models.Find, 'get_find', 'find',
- search_form=forms.FindSelect)
+get_find = get_item(models.Find, "get_find", "find", search_form=forms.FindSelect)
def get_table_cols_for_ope():
@@ -75,77 +87,95 @@ def get_table_cols_for_cr():
def get_table_cols_for_container():
table_cols = models.Find.TABLE_COLS
- tb_key = ("find", 'TABLE_COLS')
+ tb_key = ("find", "TABLE_COLS")
if tb_key in settings.TABLE_COLS:
table_cols = settings.TABLE_COLS[tb_key]
return ["find__" + tc for tc in table_cols]
-get_find_for_ope = get_item(models.Find, 'get_find', 'find',
- own_table_cols=get_table_cols_for_ope())
+get_find_for_ope = get_item(
+ models.Find, "get_find", "find", own_table_cols=get_table_cols_for_ope()
+)
-get_find_for_cr = get_item(models.Find, 'get_find', 'find',
- own_table_cols=get_table_cols_for_cr())
+get_find_for_cr = get_item(
+ models.Find, "get_find", "find", own_table_cols=get_table_cols_for_cr()
+)
get_find_for_treatment = get_item(
- models.Find, 'get_find', 'find',
- own_table_cols=get_table_cols_for_ope(), base_request={})
+ models.Find,
+ "get_find",
+ "find",
+ own_table_cols=get_table_cols_for_ope(),
+ base_request={},
+)
get_find_inside_container = get_item(
- models.FindInsideContainer, 'get_find_inside_container',
- 'find',
+ models.FindInsideContainer,
+ "get_find_inside_container",
+ "find",
extra_request_keys=models.FindInsideContainer.EXTRA_REQUEST_KEYS,
- own_table_cols=get_table_cols_for_container())
+ own_table_cols=get_table_cols_for_container(),
+)
autocomplete_find = get_autocomplete_item(model=models.Find)
-show_treatment = show_item(models.Treatment, 'treatment')
+show_treatment = show_item(models.Treatment, "treatment")
revert_treatment = revert_item(models.Treatment)
get_treatment = get_item(
- models.Treatment, 'get_treatment', 'treatment',
- search_form=forms.TreatmentSelect
+ models.Treatment, "get_treatment", "treatment", search_form=forms.TreatmentSelect
)
display_treatment = display_item(models.Treatment)
autocomplete_treatment = get_autocomplete_item(model=models.Treatment)
get_administrativeacttreatment = get_item(
- AdministrativeAct, 'get_administrativeacttreatment',
- 'administrativeacttreatment',
- base_request={"treatment__pk__isnull": False})
+ AdministrativeAct,
+ "get_administrativeacttreatment",
+ "administrativeacttreatment",
+ base_request={"treatment__pk__isnull": False},
+)
-show_treatmentfile = show_item(models.TreatmentFile, 'treatmentfile')
+show_treatmentfile = show_item(models.TreatmentFile, "treatmentfile")
revert_treatmentfile = revert_item(models.TreatmentFile)
get_treatmentfile = get_item(
- models.TreatmentFile, 'get_treatmentfile', 'treatmentfile',
- search_form=forms.TreatmentFileSelect
+ models.TreatmentFile,
+ "get_treatmentfile",
+ "treatmentfile",
+ search_form=forms.TreatmentFileSelect,
)
get_administrativeacttreatmentfile = get_item(
- AdministrativeAct, 'get_administrativeacttreatmentfile',
- 'administrativeacttreatmentfile',
- base_request={"treatment_file__pk__isnull": False})
+ AdministrativeAct,
+ "get_administrativeacttreatmentfile",
+ "administrativeacttreatmentfile",
+ base_request={"treatment_file__pk__isnull": False},
+)
def autocomplete_treatmentfile(request):
- if not request.user.has_perm('ishtar_common.view_treatment',
- models.Treatment) and \
- not request.user.has_perm('ishtar_common.view_own_treatment',
- models.Treatment) \
- and not request.user.ishtaruser.has_right('treatmentfile_search',
- session=request.session):
- return HttpResponse(content_type='text/plain')
- if not request.GET.get('term'):
- return HttpResponse(content_type='text/plain')
- q = request.GET.get('term')
+ if (
+ not request.user.has_perm("ishtar_common.view_treatment", models.Treatment)
+ and not request.user.has_perm(
+ "ishtar_common.view_own_treatment", models.Treatment
+ )
+ and not request.user.ishtaruser.has_right(
+ "treatmentfile_search", session=request.session
+ )
+ ):
+ return HttpResponse(content_type="text/plain")
+ if not request.GET.get("term"):
+ return HttpResponse(content_type="text/plain")
+ q = request.GET.get("term")
query = Q()
- for q1 in q.split(' '):
- for q in q1.split(' '):
- extra = Q(internal_reference__icontains=q) | \
- Q(external_id__icontains=q) | \
- Q(name__icontains=q)
+ for q1 in q.split(" "):
+ for q in q1.split(" "):
+ extra = (
+ Q(internal_reference__icontains=q)
+ | Q(external_id__icontains=q)
+ | Q(name__icontains=q)
+ )
try:
int(q)
extra = extra | Q(year=q) | Q(index=q)
@@ -154,52 +184,53 @@ def autocomplete_treatmentfile(request):
query = query & extra
limit = 20
files = models.TreatmentFile.objects.filter(query)[:limit]
- data = json.dumps([{'id': file.pk, 'value': str(file)}
- for file in files])
- return HttpResponse(data, content_type='text/plain')
+ data = json.dumps([{"id": file.pk, "value": str(file)} for file in files])
+ return HttpResponse(data, content_type="text/plain")
def show_basefind(request, pk, **dct):
- q = models.Find.objects.filter(base_finds__pk=pk,
- downstream_treatment__isnull=True)
+ q = models.Find.objects.filter(base_finds__pk=pk, downstream_treatment__isnull=True)
if not q.count():
return Http404()
- find_pk = q.values("pk").order_by('-pk')[0]["pk"]
- return show_item(models.Find, 'find')(request, find_pk, **dct)
+ find_pk = q.values("pk").order_by("-pk")[0]["pk"]
+ return show_item(models.Find, "find")(request, find_pk, **dct)
def show_find_extra(request, find):
if not request.user or not request.user.ishtaruser:
return {}
user = request.user.ishtaruser
- q = models.FindBasket.objects.filter(items__pk=find.pk).filter(
- Q(user=user) | Q(shared_with__pk=user.pk) |
- Q(shared_write_with__pk=user.pk)
- ).distinct()
+ q = (
+ models.FindBasket.objects.filter(items__pk=find.pk)
+ .filter(
+ Q(user=user) | Q(shared_with__pk=user.pk) | Q(shared_write_with__pk=user.pk)
+ )
+ .distinct()
+ )
return {"baskets": [(basket.pk, basket.full_label) for basket in q.all()]}
-show_find = show_item(models.Find, 'find', extra_dct=show_find_extra)
+show_find = show_item(models.Find, "find", extra_dct=show_find_extra)
display_find = display_item(models.Find)
revert_find = revert_item(models.Find)
-show_findbasket = show_item(models.FindBasket, 'findbasket',
- model_for_perms=models.Find)
-display_findbasket = display_item(models.FindBasket,
- show_url='show-find/basket-')
+show_findbasket = show_item(
+ models.FindBasket, "findbasket", model_for_perms=models.Find
+)
+display_findbasket = display_item(models.FindBasket, show_url="show-find/basket-")
def autocomplete_findbasket(request, current_right=None):
- if not request.GET.get('term'):
- return HttpResponse(content_type='text/plain')
+ if not request.GET.get("term"):
+ return HttpResponse(content_type="text/plain")
limit = 20
result = OrderedDict()
- for query in get_autocomplete_queries(request, ['label']):
- query = query & models.FindBasket.get_query_owns(
- request.user.ishtaruser)
- objects = models.FindBasket.objects.filter(query).distinct().order_by(
- 'label')[:limit]
+ for query in get_autocomplete_queries(request, ["label"]):
+ query = query & models.FindBasket.get_query_owns(request.user.ishtaruser)
+ objects = (
+ models.FindBasket.objects.filter(query).distinct().order_by("label")[:limit]
+ )
for obj in objects:
if obj.id not in list(result.keys()):
result[obj.id] = obj.label
@@ -208,22 +239,21 @@ def autocomplete_findbasket(request, current_right=None):
break
if not limit:
break
- data = json.dumps([{'id': obj[0], 'value': obj[1]}
- for obj in list(result.items())])
- return HttpResponse(data, content_type='text/plain')
+ data = json.dumps([{"id": obj[0], "value": obj[1]} for obj in list(result.items())])
+ return HttpResponse(data, content_type="text/plain")
def autocomplete_findbasket_write(request, current_right=None):
- if not request.GET.get('term'):
- return HttpResponse(content_type='text/plain')
+ if not request.GET.get("term"):
+ return HttpResponse(content_type="text/plain")
limit = 20
result = OrderedDict()
- for query in get_autocomplete_queries(request, ['label']):
- query = query & models.FindBasket.get_write_query_owns(
- request.user.ishtaruser)
- objects = models.FindBasket.objects.filter(query).distinct().order_by(
- 'label')[:limit]
+ for query in get_autocomplete_queries(request, ["label"]):
+ query = query & models.FindBasket.get_write_query_owns(request.user.ishtaruser)
+ objects = (
+ models.FindBasket.objects.filter(query).distinct().order_by("label")[:limit]
+ )
for obj in objects:
if obj.id not in list(result.keys()):
result[obj.id] = obj.label
@@ -232,63 +262,64 @@ def autocomplete_findbasket_write(request, current_right=None):
break
if not limit:
break
- data = json.dumps([{'id': obj[0], 'value': obj[1]}
- for obj in list(result.items())])
- return HttpResponse(data, content_type='text/plain')
+ data = json.dumps([{"id": obj[0], "value": obj[1]} for obj in list(result.items())])
+ return HttpResponse(data, content_type="text/plain")
get_find_basket = get_item(
- models.FindBasket, 'get_findbasket', 'findbasket',
- model_for_perms=models.Find
+ models.FindBasket, "get_findbasket", "findbasket", model_for_perms=models.Find
)
get_findbasket = get_find_basket
get_find_basket_for_write = get_item(
- models.FindBasket, 'get_findbasket', 'findbasket',
- model_for_perms=models.Find, alt_query_own='get_write_query_owns'
+ models.FindBasket,
+ "get_findbasket",
+ "findbasket",
+ model_for_perms=models.Find,
+ alt_query_own="get_write_query_owns",
)
basket_search_wizard = wizards.FindBasketSearch.as_view(
- [('selec-find_basket_search', forms.FindBasketFormSelection)],
+ [("selec-find_basket_search", forms.FindBasketFormSelection)],
label=_("Basket search"),
- url_name='find_basket_search',
+ url_name="find_basket_search",
)
basket_modify_wizard = wizards.FindBasketEditWizard.as_view(
[
- ('selec-find_basket_modification',
- forms.FindBasketForWriteFormSelection),
- ('basket-find_basket_modification', forms.FindBasketForm),
- ('final-find_basket_modification', FinalForm)
+ ("selec-find_basket_modification", forms.FindBasketForWriteFormSelection),
+ ("basket-find_basket_modification", forms.FindBasketForm),
+ ("final-find_basket_modification", FinalForm),
],
label=_("Basket modify"),
- url_name='find_basket_modification',
+ url_name="find_basket_modification",
)
def find_basket_modify(request, pk):
- if not wizard_is_available(basket_modify_wizard, request, models.FindBasket,
- pk):
+ if not wizard_is_available(basket_modify_wizard, request, models.FindBasket, pk):
return HttpResponseRedirect("/")
- key = 'selec-find_basket_modification'
- wizards.FindBasketEditWizard.session_set_value(
- request, key, 'pk', pk, reset=True)
+ key = "selec-find_basket_modification"
+ wizards.FindBasketEditWizard.session_set_value(request, key, "pk", pk, reset=True)
return redirect(
- reverse('find_basket_modification',
- kwargs={'step': 'basket-find_basket_modification'}))
+ reverse(
+ "find_basket_modification",
+ kwargs={"step": "basket-find_basket_modification"},
+ )
+ )
findbasket_deletion_steps = [
- ('selec-find_basket_deletion', forms.FindBasketForWriteFormSelection),
- ('final-find_basket_deletion', FinalForm)
+ ("selec-find_basket_deletion", forms.FindBasketForWriteFormSelection),
+ ("final-find_basket_deletion", FinalForm),
]
basket_delete_wizard = wizards.FindBasketDeletionWizard.as_view(
findbasket_deletion_steps,
label=_("Basket deletion"),
- url_name='find_basket_deletion',
+ url_name="find_basket_deletion",
)
@@ -305,34 +336,37 @@ def check_not_warehouse_module(self):
find_creation_steps = [
- ('selecrecord-find_creation', RecordFormSelectionTable),
- ('find-find_creation', forms.FindForm),
- ('preservation-find_creation', forms.PreservationForm),
- ('dating-find_creation', forms.DatingFormSet),
- ('final-find_creation', FinalForm)
+ ("selecrecord-find_creation", RecordFormSelectionTable),
+ ("find-find_creation", forms.FindForm),
+ ("preservation-find_creation", forms.PreservationForm),
+ ("dating-find_creation", forms.DatingFormSet),
+ ("final-find_creation", FinalForm),
]
find_creation_condition_dict = {
- 'preservation-find_creation': check_preservation_module,
+ "preservation-find_creation": check_preservation_module,
}
find_creation_wizard = wizards.FindWizard.as_view(
find_creation_steps,
label=_("New find"),
condition_dict=find_creation_condition_dict,
- url_name='find_creation',)
+ url_name="find_creation",
+)
find_search_condition_dict = {
- 'general-find_search': check_not_warehouse_module,
- 'generalwarehouse-find_search': check_warehouse_module,
+ "general-find_search": check_not_warehouse_module,
+ "generalwarehouse-find_search": check_warehouse_module,
}
-find_search_wizard = wizards.FindSearch.as_view([
- ('general-find_search', forms.FindFormSelection),
- ('generalwarehouse-find_search', forms.FindFormSelectionWarehouseModule)],
+find_search_wizard = wizards.FindSearch.as_view(
+ [
+ ("general-find_search", forms.FindFormSelection),
+ ("generalwarehouse-find_search", forms.FindFormSelectionWarehouseModule),
+ ],
label=_("Find search"),
- url_name='find_search',
- condition_dict=find_search_condition_dict
+ url_name="find_search",
+ condition_dict=find_search_condition_dict,
)
@@ -348,83 +382,80 @@ def has_only_one_base_find(wizard):
find_modification_condition_dict = {
- 'selec-find_modification': check_not_warehouse_module,
- 'selecw-find_modification': check_warehouse_module,
- 'preservation-find_modification': check_preservation_module,
- 'selecrecord-find_modification': has_only_one_base_find,
- 'find-find_modification': has_only_one_base_find,
- 'simplefind-find_modification': has_many_base_find,
+ "selec-find_modification": check_not_warehouse_module,
+ "selecw-find_modification": check_warehouse_module,
+ "preservation-find_modification": check_preservation_module,
+ "selecrecord-find_modification": has_only_one_base_find,
+ "find-find_modification": has_only_one_base_find,
+ "simplefind-find_modification": has_many_base_find,
}
find_modification_steps = [
- ('selec-find_modification', forms.FindFormSelection),
- ('selecw-find_modification', forms.FindFormSelectionWarehouseModule),
- ('selecrecord-find_modification', forms.RecordFormSelection),
- ('find-find_modification', forms.FindForm),
- ('simplefind-find_modification', forms.SimpleFindForm),
- ('preservation-find_modification', forms.PreservationForm),
- ('dating-find_modification', forms.DatingFormSet),
- ('final-find_modification', FinalForm)
+ ("selec-find_modification", forms.FindFormSelection),
+ ("selecw-find_modification", forms.FindFormSelectionWarehouseModule),
+ ("selecrecord-find_modification", forms.RecordFormSelection),
+ ("find-find_modification", forms.FindForm),
+ ("simplefind-find_modification", forms.SimpleFindForm),
+ ("preservation-find_modification", forms.PreservationForm),
+ ("dating-find_modification", forms.DatingFormSet),
+ ("final-find_modification", FinalForm),
]
find_modification_wizard = wizards.FindModificationWizard.as_view(
find_modification_steps,
condition_dict=find_modification_condition_dict,
label=_("Find modification"),
- url_name='find_modification'
+ url_name="find_modification",
)
def find_modify(request, pk):
- find = wizard_is_available(find_modification_wizard, request,
- models.Find, pk)
+ find = wizard_is_available(find_modification_wizard, request, models.Find, pk)
if not find:
return HttpResponseRedirect("/")
find_modification_wizard(request)
- key = 'selec-find_modification'
+ key = "selec-find_modification"
if get_current_profile().warehouse:
- key = 'selecw-find_modification'
- wizards.FindModificationWizard.session_set_value(
- request, key, 'pk', pk, reset=True)
+ key = "selecw-find_modification"
+ wizards.FindModificationWizard.session_set_value(request, key, "pk", pk, reset=True)
- step = 'find-find_modification'
+ step = "find-find_modification"
if find.base_finds.count() > 1:
- step = 'simplefind-find_modification'
-
- return redirect(
- reverse('find_modification', kwargs={'step': step}))
+ step = "simplefind-find_modification"
+
+ return redirect(reverse("find_modification", kwargs={"step": step}))
+
find_deletion_condition_dict = {
- 'selec-find_deletion': check_not_warehouse_module,
- 'selecw-find_deletion': check_warehouse_module,
+ "selec-find_deletion": check_not_warehouse_module,
+ "selecw-find_deletion": check_warehouse_module,
}
find_deletion_steps = [
- ('selec-find_deletion', forms.FindFormMultiSelection),
- ('selecw-find_deletion', forms.FindFormMultiSelectionWarehouseModule),
- ('final-find_deletion', forms.FindDeletionForm)]
+ ("selec-find_deletion", forms.FindFormMultiSelection),
+ ("selecw-find_deletion", forms.FindFormMultiSelectionWarehouseModule),
+ ("final-find_deletion", forms.FindDeletionForm),
+]
find_deletion_wizard = wizards.FindDeletionWizard.as_view(
find_deletion_steps,
condition_dict=find_deletion_condition_dict,
label=_("Find deletion"),
- url_name='find_deletion',)
+ url_name="find_deletion",
+)
def find_delete(request, pk):
- find = wizard_is_available(find_deletion_wizard, request,
- models.Find, pk)
+ find = wizard_is_available(find_deletion_wizard, request, models.Find, pk)
if not find:
return HttpResponseRedirect("/")
- key = 'selec-find_deletion'
+ key = "selec-find_deletion"
if get_current_profile().warehouse:
- key = 'selecw-find_deletion'
- wizards.FindDeletionWizard.session_set_value(
- request, key, 'pks', pk, reset=True)
+ key = "selecw-find_deletion"
+ wizards.FindDeletionWizard.session_set_value(request, key, "pks", pk, reset=True)
- step = 'final-find_deletion'
- return redirect(
- reverse('find_deletion', kwargs={'step': step}))
+ step = "final-find_deletion"
+ return redirect(reverse("find_deletion", kwargs={"step": step}))
autocomplete_objecttype = get_autocomplete_generic(models.ObjectType)
@@ -434,19 +465,18 @@ autocomplete_integritytype = get_autocomplete_generic(models.IntegrityType)
class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView):
- template_name = 'ishtar/form.html'
+ template_name = "ishtar/form.html"
model = models.FindBasket
form_class = forms.NewFindBasketForm
page_name = _("New basket")
def get_form_kwargs(self):
kwargs = super(NewFindBasketView, self).get_form_kwargs()
- kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk)
+ kwargs["user"] = IshtarUser.objects.get(pk=self.request.user.pk)
return kwargs
def get_success_url(self):
- return reverse('select_itemsinbasket',
- kwargs={'pk': self.object.pk})
+ return reverse("select_itemsinbasket", kwargs={"pk": self.object.pk})
def form_valid(self, form):
self.object = form.save()
@@ -456,54 +486,53 @@ class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView):
class OwnBasket(object):
def get_basket(self, user, pk):
try:
- return models.FindBasket.objects.filter(
- Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user)
- ).distinct().get(pk=pk)
+ return (
+ models.FindBasket.objects.filter(
+ Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user)
+ )
+ .distinct()
+ .get(pk=pk)
+ )
except models.FindBasket.DoesNotExist:
raise PermissionDenied
class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView):
- template_name = 'ishtar/form.html'
+ template_name = "ishtar/form.html"
form_class = forms.SelectFindBasketWriteForm
page_name = _("Manage items in basket")
def get_form_kwargs(self):
kwargs = super(SelectBasketForManagement, self).get_form_kwargs()
- kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk)
- if 'pk' in self.kwargs:
- kwargs['initial'].update({'basket': self.kwargs['pk']})
+ kwargs["user"] = IshtarUser.objects.get(pk=self.request.user.pk)
+ if "pk" in self.kwargs:
+ kwargs["initial"].update({"basket": self.kwargs["pk"]})
return kwargs
def get_success_url(self, basket):
- return reverse('select_itemsinbasket',
- kwargs={'pk': basket})
+ return reverse("select_itemsinbasket", kwargs={"pk": basket})
def form_valid(self, form):
- return HttpResponseRedirect(self.get_success_url(
- form.cleaned_data['basket']))
+ return HttpResponseRedirect(self.get_success_url(form.cleaned_data["basket"]))
-class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin,
- TemplateView):
- template_name = 'ishtar/manage_basket.html'
+class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin, TemplateView):
+ template_name = "ishtar/manage_basket.html"
page_name = _("Manage basket")
def get_context_data(self, *args, **kwargs):
- context = super(SelectItemsInBasket, self).get_context_data(
- *args, **kwargs)
+ context = super(SelectItemsInBasket, self).get_context_data(*args, **kwargs)
self.user = IshtarUser.objects.get(pk=self.request.user.pk)
- self.basket = self.get_basket(
- user=self.user, pk=self.kwargs['pk']
- )
- context['basket'] = self.basket
+ self.basket = self.get_basket(user=self.user, pk=self.kwargs["pk"])
+ context["basket"] = self.basket
if get_current_profile().warehouse:
- context['form'] = forms.MultipleFindFormSelectionWarehouseModule()
+ context["form"] = forms.MultipleFindFormSelectionWarehouseModule()
else:
- context['form'] = forms.MultipleFindFormSelection()
- context['add_url'] = reverse('add_iteminbasket')
- context['list_url'] = reverse('list_iteminbasket',
- kwargs={'pk': self.basket.pk})
+ context["form"] = forms.MultipleFindFormSelection()
+ context["add_url"] = reverse("add_iteminbasket")
+ context["list_url"] = reverse(
+ "list_iteminbasket", kwargs={"pk": self.basket.pk}
+ )
return context
def form_valid(self, form):
@@ -511,11 +540,11 @@ class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin,
class FindBasketAddItemView(IshtarMixin, LoginRequiredMixin, FormView):
- template_name = 'ishtar/simple_form.html'
+ template_name = "ishtar/simple_form.html"
form_class = forms.FindBasketAddItemForm
def get_success_url(self, basket):
- return reverse('list_iteminbasket', kwargs={'pk': basket.pk})
+ return reverse("list_iteminbasket", kwargs={"pk": basket.pk})
def form_valid(self, form):
user = IshtarUser.objects.get(pk=self.request.user.pk)
@@ -524,135 +553,146 @@ class FindBasketAddItemView(IshtarMixin, LoginRequiredMixin, FormView):
return HttpResponseRedirect(self.get_success_url(basket))
-class FindBasketListView(OwnBasket, IshtarMixin, LoginRequiredMixin,
- TemplateView):
- template_name = 'ishtar/basket_list.html'
+class FindBasketListView(OwnBasket, IshtarMixin, LoginRequiredMixin, TemplateView):
+ template_name = "ishtar/basket_list.html"
def get_context_data(self, *args, **kwargs):
- context = super(FindBasketListView, self).get_context_data(
- *args, **kwargs)
+ context = super(FindBasketListView, self).get_context_data(*args, **kwargs)
self.user = IshtarUser.objects.get(pk=self.request.user.pk)
- self.basket = self.get_basket(
- user=self.user, pk=self.kwargs['pk']
+ self.basket = self.get_basket(user=self.user, pk=self.kwargs["pk"])
+ context["basket"] = self.basket
+ context["item_url"] = "/".join(
+ reverse(models.Find.SHOW_URL, args=[1]).split("/")[:-1]
+ )
+ context["delete_url"] = "/".join(
+ reverse("delete_iteminbasket", args=[1, 1]).split("/")[:-3]
)
- context['basket'] = self.basket
- context['item_url'] = '/'.join(
- reverse(models.Find.SHOW_URL, args=[1]).split('/')[:-1])
- context['delete_url'] = '/'.join(
- reverse('delete_iteminbasket', args=[1, 1]).split('/')[:-3])
return context
-class FindBasketDeleteItemView(OwnBasket, IshtarMixin, LoginRequiredMixin,
- TemplateView):
- template_name = 'ishtar/simple_form.html'
+class FindBasketDeleteItemView(
+ OwnBasket, IshtarMixin, LoginRequiredMixin, TemplateView
+):
+ template_name = "ishtar/simple_form.html"
def get_success_url(self, basket):
- return reverse('list_iteminbasket', kwargs={'pk': basket.pk})
+ return reverse("list_iteminbasket", kwargs={"pk": basket.pk})
def get(self, *args, **kwargs):
user = self.request.user
ishtaruser = IshtarUser.objects.get(pk=self.request.user.pk)
try:
- find = models.Find.objects.get(
- pk=self.kwargs['find_pk'])
+ find = models.Find.objects.get(pk=self.kwargs["find_pk"])
except models.Find.DoesNotExist:
raise PermissionDenied
- basket = self.get_basket(
- user=ishtaruser, pk=self.kwargs['basket']
- )
- if not user.is_superuser and \
- not ishtaruser.has_right('view_find') and \
- not (ishtaruser.has_right('view_own_find')
- and find.is_own(user)):
+ basket = self.get_basket(user=ishtaruser, pk=self.kwargs["basket"])
+ if (
+ not user.is_superuser
+ and not ishtaruser.has_right("view_find")
+ and not (ishtaruser.has_right("view_own_find") and find.is_own(user))
+ ):
raise PermissionDenied
basket.items.remove(find)
return HttpResponseRedirect(self.get_success_url(basket))
+
get_upstreamtreatment = get_item(
- models.FindUpstreamTreatments, 'get_upstreamtreatment', 'uptreatment')
+ models.FindUpstreamTreatments, "get_upstreamtreatment", "uptreatment"
+)
get_downstreamtreatment = get_item(
- models.FindDownstreamTreatments, 'get_downstreamtreatment',
- 'downtreatment')
+ models.FindDownstreamTreatments, "get_downstreamtreatment", "downtreatment"
+)
treatment_wizard_steps = [
- ('selecfind-treatment_creation', forms.UpstreamFindFormSelection),
- ('file-treatment_creation', forms.TreatmentFormFileChoice),
- ('basetreatment-treatment_creation', forms.BaseTreatmentForm),
- ('final-treatment_creation', FinalForm)
+ ("selecfind-treatment_creation", forms.UpstreamFindFormSelection),
+ ("file-treatment_creation", forms.TreatmentFormFileChoice),
+ ("basetreatment-treatment_creation", forms.BaseTreatmentForm),
+ ("final-treatment_creation", FinalForm),
]
-treatment_search_wizard = wizards.TreatmentSearch.as_view([
- ('general-treatment_search', forms.TreatmentFormSelection)],
+treatment_search_wizard = wizards.TreatmentSearch.as_view(
+ [("general-treatment_search", forms.TreatmentFormSelection)],
label=_("Treatment search"),
- url_name='treatment_search',)
+ url_name="treatment_search",
+)
treatment_creation_wizard = wizards.TreatmentWizard.as_view(
treatment_wizard_steps,
label=_("New treatment"),
- url_name='treatment_creation',)
+ url_name="treatment_creation",
+)
treatment_n1_wizard_steps = [
- ('selecfind-treatment_creation_n1', forms.UpstreamFindFormSelection),
- ('file-treatment_creation_n1', forms.TreatmentFormFileChoice),
- ('basetreatment-treatment_creation_n1', forms.N1TreatmentForm),
- ('resultingfind-treatment_creation_n1', forms.ResultingFindForm),
- ('final-treatment_creation_n1', FinalForm)
+ ("selecfind-treatment_creation_n1", forms.UpstreamFindFormSelection),
+ ("file-treatment_creation_n1", forms.TreatmentFormFileChoice),
+ ("basetreatment-treatment_creation_n1", forms.N1TreatmentForm),
+ ("resultingfind-treatment_creation_n1", forms.ResultingFindForm),
+ ("final-treatment_creation_n1", FinalForm),
]
treatment_creation_n1_wizard = wizards.TreatmentN1Wizard.as_view(
treatment_n1_wizard_steps,
label=_("New treatment"),
- url_name='treatment_creation_n1',)
+ url_name="treatment_creation_n1",
+)
treatment_1n_wizard_steps = [
- ('selecfind-treatment_creation_1n', forms.SingleUpstreamFindFormSelection),
- ('file-treatment_creation_1n', forms.TreatmentFormFileChoice),
- ('basetreatment-treatment_creation_1n', forms.OneNTreatmentForm),
- ('resultingfinds-treatment_creation_1n', forms.ResultingFindsForm),
- ('final-treatment_creation_1n', FinalForm)
+ ("selecfind-treatment_creation_1n", forms.SingleUpstreamFindFormSelection),
+ ("file-treatment_creation_1n", forms.TreatmentFormFileChoice),
+ ("basetreatment-treatment_creation_1n", forms.OneNTreatmentForm),
+ ("resultingfinds-treatment_creation_1n", forms.ResultingFindsForm),
+ ("final-treatment_creation_1n", FinalForm),
]
treatment_creation_1n_wizard = wizards.Treatment1NWizard.as_view(
treatment_1n_wizard_steps,
label=_("New treatment"),
- url_name='treatment_creation_1n',)
+ url_name="treatment_creation_1n",
+)
treatment_modification_wizard = wizards.TreatmentModificationWizard.as_view(
- [('selec-treatment_modification', forms.TreatmentFormSelection),
- ('file-treatment_modification', forms.TreatmentFormFileChoice),
- ('basetreatment-treatment_modification', forms.TreatmentModifyForm),
- ('final-treatment_modification', FinalForm)],
+ [
+ ("selec-treatment_modification", forms.TreatmentFormSelection),
+ ("file-treatment_modification", forms.TreatmentFormFileChoice),
+ ("basetreatment-treatment_modification", forms.TreatmentModifyForm),
+ ("final-treatment_modification", FinalForm),
+ ],
label=_("Treatment modification"),
- url_name='treatment_modification',
+ url_name="treatment_modification",
)
def treatment_modify(request, pk):
- if not wizard_is_available(treatment_modification_wizard, request,
- models.Treatment, pk):
+ if not wizard_is_available(
+ treatment_modification_wizard, request, models.Treatment, pk
+ ):
return HttpResponseRedirect("/")
wizards.TreatmentModificationWizard.session_set_value(
- request, 'selec-treatment_modification', 'pk', pk, reset=True)
- return redirect(reverse(
- 'treatment_modification',
- kwargs={'step': 'file-treatment_modification'}))
+ request, "selec-treatment_modification", "pk", pk, reset=True
+ )
+ return redirect(
+ reverse(
+ "treatment_modification", kwargs={"step": "file-treatment_modification"}
+ )
+ )
def treatment_add(request, pks, treatment_file=None):
treatment_creation_wizard(request)
wizards.TreatmentWizard.session_set_value(
- request, 'selecfind-treatment_creation',
- 'resulting_pk', pks, reset=True)
+ request, "selecfind-treatment_creation", "resulting_pk", pks, reset=True
+ )
if treatment_file:
wizards.TreatmentWizard.session_set_value(
- request, 'file-treatment_creation', 'file', treatment_file.pk)
+ request, "file-treatment_creation", "file", treatment_file.pk
+ )
else:
wizards.TreatmentWizard.session_set_value(
- request, 'file-treatment_creation', 'file', '')
+ request, "file-treatment_creation", "file", ""
+ )
if treatment_file:
in_charge = treatment_file.in_charge
if not in_charge:
@@ -676,24 +716,29 @@ def treatment_add(request, pks, treatment_file=None):
dct["location"] = locas[0]
for k in dct:
wizards.TreatmentWizard.session_set_value(
- request, 'basetreatment-treatment_creation', k, dct[k])
- return redirect(reverse(
- 'treatment_creation',
- kwargs={'step': 'basetreatment-treatment_creation'}))
+ request, "basetreatment-treatment_creation", k, dct[k]
+ )
+ return redirect(
+ reverse(
+ "treatment_creation", kwargs={"step": "basetreatment-treatment_creation"}
+ )
+ )
def divide_treatment_add(request, pks, treatment_file=None):
treatment_creation_1n_wizard(request)
wizards.Treatment1NWizard.session_set_value(
- request, 'selecfind-treatment_creation_1n',
- 'resulting_pk', pks, reset=True)
+ request, "selecfind-treatment_creation_1n", "resulting_pk", pks, reset=True
+ )
if treatment_file:
wizards.Treatment1NWizard.session_set_value(
- request, 'file-treatment_creation_1n', 'file', treatment_file.pk)
+ request, "file-treatment_creation_1n", "file", treatment_file.pk
+ )
else:
wizards.Treatment1NWizard.session_set_value(
- request, 'file-treatment_creation_1n', 'file', '')
+ request, "file-treatment_creation_1n", "file", ""
+ )
if treatment_file:
in_charge = treatment_file.in_charge
if not in_charge:
@@ -717,10 +762,14 @@ def divide_treatment_add(request, pks, treatment_file=None):
dct["location"] = locas[0]
for k in dct:
wizards.Treatment1NWizard.session_set_value(
- request, 'basetreatment-treatment_creation_1n', k, dct[k])
- return redirect(reverse(
- 'treatment_creation_1n',
- kwargs={'step': 'basetreatment-treatment_creation_1n'}))
+ request, "basetreatment-treatment_creation_1n", k, dct[k]
+ )
+ return redirect(
+ reverse(
+ "treatment_creation_1n",
+ kwargs={"step": "basetreatment-treatment_creation_1n"},
+ )
+ )
def find_treatment_add(request, pk, current_right=None):
@@ -774,86 +823,111 @@ def treatmentfile_treatment_add(request, pk, current_right=None):
)
-treatment_deletion_wizard = wizards.TreatmentDeletionWizard.as_view([
- ('selec-treatment_deletion', forms.TreatmentFormSelection),
- ('final-treatment_deletion', forms.TreatmentDeletionForm)],
+treatment_deletion_wizard = wizards.TreatmentDeletionWizard.as_view(
+ [
+ ("selec-treatment_deletion", forms.TreatmentFormSelection),
+ ("final-treatment_deletion", forms.TreatmentDeletionForm),
+ ],
label=_("Treatment deletion"),
- url_name='treatment_deletion',)
+ url_name="treatment_deletion",
+)
def treatment_delete(request, pk):
- if not wizard_is_available(treatment_deletion_wizard, request,
- models.Treatment, pk):
+ if not wizard_is_available(
+ treatment_deletion_wizard, request, models.Treatment, pk
+ ):
return HttpResponseRedirect("/")
wizards.TreatmentDeletionWizard.session_set_value(
- request, 'selec-treatment_deletion', 'pk', pk, reset=True)
- return redirect(reverse(
- 'treatment_deletion',
- kwargs={'step': 'final-treatment_deletion'}))
-
-
-treatment_administrativeact_search_wizard = \
- wizards.SearchWizard.as_view([
- ('selec-treatment_admacttreatment_search',
- forms.AdministrativeActTreatmentFormSelection)],
- label=_("Treatment: search administrative act"),
- url_name='treatment_admacttreatment_search',)
-
-treatment_administrativeact_wizard = \
- wizards.TreatmentAdministrativeActWizard.as_view([
- ('selec-treatment_admacttreatment', forms.TreatmentFormSelection),
- ('administrativeact-treatment_admacttreatment',
- forms.AdministrativeActTreatmentForm),
- ('final-treatment_admacttreatment', FinalForm)],
- label=_("Treatment: new administrative act"),
- url_name='treatment_admacttreatment',)
-
-treatment_administrativeact_modification_wizard = \
- wizards.TreatmentEditAdministrativeActWizard.as_view([
- ('selec-treatment_admacttreatment_modification',
- forms.AdministrativeActTreatmentFormSelection),
- ('administrativeact-treatment_admacttreatment_modification',
- forms.AdministrativeActTreatmentModifForm),
- ('final-treatment_admacttreatment_modification', FinalForm)],
+ request, "selec-treatment_deletion", "pk", pk, reset=True
+ )
+ return redirect(
+ reverse("treatment_deletion", kwargs={"step": "final-treatment_deletion"})
+ )
+
+
+treatment_administrativeact_search_wizard = wizards.SearchWizard.as_view(
+ [
+ (
+ "selec-treatment_admacttreatment_search",
+ forms.AdministrativeActTreatmentFormSelection,
+ )
+ ],
+ label=_("Treatment: search administrative act"),
+ url_name="treatment_admacttreatment_search",
+)
+
+treatment_administrativeact_wizard = wizards.TreatmentAdministrativeActWizard.as_view(
+ [
+ ("selec-treatment_admacttreatment", forms.TreatmentFormSelection),
+ (
+ "administrativeact-treatment_admacttreatment",
+ forms.AdministrativeActTreatmentForm,
+ ),
+ ("final-treatment_admacttreatment", FinalForm),
+ ],
+ label=_("Treatment: new administrative act"),
+ url_name="treatment_admacttreatment",
+)
+
+treatment_administrativeact_modification_wizard = (
+ wizards.TreatmentEditAdministrativeActWizard.as_view(
+ [
+ (
+ "selec-treatment_admacttreatment_modification",
+ forms.AdministrativeActTreatmentFormSelection,
+ ),
+ (
+ "administrativeact-treatment_admacttreatment_modification",
+ forms.AdministrativeActTreatmentModifForm,
+ ),
+ ("final-treatment_admacttreatment_modification", FinalForm),
+ ],
label=_("Treatment: administrative act modification"),
- url_name='treatment_admacttreatment_modification',)
+ url_name="treatment_admacttreatment_modification",
+ )
+)
def treatment_administrativeacttreatment_modify(request, pk):
- if not wizard_is_available(treatment_administrativeact_modification_wizard,
- request, AdministrativeAct, pk):
+ if not wizard_is_available(
+ treatment_administrativeact_modification_wizard, request, AdministrativeAct, pk
+ ):
return HttpResponseRedirect("/")
wizards.TreatmentEditAdministrativeActWizard.session_set_value(
- request,
- 'selec-treatment_admacttreatment_modification',
- 'pk', pk, reset=True)
+ request, "selec-treatment_admacttreatment_modification", "pk", pk, reset=True
+ )
return redirect(
reverse(
- 'treatment_admacttreatment_modification',
- kwargs={
- 'step':
- 'administrativeact-treatment_admacttreatment_modification'
- }))
-
-treatment_admacttreatment_deletion_wizard = \
- AdministrativeActDeletionWizard.as_view([
- ('selec-treatment_admacttreatment_deletion',
- forms.AdministrativeActTreatmentFormSelection),
- ('final-treatment_admacttreatment_deletion',
- FinalAdministrativeActDeleteForm)],
- label=_("Treatment: administrative act deletion"),
- url_name='treatment_admacttreatment_deletion',)
+ "treatment_admacttreatment_modification",
+ kwargs={"step": "administrativeact-treatment_admacttreatment_modification"},
+ )
+ )
+
+
+treatment_admacttreatment_deletion_wizard = AdministrativeActDeletionWizard.as_view(
+ [
+ (
+ "selec-treatment_admacttreatment_deletion",
+ forms.AdministrativeActTreatmentFormSelection,
+ ),
+ ("final-treatment_admacttreatment_deletion", FinalAdministrativeActDeleteForm),
+ ],
+ label=_("Treatment: administrative act deletion"),
+ url_name="treatment_admacttreatment_deletion",
+)
def treatment_administrativeacttreatment_delete(request, pk):
- if not wizard_is_available(treatment_admacttreatment_deletion_wizard,
- request, AdministrativeAct, pk):
+ if not wizard_is_available(
+ treatment_admacttreatment_deletion_wizard, request, AdministrativeAct, pk
+ ):
return HttpResponseRedirect("/")
wizard_url = "treatment_admacttreatment_deletion"
AdministrativeActDeletionWizard.session_set_value(
- request, 'selec-' + wizard_url, 'pk', pk, reset=True)
- return redirect(
- reverse(wizard_url, kwargs={'step': 'final-' + wizard_url}))
+ request, "selec-" + wizard_url, "pk", pk, reset=True
+ )
+ return redirect(reverse(wizard_url, kwargs={"step": "final-" + wizard_url}))
def treatment_adminact_add(request, pk, current_right=None):
@@ -864,125 +938,169 @@ def treatment_adminact_add(request, pk, current_right=None):
treatment_administrativeact_wizard(request)
wizards.TreatmentAdministrativeActWizard.session_set_value(
- request, 'selec-treatment_admacttreatment', 'pk', pk, reset=True)
- return redirect(reverse(
- 'treatment_admacttreatment',
- kwargs={'step': 'administrativeact-treatment_admacttreatment'}))
+ request, "selec-treatment_admacttreatment", "pk", pk, reset=True
+ )
+ return redirect(
+ reverse(
+ "treatment_admacttreatment",
+ kwargs={"step": "administrativeact-treatment_admacttreatment"},
+ )
+ )
# treatment request
-treatmentfile_search_wizard = wizards.TreatmentFileSearch.as_view([
- ('general-treatmentfile_search', forms.TreatmentFileFormSelection)],
+treatmentfile_search_wizard = wizards.TreatmentFileSearch.as_view(
+ [("general-treatmentfile_search", forms.TreatmentFileFormSelection)],
label=_("Treatment request search"),
- url_name='treatmentfile_search',)
+ url_name="treatmentfile_search",
+)
treatmentfile_wizard_steps = [
- ('treatmentfile-treatmentfile_creation', forms.TreatmentFileForm),
- ('final-treatmentfile_creation', FinalForm)]
+ ("treatmentfile-treatmentfile_creation", forms.TreatmentFileForm),
+ ("final-treatmentfile_creation", FinalForm),
+]
treatmentfile_creation_wizard = wizards.TreatmentFileWizard.as_view(
treatmentfile_wizard_steps,
label=_("New treatment request"),
- url_name='treatmentfile_creation',)
-
-treatmentfile_modification_wizard = \
- wizards.TreatmentFileModificationWizard.as_view(
- [('selec-treatmentfile_modification', forms.TreatmentFileFormSelection),
- ('treatmentfile-treatmentfile_modification',
- forms.TreatmentFileModifyForm),
- ('final-treatmentfile_modification', FinalForm)],
- label=_("Treatment request modification"),
- url_name='treatmentfile_modification',
- )
+ url_name="treatmentfile_creation",
+)
+
+treatmentfile_modification_wizard = wizards.TreatmentFileModificationWizard.as_view(
+ [
+ ("selec-treatmentfile_modification", forms.TreatmentFileFormSelection),
+ ("treatmentfile-treatmentfile_modification", forms.TreatmentFileModifyForm),
+ ("final-treatmentfile_modification", FinalForm),
+ ],
+ label=_("Treatment request modification"),
+ url_name="treatmentfile_modification",
+)
def treatmentfile_modify(request, pk):
- if not wizard_is_available(treatmentfile_modification_wizard, request,
- models.TreatmentFile, pk):
+ if not wizard_is_available(
+ treatmentfile_modification_wizard, request, models.TreatmentFile, pk
+ ):
return HttpResponseRedirect("/")
wizards.TreatmentFileModificationWizard.session_set_value(
- request, 'selec-treatmentfile_modification', 'pk', pk, reset=True)
- return redirect(reverse(
- 'treatmentfile_modification',
- kwargs={'step': 'treatmentfile-treatmentfile_modification'}))
+ request, "selec-treatmentfile_modification", "pk", pk, reset=True
+ )
+ return redirect(
+ reverse(
+ "treatmentfile_modification",
+ kwargs={"step": "treatmentfile-treatmentfile_modification"},
+ )
+ )
def treatmentfile_add(request, basket_pk=None):
treatmentfile_creation_wizard(request)
wizards.TreatmentFileWizard.session_set_value(
- request, 'treatmentfile-treatmentfile_creation',
- 'associated_basket', basket_pk, reset=True)
- url = reverse('treatmentfile_creation',
- kwargs={'step': 'treatmentfile-treatmentfile_creation'})
+ request,
+ "treatmentfile-treatmentfile_creation",
+ "associated_basket",
+ basket_pk,
+ reset=True,
+ )
+ url = reverse(
+ "treatmentfile_creation",
+ kwargs={"step": "treatmentfile-treatmentfile_creation"},
+ )
url += "?associated_basket={}".format(basket_pk)
return redirect(url)
-treatmentfile_deletion_wizard = wizards.TreatmentFileDeletionWizard.as_view([
- ('selec-treatmentfile_deletion', forms.TreatmentFileFormSelectionMultiple),
- ('final-treatmentfile_deletion', forms.TreatmentFileDeletionForm)],
+treatmentfile_deletion_wizard = wizards.TreatmentFileDeletionWizard.as_view(
+ [
+ ("selec-treatmentfile_deletion", forms.TreatmentFileFormSelectionMultiple),
+ ("final-treatmentfile_deletion", forms.TreatmentFileDeletionForm),
+ ],
label=_("Treatment request deletion"),
- url_name='treatmentfile_deletion',)
+ url_name="treatmentfile_deletion",
+)
def treatmentfile_delete(request, pk):
- if not wizard_is_available(treatmentfile_deletion_wizard,
- request, models.TreatmentFile, pk):
+ if not wizard_is_available(
+ treatmentfile_deletion_wizard, request, models.TreatmentFile, pk
+ ):
return HttpResponseRedirect("/")
wizard_url = "treatmentfile_deletion"
wizards.TreatmentFileDeletionWizard.session_set_value(
- request, 'selec-' + wizard_url, 'pks', pk, reset=True)
- return redirect(
- reverse(wizard_url, kwargs={'step': 'final-' + wizard_url}))
+ request, "selec-" + wizard_url, "pks", pk, reset=True
+ )
+ return redirect(reverse(wizard_url, kwargs={"step": "final-" + wizard_url}))
-treatmentfile_admacttreatmentfile_search_wizard = \
- wizards.SearchWizard.as_view([
- ('selec-treatmentfle_admacttreatmentfle_search',
- forms.AdministrativeActTreatmentFileFormSelection)],
- label=_("Treatment request: search administrative act"),
- url_name='treatmentfle_admacttreatmentfle_search',)
+treatmentfile_admacttreatmentfile_search_wizard = wizards.SearchWizard.as_view(
+ [
+ (
+ "selec-treatmentfle_admacttreatmentfle_search",
+ forms.AdministrativeActTreatmentFileFormSelection,
+ )
+ ],
+ label=_("Treatment request: search administrative act"),
+ url_name="treatmentfle_admacttreatmentfle_search",
+)
-treatmentfile_admacttreatmentfile_wizard = \
- wizards.TreatmentFileAdministrativeActWizard.as_view([
- ('selec-treatmentfle_admacttreatmentfle',
- forms.TreatmentFileFormSelection),
- ('admact-treatmentfle_admacttreatmentfle',
- forms.AdministrativeActTreatmentFileForm),
- ('final-treatmentfle_admacttreatmentfle', FinalForm)],
+treatmentfile_admacttreatmentfile_wizard = (
+ wizards.TreatmentFileAdministrativeActWizard.as_view(
+ [
+ ("selec-treatmentfle_admacttreatmentfle", forms.TreatmentFileFormSelection),
+ (
+ "admact-treatmentfle_admacttreatmentfle",
+ forms.AdministrativeActTreatmentFileForm,
+ ),
+ ("final-treatmentfle_admacttreatmentfle", FinalForm),
+ ],
label=_("Treatment request: new administrative act"),
- url_name='treatmentfle_admacttreatmentfle',)
-
-treatmentfile_admacttreatmentfile_modification_wizard = \
- wizards.TreatmentFileEditAdministrativeActWizard.as_view([
- ('selec-treatmentfle_admacttreatmentfle_modification',
- forms.AdministrativeActTreatmentFileFormSelection),
- ('admact-treatmentfle_admacttreatmentfle_modification',
- forms.AdministrativeActTreatmentFileModifForm),
- ('final-treatmentfle_admacttreatmentfle_modification', FinalForm)],
+ url_name="treatmentfle_admacttreatmentfle",
+ )
+)
+
+treatmentfile_admacttreatmentfile_modification_wizard = (
+ wizards.TreatmentFileEditAdministrativeActWizard.as_view(
+ [
+ (
+ "selec-treatmentfle_admacttreatmentfle_modification",
+ forms.AdministrativeActTreatmentFileFormSelection,
+ ),
+ (
+ "admact-treatmentfle_admacttreatmentfle_modification",
+ forms.AdministrativeActTreatmentFileModifForm,
+ ),
+ ("final-treatmentfle_admacttreatmentfle_modification", FinalForm),
+ ],
label=_("Treatment request: administrative act modification"),
- url_name='treatmentfle_admacttreatmentfle_modification',)
+ url_name="treatmentfle_admacttreatmentfle_modification",
+ )
+)
def treatmentfile_administrativeacttreatmentfile_modify(request, pk):
if not wizard_is_available(
- treatmentfile_admacttreatmentfile_modification_wizard,
- request, AdministrativeAct, pk):
+ treatmentfile_admacttreatmentfile_modification_wizard,
+ request,
+ AdministrativeAct,
+ pk,
+ ):
return HttpResponseRedirect("/")
wizards.TreatmentFileEditAdministrativeActWizard.session_set_value(
request,
- 'selec-treatmentfle_admacttreatmentfle_modification',
- 'pk', pk, reset=True)
+ "selec-treatmentfle_admacttreatmentfle_modification",
+ "pk",
+ pk,
+ reset=True,
+ )
return redirect(
reverse(
- 'treatmentfle_admacttreatmentfle_modification',
- kwargs={
- 'step':
- 'admact-treatmentfle_admacttreatmentfle_modification'
- }))
+ "treatmentfle_admacttreatmentfle_modification",
+ kwargs={"step": "admact-treatmentfle_admacttreatmentfle_modification"},
+ )
+ )
def treatmentfile_adminact_add(request, pk, current_right=None):
@@ -993,59 +1111,75 @@ def treatmentfile_adminact_add(request, pk, current_right=None):
treatmentfile_admacttreatmentfile_wizard(request)
wizards.TreatmentFileAdministrativeActWizard.session_set_value(
- request, 'selec-treatmentfle_admacttreatmentfle', 'pk', pk, reset=True)
- return redirect(reverse(
- 'treatmentfle_admacttreatmentfle',
- kwargs={'step': 'admact-treatmentfle_admacttreatmentfle'}))
-
-
-treatmentfile_admacttreatmentfile_deletion_wizard = \
- AdministrativeActDeletionWizard.as_view([
- ('selec-treatmentfle_admacttreatmentfle_deletion',
- forms.AdministrativeActTreatmentFileFormSelection),
- ('final-treatmentfle_admacttreatmentfle_deletion',
- FinalAdministrativeActDeleteForm)],
+ request, "selec-treatmentfle_admacttreatmentfle", "pk", pk, reset=True
+ )
+ return redirect(
+ reverse(
+ "treatmentfle_admacttreatmentfle",
+ kwargs={"step": "admact-treatmentfle_admacttreatmentfle"},
+ )
+ )
+
+
+treatmentfile_admacttreatmentfile_deletion_wizard = (
+ AdministrativeActDeletionWizard.as_view(
+ [
+ (
+ "selec-treatmentfle_admacttreatmentfle_deletion",
+ forms.AdministrativeActTreatmentFileFormSelection,
+ ),
+ (
+ "final-treatmentfle_admacttreatmentfle_deletion",
+ FinalAdministrativeActDeleteForm,
+ ),
+ ],
label=_("Treatment request: administrative act deletion"),
- url_name='treatmentfle_admacttreatmentfle_deletion',)
+ url_name="treatmentfle_admacttreatmentfle_deletion",
+ )
+)
def treatmentfile_administrativeacttreatmentfile_delete(request, pk):
if not wizard_is_available(
- treatmentfile_admacttreatmentfile_deletion_wizard, request,
- AdministrativeAct, pk):
+ treatmentfile_admacttreatmentfile_deletion_wizard,
+ request,
+ AdministrativeAct,
+ pk,
+ ):
return HttpResponseRedirect("/")
wizard_url = "treatmentfle_admacttreatmentfle_deletion"
AdministrativeActDeletionWizard.session_set_value(
- request, 'selec-' + wizard_url, 'pk', pk, reset=True)
- return redirect(
- reverse(wizard_url, kwargs={'step': 'final-' + wizard_url}))
+ request, "selec-" + wizard_url, "pk", pk, reset=True
+ )
+ return redirect(reverse(wizard_url, kwargs={"step": "final-" + wizard_url}))
def reset_wizards(request):
for wizard_class, url_name in (
- (wizards.FindWizard, 'find_creation'),
- (wizards.FindModificationWizard, 'find_modification'),
- (wizards.FindDeletionWizard, 'find_deletion'),
- (wizards.TreatmentWizard, 'treatement_creation'),
- (wizards.TreatmentModificationWizard, 'treatment_modification'),
- (wizards.TreatmentDeletionWizard, 'treatment_deletion'),
- (wizards.TreatmentAdministrativeActWizard,
- 'treatment_admacttreatment'),
- (wizards.TreatmentEditAdministrativeActWizard,
- 'treatment_admacttreatment_modification'),
- (wizards.TreatmentDeletionWizard,
- 'treatment_admacttreatment_deletion'),
- (wizards.TreatmentFileWizard,
- 'treatmentfile_creation'),
- (wizards.TreatmentFileModificationWizard,
- 'treatmentfile_modification'),
- (wizards.TreatmentFileDeletionWizard, 'treatmentfile_deletion'),
- (wizards.TreatmentFileAdministrativeActWizard,
- 'treatmentfle_admacttreatmentfle'),
- (wizards.TreatmentFileEditAdministrativeActWizard,
- 'treatmentfle_admacttreatmentfle_modification'),
- (AdministrativeActDeletionWizard,
- 'treatmentfle_admacttreatmentfle_deletion'),
+ (wizards.FindWizard, "find_creation"),
+ (wizards.FindModificationWizard, "find_modification"),
+ (wizards.FindDeletionWizard, "find_deletion"),
+ (wizards.TreatmentWizard, "treatement_creation"),
+ (wizards.TreatmentModificationWizard, "treatment_modification"),
+ (wizards.TreatmentDeletionWizard, "treatment_deletion"),
+ (wizards.TreatmentAdministrativeActWizard, "treatment_admacttreatment"),
+ (
+ wizards.TreatmentEditAdministrativeActWizard,
+ "treatment_admacttreatment_modification",
+ ),
+ (wizards.TreatmentDeletionWizard, "treatment_admacttreatment_deletion"),
+ (wizards.TreatmentFileWizard, "treatmentfile_creation"),
+ (wizards.TreatmentFileModificationWizard, "treatmentfile_modification"),
+ (wizards.TreatmentFileDeletionWizard, "treatmentfile_deletion"),
+ (
+ wizards.TreatmentFileAdministrativeActWizard,
+ "treatmentfle_admacttreatmentfle",
+ ),
+ (
+ wizards.TreatmentFileEditAdministrativeActWizard,
+ "treatmentfle_admacttreatmentfle_modification",
+ ),
+ (AdministrativeActDeletionWizard, "treatmentfle_admacttreatmentfle_deletion"),
):
wizard_class.session_reset(request, url_name)
@@ -1053,11 +1187,11 @@ def reset_wizards(request):
class QAFindForm(QAItemEditForm):
model = models.Find
form_class = forms.QAFindFormMulti
- template_name = 'ishtar/forms/qa_find_edit_form.html'
+ template_name = "ishtar/forms/qa_find_edit_form.html"
class QAFindBasketFormView(QAItemForm):
- template_name = 'ishtar/forms/qa_find_basket.html'
+ template_name = "ishtar/forms/qa_find_basket.html"
model = models.Find
form_class = forms.QAFindBasketForm
page_name = _("Basket")
@@ -1066,7 +1200,7 @@ class QAFindBasketFormView(QAItemForm):
def get_form_kwargs(self):
kwargs = super(QAFindBasketFormView, self).get_form_kwargs()
- kwargs['user'] = self.request.user
+ kwargs["user"] = self.request.user
return kwargs
def form_valid(self, form):
@@ -1075,7 +1209,7 @@ class QAFindBasketFormView(QAItemForm):
class QAFindDuplicateFormView(QAItemForm):
- template_name = 'ishtar/forms/qa_find_duplicate.html'
+ template_name = "ishtar/forms/qa_find_duplicate.html"
model = models.Find
page_name = _("Duplicate")
form_class = forms.QAFindDuplicateForm
@@ -1083,7 +1217,7 @@ class QAFindDuplicateFormView(QAItemForm):
def get_form_kwargs(self):
kwargs = super(QAFindDuplicateFormView, self).get_form_kwargs()
- kwargs['user'] = self.request.user
+ kwargs["user"] = self.request.user
return kwargs
def form_valid(self, form):
@@ -1091,18 +1225,17 @@ class QAFindDuplicateFormView(QAItemForm):
return HttpResponseRedirect(reverse("success"))
def get_context_data(self, **kwargs):
- data = super(QAFindDuplicateFormView, self).get_context_data(
- **kwargs)
- data['action_name'] = _("Duplicate")
+ data = super(QAFindDuplicateFormView, self).get_context_data(**kwargs)
+ data["action_name"] = _("Duplicate")
bf = self.items[0].get_first_base_find()
if bf:
- data['context_record'] = bf.context_record
- data['operation'] = bf.context_record.operation
+ data["context_record"] = bf.context_record
+ data["operation"] = bf.context_record.operation
return data
class QAFindTreatmentFormView(QAItemForm):
- template_name = 'ishtar/forms/qa_find_treatment.html'
+ template_name = "ishtar/forms/qa_find_treatment.html"
model = models.Find
form_class = forms.QAFindTreatmentForm
page_name = _("Packaging")
@@ -1110,7 +1243,8 @@ class QAFindTreatmentFormView(QAItemForm):
def dispatch(self, request, *args, **kwargs):
returned = super(QAFindTreatmentFormView, self).dispatch(
- request, *args, **kwargs)
+ request, *args, **kwargs
+ )
for item in self.items:
if item.is_locked(request.user):
return HttpResponseRedirect(reverse("qa-not-available"))
@@ -1118,8 +1252,8 @@ class QAFindTreatmentFormView(QAItemForm):
def get_form_kwargs(self):
kwargs = super(QAFindTreatmentFormView, self).get_form_kwargs()
- kwargs['user'] = self.request.user
- kwargs['prefix'] = "qa-packaging"
+ kwargs["user"] = self.request.user
+ kwargs["prefix"] = "qa-packaging"
return kwargs
def form_valid(self, form):
@@ -1128,7 +1262,7 @@ class QAFindTreatmentFormView(QAItemForm):
class QAFindbasketDuplicateFormView(QAItemForm):
- template_name = 'ishtar/forms/qa_findbasket_duplicate.html'
+ template_name = "ishtar/forms/qa_findbasket_duplicate.html"
model = models.FindBasket
page_name = _("Duplicate")
modal_size = "small"
@@ -1137,7 +1271,7 @@ class QAFindbasketDuplicateFormView(QAItemForm):
def get_form_kwargs(self):
kwargs = super(QAFindbasketDuplicateFormView, self).get_form_kwargs()
- kwargs['user'] = self.request.user
+ kwargs["user"] = self.request.user
return kwargs
def form_valid(self, form):
@@ -1145,9 +1279,8 @@ class QAFindbasketDuplicateFormView(QAItemForm):
return HttpResponseRedirect(reverse("success"))
def get_context_data(self, **kwargs):
- data = super(QAFindbasketDuplicateFormView, self).get_context_data(
- **kwargs)
- data['action_name'] = _("Duplicate")
+ data = super(QAFindbasketDuplicateFormView, self).get_context_data(**kwargs)
+ data["action_name"] = _("Duplicate")
return data
@@ -1166,22 +1299,24 @@ class PublicFindAPI(APIView):
if not basket_slug:
return empty
try:
- basket = models.FindBasket.objects.get(
- slug=basket_slug, public=True)
+ basket = models.FindBasket.objects.get(slug=basket_slug, public=True)
except models.FindBasket.DoesNotExist:
return empty
- q = models.FindBasket.items.through.objects.filter(
- findbasket_id=basket.id).values("find_id").order_by("id")
+ q = (
+ models.FindBasket.items.through.objects.filter(findbasket_id=basket.id)
+ .values("find_id")
+ .order_by("id")
+ )
id_list = [bi["find_id"] for bi in q]
- clauses = ' '.join(
- 'WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(id_list)
+ clauses = " ".join(
+ "WHEN id=%s THEN %s" % (pk, i) for i, pk in enumerate(id_list)
)
- ordering = 'CASE {} END'.format(clauses)
+ ordering = "CASE {} END".format(clauses)
return models.Find.objects.filter(id__in=id_list).extra(
- select={'ordering': ordering}, order_by=('ordering',))
+ select={"ordering": ordering}, order_by=("ordering",)
+ )
def get(self, request, format=None):
serializer = PublicSerializer(self.get_queryset(), many=True)
return Response(serializer.data)
-
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index d49529bf8..c4c191e4e 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
@@ -22,8 +22,12 @@ from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from ishtar_common.utils import ugettext_lazy as _, pgettext
from ishtar_common.forms import reverse_lazy
-from ishtar_common.wizards import Wizard, DeletionWizard, SearchWizard, \
- MultipleDeletionWizard
+from ishtar_common.wizards import (
+ Wizard,
+ DeletionWizard,
+ SearchWizard,
+ MultipleDeletionWizard,
+)
from archaeological_operations.wizards import OperationAdministrativeActWizard
from archaeological_operations.models import AdministrativeAct
@@ -37,19 +41,19 @@ class FindSearch(SearchWizard):
class FindWizard(Wizard):
model = models.Find
- wizard_done_window = reverse_lazy('show-find')
+ wizard_done_window = reverse_lazy("show-find")
redirect_url = "find_modification"
def get_current_contextrecord(self):
step = self.steps.current
if not step:
return
- if step.endswith('_creation'): # a context record has been selected
- main_form_key = 'selecrecord-' + self.url_name
+ if step.endswith("_creation"): # a context record has been selected
+ main_form_key = "selecrecord-" + self.url_name
try:
- idx = int(self.session_get_value(main_form_key, 'pk'))
+ idx = int(self.session_get_value(main_form_key, "pk"))
return ContextRecord.objects.get(pk=idx)
- except(TypeError, ValueError, ObjectDoesNotExist):
+ except (TypeError, ValueError, ObjectDoesNotExist):
pass
current_item = self.get_current_object()
if current_item:
@@ -66,12 +70,14 @@ class FindWizard(Wizard):
def get_form_kwargs(self, step=None):
kwargs = super(FindWizard, self).get_form_kwargs(step)
if step not in (
- 'find-find_creation', 'find-find_modification',
- 'simplefind-find_modification',):
+ "find-find_creation",
+ "find-find_modification",
+ "simplefind-find_modification",
+ ):
return kwargs
- kwargs['context_record'] = self.get_current_contextrecord()
- if step == 'simplefind-find_modification':
- kwargs['base_finds'] = self.get_current_basefinds()
+ kwargs["context_record"] = self.get_current_contextrecord()
+ if step == "simplefind-find_modification":
+ kwargs["base_finds"] = self.get_current_basefinds()
return kwargs
def get_context_data(self, form, **kwargs):
@@ -80,42 +86,57 @@ class FindWizard(Wizard):
"""
context = super(FindWizard, self).get_context_data(form, **kwargs)
current_cr = self.get_current_contextrecord()
- if not current_cr or self.steps.current.startswith('select-'):
+ if not current_cr or self.steps.current.startswith("select-"):
return context
- context['reminders'] = (
+ context["reminders"] = (
(_("Operation"), str(current_cr.operation)),
- (_("Context record"), str(current_cr)))
+ (_("Context record"), str(current_cr)),
+ )
return context
def get_extra_model(self, dct, m2m, form_list):
dct = super(FindWizard, self).get_extra_model(dct, m2m, form_list)
- dct['order'] = 1
- if 'pk' in dct and type(dct['pk']) == ContextRecord:
- dct['base_finds__context_record'] = dct.pop('pk')
+ dct["order"] = 1
+ if "pk" in dct and type(dct["pk"]) == ContextRecord:
+ dct["base_finds__context_record"] = dct.pop("pk")
return dct
class FindModificationWizard(FindWizard):
modification = True
- main_item_select_keys = ('selec-', 'selecw-')
+ main_item_select_keys = ("selec-", "selecw-")
filter_owns = {
- 'selec-find_modification': ['pk'],
- 'selecw-find_modification': ['pk'],
+ "selec-find_modification": ["pk"],
+ "selecw-find_modification": ["pk"],
}
wizard_templates = {
- 'simplefind-find_modification':
- 'ishtar/wizard/wizard_simplefind.html',
+ "simplefind-find_modification": "ishtar/wizard/wizard_simplefind.html",
}
class FindDeletionWizard(MultipleDeletionWizard):
model = models.Find
- main_item_select_keys = ('selec-', 'selecw-')
- fields = ['label', 'material_types', 'datings', 'find_number',
- 'object_types', 'description', 'conservatory_state', 'mark',
- 'preservation_to_considers', 'integrities', 'remarkabilities',
- 'volume', 'weight', 'length', 'width', 'height', 'diameter',
- 'comment']
+ main_item_select_keys = ("selec-", "selecw-")
+ fields = [
+ "label",
+ "material_types",
+ "datings",
+ "find_number",
+ "object_types",
+ "description",
+ "conservatory_state",
+ "mark",
+ "preservation_to_considers",
+ "integrities",
+ "remarkabilities",
+ "volume",
+ "weight",
+ "length",
+ "width",
+ "height",
+ "diameter",
+ "comment",
+ ]
redirect_url = "find_deletion"
@@ -125,7 +146,7 @@ class TreatmentSearch(SearchWizard):
class TreatmentBase(Wizard):
model = models.Treatment
- wizard_done_window = reverse_lazy('show-treatment')
+ wizard_done_window = reverse_lazy("show-treatment")
base_url = ""
saved_args = {"treatment_type_list": []}
redirect_url = "treatment_search"
@@ -134,55 +155,54 @@ class TreatmentBase(Wizard):
step = self.steps.current
if not step:
return
- find_form_key = 'selecfind-' + self.base_url
+ find_form_key = "selecfind-" + self.base_url
find_ids = self.session_get_value(find_form_key, "resulting_pk")
try:
return [
models.Find.objects.get(pk=int(find_id.strip()))
- for find_id in find_ids.split(',')
+ for find_id in find_ids.split(",")
]
- except(TypeError, ValueError, AttributeError, ObjectDoesNotExist):
+ except (TypeError, ValueError, AttributeError, ObjectDoesNotExist):
pass
def get_form_initial(self, step, data=None):
initial = super(TreatmentBase, self).get_form_initial(step)
- base_step = 'basetreatment-' + self.base_url
+ base_step = "basetreatment-" + self.base_url
if step != base_step:
return initial
finds = self.get_current_finds()
if not finds:
return initial
- locations = [find.container.location.pk for find in finds
- if find.container]
+ locations = [find.container.location.pk for find in finds if find.container]
# no location or multiple locations
if not locations or len(set(locations)) != 1:
return initial
if not initial:
initial = {}
- initial['location'] = locations[0]
+ initial["location"] = locations[0]
return initial
def get_extra_model(self, dct, m2m, form_list):
dct = super(TreatmentBase, self).get_extra_model(dct, m2m, form_list)
- dct['treatment_type_list'] = []
+ dct["treatment_type_list"] = []
for k, v in m2m:
- if k == 'treatment_type':
+ if k == "treatment_type":
if type(v) not in (list, tuple):
v = [v]
- dct['treatment_type_list'] += v
+ dct["treatment_type_list"] += v
return dct
class TreatmentWizard(TreatmentBase):
- basket_step = 'basetreatment-treatment_creation'
+ basket_step = "basetreatment-treatment_creation"
saved_args = {"items": [], "treatment_type_list": []}
- base_url = 'treatment_creation'
+ base_url = "treatment_creation"
def get_form_kwargs(self, step, **kwargs):
kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs)
if self.basket_step not in step:
return kwargs
- kwargs['user'] = self.request.user
+ kwargs["user"] = self.request.user
return kwargs
def get_extra_model(self, dct, m2m, form_list):
@@ -190,13 +210,13 @@ class TreatmentWizard(TreatmentBase):
Get items concerned by the treatment
"""
dct = super(TreatmentWizard, self).get_extra_model(dct, m2m, form_list)
- if 'resulting_pk' in dct:
- dct['items'] = []
- pks = dct.pop('resulting_pk')
+ if "resulting_pk" in dct:
+ dct["items"] = []
+ pks = dct.pop("resulting_pk")
if isinstance(pks, models.Find):
pks = [pks]
if not isinstance(pks, (list, tuple)):
- pks = str(pks).split(',')
+ pks = str(pks).split(",")
for pk in pks:
if isinstance(pk, models.Find):
@@ -206,17 +226,18 @@ class TreatmentWizard(TreatmentBase):
find = models.Find.objects.get(pk=pk)
except models.Find.DoesNotExist:
raise PermissionDenied
- dct['items'].append(find)
- if 'basket' in dct:
- basket = dct.pop('basket')
- if basket.user.pk != dct['history_modifier'].pk:
+ dct["items"].append(find)
+ if "basket" in dct:
+ basket = dct.pop("basket")
+ if basket.user.pk != dct["history_modifier"].pk:
raise PermissionDenied
- dct['items'] = list(basket.items.all())
+ dct["items"] = list(basket.items.all())
- if 'items' in dct:
- for find in dct['items']:
- if 'own' in self.current_right \
- and not find.is_own(dct['history_modifier']):
+ if "items" in dct:
+ for find in dct["items"]:
+ if "own" in self.current_right and not find.is_own(
+ dct["history_modifier"]
+ ):
raise PermissionDenied
return dct
@@ -226,9 +247,12 @@ class TreatmentModificationWizard(TreatmentWizard):
class TreatmentN1Wizard(TreatmentBase):
- saved_args = {"upstream_items": [], "resulting_find": None,
- "treatment_type_list": []}
- base_url = 'treatment_creation_n1'
+ saved_args = {
+ "upstream_items": [],
+ "resulting_find": None,
+ "treatment_type_list": [],
+ }
+ base_url = "treatment_creation_n1"
def _update_simple_initial_from_finds(self, initial, find, k):
r_k = "resulting_" + k
@@ -242,7 +266,7 @@ class TreatmentN1Wizard(TreatmentBase):
def _update_multi_initial_from_finds(self, initial, find, k):
r_k = "resulting_" + k
- for value in getattr(find, k + 's').all():
+ for value in getattr(find, k + "s").all():
if value.pk not in initial[r_k]:
initial[r_k].append(value.pk)
return initial
@@ -256,7 +280,7 @@ class TreatmentN1Wizard(TreatmentBase):
initial[r_k] += getattr(find, k)
return initial
- def _update_char_initial_from_finds(self, initial, find, k, sep=' ; '):
+ def _update_char_initial_from_finds(self, initial, find, k, sep=" ; "):
r_k = "resulting_" + k
value = getattr(find, k)
if not value:
@@ -266,24 +290,27 @@ class TreatmentN1Wizard(TreatmentBase):
initial[r_k] = value
else:
# new value is entirely inside the current value
- if value == initial[r_k] or (value + sep) in initial[r_k] or \
- (sep + value) in initial[r_k]:
+ if (
+ value == initial[r_k]
+ or (value + sep) in initial[r_k]
+ or (sep + value) in initial[r_k]
+ ):
return initial
initial[r_k] += sep + value
return initial
def get_form_initial(self, step, data=None):
initial = super(TreatmentN1Wizard, self).get_form_initial(step)
- if step != 'resultingfind-treatment_creation_n1':
+ if step != "resultingfind-treatment_creation_n1":
return initial
finds = self.get_current_finds()
if not finds:
return initial
- simple_key = ['material_type_quality']
- multi_key = ['material_type', 'object_type', 'communicabilitie']
- numeric_key = ['find_number', 'min_number_of_individuals']
- desc_key = ['decoration', 'inscription', 'comment', 'dating_comment']
- char_key = ['manufacturing_place']
+ simple_key = ["material_type_quality"]
+ multi_key = ["material_type", "object_type", "communicabilitie"]
+ numeric_key = ["find_number", "min_number_of_individuals"]
+ desc_key = ["decoration", "inscription", "comment", "dating_comment"]
+ char_key = ["manufacturing_place"]
for k in simple_key + numeric_key + desc_key + char_key:
initial["resulting_" + k] = None
@@ -292,20 +319,19 @@ class TreatmentN1Wizard(TreatmentBase):
for find in finds:
for k in simple_key:
- initial = self._update_simple_initial_from_finds(
- initial, find, k)
+ initial = self._update_simple_initial_from_finds(initial, find, k)
for k in multi_key:
- initial = self._update_multi_initial_from_finds(
- initial, find, k)
+ initial = self._update_multi_initial_from_finds(initial, find, k)
for k in numeric_key:
- initial = self._update_num_initial_from_finds(
- initial, find, k)
+ initial = self._update_num_initial_from_finds(initial, find, k)
for k in char_key:
initial = self._update_char_initial_from_finds(
- initial, find, k, sep=' ; ')
+ initial, find, k, sep=" ; "
+ )
for k in desc_key:
initial = self._update_char_initial_from_finds(
- initial, find, k, sep='\n')
+ initial, find, k, sep="\n"
+ )
for k in list(initial.keys()):
if initial[k] is None:
@@ -316,16 +342,15 @@ class TreatmentN1Wizard(TreatmentBase):
"""
Get items concerned by the treatment
"""
- dct = super(TreatmentN1Wizard, self).get_extra_model(
- dct, m2m, form_list)
- if 'resulting_pk' not in dct:
+ dct = super(TreatmentN1Wizard, self).get_extra_model(dct, m2m, form_list)
+ if "resulting_pk" not in dct:
return dct
- dct['upstream_items'] = []
+ dct["upstream_items"] = []
# manage upstream items
- pks = dct.pop('resulting_pk')
- if hasattr(pks, 'split'):
- pks = pks.split(',') # string
+ pks = dct.pop("resulting_pk")
+ if hasattr(pks, "split"):
+ pks = pks.split(",") # string
for pk in pks:
if isinstance(pk, models.Find):
find = pk
@@ -334,60 +359,59 @@ class TreatmentN1Wizard(TreatmentBase):
find = models.Find.objects.get(pk=pk)
except models.Find.DoesNotExist:
raise PermissionDenied
- dct['upstream_items'].append(find)
+ dct["upstream_items"].append(find)
- for find in dct['upstream_items']:
- if 'own' in self.current_right \
- and not find.is_own(dct['history_modifier']):
+ for find in dct["upstream_items"]:
+ if "own" in self.current_right and not find.is_own(dct["history_modifier"]):
raise PermissionDenied
# extract data of the new find
- dct['resulting_find'] = {}
+ dct["resulting_find"] = {}
for k in list(dct.keys()):
- if k.startswith('resulting_') and k != "resulting_find":
- dct['resulting_find'][
- k[len('resulting_'):]
- ] = dct.pop(k)
+ if k.startswith("resulting_") and k != "resulting_find":
+ dct["resulting_find"][k[len("resulting_") :]] = dct.pop(k)
return dct
class Treatment1NWizard(TreatmentBase):
- saved_args = {"upstream_item": None, "resulting_finds": None,
- "treatment_type_list": []}
- base_url = 'treatment_creation_1n'
+ saved_args = {
+ "upstream_item": None,
+ "resulting_finds": None,
+ "treatment_type_list": [],
+ }
+ base_url = "treatment_creation_1n"
redirect_url = "find_modification"
open_created_in_redirect = False
def get_form_kwargs(self, step, **kwargs):
kwargs = super(Treatment1NWizard, self).get_form_kwargs(step, **kwargs)
- if step != 'resultingfind-treatment_creation_1n':
+ if step != "resultingfind-treatment_creation_1n":
return kwargs
- kwargs['user'] = self.request.user
+ kwargs["user"] = self.request.user
return kwargs
def get_form_initial(self, step, data=None):
initial = super(Treatment1NWizard, self).get_form_initial(step)
- if step != 'resultingfinds-treatment_creation_1n':
+ if step != "resultingfinds-treatment_creation_1n":
return initial
finds = self.get_current_finds()
if not finds:
return initial
lbl = finds[0].label
- initial['resultings_basket_name'] = str(_("Basket")) + " - " + lbl
- initial['resultings_label'] = lbl + "-"
+ initial["resultings_basket_name"] = str(_("Basket")) + " - " + lbl
+ initial["resultings_label"] = lbl + "-"
return initial
def get_extra_model(self, dct, m2m, form_list):
"""
Get items concerned by the treatment
"""
- dct = super(Treatment1NWizard, self).get_extra_model(
- dct, m2m, form_list)
- if 'resulting_pk' not in dct:
+ dct = super(Treatment1NWizard, self).get_extra_model(dct, m2m, form_list)
+ if "resulting_pk" not in dct:
return dct
# manage upstream item
- pk = dct.pop('resulting_pk')
+ pk = dct.pop("resulting_pk")
if isinstance(pk, models.Find):
find = pk
else:
@@ -395,46 +419,61 @@ class Treatment1NWizard(TreatmentBase):
find = models.Find.objects.get(pk=pk)
except models.Find.DoesNotExist:
raise PermissionDenied
- dct['upstream_item'] = find
+ dct["upstream_item"] = find
- if 'own' in self.current_right \
- and not find.is_own(dct['history_modifier']):
+ if "own" in self.current_right and not find.is_own(dct["history_modifier"]):
raise PermissionDenied
# extract attributes to generate the new find
- dct['resulting_finds'] = {}
+ dct["resulting_finds"] = {}
for k in list(dct.keys()):
- if k.startswith('resultings_'):
- dct['resulting_finds'][
- k[len('resultings_'):]
- ] = dct.pop(k)
+ if k.startswith("resultings_"):
+ dct["resulting_finds"][k[len("resultings_") :]] = dct.pop(k)
messages.add_message(
- self.request, messages.INFO,
- str(_("The new basket: \"{}\" have been created with the "
- "resulting items. This search have been pinned.")
- ).format(dct["resulting_finds"]["basket_name"])
+ self.request,
+ messages.INFO,
+ str(
+ _(
+ 'The new basket: "{}" have been created with the '
+ "resulting items. This search have been pinned."
+ )
+ ).format(dct["resulting_finds"]["basket_name"]),
)
self.request.session["pin-search-find"] = '{}="{}"'.format(
str(pgettext("key for text search", "basket")),
- dct["resulting_finds"]["basket_name"])
- self.request.session['find'] = ''
+ dct["resulting_finds"]["basket_name"],
+ )
+ self.request.session["find"] = ""
return dct
class TreatmentDeletionWizard(DeletionWizard):
model = models.Treatment
- wizard_confirm = 'ishtar/wizard/wizard_treatement_deletion.html'
- fields = ['label', 'other_reference', 'year', 'index',
- 'treatment_types', 'location', 'person', 'organization',
- 'external_id', 'comment', 'description',
- 'goal', 'start_date', 'end_date', 'container']
+ wizard_confirm = "ishtar/wizard/wizard_treatement_deletion.html"
+ fields = [
+ "label",
+ "other_reference",
+ "year",
+ "index",
+ "treatment_types",
+ "location",
+ "person",
+ "organization",
+ "external_id",
+ "comment",
+ "description",
+ "goal",
+ "start_date",
+ "end_date",
+ "container",
+ ]
redirect_url = "treatment_deletion"
class TreatmentAdministrativeActWizard(OperationAdministrativeActWizard):
model = models.Treatment
- current_obj_slug = 'administrativeacttreatment'
- ref_object_key = 'treatment'
+ current_obj_slug = "administrativeacttreatment"
+ ref_object_key = "treatment"
redirect_url = "treatment_admacttreatment_modification"
def get_reminder(self):
@@ -455,7 +494,7 @@ class TreatmentFileSearch(SearchWizard):
class TreatmentFileWizard(Wizard):
model = models.TreatmentFile
- wizard_done_window = reverse_lazy('show-treatmentfile')
+ wizard_done_window = reverse_lazy("show-treatmentfile")
redirect_url = "treatmentfile_modification"
@@ -465,29 +504,40 @@ class TreatmentFileModificationWizard(TreatmentFileWizard):
class TreatmentFileDeletionWizard(MultipleDeletionWizard):
model = models.TreatmentFile
- fields = ['name', 'internal_reference', 'external_id', 'year',
- 'index', 'type', 'in_charge', 'reception_date',
- 'creation_date', 'end_date', 'comment']
+ fields = [
+ "name",
+ "internal_reference",
+ "external_id",
+ "year",
+ "index",
+ "type",
+ "in_charge",
+ "reception_date",
+ "creation_date",
+ "end_date",
+ "comment",
+ ]
redirect_url = "treatmentfile_deletion"
-class TreatmentFileAdministrativeActWizard(
- OperationAdministrativeActWizard):
+class TreatmentFileAdministrativeActWizard(OperationAdministrativeActWizard):
model = models.TreatmentFile
- current_obj_slug = 'administrativeacttreatmentfile'
- ref_object_key = 'treatment_file'
+ current_obj_slug = "administrativeacttreatmentfile"
+ ref_object_key = "treatment_file"
redirect_url = "treatmentfle_admacttreatmentfle_modification"
def get_reminder(self):
- form_key = 'selec-' + self.url_name
- if self.url_name.endswith('_administrativeactop'):
+ form_key = "selec-" + self.url_name
+ if self.url_name.endswith("_administrativeactop"):
# modification and deletion are suffixed with '_modification'
# and '_deletion' so it is creation
pk = self.session_get_value(form_key, "pk")
try:
return (
- (_("Treatment request"),
- str(models.TreatmentFile.objects.get(pk=pk))),
+ (
+ _("Treatment request"),
+ str(models.TreatmentFile.objects.get(pk=pk)),
+ ),
)
except models.TreatmentFile.DoesNotExist:
return
@@ -497,15 +547,12 @@ class TreatmentFileAdministrativeActWizard(
admin = AdministrativeAct.objects.get(pk=admin_id)
if not admin.operation:
return
- return (
- (_("Operation"), str(admin.operation)),
- )
+ return ((_("Operation"), str(admin.operation)),)
except AdministrativeAct.DoesNotExist:
return
-class TreatmentFileEditAdministrativeActWizard(
- TreatmentFileAdministrativeActWizard):
+class TreatmentFileEditAdministrativeActWizard(TreatmentFileAdministrativeActWizard):
model = AdministrativeAct
edit = True
@@ -519,25 +566,24 @@ class FindBasketSearch(SearchWizard):
class FindBasketWizard(Wizard):
model = models.FindBasket
- wizard_done_window = reverse_lazy('show-findbasket')
+ wizard_done_window = reverse_lazy("show-findbasket")
redirect_url = "find_basket_modification"
class FindBasketEditWizard(FindBasketWizard):
edit = True
- alt_is_own_method = 'get_write_query_owns'
+ alt_is_own_method = "get_write_query_owns"
def get_form_kwargs(self, step, **kwargs):
- kwargs = super(FindBasketEditWizard, self).get_form_kwargs(
- step, **kwargs)
- if step != 'basket-find_basket_modification':
+ kwargs = super(FindBasketEditWizard, self).get_form_kwargs(step, **kwargs)
+ if step != "basket-find_basket_modification":
return kwargs
- kwargs['basket_pk'] = self.get_current_object().pk
- kwargs['user'] = self.request.user
+ kwargs["basket_pk"] = self.get_current_object().pk
+ kwargs["user"] = self.request.user
return kwargs
class FindBasketDeletionWizard(DeletionWizard):
model = models.FindBasket
redirect_url = "find_basket_deletion"
- wizard_confirm = 'ishtar/wizard/wizard_findbasket_deletion.html'
+ wizard_confirm = "ishtar/wizard/wizard_findbasket_deletion.html"