diff options
-rw-r--r-- | archaeological_files/models.py | 15 | ||||
-rw-r--r-- | archaeological_operations/models.py | 27 | ||||
-rw-r--r-- | ishtar_common/models.py | 2 |
3 files changed, 24 insertions, 20 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 4483e6401..391a3e8ce 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -32,6 +32,8 @@ from ishtar_common.models import GeneralType, BaseHistorizedItem, \ HistoricalRecords, OwnPerms, Person, Organization, Department, Town, \ Dashboard, DashboardFormItem, IshtarUser, ValueGetter, ShortMenuItem +from archaeological_operations.models import get_values_town_related + class FileType(GeneralType): class Meta: verbose_name = _(u"Archaeological file type") @@ -232,18 +234,7 @@ class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem, def get_values(self, prefix=''): values = super(File, self).get_values(prefix=prefix) - values['adminact_associated_file_towns_count'] = unicode( - self.towns.count()) - values['adminact_associated_file_towns'] = u", ".join( - [unicode(town)for town in self.towns.all()]) - - values[prefix+'towns'] = '' - values[prefix+'towns_count'] = unicode(self.towns.count()) - if self.towns.count(): - values[prefix+'towns'] = u", ".join([town.name - for town in self.towns.all().order_by('name')]) - values[prefix+'parcellist'] = self.render_parcels() - return values + return get_values_town_related(self, prefix, values) def render_parcels(self): from archaeological_operations.models import Parcel diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 0823118e0..b4ff1809f 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -132,6 +132,25 @@ class ArchaeologicalSite(BaseHistorizedItem): name += u" %s %s" % (settings.JOINT, self.name) return name +def get_values_town_related(item, prefix, values): + values[prefix+'parcellist'] = item.render_parcels() + values[prefix+'towns'] = '' + values[prefix+'departments'] = '' + values[prefix+'departments_number'] = '' + values[prefix+'towns_count'] = unicode(item.towns.count()) + if item.towns.count(): + values[prefix+'towns'] = u", ".join([town.name + for town in item.towns.all().order_by('name')]) + if settings.COUNTRY == 'fr': + dpts_num = set([town.numero_insee[:2] for town in item.towns.all()]) + values[prefix+'departments_number'] = u", ".join( + list(sorted(dpts_num))) + values[prefix+'departments'] = u", ".join([ + Department.objects.get(number=dpt).label + for dpt in sorted(dpts_num) if Department.objects.filter( + number=dpt).count()]) + return values + class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem, DashboardFormItem): TABLE_COLS = ['year_index', 'operation_type', 'remains', 'towns', @@ -245,13 +264,7 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem, def get_values(self, prefix=''): values = super(Operation, self).get_values(prefix=prefix) - values[prefix+'towns'] = '' - values[prefix+'towns_count'] = unicode(self.towns.count()) - if self.towns.count(): - values[prefix+'towns'] = u", ".join([town.name - for town in self.towns.all().order_by('name')]) - values[prefix+'parcellist'] = self.render_parcels() - return values + return get_values_town_related(self, prefix, values) @property def short_class_name(self): diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 4aa5e4949..460612e17 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -762,7 +762,7 @@ class DocumentTemplate(models.Model): if empty_first: yield ('', '----------') items = cls.objects.filter(**dct) - for item in items.order_by(*cls._meta.ordering).all(): + for item in items.distinct().order_by(*cls._meta.ordering).all(): yield (item.pk, _(unicode(item))) def publish(self, c_object): |