diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-06-21 11:52:47 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-06-21 11:52:47 +0200 |
| commit | 2d008477cb66ec3e356fd9153afba7affede249c (patch) | |
| tree | fe1e94142584ca185d31a795604d6229d8646922 /ishtar/furnitures | |
| parent | 7f871c7698c56dce6f398e850a08d5619cebd243 (diff) | |
| download | Ishtar-2d008477cb66ec3e356fd9153afba7affede249c.tar.bz2 Ishtar-2d008477cb66ec3e356fd9153afba7affede249c.zip | |
Model management of sources
Diffstat (limited to 'ishtar/furnitures')
| -rw-r--r-- | ishtar/furnitures/admin.py | 36 | ||||
| -rw-r--r-- | ishtar/furnitures/models.py | 104 |
2 files changed, 84 insertions, 56 deletions
diff --git a/ishtar/furnitures/admin.py b/ishtar/furnitures/admin.py index 8a47ea429..3a93f1852 100644 --- a/ishtar/furnitures/admin.py +++ b/ishtar/furnitures/admin.py @@ -80,6 +80,14 @@ class OperationAdmin(HistorizedObjectAdmin): admin.site.register(models.Operation, OperationAdmin) +class OperationSourceAdmin(admin.ModelAdmin): + list_display = ('operation', 'title', 'source_type',) + list_filter = ('source_type',) + search_fields = ('title', 'operation__name') + model = models.OperationSource + +admin.site.register(models.OperationSource, OperationSourceAdmin) + class ParcelAdmin(HistorizedObjectAdmin): list_display = ('section', 'parcel_number', 'operation', 'associated_file') search_fields = ('operation__name',) @@ -110,13 +118,13 @@ class ContextRecordAdmin(HistorizedObjectAdmin): admin.site.register(models.ContextRecord, ContextRecordAdmin) -class SourceAdmin(admin.ModelAdmin): - list_display = ('title', 'source_type',) +class ContextRecordSourceAdmin(admin.ModelAdmin): + list_display = ('context_record', 'title', 'source_type',) list_filter = ('source_type',) - search_fields = ('title',) - model = models.Source + search_fields = ('title', ) + model = models.ContextRecordSource -admin.site.register(models.Source, SourceAdmin) +admin.site.register(models.ContextRecordSource, ContextRecordSourceAdmin) class BaseItemAdmin(HistorizedObjectAdmin): list_display = ('label', 'context_record', 'is_isolated') @@ -134,6 +142,14 @@ class ItemAdmin(HistorizedObjectAdmin): admin.site.register(models.Item, ItemAdmin) +class ItemSourceAdmin(admin.ModelAdmin): + list_display = ('item', 'title', 'source_type',) + list_filter = ('source_type',) + search_fields = ('title', ) + model = models.ItemSource + +admin.site.register(models.ItemSource, ItemSourceAdmin) + class WarehouseAdmin(HistorizedObjectAdmin): list_display = ('name', 'warehouse_type', 'town') list_filter = ('warehouse_type',) @@ -176,7 +192,7 @@ class TownAdmin(admin.ModelAdmin): admin.site.register(models.Town, TownAdmin) class AuthorAdmin(admin.ModelAdmin): - list_display = ['person', 'source', 'author_type'] + list_display = ['person', 'author_type'] list_filter = ("author_type",) model = models.Author @@ -196,6 +212,14 @@ class TreatmentAdmin(HistorizedObjectAdmin): admin.site.register(models.Treatment, TreatmentAdmin) +class TreatmentSourceAdmin(admin.ModelAdmin): + list_display = ('treatment', 'title', 'source_type',) + list_filter = ('source_type',) + search_fields = ('title',) + model = models.TreatmentSource + +admin.site.register(models.TreatmentSource, TreatmentSourceAdmin) + basic_models = [models.PersonType, models.IshtarUser, models.FileType, models.OperationType, models.DatingType, models.DatingQuality, models.SourceType, models.MaterialType, models.ParcelOwner, diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 6a0999119..37c958b30 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -426,6 +426,37 @@ class IshtarUser(User): verbose_name = _(u"Ishtar user") verbose_name_plural = _(u"Ishtar users") +class AuthorType(GeneralType): + class Meta: + verbose_name = _(u"Author type") + verbose_name_plural = _(u"Author types") + +class Author(models.Model): + person = models.ForeignKey(Person, verbose_name=_(u"Person")) + author_type = models.ForeignKey(AuthorType, verbose_name=_(u"Author type")) + + class Meta: + verbose_name = _(u"Author") + verbose_name_plural = _(u"Authors") + + def __unicode__(self): + return self.person + JOINT + self.source + +class SourceType(GeneralType): + class Meta: + verbose_name = _(u"Source type") + verbose_name_plural = _(u"Source types") + +class Source(models.Model): + title = models.CharField(_(u"Title"), max_length=200) + source_type = models.ForeignKey(SourceType, verbose_name=_(u"Type")) + authors = models.ManyToManyField(Author, verbose_name=_(u"Authors")) + + class Meta: + abstract = True + + def __unicode__(self): + return self.title class FileType(GeneralType): class Meta: @@ -641,6 +672,13 @@ class Operation(BaseHistorizedItem, OwnPerms): return {'date':item.history_date, 'user':IshtarUser.objects.get(pk=item.history_modifier_id)} +class OperationSource(Source): + class Meta: + verbose_name = _(u"Operation documentation") + verbose_name_plural = _(u"Operation documentations") + operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"), + related_name="source") + class Parcel(LightHistorizedItem): associated_file = models.ForeignKey(File, related_name='parcels', blank=True, null=True, verbose_name=_(u"File")) @@ -817,22 +855,12 @@ class ContextRecord(BaseHistorizedItem, OwnPerms): return JOINT.join([unicode(lbl) for lbl in [self.parcel.operation.year, self.parcel.operation.operation_code, self.label] if lbl]) - -class SourceType(GeneralType): - class Meta: - verbose_name = _(u"Source type") - verbose_name_plural = _(u"Source types") - -class Source(models.Model) : - title = models.CharField(_(u"Title"), max_length=200) - source_type = models.ForeignKey(SourceType, verbose_name=_(u"Type")) - +class ContextRecordSource(Source): class Meta: - verbose_name = _(u"Source") - verbose_name_plural = _(u"Sources") - - def __unicode__(self): - return self.title + verbose_name = _(u"Context record documentation") + verbose_name_plural = _(u"Context record documentations") + context_record = models.ForeignKey(ContextRecord, + verbose_name=_(u"Context record"), related_name="source") class MaterialType(GeneralType): recommendation = models.TextField(_(u"Recommendation")) @@ -852,7 +880,6 @@ class BaseItem(BaseHistorizedItem, OwnPerms): null=True) index = models.IntegerField(u"Index", default=0) material_index = models.IntegerField(u"Material index", default=0) - documentations = models.ManyToManyField(Source) history = HistoricalRecords() class Meta: @@ -966,25 +993,12 @@ class Item(BaseHistorizedItem, OwnPerms): base_item.save() super(Item, self).save(*args, **kwargs) -""" -def initialize_item(sender, **kwargs): - # initialize base items with the item - if kwargs['action'] != 'post_add': - return - item = kwargs['instance'] - # item already initialized - if item.label: - return - base_items = item.base_items.all() - if len(base_items) != 1: - return - base_item = base_items[0] - item.label = base_item.label - item.description = base_item.description - item.save() -m2m_changed.connect(initialize_item, - sender=Item.base_items.through) -""" +class ItemSource(Source): + class Meta: + verbose_name = _(u"Item documentation") + verbose_name_plural = _(u"Item documentations") + item = models.ForeignKey(Item, verbose_name=_(u"Item"), + related_name="source") class ParcelOwner(LightHistorizedItem): owner = models.ForeignKey(Person, verbose_name=_(u"Owner")) @@ -1166,22 +1180,12 @@ class Treatment(BaseHistorizedItem, OwnPerms): ("delete_own_treatment", ugettext(u"Can delete own Treatment")), ) -class AuthorType(GeneralType): +class TreatmentSource(Source): class Meta: - verbose_name = _(u"Author type") - verbose_name_plural = _(u"Author types") - -class Author(models.Model): - person = models.ForeignKey(Person, verbose_name=_(u"Person")) - source = models.ForeignKey(Source, verbose_name=_(u"Source")) - author_type = models.ForeignKey(AuthorType, verbose_name=_(u"Author type")) - - class Meta: - verbose_name = _(u"Author") - verbose_name_plural = _(u"Authors") - - def __unicode__(self): - return self.person + JOINT + self.source + verbose_name = _(u"Treatment documentation") + verbose_name_plural = _(u"Treament documentations") + treatment = models.ForeignKey(Treatment, verbose_name=_(u"Treatment"), + related_name="source") class Property(LightHistorizedItem): item = models.ForeignKey(Item, verbose_name=_(u"Item")) |
