summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py37
1 files changed, 26 insertions, 11 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 72a3432f8..ccb817adc 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -25,6 +25,7 @@ import copy
import datetime
from PIL import Image
from importlib import import_module
+import logging
import os
import re
import shutil
@@ -65,6 +66,9 @@ from ishtar_common.data_importer import Importer, ImportFormater, \
TypeFormater, YearFormater, StrToBoolean, FileFormater
+logger = logging.getLogger(__name__)
+
+
def post_save_user(sender, **kwargs):
user = kwargs['instance']
try:
@@ -95,6 +99,7 @@ class Imported(models.Model):
class ValueGetter(object):
_prefix = ""
GET_VALUES_EXTRA = []
+ EXTRA_FULL_FIELDS_LABELS = {}
def get_values(self, prefix=''):
if not prefix:
@@ -249,9 +254,10 @@ class OwnPerms:
query = cls.get_query_owns(user)
if not query and not replace_query:
return cls.objects.filter(pk__isnull=True)
- q = cls.objects.filter(query)
+ if query:
+ q = cls.objects.filter(query)
if replace_query:
- q = cls.objects.filter(**replace_query)
+ q = cls.objects.filter(replace_query)
if limit:
items += list(q.order_by('-pk')[:limit])
else:
@@ -408,10 +414,12 @@ class GeneralType(Cached, models.Model):
new_vals = []
if not initial:
return []
+ if type(initial) not in (list, tuple):
+ initial = [initial]
for value in initial:
try:
pk = int(value)
- except ValueError:
+ except (ValueError, TypeError):
continue
if pk in type_pks:
continue
@@ -442,6 +450,7 @@ class GeneralType(Cached, models.Model):
keys = ['__get_types']
keys += [u"{}".format(ex) for ex in exclude] + [
empty_first and 'empty_first' or ''] + [u"{}".format(default)]
+ keys += [u'{}-{}'.format(unicode(k), dct[k]) for k in dct]
cache_key, value = get_cache(cls, keys)
if value and not force:
return value
@@ -480,7 +489,10 @@ class GeneralType(Cached, models.Model):
pass
items = cls.objects.filter(**dct)
if default and default != "None":
- exclude.append(default.txt_idx)
+ if hasattr(default, 'txt_idx'):
+ exclude.append(default.txt_idx)
+ else:
+ exclude.append(default)
if exclude:
items = items.exclude(txt_idx__in=exclude)
for item in items.order_by(*cls._meta.ordering).all():
@@ -659,7 +671,7 @@ class ImageModel(models.Model):
null=True, max_length=255)
IMAGE_MAX_SIZE = settings.IMAGE_MAX_SIZE
THUMB_MAX_SIZE = settings.THUMB_MAX_SIZE
- IMAGE_PREFIX = '/'
+ IMAGE_PREFIX = ''
class Meta:
abstract = True
@@ -1487,15 +1499,15 @@ class Address(BaseHistorizedItem):
if self.phone:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Tel: ")), self.phone)
+ lbl += u"{} {}".format(unicode(_("Tel: ")), self.phone)
if self.mobile_phone:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Mobile: ")), self.mobile_phone)
+ lbl += u"{} {}".format(unicode(_("Mobile: ")), self.mobile_phone)
if self.email:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Email: ")), self.email)
+ lbl += u"{} {}".format(unicode(_("Email: ")), self.email)
return lbl
@@ -1607,7 +1619,7 @@ def get_importer_models():
('archaeological_context_records.models.RecordRelations',
_(u"Context record relations"))] + MODELS
MODELS = [('archaeological_finds.models.BaseFind',
- _(u"Finds")), ] + MODELS
+ _(u"Base finds")), ] + MODELS
return MODELS
@@ -1995,7 +2007,9 @@ TARGET_MODELS = [
('archaeological_operations.models.OperationType', _(u"Operation type")),
('archaeological_operations.models.Period', _(u"Period")),
('archaeological_operations.models.ReportState', _(u"Report state")),
+ ('archaeological_operations.models.RemainType', _(u"Remain type")),
('archaeological_context_records.models.Unit', _(u"Unit")),
+ ('archaeological_context_records.models.ActivityType', _(u"Activity type")),
('archaeological_finds.models.MaterialType', _(u"Material")),
('archaeological_finds.models.ConservatoryState',
_(u"Conservatory state")),
@@ -2077,7 +2091,9 @@ class FormaterType(models.Model):
kwargs['many_split'] = self.many_split
if self.formater_type == 'TypeFormater':
if self.options not in TARGET_MODELS_KEYS:
- print('%s not in TARGET_MODELS_KEYS' % self.options)
+ logger.warning(
+ "**WARN FormaterType.get_formater_type**: {} "
+ "is not in TARGET_MODELS_KEYS".format(self.options))
return
model = None
if self.options in dir():
@@ -2630,7 +2646,6 @@ class IshtarUser(User):
surname = user.first_name or default
name = user.last_name or default
email = user.email
- person_type = None
if user.is_superuser:
ADMINISTRATOR, created = PersonType.objects.get_or_create(
txt_idx='administrator')