diff --git a/contracts/migrations/0001_initial.py b/contracts/migrations/0001_initial.py index 7b1063e2c2157e2985b77d84616d85eebf1f2362..fb189ca67c8f7d6faa7cbf673deb88847835635f 100644 --- a/contracts/migrations/0001_initial.py +++ b/contracts/migrations/0001_initial.py @@ -1,13 +1,14 @@ -# Generated by Django 4.1.4 on 2023-02-15 03:36 +# Generated by Django 4.1.4 on 2023-02-15 14:24 +from django.conf import settings +from django.db import migrations, models import django.db.models.deletion import django_countries.fields import markdownx.models -from django.conf import settings -from django.db import migrations, models class Migration(migrations.Migration): + initial = True dependencies = [ @@ -16,591 +17,218 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name="Contract", + name='Contract', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(choices=[('primary', 'Hlavní'), ('amendment', 'Dodatek'), ('framework_order', 'Objednávka u rámcové smlouvy')], default='primary', max_length=15, verbose_name='Typ')), + ('contains_nda', models.BooleanField(default=False, verbose_name='Obsahuje NDA')), + ('all_parties_sign_date', models.DateField(verbose_name='Datum podpisu všech stran')), + ('valid_start_date', models.DateField(verbose_name='Začátek účinnosti')), + ('valid_end_date', models.DateField(verbose_name='Konec platnosti')), + ('legal_state', models.CharField(choices=[('valid', 'Platná'), ('effective', 'Účinná'), ('not_effective', 'Neúčinná'), ('invalid', 'Neplatná')], max_length=13, verbose_name='Stav právního ujednání')), + ('public_state', models.CharField(choices=[('unknown', 'Nová'), ('yes', 'Zveřejněná'), ('no', 'Neveřejná')], max_length=7, verbose_name='Veřejnost smlouvy')), + ('paper_form_state', models.CharField(choices=[('sent', 'Odeslaná'), ('stored', 'Uložená'), ('to_shred', 'Ke skartaci'), ('shredded', 'Skartovaná')], max_length=8, verbose_name='Stav papírové formy')), + ('publishing_rejection_comment', models.CharField(blank=True, help_text='Obsah není veřejně přístupný.', max_length=65536, null=True, verbose_name='Důvod nezveřejnění')), + ('tender_url', models.URLField(blank=True, max_length=256, null=True, verbose_name='Odkaz na výběrové řízení')), + ('identifier', models.CharField(max_length=128, verbose_name='Identifikační číslo')), + ('notes', markdownx.models.MarkdownxField(blank=True, help_text='Poznámky jsou viditelné pro všechny, kteří mohou smlouvu spravovat.', null=True, verbose_name='Obsah')), + ('summary', models.CharField(blank=True, help_text='Obsah není veřejně přístupný.', max_length=65536, null=True, verbose_name='Rekapitulace')), + ('expected_cost_total', models.IntegerField(verbose_name='Očekáváná celková cena')), + ('expected_cost_year', models.IntegerField(verbose_name='Očekáváná cena za rok')), + ('expected_cost_month', models.IntegerField(verbose_name='Očekáváná cena za měsíc')), + ('expected_cost_hour', models.IntegerField(verbose_name='Očekáváná cena za hodinu')), + ('agreement_url', models.URLField(blank=True, max_length=256, null=True, verbose_name='Odkaz na schválení')), + ], + options={ + 'verbose_name': 'Smlouva', + 'verbose_name_plural': 'Smlouvy', + }, + ), + migrations.CreateModel( + name='Contractee', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type", - models.CharField( - choices=[ - ("primary", "Hlavní"), - ("amendment", "Dodatek"), - ("framework_order", "Objednávka u rámcové smlouvy"), - ], - default="primary", - max_length=15, - verbose_name="Typ", - ), - ), - ( - "contains_nda", - models.BooleanField(default=False, verbose_name="Obsahuje NDA"), - ), - ( - "all_parties_sign_date", - models.DateField(verbose_name="Datum podpisu všech stran"), - ), - ( - "valid_start_date", - models.DateField(verbose_name="Začátek účinnosti"), - ), - ("valid_end_date", models.DateField(verbose_name="Konec platnosti")), - ( - "legal_state", - models.CharField( - choices=[ - ("valid", "Platná"), - ("effective", "Účinná"), - ("not_effective", "Neúčinná"), - ("invalid", "Neplatná"), - ], - max_length=13, - verbose_name="Stav právního ujednání", - ), - ), - ( - "public_state", - models.CharField( - choices=[ - ("unknown", "Nová"), - ("yes", "Zveřejněná"), - ("no", "Neveřejná"), - ], - max_length=7, - verbose_name="Veřejnost smlouvy", - ), - ), - ( - "paper_form_state", - models.CharField( - choices=[ - ("sent", "Odeslaná"), - ("stored", "Uložená"), - ("to_shred", "Ke skartaci"), - ("shredded", "Skartovaná"), - ], - max_length=8, - verbose_name="Stav papírové formy", - ), - ), - ( - "publishing_rejection_comment", - models.CharField( - blank=True, - help_text="Obsah není veřejně přístupný.", - max_length=65536, - null=True, - verbose_name="Důvod nezveřejnění", - ), - ), - ( - "tender_url", - models.URLField( - blank=True, - max_length=256, - null=True, - verbose_name="Odkaz na výběrové řízení", - ), - ), - ( - "identifier", - models.CharField( - max_length=128, verbose_name="Identifikační číslo" - ), - ), - ( - "notes", - markdownx.models.MarkdownxField( - blank=True, - help_text="Poznámky jsou viditelné pro všechny, kteří mohou smlouvu spravovat.", - null=True, - verbose_name="Obsah", - ), - ), - ( - "summary", - models.CharField( - blank=True, - help_text="Obsah není veřejně přístupný.", - max_length=65536, - null=True, - verbose_name="Rekapitulace", - ), - ), - ( - "anonymized_contract_file", - models.FileField( - upload_to="", verbose_name="Anonymizovaná smlouva (PDF)" - ), - ), - ( - "original_contract_file", - models.FileField( - help_text="Obsah není veřejně přístupný.", - upload_to="", - verbose_name="Originální verze smlouvy (PDF)", - ), - ), - ( - "expected_cost_total", - models.IntegerField(verbose_name="Očekáváná celková cena"), - ), - ( - "expected_cost_year", - models.IntegerField(verbose_name="Očekáváná cena za rok"), - ), - ( - "expected_cost_month", - models.IntegerField(verbose_name="Očekáváná cena za měsíc"), - ), - ( - "expected_cost_hour", - models.IntegerField(verbose_name="Očekáváná cena za hodinu"), - ), - ( - "agreement_url", - models.URLField( - blank=True, - max_length=256, - null=True, - verbose_name="Odkaz na schválení", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='Česká pirátská strana', max_length=256, verbose_name='Jméno')), + ('address_street_with_number', models.CharField(default='Na Moráni 360/3', max_length=256, verbose_name='Ulice, č.p.')), + ('address_district', models.CharField(default='Praha 2', max_length=256, verbose_name='Obec')), + ('address_zip', models.CharField(default='128 00', max_length=16, verbose_name='PSČ')), + ('address_country', django_countries.fields.CountryField(default='CZ', max_length=2, verbose_name='Země')), + ('ico_number', models.CharField(blank=True, default='71339698', max_length=16, null=True, verbose_name='IČO')), + ('department', models.CharField(blank=True, max_length=128, null=True, verbose_name='Organizační složka')), + ('color', models.CharField(max_length=6, verbose_name='Barva')), ], options={ - "verbose_name": "Smlouva", - "verbose_name_plural": "Smlouvy", + 'verbose_name': 'Naše smluvní strana', + 'verbose_name_plural': 'Naše smluvní strany', }, ), migrations.CreateModel( - name="Contractee", + name='ContractFilingArea', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField( - default="Česká pirátská strana", - max_length=256, - verbose_name="Jméno", - ), - ), - ( - "address_street_with_number", - models.CharField( - default="Na Moráni 360/3", - max_length=256, - verbose_name="Ulice, č.p.", - ), - ), - ( - "address_district", - models.CharField( - default="Praha 2", max_length=256, verbose_name="Obec" - ), - ), - ( - "address_zip", - models.CharField( - default="128 00", max_length=16, verbose_name="PSČ" - ), - ), - ( - "address_country", - django_countries.fields.CountryField( - default="CZ", max_length=2, verbose_name="Země" - ), - ), - ( - "ico_number", - models.CharField( - blank=True, - default="71339698", - max_length=16, - null=True, - verbose_name="IČO", - ), - ), - ( - "department", - models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="Organizační složka", - ), - ), - ("color", models.CharField(max_length=6, verbose_name="Barva")), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32, verbose_name='Jméno')), + ('person_responsible', models.CharField(max_length=256, verbose_name='Odpovědná osoba')), ], options={ - "verbose_name": "Naše smluvní strana", - "verbose_name_plural": "Naše smluvní strany", + 'verbose_name': 'Spisovna', + 'verbose_name_plural': 'Spisovny', }, ), migrations.CreateModel( - name="ContractFilingArea", + name='ContractIssue', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=32, verbose_name="Jméno")), - ( - "person_responsible", - models.CharField(max_length=256, verbose_name="Odpovědná osoba"), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32, verbose_name='Jméno')), ], options={ - "verbose_name": "Spisovna", - "verbose_name_plural": "Spisovny", + 'verbose_name': 'Problém se smlouvou', + 'verbose_name_plural': 'Problémy se smlouvami', }, ), migrations.CreateModel( - name="ContractIssue", + name='ContractSubtype', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=32, verbose_name="Jméno")), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32, verbose_name='Jméno')), ], options={ - "verbose_name": "Problém se smlouvou", - "verbose_name_plural": "Problémy se smlouvami", + 'verbose_name': 'Podtyp smlouvy', + 'verbose_name_plural': 'Podtypy smlouvy', }, ), migrations.CreateModel( - name="ContractSubtype", + name='Signee', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=32, verbose_name="Jméno")), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256, verbose_name='Jméno')), + ('is_legal_entity', models.BooleanField(help_text='Důležité označit správně! Pokud není osoba právnická, zveřejňujeme pouze obec a zemi.', verbose_name='Je právnická osoba')), + ('address_street_with_number', models.CharField(help_text='Viditelné pouze u právnických osob.', max_length=256, verbose_name='Ulice, č.p.')), + ('address_district', models.CharField(max_length=256, verbose_name='Obec')), + ('address_zip', models.CharField(help_text='Viditelné pouze u právnických osob.', max_length=16, verbose_name='PSČ')), + ('address_country', django_countries.fields.CountryField(max_length=2, verbose_name='Země')), + ('ico_number', models.CharField(blank=True, max_length=16, null=True, verbose_name='IČO')), + ('date_of_birth', models.DateField(blank=True, null=True, verbose_name='Datum narození')), + ('department', models.CharField(blank=True, max_length=128, null=True, verbose_name='Organizační složka')), ], options={ - "verbose_name": "Podtyp smlouvy", - "verbose_name_plural": "Podtypy smlouvy", + 'verbose_name': 'Druhá smluvní strana', + 'verbose_name_plural': 'Druhé smluvní strany', }, ), migrations.CreateModel( - name="Signee", + name='SigneeSignature', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=256, verbose_name="Jméno")), - ( - "is_legal_entity", - models.BooleanField( - help_text="Důležité označit správně! Pokud není osoba právnická, zveřejňujeme pouze obec a zemi.", - verbose_name="Je právnická osoba", - ), - ), - ( - "address_street_with_number", - models.CharField( - help_text="Viditelné pouze u právnických osob.", - max_length=256, - verbose_name="Ulice, č.p.", - ), - ), - ( - "address_district", - models.CharField(max_length=256, verbose_name="Obec"), - ), - ( - "address_zip", - models.CharField( - help_text="Viditelné pouze u právnických osob.", - max_length=16, - verbose_name="PSČ", - ), - ), - ( - "address_country", - django_countries.fields.CountryField( - max_length=2, verbose_name="Země" - ), - ), - ( - "ico_number", - models.CharField( - blank=True, max_length=16, null=True, verbose_name="IČO" - ), - ), - ( - "date_of_birth", - models.DateField( - blank=True, null=True, verbose_name="Datum narození" - ), - ), - ( - "department", - models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="Organizační složka", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(verbose_name='Datum podpisu')), + ('signee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='signatures', to='contracts.signee', verbose_name='Smluvní strana')), ], options={ - "verbose_name": "Druhá smluvní strana", - "verbose_name_plural": "Druhé smluvní strany", + 'verbose_name': 'Podpis druhé smluvní strany', + 'verbose_name_plural': 'Podpisy druhé smluvní strany', }, ), migrations.CreateModel( - name="SigneeSignature", + name='SigneeRepresentative', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("date", models.DateField(verbose_name="Datum podpisu")), - ( - "signee", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="signatures", - to="contracts.signee", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256, verbose_name='Jméno')), + ('role', models.CharField(max_length=256, verbose_name='Funkce')), + ('signee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='representatives', to='contracts.signee', verbose_name='Smluvní strana')), ], options={ - "verbose_name": "Podpis druhé smluvní strany", - "verbose_name_plural": "Podpisy druhé smluvní strany", + 'verbose_name': 'Zástupce druhé smluvní strany', + 'verbose_name_plural': 'Zástupci druhé smluvní strany', }, ), migrations.CreateModel( - name="SigneeRepresentative", + name='ContractIntent', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=256, verbose_name="Jméno")), - ("role", models.CharField(max_length=256, verbose_name="Funkce")), - ( - "signee", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="representatives", - to="contracts.signee", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('url', models.URLField(blank=True, max_length=256, null=True, verbose_name='Odkaz')), + ('contract', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='intents', to='contracts.contract', verbose_name='Smlouva')), ], options={ - "verbose_name": "Zástupce druhé smluvní strany", - "verbose_name_plural": "Zástupci druhé smluvní strany", + 'verbose_name': 'Záměr', + 'verbose_name_plural': 'Záměry', }, ), migrations.CreateModel( - name="ContractIntent", + name='ContractFile', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "url", - models.URLField( - blank=True, max_length=256, null=True, verbose_name="Odkaz" - ), - ), - ( - "contract", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="intents", - to="contracts.contract", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=128, null=True, verbose_name='Jméno')), + ('is_public', models.BooleanField(default=False, verbose_name='Veřejně dostupný')), + ('file', models.FileField(upload_to='', verbose_name='Soubor')), + ('contract', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='contracts.contract', verbose_name='Soubory')), ], options={ - "verbose_name": "Záměr", - "verbose_name_plural": "Záměry", + 'verbose_name': 'Soubor', + 'verbose_name_plural': 'Soubory', }, ), migrations.CreateModel( - name="ContracteeSignature", + name='ContracteeSignature', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("date", models.DateField(verbose_name="Datum podpisu")), - ( - "contractee", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="signatures", - to="contracts.contractee", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(verbose_name='Datum podpisu')), + ('contractee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='signatures', to='contracts.contractee', verbose_name='Smluvní strana')), ], options={ - "verbose_name": "Podpis naší smluvní strany", - "verbose_name_plural": "Podpisy naší smluvní strany", + 'verbose_name': 'Podpis naší smluvní strany', + 'verbose_name_plural': 'Podpisy naší smluvní strany', }, ), migrations.CreateModel( - name="ContracteeRepresentative", + name='ContracteeRepresentative', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=256, verbose_name="Jméno")), - ("role", models.CharField(max_length=256, verbose_name="Funkce")), - ( - "contractee", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="representatives", - to="contracts.contractee", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256, verbose_name='Jméno')), + ('role', models.CharField(max_length=256, verbose_name='Funkce')), + ('contractee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='representatives', to='contracts.contractee', verbose_name='Smluvní strana')), ], options={ - "verbose_name": "Zástupce naší smluvní strany", - "verbose_name_plural": "Zástupci naší smluvní strany", + 'verbose_name': 'Zástupce naší smluvní strany', + 'verbose_name_plural': 'Zástupci naší smluvní strany', }, ), migrations.AddField( - model_name="contract", - name="contractee_signatures", - field=models.ManyToManyField( - to="contracts.contracteesignature", verbose_name="Naše podpisy" - ), + model_name='contract', + name='contractee_signatures', + field=models.ManyToManyField(to='contracts.contracteesignature', verbose_name='Naše podpisy'), ), migrations.AddField( - model_name="contract", - name="filing_area", - field=models.ForeignKey( - blank=True, - help_text="Obsah není veřejně přístupný.", - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="filed_contracts", - to="contracts.contractfilingarea", - ), + model_name='contract', + name='filing_area', + field=models.ForeignKey(blank=True, help_text='Obsah není veřejně přístupný.', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='filed_contracts', to='contracts.contractfilingarea', verbose_name='Spisovna'), ), migrations.AddField( - model_name="contract", - name="issues", - field=models.ManyToManyField( - to="contracts.contractissue", verbose_name="Problémy" - ), + model_name='contract', + name='issues', + field=models.ManyToManyField(to='contracts.contractissue', verbose_name='Problémy'), ), migrations.AddField( - model_name="contract", - name="primary_contract", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="subcontracts", - to="contracts.contract", - verbose_name="Hlavní smlouva", - ), + model_name='contract', + name='primary_contract', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subcontracts', to='contracts.contract', verbose_name='Hlavní smlouva'), ), migrations.AddField( - model_name="contract", - name="public_status_set_by", - field=models.ForeignKey( - help_text="Obsah není veřejně přístupný.", - on_delete=django.db.models.deletion.CASCADE, - related_name="public_status_altered_contracts", - to=settings.AUTH_USER_MODEL, - verbose_name="Zveřejněno / nezveřejněno uživatelem", - ), + model_name='contract', + name='public_status_set_by', + field=models.ForeignKey(help_text='Obsah není veřejně přístupný.', on_delete=django.db.models.deletion.CASCADE, related_name='public_status_altered_contracts', to=settings.AUTH_USER_MODEL, verbose_name='Zveřejněno / nezveřejněno uživatelem'), ), migrations.AddField( - model_name="contract", - name="signee_signature", - field=models.ManyToManyField( - to="contracts.signeesignature", - verbose_name="Podpisy druhé smluvní strany", - ), + model_name='contract', + name='signee_signature', + field=models.ManyToManyField(to='contracts.signeesignature', verbose_name='Podpisy druhé smluvní strany'), ), migrations.AddField( - model_name="contract", - name="subtype", - field=models.ManyToManyField( - to="contracts.contractsubtype", verbose_name="Podtypy" - ), + model_name='contract', + name='subtype', + field=models.ManyToManyField(to='contracts.contractsubtype', verbose_name='Podtypy'), ), migrations.AddField( - model_name="contract", - name="uploaded_by", - field=models.ForeignKey( - help_text="Informace není veřejně přístupná.", - on_delete=django.db.models.deletion.CASCADE, - related_name="uploaded_contracts", - to=settings.AUTH_USER_MODEL, - verbose_name="Nahráno uživatelem", - ), + model_name='contract', + name='uploaded_by', + field=models.ForeignKey(help_text='Informace není veřejně přístupná.', on_delete=django.db.models.deletion.CASCADE, related_name='uploaded_contracts', to=settings.AUTH_USER_MODEL, verbose_name='Nahráno uživatelem'), ), ] diff --git a/contracts/models.py b/contracts/models.py index b9f8446f098c8990d933d66e452840a407e10f9a..10bcbdec50e12ac61452e6e4f80ad1cd9ce66335 100644 --- a/contracts/models.py +++ b/contracts/models.py @@ -371,15 +371,6 @@ class Contract(models.Model): help_text="Obsah není veřejně přístupný.", ) - anonymized_contract_file = models.FileField( - verbose_name="Anonymizovaná smlouva (PDF)", - ) - - original_contract_file = models.FileField( - verbose_name="Originální verze smlouvy (PDF)", - help_text="Obsah není veřejně přístupný.", - ) - primary_contract = models.ForeignKey( "Contract", on_delete=models.CASCADE, @@ -419,6 +410,35 @@ class Contract(models.Model): verbose_name_plural = "Smlouvy" +class ContractFile(models.Model): + name = models.CharField( + max_length=128, + blank=True, + null=True, + verbose_name="Jméno", + ) + + is_public = models.BooleanField( + verbose_name="Veřejně dostupný", + default=False, + ) + + file = models.FileField( + verbose_name="Soubor", + ) + + contract = models.ForeignKey( + Contract, + on_delete=models.CASCADE, + related_name="files", + verbose_name="Soubory", + ) + + class Meta: + verbose_name = "Soubor" + verbose_name_plural = "Soubory" + + class ContractIntent(models.Model): url = models.URLField( max_length=256,