Skip to content

Commit

Permalink
feat: declare md fields for terms and serve them
Browse files Browse the repository at this point in the history
  • Loading branch information
sirtawast committed Aug 16, 2023
1 parent 1ccd538 commit d1b6b56
Show file tree
Hide file tree
Showing 9 changed files with 194 additions and 3 deletions.
3 changes: 3 additions & 0 deletions backend/benefit/terms/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ class TermsAdmin(admin.ModelAdmin):
inlines = (ApplicantConsentInline,)
list_display = ("id", "terms_type", "effective_from")

class Media:
css = {"all": ("css/markdownx.css",)}


class ApprovedApplicantConsentInline(admin.ModelAdmin):
model = ApplicantConsent
Expand Down
3 changes: 3 additions & 0 deletions backend/benefit/terms/api/v1/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ class Meta:
"terms_pdf_fi",
"terms_pdf_en",
"terms_pdf_sv",
"terms_md_fi",
"terms_md_en",
"terms_md_sv",
"applicant_consents",
]

Expand Down
27 changes: 27 additions & 0 deletions backend/benefit/terms/migrations/0005_add_support_for_md_terms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 3.2.18 on 2023-08-15 13:02

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("terms", "0004_alter_terms_terms_type"),
]

operations = [
migrations.AddField(
model_name="terms",
name="terms_md_en",
field=models.TextField(blank=True, verbose_name="English terms (md)"),
),
migrations.AddField(
model_name="terms",
name="terms_md_fi",
field=models.TextField(blank=True, verbose_name="Finnish terms (md)"),
),
migrations.AddField(
model_name="terms",
name="terms_md_sv",
field=models.TextField(blank=True, verbose_name="Swedish terms (md)"),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 3.2.18 on 2023-08-15 13:04

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('terms', '0005_add_support_for_md_terms'),
]

operations = [
migrations.AlterField(
model_name='terms',
name='terms_pdf_en',
field=models.FileField(blank=True, upload_to='', verbose_name='english terms (pdf file)'),
),
migrations.AlterField(
model_name='terms',
name='terms_pdf_fi',
field=models.FileField(blank=True, upload_to='', verbose_name='finnish terms (pdf file)'),
),
migrations.AlterField(
model_name='terms',
name='terms_pdf_sv',
field=models.FileField(blank=True, upload_to='', verbose_name='swedish terms (pdf file)'),
),
]
41 changes: 38 additions & 3 deletions backend/benefit/terms/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
from django.forms import ValidationError
from django.utils.translation import gettext_lazy as _

from applications.models import Application
Expand Down Expand Up @@ -34,16 +35,50 @@ class Terms(UUIDModel, TimeStampedModel):
default=TermsType.APPLICANT_TERMS,
)

terms_md_fi = models.TextField(verbose_name=_("Finnish terms (md)"), blank=True)
terms_md_en = models.TextField(verbose_name=_("English terms (md)"), blank=True)
terms_md_sv = models.TextField(verbose_name=_("Swedish terms (md)"), blank=True)

"""
If effective_from is set to null, that means the terms are not to be displayed to the applicant.
"""
effective_from = models.DateField(
verbose_name=_("first day these terms are in effect"), null=True, blank=True
)

terms_pdf_fi = models.FileField(verbose_name=_("finnish terms (pdf file)"))
terms_pdf_en = models.FileField(verbose_name=_("english terms (pdf file)"))
terms_pdf_sv = models.FileField(verbose_name=_("swedish terms (pdf file)"))
terms_pdf_fi = models.FileField(
verbose_name=_("finnish terms (pdf file)"), blank=True
)
terms_pdf_en = models.FileField(
verbose_name=_("english terms (pdf file)"), blank=True
)
terms_pdf_sv = models.FileField(
verbose_name=_("swedish terms (pdf file)"), blank=True
)

def clean(self):
required_fields_pdf = [
self.terms_pdf_en,
self.terms_pdf_fi,
self.terms_pdf_sv,
]
required_fields_md = [
self.terms_md_en,
self.terms_md_fi,
self.terms_md_sv,
]
if not all(required_fields_md) and not all(required_fields_pdf):
raise ValidationError(
_("PDF or MD fields are missing for FI/EN/SV! Fill in either or")
)
if all(required_fields_pdf) and any(required_fields_md):
raise ValidationError(
_("PDF or MD fields are missing for FI/EN/SV! Fill in either or")
)
if all(required_fields_md) and any(required_fields_pdf):
raise ValidationError(
_("PDF or MD fields are missing for FI/EN/SV! Fill in either or")
)

@property
def is_editable(self):
Expand Down
41 changes: 41 additions & 0 deletions backend/benefit/terms/static/css/markdownx.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.module .EasyMDEContainer h1,
.module .EasyMDEContainer h2,
.module .EasyMDEContainer h3,
.module .EasyMDEContainer h4,
.module .EasyMDEContainer h5,
.module .EasyMDEContainer h6 {
color: #000;
background: none;
margin: 0;
padding: 0;
margin-bottom: 1.2rem;
font-weight: 400;
text-transform: none;
letter-spacing: 0;
line-height: 1.25;
}

.module .EasyMDEContainer h1 {
font-size: 2em;
}
.module .EasyMDEContainer h2 {
font-size: 1.75em;
}

.module .EasyMDEContainer h3 {
font-size: 1.5em;
}

.module .EasyMDEContainer h4,
.module .EasyMDEContainer h5,
.module .EasyMDEContainer h6 {
font-size: 1.25em;
}

.module .EasyMDEContainer ul {
margin-left: 1em;
}
.module .EasyMDEContainer ul li {
list-style: disc;
font-size: 1em;
}
7 changes: 7 additions & 0 deletions backend/benefit/terms/static/css/vendor/easymde.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions backend/benefit/terms/static/js/vendor/easymde.min.js

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions backend/benefit/terms/templates/admin/base_site.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{% extends 'admin/base.html' %} {% block footer%}

<link rel="stylesheet" href="/static/css/vendor/easymde.min.css" />
<script src="/static/js/vendor/easymde.min.js"></script>

<script>
document.addEventListener(
"DOMContentLoaded",
function () {
try {
["id_terms_md_fi", "id_terms_md_en", "id_terms_md_sv"].map(
function (id) {
const easyMDE = new EasyMDE({
spellChecker: false,
toolbar: [
"heading",
"bold",
"italic",
"link",
"|",
"quote",
"unordered-list",
"ordered-list",
"|",
"preview",
"side-by-side",
],
sideBySideFullscreen: false,
element: document.getElementById(id),
});
}
);
} catch (error) {
console.error(error);
}
},
false
);
</script>
{% endblock %}

0 comments on commit d1b6b56

Please sign in to comment.