diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-01-23 17:35:10 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-01-23 17:35:10 +0100 |
commit | 3af157dd8916bd2a77d9a7b37ab66b810e545dba (patch) | |
tree | bedf548728b43588d6db3232e8b0ff61a52d75ab /archaeological_context_records/models.py | |
parent | 6cca7cf2d508cac6e8056a79f9b191bca206ed08 (diff) | |
download | Ishtar-3af157dd8916bd2a77d9a7b37ab66b810e545dba.tar.bz2 Ishtar-3af157dd8916bd2a77d9a7b37ab66b810e545dba.zip |
Add relations between context records
* new models definitions: RecordRelations, RelationType
* migrations
* admin update
Diffstat (limited to 'archaeological_context_records/models.py')
-rw-r--r-- | archaeological_context_records/models.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 2654788f7..a8c6a1dcc 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2012-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -133,6 +133,9 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): null=True, verbose_name=_(u"Identification"),) activity = models.ForeignKey(ActivityType,blank=True, null=True, verbose_name=_(u"Activity"),) + related_context_records = models.ManyToManyField('ContextRecord', + through='RecordRelations', + blank=True, null=True) history = HistoricalRecords() class Meta: @@ -238,6 +241,28 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): from archaeological_finds.models import FindSource return FindSource.objects.filter(find__base_finds__context_record=self) +class RelationType(GeneralType): + order = models.IntegerField(_(u"Order"), default=1) + symmetrical = models.BooleanField(_(u"Symmetrical")) + inverse_relation = models.ForeignKey('RelationType', + verbose_name=_(u"Inverse relation"), blank=True, null=True) + + class Meta: + verbose_name = _(u"Relation type") + verbose_name_plural = _(u"Relation types") + ordering = ('order',) + +class RecordRelations(models.Model): + left_record = models.ForeignKey(ContextRecord, + related_name='left_relations') + right_record = models.ForeignKey(ContextRecord, + related_name='right_relations') + relation_type = models.ForeignKey(RelationType) + + class Meta: + verbose_name = _(u"Record relation") + verbose_name_plural = _(u"Record relations") + class ContextRecordSource(Source): class Meta: verbose_name = _(u"Context record documentation") |