diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 3dbda8472..d3abd2c8a 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -265,7 +265,8 @@ class BFBulkView(object): """ -class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem, OwnPerms): +class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem, OwnPerms, + ValueGetter): EXTERNAL_ID_KEY = 'base_find_external_id' EXTERNAL_ID_DEPENDENCIES = ['find'] SLUG = 'basefind' @@ -332,6 +333,16 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem, OwnPerms): def natural_key(self): return (self.external_id, ) + def get_values(self, prefix='', no_find=False): + values = super(BaseFind, self).get_values(prefix=prefix) + if no_find: + return values + values[prefix + "finds"] = [ + find.get_values(prefix=prefix, no_base_finds=True) + for find in self.find.order_by('pk').all() + ] + return values + def get_last_find(self): # TODO: manage virtuals - property(last_find) ? finds = self.find.filter().order_by("-order").all() @@ -609,7 +620,7 @@ WEIGHT_UNIT = (('g', _(u"g")), ('kg', _(u"kg")),) -class FindBasket(Basket, MainItem): +class FindBasket(Basket, MainItem, ValueGetter): SHOW_URL = 'show-findbasket' SLUG = "findbasket" items = models.ManyToManyField('Find', blank=True, related_name='basket') @@ -629,6 +640,13 @@ class FindBasket(Basket, MainItem): ("view_own_find", u"Can view own Find"), ) + def get_values(self, prefix=''): + values = super(FindBasket, self).get_values(prefix=prefix) + values[prefix + "items"] = [ + item.get_values() for item in self.items.distinct().all() + ] + return values + def get_extra_actions(self, request): """ For sheet template: return "Manage basket" action @@ -1579,21 +1597,15 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, QRCodeItem, return return self.base_finds.order_by('-pk').all()[0] - def get_values(self, prefix=''): + def get_values(self, prefix='', no_base_finds=False): values = super(Find, self).get_values(prefix=prefix) - return values - # TODO - bf = self.get_first_base_find() - if not bf: + if no_base_finds: return values - operation = bf.context_record.operation - values[prefix + "operation"] = [ - { - "common_name": operation.common_name, - "code_patriarche": operation.code_patriarche, - "address": operation.address - } + values[prefix + "base_finds"] = [ + base_find.get_values(prefix=prefix, no_find=True) + for base_find in self.base_finds.distinct().order_by('-pk').all() ] + return values @property def reference(self): |