From b56bbec534bd7772c7300ad5b82235e835933329 Mon Sep 17 00:00:00 2001 From: Jaap Joris Vens Date: Wed, 11 Mar 2020 11:48:37 +0100 Subject: [PATCH] Ready for the first deployment! --- cms/forms.py | 85 ++++++++++++--------------- cms/static/cms/admin.scss | 12 ++-- cms/static/cms/admin.scss.css | 16 +++-- cms/static/cms/admin.scss.css.map | 2 +- cms/templates/cms/edit.html | 5 +- cms/templates/registration/login.html | 24 ++++---- cms/views.py | 2 +- 7 files changed, 73 insertions(+), 73 deletions(-) diff --git a/cms/forms.py b/cms/forms.py index 60862ab..48e5ce5 100644 --- a/cms/forms.py +++ b/cms/forms.py @@ -7,41 +7,24 @@ from django.utils.translation import gettext_lazy as _ Page = swapper.load_model('cms', 'Page') Section = swapper.load_model('cms', 'Section') -class ConfirmationForm(forms.Form): - pass - -class ContactForm(forms.Form): - sender = forms.EmailField(label=_('Your email address')) - spam_protection = forms.CharField(label=_('Your message'), widget=forms.Textarea()) - message = forms.CharField(label=_('Your message'), widget=forms.Textarea(), initial='Hi there!') - - def save(self, request): - hostname = request.get_host() - body = self.cleaned_data.get('spam_protection') - if len(body.split()) < 7: - return - spamcheck = self.cleaned_data.get('message') - if spamcheck != 'Hi there!': - return - - email = EmailMessage( - to = ['info@' + hostname], - from_email = 'noreply@' + hostname, - body = body, - subject = _('Contact form at %(hostname)s.') % {'hostname': hostname}, - headers = {'Reply-To': self.cleaned_data.get('sender')}, - ) - email.send() - class PageForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.formsets = [SectionFormSet( + extra = 1 if self.instance.pk else 2 + self.formsets = [forms.inlineformset_factory( + parent_model = Page, + model = Section, + form = SectionForm, + formset = BaseSectionFormSet, + extra=extra, + )( data=self.data if self.is_bound else None, files=self.files if self.is_bound else None, instance=self.instance, form_kwargs={'label_suffix': self.label_suffix}, )] + if not self.instance.pk: + self.formsets[0][0].empty_permitted = False def is_valid(self): return super().is_valid() and self.formsets[0].is_valid() @@ -76,9 +59,6 @@ class SectionForm(forms.ModelForm): self.fields['type'].choices = self._meta.model.TYPES self.fields['type'].initial = self._meta.model.TYPES[0][0] - self.fields['type'].widget.attrs['class'] = 'type' - self.fields['type'].widget.attrs['data-form'] = self.prefix - def delete(self): instance = super().save() instance.delete() @@ -111,10 +91,6 @@ class SectionForm(forms.ModelForm): # ignored entirely. Workaround to force a ChoiceField anyway: type = forms.ChoiceField() - - -#SectionFormSet = inlineformset_factory(Page, Section, form=SectionForm, extra=1) - class BaseSectionFormSet(forms.BaseInlineFormSet): '''If a swappable Section model defines one-to-many fields, (i.e. has foreign keys pointing to it) formsets will be generated for the @@ -136,11 +112,13 @@ class BaseSectionFormSet(forms.BaseInlineFormSet): form.formsets = [] for field in section._meta.get_fields(): if field.one_to_many: - if getattr(section, field.name).exists(): - extra = 1 - else: - extra = 2 - formset = forms.inlineformset_factory(Section, field.related_model, fields='__all__', extra=extra)( + extra = 1 if getattr(section, field.name).exists() else 2 + + formset = forms.inlineformset_factory( + Section, field.related_model, + fields='__all__', + extra=extra, + )( instance=section, data=form.data if self.is_bound else None, files=form.files if self.is_bound else None, @@ -165,10 +143,25 @@ class BaseSectionFormSet(forms.BaseInlineFormSet): formset.save(commit=commit) return result -SectionFormSet = forms.inlineformset_factory( - parent_model = Page, - model = Section, - form = SectionForm, - formset = BaseSectionFormSet, - extra=1, -) +class ContactForm(forms.Form): + sender = forms.EmailField(label=_('Your email address')) + spam_protection = forms.CharField(label=_('Your message'), widget=forms.Textarea()) + message = forms.CharField(label=_('Your message'), widget=forms.Textarea(), initial='Hi there!') + + def save(self, request): + hostname = request.get_host() + body = self.cleaned_data.get('spam_protection') + if len(body.split()) < 7: + return + spamcheck = self.cleaned_data.get('message') + if spamcheck != 'Hi there!': + return + + email = EmailMessage( + to = ['info@' + hostname], + from_email = 'noreply@' + hostname, + body = body, + subject = _('Contact form at %(hostname)s.') % {'hostname': hostname}, + headers = {'Reply-To': self.cleaned_data.get('sender')}, + ) + email.send() diff --git a/cms/static/cms/admin.scss b/cms/static/cms/admin.scss index 13df777..1ee9587 100644 --- a/cms/static/cms/admin.scss +++ b/cms/static/cms/admin.scss @@ -1,8 +1,10 @@ $font: Merriweather, sans-serif; -body { +html, body { font-family: $font; line-height: 2; + margin: 0; + padding: 0; } /* Form elements */ @@ -12,10 +14,13 @@ form.cms { overflow: hidden; min-height: 100vh; $background: #fff6; - padding-bottom: 125px; + display: flex; + align-items: center; + justify-content: center; div.wrapper { - margin: 0 auto; + max-width: none; + flex: 0 1 640px; padding: 0 0.5em; } @@ -33,7 +38,6 @@ form.cms { clear: both; width: 50px; cursor: pointer; - float: right; } div.formfield { diff --git a/cms/static/cms/admin.scss.css b/cms/static/cms/admin.scss.css index ab8a281..6885e27 100644 --- a/cms/static/cms/admin.scss.css +++ b/cms/static/cms/admin.scss.css @@ -1,15 +1,20 @@ -body { +html, body { font-family: Merriweather, sans-serif; - line-height: 2; } + line-height: 2; + margin: 0; + padding: 0; } /* Form elements */ form.cms { background: #bfb; overflow: hidden; min-height: 100vh; - padding-bottom: 125px; } + display: flex; + align-items: center; + justify-content: center; } form.cms div.wrapper { - margin: 0 auto; + max-width: none; + flex: 0 1 640px; padding: 0 0.5em; } form.cms fieldset { background: #fff6; @@ -22,8 +27,7 @@ form.cms { display: block; clear: both; width: 50px; - cursor: pointer; - float: right; } + cursor: pointer; } form.cms div.formfield { margin-bottom: 10px; clear: both; diff --git a/cms/static/cms/admin.scss.css.map b/cms/static/cms/admin.scss.css.map index 912187e..b0e6097 100644 --- a/cms/static/cms/admin.scss.css.map +++ b/cms/static/cms/admin.scss.css.map @@ -5,5 +5,5 @@ "admin.scss" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/cms/templates/cms/edit.html b/cms/templates/cms/edit.html index cbe8f98..54ed0b2 100644 --- a/cms/templates/cms/edit.html +++ b/cms/templates/cms/edit.html @@ -96,8 +96,9 @@ } function setEventHandlers() { - for (let typefield of document.querySelectorAll('select.type')) { - let form = document.getElementById(typefield.dataset.form); + for (let typefield of document.querySelectorAll('select[name$=-type]')) { + let formId = typefield.name.replace(/-type$/, ''); + let form = document.getElementById(formId); let type = typefield.value.toLowerCase(); showRelevantFields(form, type); typefield.addEventListener('input', function() { diff --git a/cms/templates/registration/login.html b/cms/templates/registration/login.html index 80c0353..cfa632a 100644 --- a/cms/templates/registration/login.html +++ b/cms/templates/registration/login.html @@ -1,23 +1,21 @@ -{% extends "base.html" %} +{% extends "admin.html" %} +{% load static %} {% load i18n %} -{% block nav %} -{% endblock %} - {% block content %} -
- {% csrf_token %} - -
-
+ +
+ {% csrf_token %} +
{{form.non_field_errors}} -

{% trans 'Log in' %}

{% for field in form %} {% include 'cms/formfield.html' with field=field %} {% endfor %} - -
-
+ + +
+ +
{% endblock %} diff --git a/cms/views.py b/cms/views.py index 7409aa6..ae445bd 100644 --- a/cms/views.py +++ b/cms/views.py @@ -10,7 +10,7 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.auth.mixins import UserPassesTestMixin from .decorators import register_view -from .forms import PageForm, SectionForm, SectionFormSet +from .forms import PageForm Page = swapper.load_model('cms', 'Page') Section = swapper.load_model('cms', 'Section')