summaryrefslogtreecommitdiff
path: root/archaeological_finds/migrations/0133_exhibition.py
blob: a4a29168e316330d92d28aed7cec35d01cb9a69e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Generated by Django 2.2.24 on 2024-11-21 13:05

import archaeological_finds.models_treatments
import datetime
from django.conf import settings
import django.contrib.postgres.fields.jsonb
import django.contrib.postgres.indexes
import django.contrib.postgres.search
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import ishtar_common.models
import ishtar_common.models_common
import ishtar_common.utils
import re
import simple_history.models


def create_default(apps, __):
    ExhibitionType = apps.get_model("archaeological_finds", "ExhibitionType")
    ExhibitionType.objects.get_or_create(
        txt_idx="exhibition", defaults={"label": "Exposition"}
    )


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('ishtar_common', '0258_rename_perm_query'),
        ('archaeological_finds', '0132_exhibitions_basket_for_treatment'),
    ]

    operations = [
        migrations.CreateModel(
            name='ExhibitionType',
            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'), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')),
                ('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
                ('available', models.BooleanField(default=True, verbose_name='Available')),
            ],
            options={
                'verbose_name': 'Exhibition type',
                'verbose_name_plural': 'Exhibition types',
                'ordering': ('label',),
            },
            bases=(ishtar_common.models_common.Cached, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalExhibition',
            fields=[
                ('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
                ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')),
                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict)),
                ('last_modified', models.DateTimeField(blank=True, default=datetime.datetime.now)),
                ('created', models.DateTimeField(blank=True, default=datetime.datetime.now)),
                ('history_m2m', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict)),
                ('locked', models.BooleanField(default=False, verbose_name='Item locked for edition')),
                ('qrcode', models.TextField(blank=True, max_length=255, null=True)),
                ('name', models.TextField(verbose_name='Name')),
                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')),
                ('reference', models.TextField(blank=True, default='-', null=True, verbose_name='Reference')),
                ('associated_basket_id', models.PositiveIntegerField(blank=True, help_text='Reference basket', null=True, verbose_name='Basket ID')),
                ('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField()),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('exhibition_type', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.ExhibitionType', verbose_name='Exhibition type')),
                ('history_creator', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Creator')),
                ('history_modifier', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Last editor')),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('in_charge', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person', verbose_name='Person in charge')),
                ('lock_user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Locked by')),
                ('main_image', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Document', verbose_name='Main image')),
            ],
            options={
                'verbose_name': 'historical Exhibition',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': 'history_date',
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='Exhibition',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')),
                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict)),
                ('last_modified', models.DateTimeField(blank=True, default=datetime.datetime.now)),
                ('created', models.DateTimeField(blank=True, default=datetime.datetime.now)),
                ('history_m2m', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict)),
                ('locked', models.BooleanField(default=False, verbose_name='Item locked for edition')),
                ('qrcode', models.ImageField(blank=True, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path)),
                ('name', models.TextField(verbose_name='Name')),
                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')),
                ('reference', models.TextField(blank=True, default='-', null=True, verbose_name='Reference')),
                ('associated_basket_id', models.PositiveIntegerField(blank=True, help_text='Reference basket', null=True, verbose_name='Basket ID')),
                ('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
                ('documents', models.ManyToManyField(blank=True, related_name='exhibitions', to='ishtar_common.Document', verbose_name='Documents')),
                ('exhibition_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='archaeological_finds.ExhibitionType', verbose_name='Exhibition type')),
                ('history_creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Creator')),
                ('history_modifier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Last editor')),
                ('imports', models.ManyToManyField(blank=True, related_name='imported_archaeological_finds_exhibition', to='ishtar_common.Import', verbose_name='Created by imports')),
                ('imports_updated', models.ManyToManyField(blank=True, related_name='import_updated_archaeological_finds_exhibition', to='ishtar_common.Import', verbose_name='Updated by imports')),
                ('in_charge', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='exhibitions', to='ishtar_common.Person', verbose_name='Person in charge')),
                ('ishtar_users', models.ManyToManyField(blank=True, related_name='exhibition_associated', to='ishtar_common.IshtarUser')),
                ('lock_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Locked by')),
                ('main_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_exhibitions', to='ishtar_common.Document', verbose_name='Main image')),
                ('treatment_files', models.ManyToManyField(blank=True, related_name='exhibitions', to='archaeological_finds.TreatmentFile', verbose_name='Loans')),
            ],
            options={
                'verbose_name': 'Exhibition',
                'verbose_name_plural': 'Exhibitions',
                'ordering': ('year', 'name'),
                'permissions': (('view_own_exhibition', 'Can view own Exhibition'), ('change_own_exhibition', 'Can change own Exhibition'), ('delete_own_exhibition', 'Can delete own Exhibition')),
            },
            bases=(ishtar_common.models_common.DocumentItem, ishtar_common.models_common.StatisticItem, ishtar_common.models_common.TemplateItem, models.Model, ishtar_common.models_common.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models_common.ImageContainerModel, ishtar_common.utils.OwnPerms, ishtar_common.models.ValueGetter, ishtar_common.models_common.MainItem, archaeological_finds.models_treatments.AssociatedFindBasket),
        ),
        migrations.AddIndex(
            model_name='exhibition',
            index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_dd22e0_gin'),
        ),
        migrations.AlterUniqueTogether(
            name='exhibition',
            unique_together={('year', 'name')},
        ),
        migrations.RunPython(create_default),
    ]