summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/models.py8
-rw-r--r--archaeological_context_records/tests.py6
-rw-r--r--archaeological_finds/models_finds.py18
-rw-r--r--archaeological_operations/models.py17
-rw-r--r--archaeological_operations/tests.py11
-rw-r--r--ishtar_common/migrations/0066_auto_20180816_1114.py46
-rw-r--r--ishtar_common/models.py13
7 files changed, 96 insertions, 23 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 3cb0313dd..e3c7ff4e5 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -35,7 +35,7 @@ from ishtar_common.models import Document, GeneralType, \
BaseHistorizedItem, HistoricalRecords, OwnPerms, ShortMenuItem, \
GeneralRelationType, GeneralRecordRelations, post_delete_record_relation,\
post_save_cache, ValueGetter, BulkUpdatedItem, \
- RelationItem, Town
+ RelationItem, Town, get_current_profile
from archaeological_operations.models import Operation, Period, Parcel, \
ArchaeologicalSite
@@ -436,6 +436,8 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,
return
kwargs['transaction_id'] = transaction_id
+ profile = get_current_profile()
+
sql = """
UPDATE "archaeological_context_records_contextrecord" AS cr
SET cached_label =
@@ -469,8 +471,8 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,
SELECT id FROM archaeological_context_records_contextrecord
WHERE {where}
);
- """.format(main_ope_prefix=settings.ISHTAR_OPE_PREFIX,
- ope_prefix=settings.ISHTAR_DEF_OPE_PREFIX,
+ """.format(main_ope_prefix=profile.operation_prefix,
+ ope_prefix=profile.default_operation_prefix,
join=settings.JOINT, where=where)
with connection.cursor() as c:
c.execute(sql, args)
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index bf8864d56..2f676c194 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -28,7 +28,7 @@ from django.core.urlresolvers import reverse
from django.test.client import Client
from ishtar_common.models import IshtarSiteProfile, ImporterModel, \
- UserProfile, ProfileType, Town, Area
+ UserProfile, ProfileType, Town, Area, get_current_profile
from archaeological_operations.tests import OperationInitTest, \
ImportTest, FILE_TOWNS_FIXTURES, FILE_FIXTURES, OPERATION_TOWNS_FIXTURES
@@ -293,7 +293,9 @@ class ContextRecordTest(ContextRecordInit, TestCase):
cr.operation.code_patriarche = "PATRIARCHE"
cr.operation.save()
cr = models.ContextRecord.objects.get(pk=cr.pk)
- self.assertIn(settings.ISHTAR_OPE_PREFIX.lower() + "patriarch",
+
+ profile = get_current_profile()
+ self.assertIn(profile.operation_prefix.lower() + "patriarch",
cr.search_vector)
def test_upstream_cache_update(self):
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 0fb8229e4..40bcf52c7 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -349,14 +349,15 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):
def _ope_code(self):
if not self.context_record.operation:
return ''
+ profile = get_current_profile()
ope = self.context_record.operation
c_id = []
if ope.code_patriarche:
- c_id.append(settings.ISHTAR_OPE_PREFIX +
+ c_id.append(profile.operation_prefix +
ope.code_patriarche)
elif ope.year and ope.operation_code:
c_id.append(
- settings.ISHTAR_DEF_OPE_PREFIX +
+ profile.default_operation_prefix +
unicode(ope.year or '') + u"-" +
unicode(ope.operation_code or ''))
else:
@@ -463,6 +464,8 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):
return
kwargs['transaction_id'] = transaction_id
+ profile = get_current_profile()
+
sql = """
UPDATE "archaeological_finds_basefind" AS bf
SET cache_short_id =
@@ -535,8 +538,8 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):
SELECT mybf.id FROM archaeological_finds_basefind mybf
{filters}
);
- """.format(main_ope_prefix=settings.ISHTAR_OPE_PREFIX,
- ope_prefix=settings.ISHTAR_DEF_OPE_PREFIX,
+ """.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:
@@ -1312,6 +1315,9 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
args = [int(find_id)]
else:
return
+
+ profile = get_current_profile()
+
sql = """
UPDATE "archaeological_finds_find" AS f
SET cached_label =
@@ -1346,8 +1352,8 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
SELECT myf.id FROM archaeological_finds_find myf
{filters}
);
- """.format(main_ope_prefix=settings.ISHTAR_OPE_PREFIX,
- ope_prefix=settings.ISHTAR_DEF_OPE_PREFIX,
+ """.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:
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 828df91e5..9d6264a4d 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -36,7 +36,7 @@ from ishtar_common.models import BaseHistorizedItem, Dashboard, \
HistoricalRecords, IshtarUser, LightHistorizedItem, \
OperationType, Organization, OwnPerms, Person, PersonType, \
post_delete_record_relation, post_save_cache, RelationItem, \
- ShortMenuItem, SourceType, Town, ValueGetter
+ ShortMenuItem, SourceType, Town, ValueGetter, get_current_profile
from ishtar_common.utils import cached_label_changed, \
force_cached_label_changed, mode
@@ -831,15 +831,16 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
return BaseFind.objects.filter(context_record__operation=self)
def get_reference(self, full=False):
+ profile = get_current_profile()
ref = ""
- if settings.COUNTRY == 'fr' and self.code_patriarche:
- ref = settings.ISHTAR_OPE_PREFIX + unicode(self.code_patriarche)
+ if self.code_patriarche:
+ ref = profile.operation_prefix + unicode(self.code_patriarche)
if not full:
return ref
if self.year and self.operation_code:
if ref:
ref += u" - "
- ref += settings.ISHTAR_DEF_OPE_PREFIX
+ ref += profile.default_operation_prefix
ref += u"-".join((unicode(self.year),
unicode(self.operation_code)))
return ref or "00"
@@ -931,15 +932,17 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
return ""
lbl = unicode(self.operation_code)
year = self.year or 0
- lbl = settings.ISHTAR_DEF_OPE_PREFIX \
- + u"%d-%s%s" % (year, (3 - len(lbl)) * "0", lbl)
+ profile = get_current_profile()
+ lbl = profile.default_operation_prefix \
+ + u"%d-%s%s" % (year, (3 - len(lbl)) * "0", lbl)
return lbl
@property
def full_code_patriarche(self):
if not self.code_patriarche:
return ''
- return settings.ISHTAR_OPE_PREFIX + self.code_patriarche
+ profile = get_current_profile()
+ return profile.operation_prefix + self.code_patriarche
def clean(self):
if not self.operation_code:
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index f50e58eaa..a3cd5fd8d 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -43,7 +43,7 @@ from ishtar_common.models import OrganizationType, Organization, ItemKey, \
Town, ImporterColumn, Person, Author, SourceType, AuthorType, \
DocumentTemplate, PersonType, TargetKeyGroup, JsonDataField, \
JsonDataSection, ImportTarget, FormaterType, CustomForm, ExcludedField, \
- UserProfile, ProfileType, Area, CustomFormJsonField
+ UserProfile, ProfileType, Area, CustomFormJsonField, get_current_profile
from archaeological_files.models import File, FileType
from archaeological_context_records.models import Unit, ContextRecord
@@ -1103,8 +1103,10 @@ class OperationTest(TestCase, OperationInitTest):
# verify the relevance of the update
cr = ContextRecord.objects.get(pk=cr.pk)
ope_id, parcel_sec, parcel_nb, cr_label = cr.cached_label.split(' | ')
- self.assertEqual(ope_id, '{}2011-1'.format(
- settings.ISHTAR_DEF_OPE_PREFIX))
+ profile = get_current_profile()
+
+ self.assertEqual(
+ ope_id, '{}2011-1'.format(profile.default_operation_prefix))
base_find = BaseFind.objects.get(pk=base_find.pk)
op_code, idx = base_find.cache_short_id.split(' | ')
@@ -1126,7 +1128,8 @@ class OperationTest(TestCase, OperationInitTest):
operation.save()
cr = ContextRecord.objects.get(pk=cr.pk)
ope_id, parcel_sec, parcel_nb, cr_label = cr.cached_label.split(' | ')
- self.assertEqual(ope_id, '{}666'.format(settings.ISHTAR_OPE_PREFIX))
+
+ self.assertEqual(ope_id, '{}666'.format(profile.operation_prefix))
base_find = BaseFind.objects.get(pk=base_find.pk)
op_code, idx = base_find.cache_short_id.split(' | ')
diff --git a/ishtar_common/migrations/0066_auto_20180816_1114.py b/ishtar_common/migrations/0066_auto_20180816_1114.py
new file mode 100644
index 000000000..3d2d8ca23
--- /dev/null
+++ b/ishtar_common/migrations/0066_auto_20180816_1114.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-08-16 11:14
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+from django.conf import settings
+
+
+def migrate_codes(apps, schema_editor):
+ IshtarSiteProfile = apps.get_model('ishtar_common', 'IshtarSiteProfile')
+ for p in IshtarSiteProfile.objects.all():
+ if settings.ISHTAR_OPE_PREFIX:
+ p.operation_prefix = settings.ISHTAR_OPE_PREFIX
+ if settings.ISHTAR_DEF_OPE_PREFIX:
+ p.default_operation_prefix = settings.ISHTAR_DEF_OPE_PREFIX
+ p.save()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0065_author_cached_label'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='document',
+ options={'ordering': ('title',), 'permissions': (('view_document', 'Peut voir tous les Documents'), ('view_own_document', 'Peut voir ses propres Documents'), ('add_own_document', 'Peut ajouter son propre Document'), ('change_own_document', 'Peut modifier ses propres documents'), ('delete_own_document', 'Peut supprimer ses propres Documents')), 'verbose_name': 'Document', 'verbose_name_plural': 'Documents'},
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='default_operation_prefix',
+ field=models.CharField(blank=True, default='OP', max_length=20, null=True, verbose_name='Default operation code prefix'),
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='operation_prefix',
+ field=models.CharField(blank=True, default='OA', max_length=20, null=True, verbose_name='Main operation code prefix'),
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='operation_region_code',
+ field=models.CharField(blank=True, max_length=5, null=True, verbose_name='Operation region code'),
+ ),
+ migrations.RunPython(migrate_codes)
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 8bab21360..bd800181f 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1210,7 +1210,6 @@ class FullSearch(models.Model):
[data])
row = cursor.fetchone()
search_vectors.append(row[0])
- # self.search_vector = merge_tsvectors(search_vectors)
new_search_vector = merge_tsvectors(search_vectors)
changed = old_search != new_search_vector
if save and changed:
@@ -1720,6 +1719,18 @@ class IshtarSiteProfile(models.Model, Cached):
help_text=_(u"Homepage of Ishtar - if not defined a default homepage "
u"will appear. Use the markdown syntax. {random_image} "
u"can be used to display a random image."))
+ operation_prefix = models.CharField(
+ _(u"Main operation code prefix"), default=u'OA', null=True, blank=True,
+ max_length=20
+ )
+ default_operation_prefix = models.CharField(
+ _(u"Default operation code prefix"), default=u'OP', null=True,
+ blank=True, max_length=20
+ )
+ operation_region_code = models.CharField(
+ _(u"Operation region code"), null=True, blank=True,
+ max_length=5
+ )
file_external_id = models.TextField(
_(u"File external id"),
default=u"{year}-{numeric_reference}",