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

add admin interface

parent fba889c3
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ from django.contrib import admin ...@@ -2,6 +2,7 @@ from django.contrib import admin
from shared.admin import MarkdownxGuardedModelAdmin from shared.admin import MarkdownxGuardedModelAdmin
from .forms import ContractAdminForm
from .models import ( from .models import (
Contract, Contract,
Contractee, Contractee,
...@@ -22,6 +23,37 @@ class IndexHiddenModelAdmin(MarkdownxGuardedModelAdmin): ...@@ -22,6 +23,37 @@ class IndexHiddenModelAdmin(MarkdownxGuardedModelAdmin):
return False return False
class ContractAdmin(MarkdownxGuardedModelAdmin):
form = ContractAdminForm
fields = (
"type",
"subtype",
"signee_signature",
"contractee_signatures",
"valid_start_date",
"valid_end_date",
"legal_state",
"public_state",
"paper_form_state",
"publishing_rejection_comment",
"tender_url",
"identifier",
"issues",
"notes",
"summary",
"anonymized_contract_file",
"original_contract_file",
"primary_contract",
"expected_cost_total",
"expected_cost_year",
"expected_cost_month",
"expected_cost_hour",
"agreement_url",
"filing_area",
)
for model in ( for model in (
SigneeRepresentative, SigneeRepresentative,
SigneeSignature, SigneeSignature,
...@@ -37,6 +69,7 @@ for model in ( ...@@ -37,6 +69,7 @@ for model in (
Contractee, Contractee,
ContractIssue, ContractIssue,
ContractFilingArea, ContractFilingArea,
Contract,
): ):
admin.site.register(model, MarkdownxGuardedModelAdmin) admin.site.register(model, MarkdownxGuardedModelAdmin)
admin.site.register(Contract, ContractAdmin)
from django import forms
from webpack_loader.loader import WebpackLoader
class ContractAdminForm(forms.ModelForm):
class Media:
js = (
"shared/runtime.js",
"shared/shared.js",
"shared/admin_contract_form.js",
)
...@@ -68,6 +68,7 @@ class SigneeRepresentative(models.Model): ...@@ -68,6 +68,7 @@ class SigneeRepresentative(models.Model):
Signee, Signee,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name="representatives", related_name="representatives",
verbose_name="Smluvní strana",
) )
name = models.CharField( name = models.CharField(
...@@ -90,6 +91,7 @@ class SigneeSignature(models.Model): ...@@ -90,6 +91,7 @@ class SigneeSignature(models.Model):
Signee, Signee,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name="signatures", related_name="signatures",
verbose_name="Smluvní strana",
) )
date = models.DateField( date = models.DateField(
...@@ -162,6 +164,7 @@ class ContracteeRepresentative(models.Model): ...@@ -162,6 +164,7 @@ class ContracteeRepresentative(models.Model):
Contractee, Contractee,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name="representatives", related_name="representatives",
verbose_name="Smluvní strana",
) )
name = models.CharField( name = models.CharField(
...@@ -184,6 +187,7 @@ class ContracteeSignature(models.Model): ...@@ -184,6 +187,7 @@ class ContracteeSignature(models.Model):
Contractee, Contractee,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name="signatures", related_name="signatures",
verbose_name="Smluvní strana",
) )
date = models.DateField( date = models.DateField(
...@@ -334,7 +338,7 @@ class Contract(models.Model): ...@@ -334,7 +338,7 @@ class Contract(models.Model):
null=True, null=True,
verbose_name="Důvod nezveřejnění", verbose_name="Důvod nezveřejnění",
help_text="Obsah není veřejně přístupný.", help_text="Obsah není veřejně přístupný.",
) # WARNING: exclude in admin ) # WARNING: public status dependent
tender_url = models.URLField( tender_url = models.URLField(
max_length=256, max_length=256,
...@@ -406,6 +410,7 @@ class Contract(models.Model): ...@@ -406,6 +410,7 @@ class Contract(models.Model):
blank=True, blank=True,
null=True, null=True,
related_name="filed_contracts", related_name="filed_contracts",
verbose_name="Spisovna",
help_text="Obsah není veřejně přístupný.", help_text="Obsah není veřejně přístupný.",
) # WARNING: Dependent on the type! ) # WARNING: Dependent on the type!
...@@ -426,6 +431,7 @@ class ContractIntent(models.Model): ...@@ -426,6 +431,7 @@ class ContractIntent(models.Model):
Contract, Contract,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name="intents", related_name="intents",
verbose_name="Smlouva",
) )
class Meta: class Meta:
......
import $ from "jquery";
$(window).ready(
() => {
$(".field-publishing_rejection_comment").
css(
"display",
(
($("#id_public_state").find(":selected").val() === "no") ?
"block": "none"
)
);
const allowedPrimaryContractValues = new Set(["amendment", "framework_order"]);
$(".field-primary_contract").
css(
"display",
(
(
allowedPrimaryContractValues.has(
$("#id_type").find(":selected").val()
)
) ?
"block": "none"
)
);
$("#id_public_state").on(
"change",
event => {
$(".field-publishing_rejection_comment").
css(
"display",
(
($(event.target).val() === "no") ?
"block" : "none"
)
);
}
);
$("#id_type").on(
"change",
event => {
$(".field-primary_contract").
css(
"display",
(
(allowedPrimaryContractValues.has($(event.target).val())) ?
"block": "none"
)
);
}
);
}
);
...@@ -9,11 +9,15 @@ module.exports = { ...@@ -9,11 +9,15 @@ module.exports = {
import: path.resolve("static_src", "base.js"), import: path.resolve("static_src", "base.js"),
dependOn: "shared", dependOn: "shared",
}, },
admin_contract_form: {
import: path.resolve("static_src", "admin", "contract_form.js"),
dependOn: "shared",
},
shared: ["jquery"], shared: ["jquery"],
}, },
output: { output: {
path: path.resolve(__dirname, "shared", "static", "shared"), path: path.resolve(__dirname, "shared", "static", "shared"),
filename: "[name]-[fullhash].js", filename: "[name].js", // Whitenoise takes care of hashes for us
}, },
module: { module: {
rules: [ rules: [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment