summaryrefslogtreecommitdiff
path: root/ishtar/furnitures
diff options
context:
space:
mode:
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
commit2d008477cb66ec3e356fd9153afba7affede249c (patch)
treefe1e94142584ca185d31a795604d6229d8646922 /ishtar/furnitures
parent7f871c7698c56dce6f398e850a08d5619cebd243 (diff)
downloadIshtar-2d008477cb66ec3e356fd9153afba7affede249c.tar.bz2
Ishtar-2d008477cb66ec3e356fd9153afba7affede249c.zip
Model management of sources
Diffstat (limited to 'ishtar/furnitures')
-rw-r--r--ishtar/furnitures/admin.py36
-rw-r--r--ishtar/furnitures/models.py104
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"))