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

add admin interface

parent fba889c3
Branches
Tags
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