From 4cd5a62b284d688f9f982c25ad693e9d0d60b027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Thu, 27 Apr 2023 09:14:37 +0200 Subject: [PATCH] add ContractIssue for corresponding issue --- .../commands/import_old_contracts.py | 45 +++++++++++++++++-- package-lock.json | 16 ++++--- shared/templates/shared/includes/base.html | 6 +-- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/contracts/management/commands/import_old_contracts.py b/contracts/management/commands/import_old_contracts.py index 4fcc248..e638be1 100644 --- a/contracts/management/commands/import_old_contracts.py +++ b/contracts/management/commands/import_old_contracts.py @@ -18,6 +18,7 @@ from ...models import ( ContractFile, ContractFilingArea, ContractType, + ContractIssue, Contractee, Signee, SigneeSignature, @@ -67,6 +68,14 @@ class Command(BaseCommand): help="Purge all previous contracts, types and filing areas before the import.", ) + def use_issue(self, contract, name: str) -> None: + try: + issue = ContractIssue.objects.get(name=name) + except ContractIssue.DoesNotExist: + issue = ContractIssue(name=name) + + return issue + def normalize_type(self, type_name: str) -> str: type_name = string.capwords(type_name) @@ -479,11 +488,13 @@ class Command(BaseCommand): signing_party: dict ) -> tuple[ Contract|Signee, + list[ContractIssue], list[ContracteeSignatureRepresentative|SigneeSignatureRepresentative], bool, int ]: issue_count = 0 + issues = [] if ( "jméno" not in signing_party @@ -492,6 +503,7 @@ class Command(BaseCommand): ): issue_count += 1 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: self.stderr.write( @@ -648,6 +660,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -695,6 +708,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -710,6 +724,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -737,6 +752,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -756,6 +772,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -783,6 +800,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -887,7 +905,7 @@ class Command(BaseCommand): else: instance.save() - return instance, representatives, is_contractee, issue_count + return instance, issues, representatives, is_contractee, issue_count def assign_contract_data( self, @@ -901,6 +919,7 @@ class Command(BaseCommand): signees = [] contractees = [] files = [] + issues = [] is_already_imported = False observed_issues_count = 0 @@ -918,6 +937,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -934,6 +954,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -969,6 +990,7 @@ class Command(BaseCommand): elif not isinstance(value, list): observed_issues_count += 1 contract.notes += f"Špatně zadané typy: {value}\n" + issues.append(self.use_issue(contract, "Špatně zadané typy")) if self.verbosity >= 2: self.stderr.write( @@ -982,7 +1004,8 @@ class Command(BaseCommand): for type_name in value: if not isinstance(type_name, str): observed_issues_count += 1 - contract.notes += f"Nezaevidovaný typ: {type_name}\n" + contract.notes += f"Špatně zadaný typ: {type_name}\n" + issues.append(self.use_issue(contract, "Špatně zadaný typ")) if self.verbosity >= 2: self.stderr.write( @@ -1024,6 +1047,7 @@ class Command(BaseCommand): else: observed_issues_count += 1 contract.notes += f"Neznámý stav: {value}\n" + issues.append(self.use_issue(contract, "Neznámý právní stav")) if self.verbosity >= 2: self.stderr.write( @@ -1044,6 +1068,7 @@ class Command(BaseCommand): contract.notes += ( f"Původní, špatně zadané náklady: {value}\n" ) + issues.append(self.use_issue(contract, "Špatně zadané náklady")) if self.verbosity >= 2: self.stderr.write( @@ -1071,6 +1096,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -1086,6 +1112,7 @@ class Command(BaseCommand): elif value not in (None, "0"): observed_issues_count += 1 contract.notes += f"Původní, neropoznané náklady: {value}\n" + issues.append(self.use_issue(contract, "Špatně zadané náklady")) if self.verbosity >= 2: self.stderr.write( @@ -1110,6 +1137,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -1121,6 +1149,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -1135,6 +1164,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -1145,10 +1175,11 @@ class Command(BaseCommand): continue - instance, representatives, is_contractee, signing_party_issue_count = ( + instance, signing_party_issues, representatives, is_contractee, signing_party_issue_count = ( self.assign_signing_party_metadata(slug, contract, signing_party) ) + issues += signing_party_issues observed_issues_count += signing_party_issue_count # Store representatives in relation to the instance, hacky but good enough @@ -1162,6 +1193,7 @@ class Command(BaseCommand): if not isinstance(value, list): observed_issues_count += 1 contract.notes += f"Špatně zadané soubory.\n" + issues.append(self.use_issue(contract, "Špatně zadané soubory")) if self.verbosity >= 2: self.stderr.write( @@ -1176,6 +1208,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -1195,6 +1228,7 @@ 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")) if self.verbosity >= 2: self.stderr.write( @@ -1213,6 +1247,7 @@ class Command(BaseCommand): 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")) if self.verbosity >= 2: self.stderr.write( @@ -1302,8 +1337,12 @@ class Command(BaseCommand): for file in files: file.save() + for issue in issues: + issue.save() + contract.filing_area = filing_area contract.types.set(types) + contract.issues.set(issues) contract.save() else: self.already_imported_count += 1 diff --git a/package-lock.json b/package-lock.json index 555756a..b57b2e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -515,9 +515,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001468", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz", - "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==", + "version": "1.0.30001481", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", + "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==", "funding": [ { "type": "opencollective", @@ -526,6 +526,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -2568,9 +2572,9 @@ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "caniuse-lite": { - "version": "1.0.30001468", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz", - "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==" + "version": "1.0.30001481", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", + "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==" }, "chokidar": { "version": "3.5.3", diff --git a/shared/templates/shared/includes/base.html b/shared/templates/shared/includes/base.html index 2755e32..5520d19 100644 --- a/shared/templates/shared/includes/base.html +++ b/shared/templates/shared/includes/base.html @@ -60,7 +60,7 @@ <div class="container container--default navbar__content" :class="{'navbar__content--initialized': true}"> <div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0"> <a href="/"> - <img src="https://styleguide.pirati.cz/2.12.x/images/logo-round-white.svg" class="w-8" /> + <img src="https://styleguide.pirati.cz/2.12.x/images/logo-round-white.svg" class="w-8"> </a> <a href="/" class="pl-4 font-bold text-xl hover:no-underline lg:border-r lg:border-grey-300 lg:pr-8">Registr smluv</a> </div> @@ -190,8 +190,8 @@ </a> <a href="https://nalodeni.pirati.cz" class="btn btn--icon btn--blue-300 btn--hoveractive text-lg btn--fullwidth sm:btn--autowidth"> <div class="btn__body-wrap"> - <div class="btn__body ">Naloď se</div> - <div class="btn__icon "><i class="ico--anchor"></i></div> + <div class="btn__body">Naloď se</div> + <div class="btn__icon"><i class="ico--anchor"></i></div> </div> </a> </div> -- GitLab