From 73cf3c6fce232a1106b23d4595d6c43c19927b18 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 13:44:29 +0900
Subject: [PATCH] implementing new requirements - manytomany subtypes, multiple
 intent URLs, shared notes

---
 .pre-commit-config.yaml |  2 +-
 contracts/models.py     | 50 +++++++++++++++--------------------------
 2 files changed, 19 insertions(+), 33 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7d3057f..1cdf315 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,5 +1,5 @@
 default_language_version:
-  python: python3.10
+  python: python3.11
 
 exclude: snapshots/
 repos:
diff --git a/contracts/models.py b/contracts/models.py
index 9834438..0a6098f 100644
--- a/contracts/models.py
+++ b/contracts/models.py
@@ -222,12 +222,7 @@ class Contract(models.Model):
         verbose_name="Typ",
     )
 
-    subtype = models.ForeignKey(
-        ContractSubtype,
-        on_delete=models.CASCADE,
-        related_name="contracts",
-        verbose_name="Podtyp",
-    )
+    subtype = models.ManyToManyField(ContractSubtype)
 
     contains_nda = models.BooleanField(
         default=False,
@@ -321,6 +316,12 @@ class Contract(models.Model):
     )
 
     issues = models.ManyToManyField(ContractIssue)
+    notes = MarkdownxField(
+        blank=True,
+        null=True,
+        verbose_name="Obsah",
+        help_text="Poznámky jsou viditelné pro všechny, kteří mohou smlouvu spravovat.",
+    )
 
     summary = models.CharField(
         max_length=65536,
@@ -356,13 +357,6 @@ class Contract(models.Model):
 
     expected_cost_hour = models.IntegerField(verbose_name="Očekáváná cena za hodinu")
 
-    intent_url = models.URLField(
-        max_length=256,
-        blank=True,
-        null=True,
-        verbose_name="Odkaz na záměr",
-    )
-
     agreement_url = models.URLField(
         max_length=256,
         blank=True,
@@ -384,28 +378,20 @@ class Contract(models.Model):
         verbose_name_plural = "Smlouvy"
 
 
-class ContractNote(models.Model):
-    contract = models.ForeignKey(
-        Contract,
-        on_delete=models.CASCADE,
-        related_name="contract",
+class ContractIntent(models.Model):
+    url = models.URLField(
+        max_length=256,
+        blank=True,
+        null=True,
+        verbose_name="Odkaz",
     )
 
-    author = models.ForeignKey(
-        User,
-        related_name="contract_notes",
+    contract = models.ForeignKey(
+        Contract,
         on_delete=models.CASCADE,
-        verbose_name="Autor",
-    )
-
-    created_date = models.DateTimeField(
-        verbose_name="Datum vytvoření",
-    )
-
-    content = MarkdownxField(
-        verbose_name="Obsah",
+        related_name="intents",
     )
 
     class Meta:
-        verbose_name = "Poznámka ke smlouvě"
-        verbose_name_plural = "Poznámky ke smlouvě"
+        verbose_name = "Záměr"
+        verbose_name_plural = "Záměry"
-- 
GitLab