Skip to content
Snippets Groups Projects
Commit 40322068 authored by Tomáš Valenta's avatar Tomáš Valenta
Browse files

multiple approval urls

parent f32c1f8d
No related branches found
No related tags found
No related merge requests found
Pipeline #12393 passed
...@@ -19,6 +19,7 @@ from .models import ( ...@@ -19,6 +19,7 @@ from .models import (
ContractFile, ContractFile,
ContractFilingArea, ContractFilingArea,
ContractIntent, ContractIntent,
ContractApproval,
ContractIssue, ContractIssue,
ContractType, ContractType,
Signee, Signee,
...@@ -140,6 +141,11 @@ class ContractFileInline(NestedTabularInline): ...@@ -140,6 +141,11 @@ class ContractFileInline(NestedTabularInline):
extra = 0 extra = 0
class ContractApprovalInline(NestedTabularInline):
model = ContractApproval
extra = 0
class ContractIntentInline(NestedTabularInline): class ContractIntentInline(NestedTabularInline):
model = ContractIntent model = ContractIntent
extra = 0 extra = 0
...@@ -180,6 +186,7 @@ class ContractAdmin( ...@@ -180,6 +186,7 @@ class ContractAdmin(
ContractFileInline, ContractFileInline,
ContracteeSignatureInline, ContracteeSignatureInline,
SigneeSignatureInline, SigneeSignatureInline,
ContractApprovalInline,
ContractIntentInline, ContractIntentInline,
) )
...@@ -229,7 +236,6 @@ class ContractAdmin( ...@@ -229,7 +236,6 @@ class ContractAdmin(
{ {
"fields": [ "fields": [
"tender_url", "tender_url",
"agreement_url",
] ]
}, },
), ),
...@@ -284,12 +290,13 @@ class ContractAdmin( ...@@ -284,12 +290,13 @@ class ContractAdmin(
FieldsetInlineOrder.INLINE, FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.FIELDSET, FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.INLINE, FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.FIELDSET, FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.FIELDSET, FieldsetInlineOrder.FIELDSET,
] ]
if context["user"].has_perm("approve", self): if context["user"].has_perm("approve", self):
order.insert(10, FieldsetInlineOrder.FIELDSET) order.insert(11, FieldsetInlineOrder.FIELDSET)
return order return order
...@@ -548,6 +555,7 @@ admin.site.register(Permission) ...@@ -548,6 +555,7 @@ admin.site.register(Permission)
for model in ( for model in (
SigneeSignature, SigneeSignature,
ContracteeSignature, ContracteeSignature,
ContractApproval,
ContractIntent, ContractIntent,
): ):
admin.site.register(model, ContractSubmodelAdmin) admin.site.register(model, ContractSubmodelAdmin)
......
# Generated by Django 4.1.4 on 2023-04-16 13:13
import contracts.models
from django.db import migrations, models
import django.db.models.deletion
import shared.models
class Migration(migrations.Migration):
dependencies = [
('contracts', '0046_alter_contract_paper_form_state'),
]
operations = [
migrations.RemoveField(
model_name='contract',
name='agreement_url',
),
migrations.CreateModel(
name='ContractApproval',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128, verbose_name='Jméno')),
('url', contracts.models.SubdomainValidatedURLField(help_text='Běžně odkaz na fórum. Využívá se např. u koaličních smluv. Musí začínat <i>https</i> a být pod doménou <i>pirati.cz</i>.', max_length=256, verbose_name='Odkaz')),
('contract', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='approvals', to='contracts.contract', verbose_name='Smlouva')),
],
options={
'verbose_name': 'Schválení',
'verbose_name_plural': 'Schválení',
},
bases=(shared.models.NameStrMixin, models.Model),
),
]
# Generated by Django 4.1.4 on 2023-04-16 13:17
import contracts.models
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('contracts', '0047_remove_contract_agreement_url_contractapproval'),
]
operations = [
migrations.AlterModelOptions(
name='contractapproval',
options={'verbose_name': 'Odkaz na schválení na Fóru', 'verbose_name_plural': 'Odkazy na schválení na Fóru'},
),
migrations.AlterModelOptions(
name='contractintent',
options={'verbose_name': 'Odkaz na záměr v Piroplácení', 'verbose_name_plural': 'Odkazy na záměry v Piroplácení'},
),
migrations.AlterField(
model_name='contractapproval',
name='url',
field=contracts.models.SubdomainValidatedURLField(help_text='Využívá se např. u koaličních smluv. Musí začínat <i>https</i> a být pod doménou <i>pirati.cz</i>.', max_length=256, verbose_name='Odkaz'),
),
]
...@@ -589,17 +589,6 @@ class Contract(NameStrMixin, models.Model): ...@@ -589,17 +589,6 @@ class Contract(NameStrMixin, models.Model):
), ),
) )
agreement_url = SubdomainValidatedURLField(
max_length=256,
blank=True,
null=True,
verbose_name="Odkaz na schválení",
help_text=mark_safe(
"Běžně odkaz na fórum. Využívá se např. u koaličních smluv. "
"Musí začínat <i>https</i> a být pod doménou <i>pirati.cz</i>."
),
) # WARNING: Dependent on the type!
issues = models.ManyToManyField( issues = models.ManyToManyField(
ContractIssue, ContractIssue,
blank=True, blank=True,
...@@ -998,6 +987,35 @@ def signing_parties_post_save_update_dates(sender, instance, *args, **kwargs) -> ...@@ -998,6 +987,35 @@ def signing_parties_post_save_update_dates(sender, instance, *args, **kwargs) ->
instance.contract.calculate_signing_parties_sign_date() instance.contract.calculate_signing_parties_sign_date()
class ContractApproval(NameStrMixin, models.Model):
name = models.CharField(
max_length=128,
verbose_name="Jméno",
)
url = SubdomainValidatedURLField(
max_length=256,
verbose_name="Odkaz",
help_text=mark_safe(
"Využívá se např. u koaličních smluv. Musí začínat <i>https</i> "
"a být pod doménou <i>pirati.cz</i>."
),
)
contract = models.ForeignKey(
Contract,
on_delete=models.CASCADE,
related_name="approvals",
verbose_name="Smlouva",
)
class Meta:
app_label = "contracts"
verbose_name = "Odkaz na schválení na Fóru"
verbose_name_plural = "Odkazy na schválení na Fóru"
class ContractIntent(NameStrMixin, models.Model): class ContractIntent(NameStrMixin, models.Model):
name = models.CharField( name = models.CharField(
max_length=128, max_length=128,
...@@ -1022,5 +1040,5 @@ class ContractIntent(NameStrMixin, models.Model): ...@@ -1022,5 +1040,5 @@ class ContractIntent(NameStrMixin, models.Model):
class Meta: class Meta:
app_label = "contracts" app_label = "contracts"
verbose_name = "Záměr v Piroplácení" verbose_name = "Odkaz na záměr v Piroplácení"
verbose_name_plural = "Záměry v Piroplácení" verbose_name_plural = "Odkazy na záměry v Piroplácení"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment