diff options
-rw-r--r-- | ishtar_common/admin.py | 3 | ||||
-rw-r--r-- | ishtar_common/migrations/0205_auto_20200527_1500.py | 110 | ||||
-rw-r--r-- | ishtar_common/models.py | 49 |
3 files changed, 158 insertions, 4 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index ac88cfdc6..67b2ff41c 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -913,7 +913,8 @@ class GeneralTypeAdmin(ImportActionAdmin, ImportJSONActionAdmin): general_models = [models.OrganizationType, models.SourceType, models.AuthorType, models.TitleType, models.Format, - models.SupportType, models.PersonType, models.LicenseType] + models.SupportType, models.PersonType, models.LicenseType, + models.DocumentTag, models.Language] for model in general_models: admin_site.register(model, GeneralTypeAdmin) diff --git a/ishtar_common/migrations/0205_auto_20200527_1500.py b/ishtar_common/migrations/0205_auto_20200527_1500.py new file mode 100644 index 000000000..deed0ad90 --- /dev/null +++ b/ishtar_common/migrations/0205_auto_20200527_1500.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-05-27 15:00 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.models +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0204_auto_20200514_1124'), + ] + + operations = [ + migrations.CreateModel( + name='DocumentTag', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.TextField(verbose_name='Label')), + ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), + ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ], + options={ + 'verbose_name': 'Document tag', + 'verbose_name_plural': 'Document tags', + 'ordering': ('label',), + }, + bases=(ishtar_common.models.Cached, models.Model), + ), + migrations.CreateModel( + name='Language', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.TextField(verbose_name='Label')), + ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), + ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ('iso_code', models.CharField(blank=True, max_length=2, null=True, verbose_name='ISO code')), + ], + options={ + 'verbose_name': 'Language', + 'verbose_name_plural': 'Languages', + }, + bases=(ishtar_common.models.Cached, models.Model), + ), + migrations.AlterModelOptions( + name='sourcetype', + options={'ordering': ['label'], 'verbose_name': 'Document type', 'verbose_name_plural': 'Document types'}, + ), + migrations.AddField( + model_name='document', + name='isbn', + field=models.CharField(blank=True, max_length=13, null=True, verbose_name='ISBN'), + ), + migrations.AddField( + model_name='document', + name='issn', + field=models.CharField(blank=True, max_length=8, null=True, verbose_name='ISSN'), + ), + migrations.AddField( + model_name='document', + name='publisher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Organization', verbose_name='Publisher'), + ), + migrations.AddField( + model_name='document', + name='source', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Document', verbose_name='Source'), + ), + migrations.AddField( + model_name='document', + name='source_free_input', + field=models.CharField(blank=True, max_length=500, null=True, verbose_name='Source - free input'), + ), + migrations.AddField( + model_name='sourcetype', + name='coins_genre', + field=models.CharField(blank=True, max_length=100, verbose_name='COInS export - genre'), + ), + migrations.AddField( + model_name='sourcetype', + name='coins_type', + field=models.CharField(default='document', max_length=100, verbose_name='COInS export - type'), + ), + migrations.AddField( + model_name='sourcetype', + name='is_localized', + field=models.BooleanField(default=False, help_text='Setting a language for this type of document is relevant', verbose_name='Is localized'), + ), + migrations.AddField( + model_name='document', + name='language', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Language', verbose_name='Language'), + ), + migrations.AddField( + model_name='document', + name='tags', + field=models.ManyToManyField(blank=True, to='ishtar_common.DocumentTag', verbose_name='Tags'), + ), + migrations.AddField( + model_name='ishtarsiteprofile', + name='default_language', + field=models.ForeignKey(blank=True, help_text='If set, by default the selected language will be set for localized documents.', null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Language', verbose_name='Default language for documentation'), + ), + ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 4b9253b03..b3a19c42f 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -2819,6 +2819,14 @@ def get_external_id(key, item): return value +class Language(GeneralType): + iso_code = models.CharField(_("ISO code"), null=True, blank=True, + max_length=2) + class Meta: + verbose_name = _("Language") + verbose_name_plural = _("Languages") + + CURRENCY = (("€", _("Euro")), ("$", _("US dollar"))) FIND_INDEX_SOURCE = (("O", _("Operations")), @@ -3022,6 +3030,13 @@ class IshtarSiteProfile(models.Model, Cached): help_text=_("Spatial Reference System used for display when no SRS is " "defined") ) + default_language = models.ForeignKey( + Language, + verbose_name=_("Default language for documentation"), + blank=True, null=True, + help_text=_("If set, by default the selected language will be set for " + "localized documents.") + ) objects = SlugModelManager() class Meta: @@ -3309,7 +3324,6 @@ class GlobalVar(models.Model, Cached): return str(self.slug) - def cached_globalvar_changed(sender, **kwargs): if not kwargs['instance']: return @@ -5251,9 +5265,18 @@ post_save.connect(author_post_save, sender=Author) class SourceType(HierarchicalType): + coins_type = models.CharField(_("COInS export - type"), default='document', + max_length=100) + coins_genre = models.CharField(_("COInS export - genre"), blank=True, + max_length=100) + is_localized = models.BooleanField( + _("Is localized"), default=False, + help_text=_("Setting a language for this type of document is relevant") + ) + class Meta: - verbose_name = _("Source type") - verbose_name_plural = _("Source types") + verbose_name = _("Document type") + verbose_name_plural = _("Document types") ordering = ['label'] @@ -5291,6 +5314,13 @@ class LicenseType(GeneralType): ordering = ('label',) +class DocumentTag(GeneralType): + class Meta: + verbose_name = _("Document tag") + verbose_name_plural = _("Document tags") + ordering = ('label',) + + post_save.connect(post_save_cache, sender=LicenseType) post_delete.connect(post_save_cache, sender=LicenseType) @@ -5499,8 +5529,21 @@ class Document(BaseHistorizedItem, QRCodeItem, OwnPerms, ImageModel, source_type = models.ForeignKey(SourceType, verbose_name=_("Type"), on_delete=models.SET_NULL, null=True, blank=True) + publisher = models.ForeignKey(Organization, verbose_name=_("Publisher"), + blank=True, null=True) licenses = models.ManyToManyField(LicenseType, verbose_name=_("License"), blank=True) + tags = models.ManyToManyField(DocumentTag, verbose_name=_("Tags"), + blank=True) + language = models.ForeignKey( + Language, verbose_name=_("Language"), blank=True, null=True) + issn = models.CharField(_("ISSN"), blank=True, null=True, max_length=8) + isbn = models.CharField(_("ISBN"), blank=True, null=True, max_length=13) + source = models.ForeignKey("Document", verbose_name=_("Source"), + blank=True, null=True) + source_free_input = models.CharField( + verbose_name=_("Source - free input"), blank=True, null=True, + max_length=500) support_type = models.ForeignKey(SupportType, verbose_name=_("Support"), on_delete=models.SET_NULL, blank=True, null=True, ) |