diff --git a/contracts/admin.py b/contracts/admin.py index 264fb42788d820632c060a502af93b91e4ecc925..593e03216894c850170f3fc8b922ac7ac40155e9 100644 --- a/contracts/admin.py +++ b/contracts/admin.py @@ -363,7 +363,9 @@ class ContractAdmin( AutocompleteFilterFactory("Typ", "types"), AutocompleteFilterFactory("Spisovna", "filing_area"), AutocompleteFilterFactory("Problém", "issues"), - AutocompleteFilterFactory("Naše smluvná strana", "contractee_signatures__contractee"), + AutocompleteFilterFactory( + "Naše smluvná strana", "contractee_signatures__contractee" + ), AutocompleteFilterFactory("Jiná smluvní strana", "signee_signatures__signee"), "is_approved", "is_valid", diff --git a/contracts/management/commands/import_old_contracts.py b/contracts/management/commands/import_old_contracts.py index e638be1717449c7a563c304aecfe1b44f854cb71..e2758e160f1024d7a9ec24cb7f330d5c3d243f93 100644 --- a/contracts/management/commands/import_old_contracts.py +++ b/contracts/management/commands/import_old_contracts.py @@ -15,15 +15,15 @@ from git import Repo from ...models import ( Contract, + Contractee, + ContracteeSignature, + ContracteeSignatureRepresentative, ContractFile, ContractFilingArea, - ContractType, ContractIssue, - Contractee, + ContractType, Signee, SigneeSignature, - ContracteeSignature, - ContracteeSignatureRepresentative, SigneeSignatureRepresentative, ) @@ -80,10 +80,7 @@ class Command(BaseCommand): type_name = string.capwords(type_name) patterns = ( - ( - r"\s\s+", - " " - ), + (r"\s\s+", " "), (r" O ", " o "), (r" S ", " s "), (r" K ", " k "), @@ -159,30 +156,12 @@ class Command(BaseCommand): type_name = type_name.strip() patterns = ( - ( - r"\s\s+", - " " - ), - ( - r"^Kraské sdružení Praha$", - "Krajské sdružení 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"\s\s+", " "), + (r"^Kraské sdružení Praha$", "Krajské sdružení 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"^Moravskoslezský kraj$", "Krajské sdružení Moravskoslezský kraj", @@ -195,130 +174,40 @@ class Command(BaseCommand): r"Jihočeská kraj", "Jihočeský kraj", ), - ( - r"^(Krajského |krajské |Kajské )", - "Krajské " - ), - ( - "^Poslanecký klub České pirátské strany$", - "Poslanecký klub" - ), - ( - r"Středočeký", - "Středočeský" - ), - ( - r"^Zahraničního odboru$", - "Zahraniční odbor" - ), - ( - r"JčK", - "Jihočeský kraj" - ), - ( - r"SčK", - "Středočeský kraj" - ), - ( - r"(ÚsK|UsK)", - "Ústecký kraj" - ), - ( - r"JmK", - "Jihomoravský kraj" - ), - ( - r"PaK", - "Pardubický kraj" - ), - ( - r"KhK", - "Královehradecký kraj" - ), - ( - r"(Prsonální|personální)", - "Personální" - ), - ( - r"^administrativní ", - "Administrativní " - ), - ( - r"technický", - "Technický" - ), - ( - r"Mediálni", - "Technický" - ), - ( - r"^řešitel ", - "Řešitel " - ), - ( - r"^předsednictvo ", - "Předsednictvo " - ), - ( - r"olomoucký", - "Olomoucký" - ), - ( - r"^místní ", - "Místní " - ), - ( - r"^celostátní ", - "Celostátní " - ), - ( - r"odbor", - "Odbor" - ), - ( - r"PKS", - "Předsednictvo krajského sdružení" - ), - ( - r"( KS | Krajského sdružení )", - " krajského sdružení " - ), + (r"^(Krajského |krajské |Kajské )", "Krajské "), + ("^Poslanecký klub České pirátské strany$", "Poslanecký klub"), + (r"Středočeký", "Středočeský"), + (r"^Zahraničního odboru$", "Zahraniční odbor"), + (r"JčK", "Jihočeský kraj"), + (r"SčK", "Středočeský kraj"), + (r"(ÚsK|UsK)", "Ústecký kraj"), + (r"JmK", "Jihomoravský kraj"), + (r"PaK", "Pardubický kraj"), + (r"KhK", "Královehradecký kraj"), + (r"(Prsonální|personální)", "Personální"), + (r"^administrativní ", "Administrativní "), + (r"technický", "Technický"), + (r"Mediálni", "Technický"), + (r"^řešitel ", "Řešitel "), + (r"^předsednictvo ", "Předsednictvo "), + (r"olomoucký", "Olomoucký"), + (r"^místní ", "Místní "), + (r"^celostátní ", "Celostátní "), + (r"odbor", "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"é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"^Krajské předsednictvo ", "Krajské sdružení "), + (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"), ) for pattern in patterns: @@ -330,10 +219,7 @@ class Command(BaseCommand): area_name = string.capwords(area_name) patterns = ( - ( - r"\s\s+", - " " - ), + (r"\s\s+", " "), ( r"^(Cenrální Spisovna|Censtrální Spisovna|Centrála|Centrálách Archiv Str" r"any|Centrála Strany|Centrální Achiv Strany|Centrální Archiv|Centralni " @@ -423,22 +309,13 @@ class Command(BaseCommand): filename = string.capwords(filename) patterns = ( - ( - r"\s\s+", - " " - ), + (r"\s\s+", " "), ( r"^((P|p)odepsaná (V|v)erze|Strojově Čitelná Verze)$", "Anonymizovaná verze", ), - ( - r"^(P|p)odepsaná (V|v)erze 2$", - "Anonymizovaná verze 2" - ), - ( - r"^(U|u)pravitelná (V|v)erze$", - "Upravitelná verze" - ) + (r"^(P|p)odepsaná (V|v)erze 2$", "Anonymizovaná verze 2"), + (r"^(U|u)pravitelná (V|v)erze$", "Upravitelná verze"), ) for pattern in patterns: @@ -482,16 +359,13 @@ class Command(BaseCommand): return parsed_metadata def assign_signing_party_metadata( - self, - slug: str, - contract: Contract, - signing_party: dict + self, slug: str, contract: Contract, signing_party: dict ) -> tuple[ - Contract|Signee, + Contract | Signee, list[ContractIssue], - list[ContracteeSignatureRepresentative|SigneeSignatureRepresentative], + list[ContracteeSignatureRepresentative | SigneeSignatureRepresentative], bool, - int + int, ]: issue_count = 0 issues = [] @@ -502,7 +376,9 @@ class Command(BaseCommand): and "název společnosti" not in signing_party ): issue_count += 1 - contract.notes += f"Nepojmenovaná smluvní strana, zdrojová data: {signing_party}\n" + contract.notes += ( + f"Nepojmenovaná smluvní strana, zdrojová data: {signing_party}\n" + ) issues.append(self.use_issue(contract, "Špatně pojmenovaná smluvní strana")) if self.verbosity >= 2: @@ -515,114 +391,44 @@ class Command(BaseCommand): return issue_count name = signing_party.get( - "jméno", - signing_party.get( - "název", - signing_party.get("název společnosti") - ) + "jméno", signing_party.get("název", signing_party.get("název společnosti")) ).strip() patterns = ( - ( - r"\s\s+", - " " - ), - ( - r"^(1\. Pirátská s\.r\.o|1\.Pirátská s\.r\.o\.)$", - "1. Pirátská s.r.o." - ), - ( - r"České pojišťovna, a.s.", - "Česká pojišťovna, a.s." - ), - ( - r"Datrolex, s.r.o.", - "DATROLEX, s.r.o." - ), - ( - r"^Jiri ", - "Jiří " - ), + (r"\s\s+", " "), + (r"^(1\. Pirátská s\.r\.o|1\.Pirátská s\.r\.o\.)$", "1. Pirátská s.r.o."), + (r"České pojišťovna, a.s.", "Česká pojišťovna, a.s."), + (r"Datrolex, s.r.o.", "DATROLEX, s.r.o."), + (r"^Jiri ", "Jiří "), ( ( r"^(Křesťanská a demokratická unie – Československá strana lidová|" r"Křesťansko demokratická unie – Československá strana lidová|Křes" r"ťanská a demokratická unie - Československá strana lidová)$" ), - "Křesťanská a demokratická unie – Československá strana lidová" - ), - ( - r"LN - Audit s\.r\.o\." - "LN-AUDIT s.r.o." - ), - ( - r"Olga Richteová", - "Olga Richterová" + "Křesťanská a demokratická unie – Československá strana lidová", ), + (r"LN - Audit s\.r\.o\." "LN-AUDIT s.r.o."), + (r"Olga Richteová", "Olga Richterová"), ( r"^(politické hnutí Změna|PolitickéHnutí Změna)$", - "Politické hnutí Změna" - ), - ( - r"^Systemický institut s\.r\.o\$", - "Systemický institut, s.r.o." - ), - ( - r"^Václav fořtík$", - "Václav Fořtík" - ), - ( - r"^Vodafone$", - "Vodafone Czech Republic a.s." - ), - ( - r"^VojtěchHolík$", - "Vojtěch Holík" - ), - ( - r"^Vojtech ", - "Vojtěch " - ), - ( - r"^Zdenek ", - "Zdeněk " - ), - ( - r" Bohmova$", - " Bohmová" - ), - ( - r" (KUdláčková|Kudlláčková)$", - " Kudláčková" - ), - ( - r"^Jiří knotek$", - "Jiří Knotek" - ), - ( - r"^JIří Roubíček$", - "Jiří Roubíček" - ), - ( - r"^Koalice Vlasta\. z\.s\.$", - "Koalice Vlasta, z.s." - ), - ( - r"^Mikuáš ", - "Mikuláš " - ), - ( - r"^Strana zelených$", - "Strana Zelených" - ), - ( - r"^Systemický institut s\.r\.o\.$", - "Systemický institut, s.r.o." - ), - ( - r"^Adéla hradilová$", - "Adéla Hradilová" - ) + "Politické hnutí Změna", + ), + (r"^Systemický institut s\.r\.o\$", "Systemický institut, s.r.o."), + (r"^Václav fořtík$", "Václav Fořtík"), + (r"^Vodafone$", "Vodafone Czech Republic a.s."), + (r"^VojtěchHolík$", "Vojtěch Holík"), + (r"^Vojtech ", "Vojtěch "), + (r"^Zdenek ", "Zdeněk "), + (r" Bohmova$", " Bohmová"), + (r" (KUdláčková|Kudlláčková)$", " Kudláčková"), + (r"^Jiří knotek$", "Jiří Knotek"), + (r"^JIří Roubíček$", "Jiří Roubíček"), + (r"^Koalice Vlasta\. z\.s\.$", "Koalice Vlasta, z.s."), + (r"^Mikuáš ", "Mikuláš "), + (r"^Strana zelených$", "Strana Zelených"), + (r"^Systemický institut s\.r\.o\.$", "Systemický institut, s.r.o."), + (r"^Adéla hradilová$", "Adéla Hradilová"), ) for pattern in patterns: @@ -660,7 +466,11 @@ class Command(BaseCommand): if not isinstance(signing_party_value, str): issue_count += 1 contract.notes += f"Špatně zadané sídlo smluvní strany: {signing_party_value}\n" - issues.append(self.use_issue(contract, "Špatně zadané sídlo smluvní strany")) + issues.append( + self.use_issue( + contract, "Špatně zadané sídlo smluvní strany" + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -682,21 +492,31 @@ class Command(BaseCommand): instance.address_street_with_number = "" if "road" in address: - instance.address_street_with_number = string.capwords(address["road"]) + instance.address_street_with_number = string.capwords( + address["road"] + ) if "house_number" in address: - instance.address_street_with_number += f" {address['house_number']}" + instance.address_street_with_number += ( + f" {address['house_number']}" + ) for address_key, address_value in address.items(): match address_key: case "city": if "district" not in address: - instance.address_district = string.capwords(address_value) + instance.address_district = string.capwords( + address_value + ) case "house": if "city" not in address and "district" not in address: - instance.address_district = string.capwords(address_value) + instance.address_district = string.capwords( + address_value + ) case "city_district": - instance.address_district = string.capwords(address_value) + instance.address_district = string.capwords( + address_value + ) case "postcode": instance.address_zip = string.capwords(address_value) @@ -705,10 +525,14 @@ class Command(BaseCommand): if is_contractee: continue - if not isinstance(signing_party_value, int|str): + if not isinstance(signing_party_value, int | str): issue_count += 1 - contract.notes += f"Špatně zadané IČO smluvní strany: {signing_party_value}\n" - issues.append(self.use_issue(contract, "Špatně zadané IČO smluvní strany")) + contract.notes += ( + f"Špatně zadané IČO smluvní strany: {signing_party_value}\n" + ) + issues.append( + self.use_issue(contract, "Špatně zadané IČO smluvní strany") + ) if self.verbosity >= 2: self.stderr.write( @@ -721,10 +545,14 @@ class Command(BaseCommand): instance.ico_number = str(signing_party_value) case "zástupce": - if not isinstance(signing_party_value, str|list): + if not isinstance(signing_party_value, str | list): issue_count += 1 contract.notes += f"Špatně zadaný zástupce smluvní strany: {signing_party_value}\n" - issues.append(self.use_issue(contract, "Špatně zadaný zástupce smluvní strany")) + issues.append( + self.use_issue( + contract, "Špatně zadaný zástupce smluvní strany" + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -737,11 +565,7 @@ class Command(BaseCommand): continue if isinstance(signing_party_value, str): - signing_party_value = re.sub( - r",$", - "", - signing_party_value - ) + signing_party_value = re.sub(r",$", "", signing_party_value) self.normalization_count += 1 function = None @@ -752,7 +576,12 @@ class Command(BaseCommand): else: issue_count += 1 contract.notes += f"Špatně zadaná funkce zástupce smluvní strany: {signing_party['funkce']}\n" - issues.append(self.use_issue(contract, "Špatně zadaná funkce zástupce smluvní strany")) + issues.append( + self.use_issue( + contract, + "Špatně zadaná funkce zástupce smluvní strany", + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -763,16 +592,19 @@ class Command(BaseCommand): ) representatives.append( - representative_model( - name=signing_party_value - ) + representative_model(name=signing_party_value) ) else: for representative_name in signing_party_value: if not isinstance(representative_name, str): issue_count += 1 contract.notes += f"Špatně zadaný jeden ze zástupců smluvní strany: {representative_name}\n" - issues.append(self.use_issue(contract, "Špatně zadaný zástupce smluvní strany")) + issues.append( + self.use_issue( + contract, + "Špatně zadaný zástupce smluvní strany", + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -784,23 +616,21 @@ class Command(BaseCommand): continue - representative_name = re.sub( - r",$", - "", - representative_name - ) + representative_name = re.sub(r",$", "", representative_name) self.normalization_count += 1 representatives.append( - representative_model( - name=signing_party_value - ) + representative_model(name=signing_party_value) ) case "orgán": if not isinstance(signing_party_value, str): issue_count += 1 contract.notes += f"Špatně zadaný orgán smluvní strany: {signing_party_value}\n" - issues.append(self.use_issue(contract, "Špatně zadaný orgán smluvní strany")) + issues.append( + self.use_issue( + contract, "Špatně zadaný orgán smluvní strany" + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -862,10 +692,13 @@ class Command(BaseCommand): ) & ( ( - models.Q(address_street_with_number=instance.address_street_with_number) + models.Q( + address_street_with_number=instance.address_street_with_number + ) if instance.address_street_with_number is not None else models.Q(address_street_with_number__isnull=True) - ) | ( + ) + | ( models.Q(date_of_birth=instance.date_of_birth) if model is Signee and instance.date_of_birth is not None else ( @@ -892,12 +725,18 @@ class Command(BaseCommand): if len(existing_instances) != 0: for position, existing_instance in enumerate(existing_instances): - if existing_instance.ico_number is None and instance.ico_number is not None: + if ( + existing_instance.ico_number is None + and instance.ico_number is not None + ): existing_instance.ico_number = instance.ico_number existing_instance.save() instance = existing_instance break - elif existing_instance.ico_number == instance.ico_number or instance.ico_number is None: + elif ( + existing_instance.ico_number == instance.ico_number + or instance.ico_number is None + ): instance = existing_instance break elif position == len(existing_instances) - 1: @@ -937,7 +776,9 @@ class Command(BaseCommand): elif value is not None: observed_issues_count += 1 contract.notes += f"Špatně zadaný začátek platnosti: {value}\n" - issues.append(self.use_issue(contract, "Špatně zadaný začátek platnosti")) + issues.append( + self.use_issue(contract, "Špatně zadaný začátek platnosti") + ) if self.verbosity >= 2: self.stderr.write( @@ -954,7 +795,9 @@ class Command(BaseCommand): ): observed_issues_count += 1 contract.notes += f"Špatně zadaný konec platnosti: {value}\n" - issues.append(self.use_issue(contract, "Špatně zadaný konec platnosti")) + issues.append( + self.use_issue(contract, "Špatně zadaný konec platnosti") + ) if self.verbosity >= 2: self.stderr.write( @@ -1068,7 +911,9 @@ class Command(BaseCommand): contract.notes += ( f"Původní, špatně zadané náklady: {value}\n" ) - issues.append(self.use_issue(contract, "Špatně zadané náklady")) + issues.append( + self.use_issue(contract, "Špatně zadané náklady") + ) if self.verbosity >= 2: self.stderr.write( @@ -1096,7 +941,9 @@ class Command(BaseCommand): ): observed_issues_count += 1 contract.notes += f"Původní, neropoznané náklady: {value}\n" - issues.append(self.use_issue(contract, "Špatně zadané náklady")) + issues.append( + self.use_issue(contract, "Špatně zadané náklady") + ) if self.verbosity >= 2: self.stderr.write( @@ -1137,7 +984,9 @@ class Command(BaseCommand): else: observed_issues_count += 1 contract.notes += f"Špatně zadaná spisovna: {value}\n" - issues.append(self.use_issue(contract, "Špatně zadaná spisovna")) + issues.append( + self.use_issue(contract, "Špatně zadaná spisovna") + ) if self.verbosity >= 2: self.stderr.write( @@ -1148,8 +997,12 @@ class Command(BaseCommand): case "smluvní strany": if not isinstance(value, list): observed_issues_count += 1 - contract.notes += f"Špatně zadané smluvní strany, nejsou seznam: {value}\n" - issues.append(self.use_issue(contract, "Špatně zadaný smluvní strany")) + contract.notes += ( + f"Špatně zadané smluvní strany, nejsou seznam: {value}\n" + ) + issues.append( + self.use_issue(contract, "Špatně zadaný smluvní strany") + ) if self.verbosity >= 2: self.stderr.write( @@ -1163,8 +1016,12 @@ class Command(BaseCommand): for signing_party in value: if not isinstance(signing_party, dict): observed_issues_count += 1 - contract.notes += f"Špatně zadaná smluvní strana: {signing_party}\n" - issues.append(self.use_issue(contract, "Špatně zadaná smluvní strana")) + contract.notes += ( + f"Špatně zadaná smluvní strana: {signing_party}\n" + ) + issues.append( + self.use_issue(contract, "Špatně zadaná smluvní strana") + ) if self.verbosity >= 2: self.stderr.write( @@ -1175,8 +1032,14 @@ class Command(BaseCommand): continue - instance, signing_party_issues, representatives, is_contractee, signing_party_issue_count = ( - self.assign_signing_party_metadata(slug, contract, signing_party) + ( + instance, + signing_party_issues, + representatives, + is_contractee, + signing_party_issue_count, + ) = self.assign_signing_party_metadata( + slug, contract, signing_party ) issues += signing_party_issues @@ -1207,8 +1070,14 @@ class Command(BaseCommand): for file_data in value: if not isinstance(file_data, dict): observed_issues_count += 1 - contract.notes += f"Špatně zadané informace o souboru: {file_data}.\n" - issues.append(self.use_issue(contract, "Špatně zadané informace o souboru")) + contract.notes += ( + f"Špatně zadané informace o souboru: {file_data}.\n" + ) + issues.append( + self.use_issue( + contract, "Špatně zadané informace o souboru" + ) + ) if self.verbosity >= 2: self.stderr.write( @@ -1228,7 +1097,9 @@ class Command(BaseCommand): if not isinstance(file_value, str): observed_issues_count += 1 contract.notes += f"Špatně zadaný název souboru {file_key}: {file_value}.\n" - issues.append(self.use_issue(contract, "Neplatný název souboru")) + issues.append( + self.use_issue(contract, "Neplatný název souboru") + ) if self.verbosity >= 2: self.stderr.write( @@ -1239,15 +1110,16 @@ class Command(BaseCommand): continue - file_path = os.path.join( - contract_root, - file_value - ) + file_path = os.path.join(contract_root, file_value) if not os.path.isfile(file_path): observed_issues_count += 1 - contract.notes += f"Neexistující soubor: {file_value}.\n" - issues.append(self.use_issue(contract, "Neexistující soubor")) + contract.notes += ( + f"Neexistující soubor: {file_value}.\n" + ) + issues.append( + self.use_issue(contract, "Neexistující soubor") + ) if self.verbosity >= 2: self.stderr.write( @@ -1263,7 +1135,7 @@ class Command(BaseCommand): file = ContractFile( contract=contract, name=self.normalize_filename(file_key), - is_public=True + is_public=True, ) file.file.save( diff --git a/contracts/migrations/0053_alter_contractfile_file.py b/contracts/migrations/0053_alter_contractfile_file.py index aa0900d944457b4e00028d0ee4a751df7f62d332..b5fefd1c6fa3aba07b7cedbbd7d815fee1496ba0 100644 --- a/contracts/migrations/0053_alter_contractfile_file.py +++ b/contracts/migrations/0053_alter_contractfile_file.py @@ -1,19 +1,22 @@ # Generated by Django 4.1.4 on 2023-04-21 12:10 -import contracts.models from django.db import migrations +import contracts.models + class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0052_remove_contract_legal_state_contract_is_valid'), + ("contracts", "0052_remove_contract_legal_state_contract_is_valid"), ] operations = [ migrations.AlterField( - model_name='contractfile', - name='file', - field=contracts.models.ContractFileField(upload_to=contracts.models.get_contract_file_loaction, verbose_name='Soubor'), + model_name="contractfile", + name="file", + field=contracts.models.ContractFileField( + upload_to=contracts.models.get_contract_file_loaction, + verbose_name="Soubor", + ), ), ] diff --git a/contracts/migrations/0054_alter_signee_address_zip_alter_signee_ico_number.py b/contracts/migrations/0054_alter_signee_address_zip_alter_signee_ico_number.py index 7a6ea981dc7c481caa8939e22dafcdc9cb5b9232..52d1ce4ff5182c5a11d9e6b9df574bb24679e659 100644 --- a/contracts/migrations/0054_alter_signee_address_zip_alter_signee_ico_number.py +++ b/contracts/migrations/0054_alter_signee_address_zip_alter_signee_ico_number.py @@ -4,20 +4,31 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0053_alter_contractfile_file'), + ("contracts", "0053_alter_contractfile_file"), ] operations = [ migrations.AlterField( - model_name='signee', - name='address_zip', - field=models.CharField(blank=True, help_text='Veřejné pouze, když typ není nastaven na fyzickou osobu.', max_length=256, null=True, verbose_name='PSČ'), + model_name="signee", + name="address_zip", + field=models.CharField( + blank=True, + help_text="Veřejné pouze, když typ není nastaven na fyzickou osobu.", + max_length=256, + null=True, + verbose_name="PSČ", + ), ), migrations.AlterField( - model_name='signee', - name='ico_number', - field=models.CharField(blank=True, help_text='U právnických a podnikajících fyzických osob musí být vyplněno. Vyplněním můžeš automaticky načíst data z ARES.', max_length=256, null=True, verbose_name='IČO'), + model_name="signee", + name="ico_number", + field=models.CharField( + blank=True, + help_text="U právnických a podnikajících fyzických osob musí být vyplněno. Vyplněním můžeš automaticky načíst data z ARES.", + max_length=256, + null=True, + verbose_name="IČO", + ), ), ] diff --git a/contracts/migrations/0055_alter_contractee_address_zip_and_more.py b/contracts/migrations/0055_alter_contractee_address_zip_and_more.py index ea6c711dbaea760820bac281ddbe866dbe8e9d02..1bbcaaead5596e9a3ed11cb27999276ad4daa13c 100644 --- a/contracts/migrations/0055_alter_contractee_address_zip_and_more.py +++ b/contracts/migrations/0055_alter_contractee_address_zip_and_more.py @@ -1,24 +1,34 @@ # Generated by Django 4.1.4 on 2023-04-21 22:52 -import contracts.models from django.db import migrations, models +import contracts.models + class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0054_alter_signee_address_zip_alter_signee_ico_number'), + ("contracts", "0054_alter_signee_address_zip_alter_signee_ico_number"), ] operations = [ migrations.AlterField( - model_name='contractee', - name='address_zip', - field=models.CharField(default=contracts.models.get_default_contractee_zip, max_length=256, verbose_name='PSČ'), + model_name="contractee", + name="address_zip", + field=models.CharField( + default=contracts.models.get_default_contractee_zip, + max_length=256, + verbose_name="PSČ", + ), ), migrations.AlterField( - model_name='contractee', - name='ico_number', - field=models.CharField(blank=True, default=contracts.models.get_default_contractee_ico_number, max_length=256, null=True, verbose_name='IČO'), + model_name="contractee", + name="ico_number", + field=models.CharField( + blank=True, + default=contracts.models.get_default_contractee_ico_number, + max_length=256, + null=True, + verbose_name="IČO", + ), ), ] diff --git a/contracts/migrations/0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more.py b/contracts/migrations/0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more.py index c3ae4aa8b22da4923091d84c165a616e0d50124a..c80d53df487dc8a2b924de82067876fcac22c760 100644 --- a/contracts/migrations/0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more.py +++ b/contracts/migrations/0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more.py @@ -4,20 +4,19 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0055_alter_contractee_address_zip_and_more'), + ("contracts", "0055_alter_contractee_address_zip_and_more"), ] operations = [ migrations.RenameField( - model_name='contracteesignaturerepresentative', - old_name='contractee_signature', - new_name='signature', + model_name="contracteesignaturerepresentative", + old_name="contractee_signature", + new_name="signature", ), migrations.RenameField( - model_name='signeesignaturerepresentative', - old_name='signee_signature', - new_name='signature', + model_name="signeesignaturerepresentative", + old_name="signee_signature", + new_name="signature", ), ] diff --git a/contracts/migrations/0057_alter_contract_options_alter_contractee_options_and_more.py b/contracts/migrations/0057_alter_contract_options_alter_contractee_options_and_more.py index 78898b509d833d2bcee3aaf617b7c950d072f7c1..37e8323528e972094deedab264181334dc7e38b4 100644 --- a/contracts/migrations/0057_alter_contract_options_alter_contractee_options_and_more.py +++ b/contracts/migrations/0057_alter_contract_options_alter_contractee_options_and_more.py @@ -4,34 +4,77 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more'), + ( + "contracts", + "0056_rename_contractee_signature_contracteesignaturerepresentative_signature_and_more", + ), ] operations = [ migrations.AlterModelOptions( - name='contract', - options={'ordering': ('-created_on', '-updated_on', '-name'), 'permissions': [('approve', 'Schválit / zrušit schválení'), ('view_confidential', 'Zobrazit tajné informace'), ('edit_when_approved', 'Upravit schválené'), ('delete_when_approved', 'Odstranit schválené'), ('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí'), ('can_edit_contract_settings', 'Can edit Smlouva settings')], 'verbose_name': 'Smlouva', 'verbose_name_plural': 'Smlouvy'}, + name="contract", + options={ + "ordering": ("-created_on", "-updated_on", "-name"), + "permissions": [ + ("approve", "Schválit / zrušit schválení"), + ("view_confidential", "Zobrazit tajné informace"), + ("edit_when_approved", "Upravit schválené"), + ("delete_when_approved", "Odstranit schválené"), + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ("can_edit_contract_settings", "Can edit Smlouva settings"), + ], + "verbose_name": "Smlouva", + "verbose_name_plural": "Smlouvy", + }, ), migrations.AlterModelOptions( - name='contractee', - options={'ordering': ['-name', '-department'], 'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Naše smluvní strana', 'verbose_name_plural': 'Naše smluvní strany'}, + name="contractee", + options={ + "ordering": ["-name", "-department"], + "permissions": [ + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ], + "verbose_name": "Naše smluvní strana", + "verbose_name_plural": "Naše smluvní strany", + }, ), migrations.AlterModelOptions( - name='contractfilingarea', - options={'ordering': ['-name'], 'verbose_name': 'Spisovna', 'verbose_name_plural': 'Spisovny'}, + name="contractfilingarea", + options={ + "ordering": ["-name"], + "verbose_name": "Spisovna", + "verbose_name_plural": "Spisovny", + }, ), migrations.AlterModelOptions( - name='contractissue', - options={'ordering': ['-name'], 'verbose_name': 'Problém se smlouvou', 'verbose_name_plural': 'Problémy se smlouvami'}, + name="contractissue", + options={ + "ordering": ["-name"], + "verbose_name": "Problém se smlouvou", + "verbose_name_plural": "Problémy se smlouvami", + }, ), migrations.AlterModelOptions( - name='contracttype', - options={'ordering': ['-name'], 'verbose_name': 'Typ smlouvy', 'verbose_name_plural': 'Typy smluv'}, + name="contracttype", + options={ + "ordering": ["-name"], + "verbose_name": "Typ smlouvy", + "verbose_name_plural": "Typy smluv", + }, ), migrations.AlterModelOptions( - name='signee', - options={'ordering': ['-name', '-department'], 'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Jiná smluvní strana', 'verbose_name_plural': 'Ostatní smluvní strany'}, + name="signee", + options={ + "ordering": ["-name", "-department"], + "permissions": [ + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ], + "verbose_name": "Jiná smluvní strana", + "verbose_name_plural": "Ostatní smluvní strany", + }, ), ] diff --git a/contracts/migrations/0058_alter_contract_options_alter_contractee_options_and_more.py b/contracts/migrations/0058_alter_contract_options_alter_contractee_options_and_more.py index c17f7b0ea88c220834059e244d1bdf97a1881fba..52f5e1f0dbb24bfcfb4f5b3b5d02387a6be89e56 100644 --- a/contracts/migrations/0058_alter_contract_options_alter_contractee_options_and_more.py +++ b/contracts/migrations/0058_alter_contract_options_alter_contractee_options_and_more.py @@ -4,34 +4,74 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ - ('contracts', '0057_alter_contract_options_alter_contractee_options_and_more'), + ("contracts", "0057_alter_contract_options_alter_contractee_options_and_more"), ] operations = [ migrations.AlterModelOptions( - name='contract', - options={'ordering': ('-created_on', '-updated_on', 'name'), 'permissions': [('approve', 'Schválit / zrušit schválení'), ('view_confidential', 'Zobrazit tajné informace'), ('edit_when_approved', 'Upravit schválené'), ('delete_when_approved', 'Odstranit schválené'), ('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí'), ('can_edit_contract_settings', 'Can edit Smlouva settings')], 'verbose_name': 'Smlouva', 'verbose_name_plural': 'Smlouvy'}, + name="contract", + options={ + "ordering": ("-created_on", "-updated_on", "name"), + "permissions": [ + ("approve", "Schválit / zrušit schválení"), + ("view_confidential", "Zobrazit tajné informace"), + ("edit_when_approved", "Upravit schválené"), + ("delete_when_approved", "Odstranit schválené"), + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ("can_edit_contract_settings", "Can edit Smlouva settings"), + ], + "verbose_name": "Smlouva", + "verbose_name_plural": "Smlouvy", + }, ), migrations.AlterModelOptions( - name='contractee', - options={'ordering': ['name', 'department'], 'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Naše smluvní strana', 'verbose_name_plural': 'Naše smluvní strany'}, + name="contractee", + options={ + "ordering": ["name", "department"], + "permissions": [ + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ], + "verbose_name": "Naše smluvní strana", + "verbose_name_plural": "Naše smluvní strany", + }, ), migrations.AlterModelOptions( - name='contractfilingarea', - options={'ordering': ['name'], 'verbose_name': 'Spisovna', 'verbose_name_plural': 'Spisovny'}, + name="contractfilingarea", + options={ + "ordering": ["name"], + "verbose_name": "Spisovna", + "verbose_name_plural": "Spisovny", + }, ), migrations.AlterModelOptions( - name='contractissue', - options={'ordering': ['name'], 'verbose_name': 'Problém se smlouvou', 'verbose_name_plural': 'Problémy se smlouvami'}, + name="contractissue", + options={ + "ordering": ["name"], + "verbose_name": "Problém se smlouvou", + "verbose_name_plural": "Problémy se smlouvami", + }, ), migrations.AlterModelOptions( - name='contracttype', - options={'ordering': ['name'], 'verbose_name': 'Typ smlouvy', 'verbose_name_plural': 'Typy smluv'}, + name="contracttype", + options={ + "ordering": ["name"], + "verbose_name": "Typ smlouvy", + "verbose_name_plural": "Typy smluv", + }, ), migrations.AlterModelOptions( - name='signee', - options={'ordering': ['name', 'department'], 'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Jiná smluvní strana', 'verbose_name_plural': 'Ostatní smluvní strany'}, + name="signee", + options={ + "ordering": ["name", "department"], + "permissions": [ + ("edit_others", "Upravit cizí"), + ("delete_others", "Odstranit cizí"), + ], + "verbose_name": "Jiná smluvní strana", + "verbose_name_plural": "Ostatní smluvní strany", + }, ), ] diff --git a/contracts/models.py b/contracts/models.py index aaad5e1e6f86af244bee092cf7f36c26375d277e..114c3da823e855598c227c9bca478ea86296fdf9 100644 --- a/contracts/models.py +++ b/contracts/models.py @@ -8,8 +8,8 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.core.validators import RegexValidator, URLValidator from django.db import models -from django.db.models.signals import post_save from django.db.models.fields.files import FieldFile +from django.db.models.signals import post_save from django.dispatch import receiver from django.urls import reverse from django.utils.safestring import mark_safe @@ -843,7 +843,9 @@ def get_contract_file_loaction(instance, filename): class ContractFileProxy(FieldFile): @property def url(self) -> str: - return reverse("contracts:download_contract_file", args=(str(self.instance.id),)) + return reverse( + "contracts:download_contract_file", args=(str(self.instance.id),) + ) class ContractFileField(models.FileField):