summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2014-10-27 15:34:51 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2014-10-27 15:34:51 +0100
commitdc6585e68edf196e3ee128c5c7f489d1cbd77060 (patch)
tree1b8403c0b39c347999cec7588a0227d24884b569
parent1c33a25bf50b46ddca58e2fc96188595ebc59538 (diff)
downloadIshtar-dc6585e68edf196e3ee128c5c7f489d1cbd77060.tar.bz2
Ishtar-dc6585e68edf196e3ee128c5c7f489d1cbd77060.zip
Document generation: simplify and add departments
-rw-r--r--archaeological_files/models.py15
-rw-r--r--archaeological_operations/models.py27
-rw-r--r--ishtar_common/models.py2
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):