From 3483f1e91d460fd503e82cc0ffbdf65c3e2c4be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1?= <git@imaniti.org> Date: Fri, 3 Feb 2023 13:13:58 +0900 Subject: [PATCH] fix max_lengths, dir structure, settings, foreign key ondelete & verbose names --- .gitignore | 2 + env.example | 1 + registry/manage.py => manage.py | 0 registry/{registry => }/__init__.py | 0 registry/{registry => }/asgi.py | 0 registry/registry/settings/production.py | 1 - registry/{registry => }/settings/base.py | 11 +++- registry/settings/dev.py | 3 + registry/settings/production.py | 1 + registry/{registry => }/urls.py | 0 registry/{registry => }/wsgi.py | 0 shared/models.py | 79 ++++++++++++++---------- webpack-stats.json | 30 --------- 13 files changed, 63 insertions(+), 65 deletions(-) rename registry/manage.py => manage.py (100%) rename registry/{registry => }/__init__.py (100%) rename registry/{registry => }/asgi.py (100%) delete mode 100644 registry/registry/settings/production.py rename registry/{registry => }/settings/base.py (94%) create mode 100644 registry/settings/dev.py create mode 100644 registry/settings/production.py rename registry/{registry => }/urls.py (100%) rename registry/{registry => }/wsgi.py (100%) delete mode 100644 webpack-stats.json diff --git a/.gitignore b/.gitignore index d50a09f..d8265e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .env __pycache__/ +node_modules/* +shared/static/* diff --git a/env.example b/env.example index f3ee301..9f408e5 100644 --- a/env.example +++ b/env.example @@ -1 +1,2 @@ +SECRET_KEY=supersecret DEFAULT_SIGNING_PARTY_REPRESENTATIVE="Česká pirátská strana\nNa Moráni 360/3\n128 00 Praha 2\nIČ: 71339698\nDIČ: CZ71339698" diff --git a/registry/manage.py b/manage.py similarity index 100% rename from registry/manage.py rename to manage.py diff --git a/registry/registry/__init__.py b/registry/__init__.py similarity index 100% rename from registry/registry/__init__.py rename to registry/__init__.py diff --git a/registry/registry/asgi.py b/registry/asgi.py similarity index 100% rename from registry/registry/asgi.py rename to registry/asgi.py diff --git a/registry/registry/settings/production.py b/registry/registry/settings/production.py deleted file mode 100644 index d8e79df..0000000 --- a/registry/registry/settings/production.py +++ /dev/null @@ -1 +0,0 @@ -from .base import * diff --git a/registry/registry/settings/base.py b/registry/settings/base.py similarity index 94% rename from registry/registry/settings/base.py rename to registry/settings/base.py index 6173ee2..815c3c1 100644 --- a/registry/registry/settings/base.py +++ b/registry/settings/base.py @@ -10,11 +10,18 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/4.0/ref/settings/ """ -from pathlib import Path +import os +import pathlib + +import environ +import dj_database_url # Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent +BASE_DIR = pathlib.Path(__file__).parents[2] + +env = environ.Env() +environ.Env.read_env(os.path.join(BASE_DIR, ".env")) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ diff --git a/registry/settings/dev.py b/registry/settings/dev.py new file mode 100644 index 0000000..3ac92de --- /dev/null +++ b/registry/settings/dev.py @@ -0,0 +1,3 @@ +from .base import * + +DEBUG = True diff --git a/registry/settings/production.py b/registry/settings/production.py new file mode 100644 index 0000000..9b5ed21 --- /dev/null +++ b/registry/settings/production.py @@ -0,0 +1 @@ +from .base import * diff --git a/registry/registry/urls.py b/registry/urls.py similarity index 100% rename from registry/registry/urls.py rename to registry/urls.py diff --git a/registry/registry/wsgi.py b/registry/wsgi.py similarity index 100% rename from registry/registry/wsgi.py rename to registry/wsgi.py diff --git a/shared/models.py b/shared/models.py index 8349f55..8612a55 100644 --- a/shared/models.py +++ b/shared/models.py @@ -5,7 +5,9 @@ from django_countries.fields import CountryField from markdownx.models import MarkdownxField from pirates import models as pirates_models -# Create your models here. + +class User(pirates_models.AbstractUser): + pass class ContractExternalSigner(models.Model): @@ -129,7 +131,7 @@ class ContractLocalSigner(models.Model): verbose_name_plural = "Naše smlouvní strany" -class ContractSubtypes(models.Model): +class ContractSubtype(models.Model): name = models.CharField( max_length=32, verbose_name="Jméno", @@ -172,12 +174,13 @@ class ContractFilingArea(models.Model): class Contract(models.Model): class ContractTypes(models.TextChoices): - PRIMARY = "Hlavní" - AMENDMENT = "Dodatek" - FRAMEWORK_ORDER = "Objednávka u rámcové smlouvy" + PRIMARY = "primary", "Hlavní" + AMENDMENT = "amendment", "Dodatek" + FRAMEWORK_ORDER = "framework_order", "Objednávka u rámcové smlouvy" type_ = models.CharField( - max_length=len(ContractTypes.FRAMEWORK_ORDER), + max_length=15, + choices=ContractTypes.choices, default=ContractTypes.PRIMARY, verbose_name="Typ", ) @@ -200,14 +203,20 @@ class Contract(models.Model): ) # WARNING: Seems to only be used for amendments - external_signer = models.ForeignKey(ContractExternalSigner) + external_signer = models.ForeignKey( + ContractExternalSigner, + on_delete=models.CASCADE, + ) # NOTE: Should we allow these to be null, if a contract is logged before it is signed? external_signer_signature_date = models.DateField( verbose_name="Datum podpisu druhé strany", ) - local_signer = models.ForeignKey(ContractLocalSigner) + local_signer = models.ForeignKey( + ContractLocalSigner, + on_delete=models.CASCADE, + ) local_signer_signature_date = models.DateField( verbose_name="Datum podpisu naší strany", @@ -227,50 +236,50 @@ class Contract(models.Model): uploaded_by = models.ForeignKey( - pirates_models.User, + User, on_delete=models.CASCADE, verbose_name="Nahráno uživatelem", ) class LegalStates(models.TextChoices): - VALID = "Platná" - EFFECTIVE = "Účinná" - NOT_EFFECTIVE = "Neúčinná" - INVALID = "Neplatná" + VALID = "valid", "Platná" + EFFECTIVE = "effective", "Účinná" + NOT_EFFECTIVE = "not_effective", "Neúčinná" + INVALID = "invalid", "Neplatná" class PublicStates(models.TextChoices): - WAITING = "Nová" - YES = "Zveřejněná" - NO = "Neveřejná" + UNKNOWN = "unknown", "Nová" + YES = "yes", "Zveřejněná" + NO = "no", "Neveřejná" class PaperFormStates(models.TextChoices): - SENT = "Odeslaná" - STORED = "Uložená" - TO_SHRED = "Ke skartaci" - SHREDDED = "Skartovaná" + SENT = "sent", "Odeslaná" + STORED = "stored", "Uložená" + TO_SHRED = "to_shred", "Ke skartaci" + SHREDDED = "shredded", "Skartovaná" legal_state = models.CharField( - max_length=len(LegalStates.NOT_EFFECTIVE), # longest choice - choices=LegalStates, + max_length=13, + choices=LegalStates.choices, verbose_name="Stav právního ujednání", ) public_state = models.CharField( - max_length=len(PublicStates.YES), # longest choice - choices=PublicStates, + max_length=7, + choices=PublicStates.choices, verbose_name="Veřejnost smlouvy", ) paper_form_state = models.CharField( - max_length=len(PaperFormStates.TO_SHRED), # longest choice - choices=PaperFormStates, + max_length=8, + choices=PaperFormStates.choices, verbose_name="Stav papírové formy", ) public_status_set_by = models.ForeignKey( - pirates_models.User, + User, on_delete=models.CASCADE, verbose_name="Zveřejněno / nezveřejněno uživatelem", ) @@ -298,7 +307,7 @@ class Contract(models.Model): ) - issues = modles.ManyToManyField(ContractIssue) + issues = models.ManyToManyField(ContractIssue) summary = models.CharField( @@ -314,7 +323,8 @@ class Contract(models.Model): ) primary_contract = models.ForeignKey( - Contract, + "Contract", + on_delete=models.CASCADE, blank=True, null=True, verbose_name="Hlavní smlouva", @@ -355,6 +365,7 @@ class Contract(models.Model): filing_area = models.ForeignKey( ContractFilingArea, + on_delete=models.CASCADE, blank=True, null=True, ) # WARNING: Dependent on the type! @@ -366,11 +377,15 @@ class Contract(models.Model): class ContractNote(models.Model): - contract = models.ForeignKey(Contract) + contract = models.ForeignKey( + Contract, + on_delete=models.CASCADE, + ) author = models.ForeignKey( - pirates_models.User, + User, + on_delete=models.CASCADE, verbose_name="Autor", ) @@ -378,7 +393,7 @@ class ContractNote(models.Model): verbose_name="Datum vytvoření", ) - content = models.MarkdownxField( + content = MarkdownxField( verbose_name="Obsah", ) diff --git a/webpack-stats.json b/webpack-stats.json deleted file mode 100644 index 3e296a9..0000000 --- a/webpack-stats.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "status": "done", - "assets": { - "base-1150289fada5f20f5bd0.js": { - "name": "base-1150289fada5f20f5bd0.js", - "path": "/home/user/Projects/contract-registry/shared/static/shared/base-1150289fada5f20f5bd0.js" - }, - "runtime-1150289fada5f20f5bd0.js": { - "name": "runtime-1150289fada5f20f5bd0.js", - "path": "/home/user/Projects/contract-registry/shared/static/shared/runtime-1150289fada5f20f5bd0.js" - }, - "shared-1150289fada5f20f5bd0.js": { - "name": "shared-1150289fada5f20f5bd0.js", - "path": "/home/user/Projects/contract-registry/shared/static/shared/shared-1150289fada5f20f5bd0.js" - }, - "shared-1150289fada5f20f5bd0.js.LICENSE.txt": { - "name": "shared-1150289fada5f20f5bd0.js.LICENSE.txt", - "path": "/home/user/Projects/contract-registry/shared/static/shared/shared-1150289fada5f20f5bd0.js.LICENSE.txt" - } - }, - "chunks": { - "base": [ - "base-1150289fada5f20f5bd0.js" - ], - "shared": [ - "runtime-1150289fada5f20f5bd0.js", - "shared-1150289fada5f20f5bd0.js" - ] - } -} \ No newline at end of file -- GitLab