From cd6b51c5e721392043d47c4b28b434c80b14923d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Sat, 11 Feb 2023 18:13:06 +0900 Subject: [PATCH] multiple representatives for each signer, migrations --- .gitignore | 1 + ...rrepresentative_contractintent_and_more.py | 189 ++++++++++++++++++ contracts/models.py | 72 ++++--- 3 files changed, 234 insertions(+), 28 deletions(-) create mode 100644 contracts/migrations/0003_contractexternalsignerrepresentative_contractintent_and_more.py diff --git a/.gitignore b/.gitignore index e5a12d8..0a533b6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ staticfiles node_modules/* shared/static/* webpack-stats.json +.venv diff --git a/contracts/migrations/0003_contractexternalsignerrepresentative_contractintent_and_more.py b/contracts/migrations/0003_contractexternalsignerrepresentative_contractintent_and_more.py new file mode 100644 index 0000000..7353a65 --- /dev/null +++ b/contracts/migrations/0003_contractexternalsignerrepresentative_contractintent_and_more.py @@ -0,0 +1,189 @@ +# Generated by Django 4.1.4 on 2023-02-11 09:11 + +import django.db.models.deletion +import markdownx.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("contracts", "0002_initial"), + ] + + operations = [ + migrations.CreateModel( + name="ContractExternalSignerRepresentative", + 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")), + ], + options={ + "verbose_name": "Zástupce druhé smluvní strany", + "verbose_name_plural": "Zástupci druhé smluvní strany", + }, + ), + migrations.CreateModel( + name="ContractIntent", + 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" + ), + ), + ], + options={ + "verbose_name": "Záměr", + "verbose_name_plural": "Záměry", + }, + ), + migrations.CreateModel( + name="ContractLocalSignerRepresentative", + 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")), + ], + options={ + "verbose_name": "Zástupce naší smluvní strany", + "verbose_name_plural": "Zástupci naší smluvní strany", + }, + ), + migrations.RemoveField( + model_name="contract", + name="intent_url", + ), + migrations.RemoveField( + model_name="contractexternalsigner", + name="representative_name", + ), + migrations.RemoveField( + model_name="contractexternalsigner", + name="representative_role", + ), + migrations.RemoveField( + model_name="contractlocalsigner", + name="representative_name", + ), + migrations.RemoveField( + model_name="contractlocalsigner", + name="representative_role", + ), + migrations.AddField( + model_name="contract", + name="notes", + field=markdownx.models.MarkdownxField( + blank=True, + help_text="Poznámky jsou viditelné pro všechny, kteří mohou smlouvu spravovat.", + null=True, + verbose_name="Obsah", + ), + ), + migrations.AlterField( + 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", + ), + ), + migrations.AlterField( + 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.RemoveField( + model_name="contract", + name="subtype", + ), + migrations.AlterField( + model_name="contractexternalsignature", + name="signer", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="signatures", + to="contracts.contractexternalsigner", + ), + ), + migrations.AlterField( + model_name="contractlocalsignature", + name="signer", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="signatures", + to="contracts.contractlocalsigner", + ), + ), + migrations.DeleteModel( + name="ContractNote", + ), + migrations.AddField( + model_name="contractlocalsignerrepresentative", + name="signer", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="representatives", + to="contracts.contractlocalsigner", + ), + ), + migrations.AddField( + model_name="contractintent", + name="contract", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="intents", + to="contracts.contract", + ), + ), + migrations.AddField( + model_name="contractexternalsignerrepresentative", + name="signer", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="representatives", + to="contracts.contractexternalsigner", + ), + ), + migrations.AddField( + model_name="contract", + name="subtype", + field=models.ManyToManyField(to="contracts.contractsubtype"), + ), + ] diff --git a/contracts/models.py b/contracts/models.py index 0a6098f..ade81bb 100644 --- a/contracts/models.py +++ b/contracts/models.py @@ -51,20 +51,6 @@ class ContractExternalSigner(models.Model): verbose_name="Datum narození", ) # WARNING: Legal entity status dependent! - representative_name = models.CharField( - max_length=256, - blank=True, - null=True, - verbose_name="Zástupce", - ) - - representative_role = models.CharField( - max_length=256, - blank=True, - null=True, - verbose_name="Funkce zástupce", - ) - department = models.CharField( max_length=128, blank=True, @@ -77,6 +63,28 @@ class ContractExternalSigner(models.Model): verbose_name_plural = "Druhé smluvní strany" +class ContractExternalSignerRepresentative(models.Model): + signer = models.ForeignKey( + ContractExternalSigner, + on_delete=models.CASCADE, + related_name="representatives", + ) + + name = models.CharField( + max_length=256, + verbose_name="Jméno", + ) + + role = models.CharField( + max_length=256, + verbose_name="Funkce", + ) + + class Meta: + verbose_name = "Zástupce druhé smluvní strany" + verbose_name_plural = "Zástupci druhé smluvní strany" + + class ContractExternalSignature(models.Model): signer = models.ForeignKey( ContractExternalSigner, @@ -127,20 +135,6 @@ class ContractLocalSigner(models.Model): verbose_name="IČO", ) - representative_name = models.CharField( - max_length=256, - blank=True, - null=True, - verbose_name="Zástupce", - ) - - representative_role = models.CharField( - max_length=256, - blank=True, - null=True, - verbose_name="Funkce zástupce", - ) - department = models.CharField( max_length=128, blank=True, @@ -159,6 +153,28 @@ class ContractLocalSigner(models.Model): verbose_name_plural = "Naše smlouvní strany" +class ContractLocalSignerRepresentative(models.Model): + signer = models.ForeignKey( + ContractLocalSigner, + on_delete=models.CASCADE, + related_name="representatives", + ) + + name = models.CharField( + max_length=256, + verbose_name="Jméno", + ) + + role = models.CharField( + max_length=256, + verbose_name="Funkce", + ) + + class Meta: + verbose_name = "Zástupce naší smluvní strany" + verbose_name_plural = "Zástupci naší smluvní strany" + + class ContractLocalSignature(models.Model): signer = models.ForeignKey( ContractLocalSigner, -- GitLab