diff --git a/contracts/management/commands/import_old_contracts.py b/contracts/management/commands/import_old_contracts.py index e39380321bdfec8470adae91b27975d11b4d8303..463be4abaa3d951f94f2757ebc00e18e43e71305 100644 --- a/contracts/management/commands/import_old_contracts.py +++ b/contracts/management/commands/import_old_contracts.py @@ -86,7 +86,7 @@ class Command(BaseCommand): issue.delete() else: - issue = ContractIssue(name=name) + issue = ContractIssue(name=name, is_auto_imported=True) issue.save() return issue @@ -172,18 +172,18 @@ class Command(BaseCommand): patterns = ( (r"\s\s+", " "), - (r"^KraskĂ© sdruĹľenĂ Praha$", "KrajskĂ© sdruĹľenĂ Praha"), + (r"^KraskĂ© sdruĹľenĂ Praha$", "KS Praha"), (r"^republikovĂ© pĹ™edsednictvo$", "RepublikovĂ© pĹ™edsednictvo"), - (r"^KS ", "KrajskĂ© sdruĹľenĂ "), - (r"^(MS |mĂstnĂ sdruĹľenĂ )", "MĂstnĂ sdruĹľenĂ "), - (r"^(ĂšsteckĂ˝ kraj|UsteckĂ˝ kraj)$", "KrajskĂ© sdruĹľenĂ ĂšsteckĂ˝ kraj"), + (r"^KS ", "KS "), + (r"^(MS |mĂstnĂ sdruĹľenĂ )", "MS "), + (r"^(ĂšsteckĂ˝ kraj|UsteckĂ˝ kraj)$", "KS ĂšsteckĂ˝ kraj"), ( r"^MoravskoslezskĂ˝ kraj$", - "KrajskĂ© sdruĹľenĂ MoravskoslezskĂ˝ kraj", + "KS MoravskoslezskĂ˝ kraj", ), ( r"^KarlovarskĂ˝ kraj$", - "KrajskĂ© sdruĹľenĂ KarlovarskĂ˝ kraj", + "KS KarlovarskĂ˝ kraj", ), ( r"JihoÄŤeská kraj", @@ -208,21 +208,23 @@ class Command(BaseCommand): (r"olomouckĂ˝", "OlomouckĂ˝"), (r"^mĂstnĂ ", "MĂstnĂ "), (r"^celostátnĂ ", "CelostátnĂ "), - (r"odbor", "Odbor"), + (r"(o|O)dbor", "odbor"), (r"PKS", "PĹ™edsednictvo krajskĂ©ho sdruĹľenĂ"), (r"( KS | KrajskĂ©ho sdruĹľenĂ )", " krajskĂ©ho sdruĹľenĂ "), ( r"^(PĹ™edsednictvo krajskĂ©ho sdruĹľenĂ |PĹ™edsednictvo |MĂstnĂ pĹ™edsednictvo )", "", ), - (r"^KrajskĂ© pĹ™edsednictvo ", "KrajskĂ© sdruĹľenĂ "), + (r"^KrajskĂ© pĹ™edsednictvo", "KS"), (r"Ă©ho kraje$", "Ă˝ kraj"), - (r"^Olomouc$", "MĂstnĂ sdruĹľenĂ Olomouc"), - (r"^OlomouckĂ˝ kraj$", "KrajskĂ© sdruĹľenĂ OlomouckĂ˝ kraj"), - (r"^PardubickĂ˝ kraj$", "KrajskĂ© sdruĹľenĂ PardubickĂ˝ kraj"), - (r"^JihoÄŤeskĂ˝ kraj$", "KrajskĂ© sdruĹľenĂ JihoÄŤeskĂ˝ kraj"), - (r"^KrálovehradeckĂ˝ kraj$", "KrajskĂ© sdruĹľenĂ KrálovehradeckĂ˝ kraj"), - (r"^PardubickĂ˝ kraj$", "KrajskĂ© sdruĹľenĂ PardubickĂ˝ kraj"), + (r"^Olomouc$", "MS Olomouc"), + (r"^OlomouckĂ˝ kraj$", "KS OlomouckĂ˝ kraj"), + (r"^PardubickĂ˝ kraj$", "KS PardubickĂ˝ kraj"), + (r"^JihoÄŤeskĂ˝ kraj$", "KS JihoÄŤeskĂ˝ kraj"), + (r"^KrálovehradeckĂ˝ kraj$", "KS KrálovehradeckĂ˝ kraj"), + (r"^PardubickĂ˝ kraj$", "KS PardubickĂ˝ kraj"), + (r"^KrajskĂ© sdruĹľenĂ", "KS"), + (r"^MĂstnĂ sdruĹľenĂ", "MS"), ) for pattern in patterns: @@ -376,7 +378,7 @@ class Command(BaseCommand): def assign_signing_party_metadata( self, slug: str, contract: Contract, signing_party: dict ) -> tuple[ - Contract | Signee, + Contractee | Signee, list[ContractIssue], list[ContracteeSignatureRepresentative | SigneeSignatureRepresentative], bool, @@ -631,12 +633,12 @@ class Command(BaseCommand): ): model = Contractee representative_model = ContracteeSignatureRepresentative - instance = model() + instance = model(is_auto_imported=True) is_contractee = True else: model = Signee representative_model = SigneeSignatureRepresentative - instance = model(name=name, address_country="ÄŚeská republika") + instance = model(name=name, is_auto_imported=True, address_country="ÄŚeská republika") if model is Signee: if ( @@ -1083,7 +1085,7 @@ class Command(BaseCommand): try: type_instance = ContractType.objects.get(name=value) except ContractType.DoesNotExist: - type_instance = ContractType(name=value) + type_instance = ContractType(is_auto_imported=True, name=value) types.append(type_instance) @@ -1232,6 +1234,7 @@ class Command(BaseCommand): except ContractFilingArea.DoesNotExist: if isinstance(value, str) and not value.startswith("Neznám"): filing_area = ContractFilingArea( + is_auto_imported=True, name=value, person_responsible="DoplĹ osobu!", ) @@ -1385,6 +1388,7 @@ class Command(BaseCommand): with open(file_path, "rb") as open_file: self.normalization_count += 1 file = ContractFile( + is_auto_imported=True, contract=contract, name=self.normalize_filename(file_key), is_public=True, @@ -1428,6 +1432,7 @@ class Command(BaseCommand): contractee.save() signature = ContracteeSignature( + is_auto_imported=True, contract=contract, contractee=contractee, date=contract.valid_start_date, @@ -1445,6 +1450,7 @@ class Command(BaseCommand): signee.save() signature = SigneeSignature( + is_auto_imported=True, contract=contract, signee=signee, date=contract.valid_start_date, @@ -1471,7 +1477,7 @@ class Command(BaseCommand): def import_contract_from_files( self, contract_root: str, files: list[str], valid_start_date: datetime ) -> None: - contract = Contract(notes="") + contract = Contract(is_auto_imported=True, notes="") for file_ in files: with open( @@ -1635,7 +1641,7 @@ class Command(BaseCommand): Signee, SigneeSignature, ): - model.objects.filter().delete() + model.objects.filter(is_auto_imported=True).delete() if self.verbosity >= 1: self.stdout.write(self.style.SUCCESS("Deleted all previous records.")) diff --git a/contracts/migrations/0072_alter_signeehistoricalname_options_and_more.py b/contracts/migrations/0072_alter_signeehistoricalname_options_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..57dac3d21dad18921d14dd1b7cccda2b523008fb --- /dev/null +++ b/contracts/migrations/0072_alter_signeehistoricalname_options_and_more.py @@ -0,0 +1,62 @@ +# Generated by Django 5.1.1 on 2024-09-26 12:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('contracts', '0071_signeehistoricalname'), + ] + + operations = [ + migrations.AlterModelOptions( + name='signeehistoricalname', + options={'verbose_name': 'HistorickĂ© jmĂ©no smluvnĂ strany', 'verbose_name_plural': 'Historická jmĂ©na smluvnĂ strany'}, + ), + migrations.AddField( + model_name='contract', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contractee', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contracteesignature', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contractfile', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contractfilingarea', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contractissue', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='contracttype', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='signee', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + migrations.AddField( + model_name='signeesignature', + name='is_auto_imported', + field=models.BooleanField(default=False, verbose_name='Je automaticky importovaná'), + ), + ] diff --git a/contracts/models.py b/contracts/models.py index 539390151659d5580fded55299315ae8be27b9c3..e5eb7d9ab62e86b238fd74e9cccf3dac1d1b2910 100644 --- a/contracts/models.py +++ b/contracts/models.py @@ -121,6 +121,11 @@ class Signee( InlineNameMixin, models.Model, ): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, verbose_name="JmĂ©no", @@ -338,6 +343,11 @@ class Contractee( InlineNameMixin, models.Model, ): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, default=get_default_contractee_name, @@ -414,6 +424,11 @@ class Contractee( class ContractType(ContractCountMixin, NameStrMixin, models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, verbose_name="JmĂ©no", @@ -433,6 +448,11 @@ class ContractType(ContractCountMixin, NameStrMixin, models.Model): class ContractIssue(ContractCountMixin, NameStrMixin, models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, verbose_name="JmĂ©no", @@ -452,6 +472,11 @@ class ContractIssue(ContractCountMixin, NameStrMixin, models.Model): class ContractFilingArea(ContractCountMixin, NameStrMixin, models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, verbose_name="JmĂ©no", @@ -486,6 +511,11 @@ get_created_on_timestamp = get_current_utc_timestamp class Contract(NameStrMixin, models.Model): # BEGIN Automatically set fields + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + created_by = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, @@ -952,6 +982,11 @@ class ContractFileField(models.FileField): class ContractFile(NameStrMixin, models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + name = models.CharField( max_length=256, verbose_name="JmĂ©no", @@ -988,6 +1023,11 @@ class ContractFile(NameStrMixin, models.Model): class ContracteeSignature(models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + contractee = models.ForeignKey( Contractee, on_delete=models.CASCADE, @@ -1028,6 +1068,11 @@ class ContracteeSignature(models.Model): class SigneeSignature(models.Model): + is_auto_imported = models.BooleanField( + "Je automaticky importovaná", + default=False, + ) + signee = models.ForeignKey( Signee, on_delete=models.CASCADE,