From a4b5373ed254098faa3646aa9329ab552cc52bd4 Mon Sep 17 00:00:00 2001 From: Sonny Date: Sat, 23 May 2020 13:10:46 +0200 Subject: [PATCH] Add form / card components & refactor forms --- .../accounts/components/login-form.html | 17 ++++ .../accounts/components/settings-form.html | 18 +++++ .../accounts/templates/accounts/login.html | 24 ------ .../templates/accounts/password_change.html | 22 ------ .../accounts/templates/accounts/settings.html | 42 ---------- .../templates/accounts/views/login.html | 7 ++ .../accounts/views/password-change.html | 8 ++ .../templates/accounts/views/settings.html | 7 ++ src/newsreader/accounts/views.py | 18 ++--- src/newsreader/conf/base.py | 2 + src/newsreader/news/collection/forms.py | 2 + .../templates/collection/import.html | 37 --------- .../templates/collection/rule-create.html | 9 --- .../templates/collection/rule-update.html | 9 --- .../collection/templates/collection/rule.html | 55 ------------- .../templates/collection/rules.html | 69 ---------------- .../news/collection/views/import.html | 9 +++ .../news/collection/views/rule-create.html | 9 +++ .../news/collection/views/rule-update.html | 9 +++ .../news/collection/views/rules.html | 79 +++++++++++++++++++ src/newsreader/news/collection/views.py | 8 +- src/newsreader/news/core/forms.py | 20 ++++- .../core/templates/core/category-create.html | 9 --- .../core/templates/core/category-update.html | 9 --- .../news/core/templates/core/category.html | 62 --------------- .../{core => news/core/views}/categories.html | 1 - .../news/core/views/category-create.html | 9 +++ .../news/core/views/category-update.html | 9 +++ .../{core => news/core/views}/homepage.html | 1 - .../templates/news/core/widgets/rule.html | 10 +++ .../templates/news/core/widgets/rules.html | 9 +++ src/newsreader/news/core/views.py | 8 +- .../components/form/_activation-form.scss | 11 --- .../scss/components/form/_category-form.scss | 13 --- .../scss/components/form/_form.scss | 36 ++++++++- .../scss/components/form/_import-form.scss | 17 ---- .../scss/components/form/_login-form.scss | 33 -------- .../scss/components/form/_mixin.scss | 3 + .../form/_password-reset-confirm-form.scss | 3 - .../components/form/_password-reset-form.scss | 18 ----- .../scss/components/form/_register-form.scss | 11 --- .../scss/components/form/_rule-form.scss | 25 ------ .../scss/components/form/_settings-form.scss | 9 --- .../scss/components/form/index.scss | 12 --- src/newsreader/scss/elements/index.scss | 9 ++- .../scss/elements/input/_input.scss | 9 +++ .../scss/elements/select/_select.scss | 13 +++ .../scss/elements/select/index.scss | 1 + src/newsreader/scss/pages/login/index.scss | 25 ++++++ .../templates/components/card/card.html | 13 +++ .../templates/components/card/content.html | 3 + .../templates/components/card/footer.html | 3 + .../templates/components/card/header.html | 3 + .../components/form/cancel-button.html | 5 ++ .../components/form/confirm-button.html | 9 +++ .../templates/components/form/errors.html | 3 + .../templates/components/form/form.html | 43 ++++++++++ .../templates/components/form/help-text.html | 1 + .../templates/components/form/label.html | 3 + .../templates/components/form/title.html | 3 + .../password-reset-complete.html | 13 +++ .../password-reset-confirm.html | 30 +++++++ .../password-reset/password-reset-done.html | 16 ++++ ...t_email.html => password-reset-email.html} | 0 .../password-reset/password-reset-form.html | 11 +++ ...subject.txt => password-reset-subject.txt} | 0 .../password-reset/password-reset.html | 7 ++ .../password_reset_complete.html | 23 ------ .../password_reset_confirm.html | 55 ------------- .../password-reset/password_reset_done.html | 23 ------ .../password-reset/password_reset_form.html | 30 ------- .../registration/activation_complete.html | 27 +++---- .../registration/activation_email.html | 2 +- .../registration/activation_email.txt | 2 +- .../registration/activation_failure.html | 16 +--- .../activation_resend_complete.html | 18 ++--- .../registration/activation_resend_form.html | 32 +------- .../registration/registration_closed.html | 16 +--- .../registration/registration_complete.html | 18 +---- .../registration/registration_form.html | 17 +--- 80 files changed, 525 insertions(+), 775 deletions(-) create mode 100644 src/newsreader/accounts/templates/accounts/components/login-form.html create mode 100644 src/newsreader/accounts/templates/accounts/components/settings-form.html delete mode 100644 src/newsreader/accounts/templates/accounts/login.html delete mode 100644 src/newsreader/accounts/templates/accounts/password_change.html delete mode 100644 src/newsreader/accounts/templates/accounts/settings.html create mode 100644 src/newsreader/accounts/templates/accounts/views/login.html create mode 100644 src/newsreader/accounts/templates/accounts/views/password-change.html create mode 100644 src/newsreader/accounts/templates/accounts/views/settings.html delete mode 100644 src/newsreader/news/collection/templates/collection/import.html delete mode 100644 src/newsreader/news/collection/templates/collection/rule-create.html delete mode 100644 src/newsreader/news/collection/templates/collection/rule-update.html delete mode 100644 src/newsreader/news/collection/templates/collection/rule.html delete mode 100644 src/newsreader/news/collection/templates/collection/rules.html create mode 100644 src/newsreader/news/collection/templates/news/collection/views/import.html create mode 100644 src/newsreader/news/collection/templates/news/collection/views/rule-create.html create mode 100644 src/newsreader/news/collection/templates/news/collection/views/rule-update.html create mode 100644 src/newsreader/news/collection/templates/news/collection/views/rules.html delete mode 100644 src/newsreader/news/core/templates/core/category-create.html delete mode 100644 src/newsreader/news/core/templates/core/category-update.html delete mode 100644 src/newsreader/news/core/templates/core/category.html rename src/newsreader/news/core/templates/{core => news/core/views}/categories.html (99%) create mode 100644 src/newsreader/news/core/templates/news/core/views/category-create.html create mode 100644 src/newsreader/news/core/templates/news/core/views/category-update.html rename src/newsreader/news/core/templates/{core => news/core/views}/homepage.html (99%) create mode 100644 src/newsreader/news/core/templates/news/core/widgets/rule.html create mode 100644 src/newsreader/news/core/templates/news/core/widgets/rules.html delete mode 100644 src/newsreader/scss/components/form/_activation-form.scss delete mode 100644 src/newsreader/scss/components/form/_category-form.scss delete mode 100644 src/newsreader/scss/components/form/_import-form.scss delete mode 100644 src/newsreader/scss/components/form/_login-form.scss create mode 100644 src/newsreader/scss/components/form/_mixin.scss delete mode 100644 src/newsreader/scss/components/form/_password-reset-confirm-form.scss delete mode 100644 src/newsreader/scss/components/form/_password-reset-form.scss delete mode 100644 src/newsreader/scss/components/form/_register-form.scss delete mode 100644 src/newsreader/scss/components/form/_rule-form.scss delete mode 100644 src/newsreader/scss/components/form/_settings-form.scss create mode 100644 src/newsreader/scss/elements/select/_select.scss create mode 100644 src/newsreader/scss/elements/select/index.scss create mode 100644 src/newsreader/templates/components/card/card.html create mode 100644 src/newsreader/templates/components/card/content.html create mode 100644 src/newsreader/templates/components/card/footer.html create mode 100644 src/newsreader/templates/components/card/header.html create mode 100644 src/newsreader/templates/components/form/cancel-button.html create mode 100644 src/newsreader/templates/components/form/confirm-button.html create mode 100644 src/newsreader/templates/components/form/errors.html create mode 100644 src/newsreader/templates/components/form/form.html create mode 100644 src/newsreader/templates/components/form/help-text.html create mode 100644 src/newsreader/templates/components/form/label.html create mode 100644 src/newsreader/templates/components/form/title.html create mode 100755 src/newsreader/templates/password-reset/password-reset-complete.html create mode 100755 src/newsreader/templates/password-reset/password-reset-confirm.html create mode 100755 src/newsreader/templates/password-reset/password-reset-done.html rename src/newsreader/templates/password-reset/{password_reset_email.html => password-reset-email.html} (100%) create mode 100644 src/newsreader/templates/password-reset/password-reset-form.html rename src/newsreader/templates/password-reset/{password_reset_subject.txt => password-reset-subject.txt} (100%) create mode 100644 src/newsreader/templates/password-reset/password-reset.html delete mode 100755 src/newsreader/templates/password-reset/password_reset_complete.html delete mode 100755 src/newsreader/templates/password-reset/password_reset_confirm.html delete mode 100755 src/newsreader/templates/password-reset/password_reset_done.html delete mode 100755 src/newsreader/templates/password-reset/password_reset_form.html diff --git a/src/newsreader/accounts/templates/accounts/components/login-form.html b/src/newsreader/accounts/templates/accounts/components/login-form.html new file mode 100644 index 0000000..87dceb9 --- /dev/null +++ b/src/newsreader/accounts/templates/accounts/components/login-form.html @@ -0,0 +1,17 @@ +{% extends "components/form/form.html" %} +{% load i18n %} + +{% block actions %} +
+
+ {% include "components/form/cancel-button.html" %} + {% include "components/form/confirm-button.html" %} +
+ +
+ + {% trans "I forgot my password" %} + +
+
+{% endblock actions %} diff --git a/src/newsreader/accounts/templates/accounts/components/settings-form.html b/src/newsreader/accounts/templates/accounts/components/settings-form.html new file mode 100644 index 0000000..ff06cb7 --- /dev/null +++ b/src/newsreader/accounts/templates/accounts/components/settings-form.html @@ -0,0 +1,18 @@ +{% extends "components/form/form.html" %} +{% load i18n %} + +{% block actions %} +
+
+ {% include "components/form/cancel-button.html" %} +
+ +
+ + {% trans "Change password" %} + + + {% include "components/form/confirm-button.html" %} +
+
+{% endblock actions %} diff --git a/src/newsreader/accounts/templates/accounts/login.html b/src/newsreader/accounts/templates/accounts/login.html deleted file mode 100644 index ab308b2..0000000 --- a/src/newsreader/accounts/templates/accounts/login.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "base.html" %} - -{% load static %} - -{% block content %} -
- -
-{% endblock %} diff --git a/src/newsreader/accounts/templates/accounts/password_change.html b/src/newsreader/accounts/templates/accounts/password_change.html deleted file mode 100644 index 1ece1dd..0000000 --- a/src/newsreader/accounts/templates/accounts/password_change.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "base.html" %} -{% load static i18n %} - -{% block content %} -
-
- {% csrf_token %} - -
-

{% trans "Password change" %}

-
- -
- {{ form }} -
-
- Cancel - -
-
-
-{% endblock %} diff --git a/src/newsreader/accounts/templates/accounts/settings.html b/src/newsreader/accounts/templates/accounts/settings.html deleted file mode 100644 index 29a2ee9..0000000 --- a/src/newsreader/accounts/templates/accounts/settings.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} - -{% block content %} -
-
- {% csrf_token %} - -
-

{% trans "User settings" %}

-
- - {{ form.non_field_errors }} - -
-
- - {{ form.first_name.errors }} - {{ form.first_name }} -
- -
- - {{ form.last_name.errors }} - {{ form.last_name }} -
-
- -
-
- Cancel - - - {% trans "Change password" %} - - - -
-
-
-
-{% endblock %} diff --git a/src/newsreader/accounts/templates/accounts/views/login.html b/src/newsreader/accounts/templates/accounts/views/login.html new file mode 100644 index 0000000..b4c391d --- /dev/null +++ b/src/newsreader/accounts/templates/accounts/views/login.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block content %} +
+ {% include "accounts/components/login-form.html" with form=form title="Login" confirm_text="Login" %} +
+{% endblock %} diff --git a/src/newsreader/accounts/templates/accounts/views/password-change.html b/src/newsreader/accounts/templates/accounts/views/password-change.html new file mode 100644 index 0000000..fb8a98b --- /dev/null +++ b/src/newsreader/accounts/templates/accounts/views/password-change.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} + +{% block content %} +
+ {% url 'accounts:settings' as cancel_url %} + {% include "components/form/form.html" with form=form title="Change password" confirm_text="Change password" cancel_url=cancel_url %} +
+{% endblock %} diff --git a/src/newsreader/accounts/templates/accounts/views/settings.html b/src/newsreader/accounts/templates/accounts/views/settings.html new file mode 100644 index 0000000..bf01f8e --- /dev/null +++ b/src/newsreader/accounts/templates/accounts/views/settings.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block content %} +
+ {% include "accounts/components/settings-form.html" with form=form title="User profile" confirm_text="Save" %} +
+{% endblock %} diff --git a/src/newsreader/accounts/views.py b/src/newsreader/accounts/views.py index c0342b2..fed60eb 100644 --- a/src/newsreader/accounts/views.py +++ b/src/newsreader/accounts/views.py @@ -11,7 +11,7 @@ from newsreader.accounts.models import User class LoginView(django_views.LoginView): - template_name = "accounts/login.html" + template_name = "accounts/views/login.html" success_url = reverse_lazy("index") @@ -74,32 +74,32 @@ class ActivationResendView(registration_views.ResendActivationView): # prompts for a new password # PasswordResetCompleteView shows a success message for the above class PasswordResetView(django_views.PasswordResetView): - template_name = "password-reset/password_reset_form.html" - subject_template_name = "password-reset/password_reset_subject.txt" - email_template_name = "password-reset/password_reset_email.html" + template_name = "password-reset/password-reset.html" + subject_template_name = "password-reset/password-reset-subject.txt" + email_template_name = "password-reset/password-reset-email.html" success_url = reverse_lazy("accounts:password-reset-done") class PasswordResetDoneView(django_views.PasswordResetDoneView): - template_name = "password-reset/password_reset_done.html" + template_name = "password-reset/password-reset-done.html" class PasswordResetConfirmView(django_views.PasswordResetConfirmView): - template_name = "password-reset/password_reset_confirm.html" + template_name = "password-reset/password-reset-confirm.html" success_url = reverse_lazy("accounts:password-reset-complete") class PasswordResetCompleteView(django_views.PasswordResetCompleteView): - template_name = "password-reset/password_reset_complete.html" + template_name = "password-reset/password-reset-complete.html" class PasswordChangeView(django_views.PasswordChangeView): - template_name = "accounts/password_change.html" + template_name = "accounts/views/password-change.html" success_url = reverse_lazy("accounts:settings") class SettingsView(ModelFormMixin, FormView): - template_name = "accounts/settings.html" + template_name = "accounts/views/settings.html" success_url = reverse_lazy("accounts:settings") form_class = UserSettingsForm model = User diff --git a/src/newsreader/conf/base.py b/src/newsreader/conf/base.py index 6bc2840..ee5a296 100644 --- a/src/newsreader/conf/base.py +++ b/src/newsreader/conf/base.py @@ -172,6 +172,8 @@ AUTH_PASSWORD_VALIDATORS = [ # Authentication user model AUTH_USER_MODEL = "accounts.User" +LOGIN_REDIRECT_URL = "/" + # Internationalization # https://docs.djangoproject.com/en/2.2/topics/i18n/ LANGUAGE_CODE = "en-us" diff --git a/src/newsreader/news/collection/forms.py b/src/newsreader/news/collection/forms.py index bfa0d90..7e5fc97 100644 --- a/src/newsreader/news/collection/forms.py +++ b/src/newsreader/news/collection/forms.py @@ -1,4 +1,5 @@ from django import forms +from django.utils.translation import gettext_lazy as _ import pytz @@ -11,6 +12,7 @@ class CollectionRuleForm(forms.ModelForm): timezone = forms.ChoiceField( widget=forms.Select(attrs={"size": len(pytz.all_timezones)}), choices=((timezone, timezone) for timezone in pytz.all_timezones), + help_text=_("The timezone which the feed uses"), ) def __init__(self, *args, **kwargs): diff --git a/src/newsreader/news/collection/templates/collection/import.html b/src/newsreader/news/collection/templates/collection/import.html deleted file mode 100644 index 0ca15ab..0000000 --- a/src/newsreader/news/collection/templates/collection/import.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "base.html" %} - -{% load static i18n %} - -{% block content %} -
-
- {% csrf_token %} - {{ form.non_field_errors }} - -
-

{% trans "Import an OPML file" %}

-
-
-
- - {{ form.file.errors }} - {{ form.file }} -
- -
- - {{ form.skip_existing }} -
- -
- Cancel - -
-
-
-
-{% endblock %} diff --git a/src/newsreader/news/collection/templates/collection/rule-create.html b/src/newsreader/news/collection/templates/collection/rule-create.html deleted file mode 100644 index b8db042..0000000 --- a/src/newsreader/news/collection/templates/collection/rule-create.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "collection/rule.html" %} - -{% block form-header %} -

Create a rule

-{% endblock %} - -{% block confirm-button %} - -{% endblock %} diff --git a/src/newsreader/news/collection/templates/collection/rule-update.html b/src/newsreader/news/collection/templates/collection/rule-update.html deleted file mode 100644 index 403f86e..0000000 --- a/src/newsreader/news/collection/templates/collection/rule-update.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "collection/rule.html" %} - -{% block form-header %} -

Update rule

-{% endblock %} - -{% block confirm-button %} - -{% endblock %} diff --git a/src/newsreader/news/collection/templates/collection/rule.html b/src/newsreader/news/collection/templates/collection/rule.html deleted file mode 100644 index c7f56f4..0000000 --- a/src/newsreader/news/collection/templates/collection/rule.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends "base.html" %} - -{% load static %} - -{% block content %} -
-
- {% csrf_token %} - {{ form.non_field_errors }} - -
- {% block form-header %}{% endblock %} -
-
-
- - {{ form.name.errors }} - {{ form.name }} -
- -
- - {{ form.category.errors }} - {{ form.category }} -
- -
- - {{ form.url.errors }} - {{ form.url }} -
- -
- - {{ form.favicon.errors }} - {{ form.favicon }} -
- -
- - The timezone which the feed uses - {{ form.timezone.errors }} - {{ form.timezone }} -
-
- -
-
- Cancel - {% block confirm-button %}{% endblock %} -
-
-
-
-{% endblock %} diff --git a/src/newsreader/news/collection/templates/collection/rules.html b/src/newsreader/news/collection/templates/collection/rules.html deleted file mode 100644 index 32b6f24..0000000 --- a/src/newsreader/news/collection/templates/collection/rules.html +++ /dev/null @@ -1,69 +0,0 @@ -{% extends "base.html" %} -{% load i18n static %} - -{% block content %} -
-
- {% csrf_token %} - -
- - - -
- - - - - - - - - - - - - - {% for rule in rules %} - - - - - - - - - - {% endfor %} - -
- - {% trans "Name" %}{% trans "Category" %}{% trans "URL" %}{% trans "Successfuly ran" %}{% trans "Enabled" %}
{{ rule.name }}{{ rule.category.name }}{{ rule.url }}{{ rule.succeeded }}{{ rule.enabled }} - -
-
- -
-{% endblock %} diff --git a/src/newsreader/news/collection/templates/news/collection/views/import.html b/src/newsreader/news/collection/templates/news/collection/views/import.html new file mode 100644 index 0000000..df19887 --- /dev/null +++ b/src/newsreader/news/collection/templates/news/collection/views/import.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+ {% url "news:collection:rules" as cancel_url %} + {% include "components/form/form.html" with form=form title="Import an OPML file" cancel_url=cancel_url confirm_text="Import rules" %} +
+{% endblock %} diff --git a/src/newsreader/news/collection/templates/news/collection/views/rule-create.html b/src/newsreader/news/collection/templates/news/collection/views/rule-create.html new file mode 100644 index 0000000..82ed6c5 --- /dev/null +++ b/src/newsreader/news/collection/templates/news/collection/views/rule-create.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+ {% url "news:collection:rules" as cancel_url %} + {% include "components/form/form.html" with form=form title="Create rule" cancel_url=cancel_url confirm_text="Create rule" %} +
+{% endblock %} diff --git a/src/newsreader/news/collection/templates/news/collection/views/rule-update.html b/src/newsreader/news/collection/templates/news/collection/views/rule-update.html new file mode 100644 index 0000000..3f0a8fe --- /dev/null +++ b/src/newsreader/news/collection/templates/news/collection/views/rule-update.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+ {% url "news:collection:rules" as cancel_url %} + {% include "components/form/form.html" with form=form title="Update rule" cancel_url=cancel_url confirm_text="Save rule" %} +
+{% endblock %} diff --git a/src/newsreader/news/collection/templates/news/collection/views/rules.html b/src/newsreader/news/collection/templates/news/collection/views/rules.html new file mode 100644 index 0000000..a17b818 --- /dev/null +++ b/src/newsreader/news/collection/templates/news/collection/views/rules.html @@ -0,0 +1,79 @@ +{% extends "base.html" %} +{% load i18n static %} + +{% block content %} +
+
+ {% csrf_token %} + +
+
+ + + +
+ + +
+ +
+ + + + + + + + + + + + + + {% for rule in rules %} + + + + + + + + + + {% endfor %} + +
+ + {% trans "Name" %}{% trans "Category" %}{% trans "URL" %}{% trans "Successfuly ran" %}{% trans "Enabled" %}
{{ rule.name }}{{ rule.category.name }}{{ rule.url }}{{ rule.succeeded }}{{ rule.enabled }} + +
+
+
+ + +
+{% endblock %} diff --git a/src/newsreader/news/collection/views.py b/src/newsreader/news/collection/views.py index 3580951..6fb88df 100644 --- a/src/newsreader/news/collection/views.py +++ b/src/newsreader/news/collection/views.py @@ -48,21 +48,21 @@ class CollectionRuleDetailMixin: class CollectionRuleListView(CollectionRuleViewMixin, ListView): paginate_by = 50 - template_name = "collection/rules.html" + template_name = "news/collection/views/rules.html" context_object_name = "rules" class CollectionRuleUpdateView( CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView ): - template_name = "collection/rule-update.html" + template_name = "news/collection/views/rule-update.html" context_object_name = "rule" class CollectionRuleCreateView( CollectionRuleViewMixin, CollectionRuleDetailMixin, CreateView ): - template_name = "collection/rule-create.html" + template_name = "news/collection/views/rule-create.html" class CollectionRuleBulkView(FormView): @@ -122,7 +122,7 @@ class CollectionRuleBulkDeleteView(CollectionRuleBulkView): class OPMLImportView(FormView): form_class = OPMLImportForm success_url = reverse_lazy("news:collection:rules") - template_name = "collection/import.html" + template_name = "news/collection/views/import.html" def form_valid(self, form): user = self.request.user diff --git a/src/newsreader/news/core/forms.py b/src/newsreader/news/core/forms.py index a86e2b2..a08022a 100644 --- a/src/newsreader/news/core/forms.py +++ b/src/newsreader/news/core/forms.py @@ -1,15 +1,27 @@ from django import forms +from django.forms.widgets import CheckboxSelectMultiple from newsreader.accounts.models import User from newsreader.news.collection.models import CollectionRule from newsreader.news.core.models import Category +class RulesWidget(CheckboxSelectMultiple): + template_name = "news/core/widgets/rules.html" + option_template_name = "news/core/widgets/rule.html" + + def create_option(self, *args, **kwargs): + option = super().create_option(*args, **kwargs) + instance = self.choices.queryset.get(pk=option["value"]) + + if self.category and instance.category: + option["selected"] = self.category.pk == instance.category.pk + return {**option, "instance": instance} + + class CategoryForm(forms.ModelForm): rules = forms.ModelMultipleChoiceField( - required=False, - queryset=CollectionRule.objects.all(), - widget=forms.widgets.CheckboxSelectMultiple, + required=False, queryset=CollectionRule.objects.none(), widget=RulesWidget ) user = forms.ModelChoiceField( @@ -23,6 +35,8 @@ class CategoryForm(forms.ModelForm): super().__init__(*args, **kwargs) self.fields["rules"].queryset = CollectionRule.objects.filter(user=self.user) + self.fields["rules"].widget.category = self.instance + self.fields["user"].queryset = User.objects.filter(pk=self.user.pk) self.initial["user"] = self.user diff --git a/src/newsreader/news/core/templates/core/category-create.html b/src/newsreader/news/core/templates/core/category-create.html deleted file mode 100644 index 73d05b5..0000000 --- a/src/newsreader/news/core/templates/core/category-create.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "core/category.html" %} - -{% block form-header %} -

Create a category

-{% endblock %} - -{% block confirm-button %} - -{% endblock %} diff --git a/src/newsreader/news/core/templates/core/category-update.html b/src/newsreader/news/core/templates/core/category-update.html deleted file mode 100644 index 3e50df9..0000000 --- a/src/newsreader/news/core/templates/core/category-update.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "core/category.html" %} - -{% block form-header %} -

Update category

-{% endblock %} - -{% block confirm-button %} - -{% endblock %} diff --git a/src/newsreader/news/core/templates/core/category.html b/src/newsreader/news/core/templates/core/category.html deleted file mode 100644 index bee0585..0000000 --- a/src/newsreader/news/core/templates/core/category.html +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "base.html" %} - -{% load static %} - -{% block content %} -
-
- {% csrf_token %} - -
- {% block form-header %}{% endblock %} -
- - {{ form.non_field_errors }} - {{ form.user.errors }} - {{ form.user }} - -
-
- - {{ form.name.errors }} - {{ form.name }} -
-
- -
-
- - - Note that existing assigned rules will be reassigned to this category - - {{ form.rules.errors }} - -
    - {% for rule in rules %} -
  • - - - {% if rule.favicon %} - - {% else %} - - {% endif %} - - {{ rule.name }} -
  • - {% endfor %} -
-
-
- -
-
- Cancel - {% block confirm-button %}{% endblock %} -
-
-
-
-{% endblock %} diff --git a/src/newsreader/news/core/templates/core/categories.html b/src/newsreader/news/core/templates/news/core/views/categories.html similarity index 99% rename from src/newsreader/news/core/templates/core/categories.html rename to src/newsreader/news/core/templates/news/core/views/categories.html index be4a449..35fc741 100644 --- a/src/newsreader/news/core/templates/core/categories.html +++ b/src/newsreader/news/core/templates/news/core/views/categories.html @@ -1,5 +1,4 @@ {% extends "base.html" %} - {% load static %} {% block content %} diff --git a/src/newsreader/news/core/templates/news/core/views/category-create.html b/src/newsreader/news/core/templates/news/core/views/category-create.html new file mode 100644 index 0000000..6da166f --- /dev/null +++ b/src/newsreader/news/core/templates/news/core/views/category-create.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+ {% url "news:core:categories" as cancel_url %} + {% include "components/form/form.html" with form=form title="Create category" cancel_url=cancel_url confirm_text="Create category" %} +
+{% endblock %} diff --git a/src/newsreader/news/core/templates/news/core/views/category-update.html b/src/newsreader/news/core/templates/news/core/views/category-update.html new file mode 100644 index 0000000..1ec1487 --- /dev/null +++ b/src/newsreader/news/core/templates/news/core/views/category-update.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+ {% url "news:core:categories" as cancel_url %} + {% include "components/form/form.html" with form=form title="Update category" cancel_url=cancel_url confirm_text="Save category" %} +
+{% endblock %} diff --git a/src/newsreader/news/core/templates/core/homepage.html b/src/newsreader/news/core/templates/news/core/views/homepage.html similarity index 99% rename from src/newsreader/news/core/templates/core/homepage.html rename to src/newsreader/news/core/templates/news/core/views/homepage.html index 8904517..79e1ccc 100644 --- a/src/newsreader/news/core/templates/core/homepage.html +++ b/src/newsreader/news/core/templates/news/core/views/homepage.html @@ -1,5 +1,4 @@ {% extends "base.html" %} - {% load static %} {% block content %} diff --git a/src/newsreader/news/core/templates/news/core/widgets/rule.html b/src/newsreader/news/core/templates/news/core/widgets/rule.html new file mode 100644 index 0000000..b3c7b68 --- /dev/null +++ b/src/newsreader/news/core/templates/news/core/widgets/rule.html @@ -0,0 +1,10 @@ + + +{% if option.instance.favicon %} + +{% else %} + +{% endif %} + +{{ option.label }} diff --git a/src/newsreader/news/core/templates/news/core/widgets/rules.html b/src/newsreader/news/core/templates/news/core/widgets/rules.html new file mode 100644 index 0000000..bbdd43a --- /dev/null +++ b/src/newsreader/news/core/templates/news/core/widgets/rules.html @@ -0,0 +1,9 @@ + diff --git a/src/newsreader/news/core/views.py b/src/newsreader/news/core/views.py index 2a75ea7..9ef81eb 100644 --- a/src/newsreader/news/core/views.py +++ b/src/newsreader/news/core/views.py @@ -9,7 +9,7 @@ from newsreader.news.core.models import Category class NewsView(TemplateView): - template_name = "core/homepage.html" + template_name = "news/core/views/homepage.html" # TODO serialize objects to show filled main page def get_context_data(self, **kwargs): @@ -55,14 +55,14 @@ class CategoryDetailMixin: class CategoryListView(CategoryViewMixin, ListView): - template_name = "core/categories.html" + template_name = "news/core/views/categories.html" context_object_name = "categories" class CategoryUpdateView(CategoryViewMixin, CategoryDetailMixin, UpdateView): - template_name = "core/category-update.html" + template_name = "news/core/views/category-update.html" context_object_name = "category" class CategoryCreateView(CategoryViewMixin, CategoryDetailMixin, CreateView): - template_name = "core/category-create.html" + template_name = "news/core/views/category-create.html" diff --git a/src/newsreader/scss/components/form/_activation-form.scss b/src/newsreader/scss/components/form/_activation-form.scss deleted file mode 100644 index 39ecc27..0000000 --- a/src/newsreader/scss/components/form/_activation-form.scss +++ /dev/null @@ -1,11 +0,0 @@ -.activation-form { - margin: 10px 0; - & h4 { - padding: 20px 24px 5px 24px; - } - - &__fieldset:last-child { - flex-direction: row; - justify-content: space-between; - } -} diff --git a/src/newsreader/scss/components/form/_category-form.scss b/src/newsreader/scss/components/form/_category-form.scss deleted file mode 100644 index 8132ed2..0000000 --- a/src/newsreader/scss/components/form/_category-form.scss +++ /dev/null @@ -1,13 +0,0 @@ -.category-form { - @extend .form; - - margin: 20px 0; - - &__section:last-child { - & .category-form__fieldset { - display: flex; - flex-direction: row; - justify-content: space-between; - } - } -} diff --git a/src/newsreader/scss/components/form/_form.scss b/src/newsreader/scss/components/form/_form.scss index 5b97958..19e9d4b 100644 --- a/src/newsreader/scss/components/form/_form.scss +++ b/src/newsreader/scss/components/form/_form.scss @@ -1,3 +1,5 @@ +@import "mixin.scss"; + .form { display: flex; flex-direction: column; @@ -8,6 +10,29 @@ font-family: $form-font; background-color: $white; + &__section { + &--last { + & .form__fieldset { + display: flex; + flex-direction: row; + justify-content: space-between; + } + } + + &--actions { + display: flex; + flex-direction: row !important; + + & .form__fieldset { + flex-direction: row; + + & > * { + margin: 0 0 0 5px; + } + } + } + } + &__fieldset { @extend .fieldset; } @@ -16,21 +41,24 @@ display: flex; flex-direction: row; - padding: 15px; + @include form-padding; } &__actions { display: flex; - justify-content: space-between; + flex-direction: row; - width: 50%; - padding: 15px; + @include form-padding; } &__title { font-size: 18px; } + &__intro { + @include form-padding; + } + & .favicon { height: 20px; } diff --git a/src/newsreader/scss/components/form/_import-form.scss b/src/newsreader/scss/components/form/_import-form.scss deleted file mode 100644 index 19acc5c..0000000 --- a/src/newsreader/scss/components/form/_import-form.scss +++ /dev/null @@ -1,17 +0,0 @@ -.import-form { - margin: 20px 0; - - &__fieldset:last-child { - display: flex; - flex-direction: row; - justify-content: space-between; - } - - & input[type=file] { - width: 50%; - } - - & input[type=checkbox] { - margin: 0 auto 0 10px; - } -} diff --git a/src/newsreader/scss/components/form/_login-form.scss b/src/newsreader/scss/components/form/_login-form.scss deleted file mode 100644 index 10e81a0..0000000 --- a/src/newsreader/scss/components/form/_login-form.scss +++ /dev/null @@ -1,33 +0,0 @@ -.login-form { - @extend .form; - - width: 100%; - - h4 { - margin: 0; - padding: 20px 24px 5px 24px; - } - - &__fieldset { - @extend .form__fieldset; - - & label { - @extend .label; - } - - & input { - @extend .input; - } - } - - &__fieldset:last-child { - flex-direction: row-reverse; - justify-content: space-between; - } - - &__fieldset:last-child { - .button { - padding: 10px 50px; - } - } -} diff --git a/src/newsreader/scss/components/form/_mixin.scss b/src/newsreader/scss/components/form/_mixin.scss new file mode 100644 index 0000000..4f55a9e --- /dev/null +++ b/src/newsreader/scss/components/form/_mixin.scss @@ -0,0 +1,3 @@ +@mixin form-padding { + padding: 15px; +} diff --git a/src/newsreader/scss/components/form/_password-reset-confirm-form.scss b/src/newsreader/scss/components/form/_password-reset-confirm-form.scss deleted file mode 100644 index d570c38..0000000 --- a/src/newsreader/scss/components/form/_password-reset-confirm-form.scss +++ /dev/null @@ -1,3 +0,0 @@ -.password-reset-confirm-form { - margin: 20px 0; -} diff --git a/src/newsreader/scss/components/form/_password-reset-form.scss b/src/newsreader/scss/components/form/_password-reset-form.scss deleted file mode 100644 index be92ff4..0000000 --- a/src/newsreader/scss/components/form/_password-reset-form.scss +++ /dev/null @@ -1,18 +0,0 @@ -.password-reset-form { - margin: 20px 0; - - &__fieldset:last-child { - display: flex; - flex-direction: row; - justify-content: space-between; - } - - & .form__header { - display: flex; - flex-direction: column; - } - - & .form__title { - margin: 0 0 5px 0; - } -} diff --git a/src/newsreader/scss/components/form/_register-form.scss b/src/newsreader/scss/components/form/_register-form.scss deleted file mode 100644 index e406ae7..0000000 --- a/src/newsreader/scss/components/form/_register-form.scss +++ /dev/null @@ -1,11 +0,0 @@ -.register-form { - margin: 10px 0; - & h4 { - padding: 20px 24px 5px 24px; - } - - &__fieldset:last-child { - flex-direction: row; - justify-content: space-between; - } -} diff --git a/src/newsreader/scss/components/form/_rule-form.scss b/src/newsreader/scss/components/form/_rule-form.scss deleted file mode 100644 index 82651aa..0000000 --- a/src/newsreader/scss/components/form/_rule-form.scss +++ /dev/null @@ -1,25 +0,0 @@ -.rule-form { - margin: 20px 0; - - &__section:last-child { - & .rule-form__fieldset { - display: flex; - flex-direction: row; - justify-content: space-between; - } - } - - #id_category { - width: 50%; - - padding: 0 10px; - } - - #id_timezone { - max-height: 200px; - width: 50%; - - margin: 0 15px; - padding: 0 10px; - } -} diff --git a/src/newsreader/scss/components/form/_settings-form.scss b/src/newsreader/scss/components/form/_settings-form.scss deleted file mode 100644 index fc38d70..0000000 --- a/src/newsreader/scss/components/form/_settings-form.scss +++ /dev/null @@ -1,9 +0,0 @@ -.settings-form { - &__section:last-child { - & .settings-form__fieldset { - display: flex; - flex-direction: row; - justify-content: space-between; - } - } -} diff --git a/src/newsreader/scss/components/form/index.scss b/src/newsreader/scss/components/form/index.scss index 1555ae9..8069223 100644 --- a/src/newsreader/scss/components/form/index.scss +++ b/src/newsreader/scss/components/form/index.scss @@ -1,15 +1,3 @@ @import "form"; -@import "category-form"; -@import "rule-form"; @import "rules-form"; -@import "import-form"; - -@import "login-form"; -@import "activation-form"; -@import "register-form"; - -@import "password-reset-form"; -@import "password-reset-confirm-form"; - -@import "settings-form"; diff --git a/src/newsreader/scss/elements/index.scss b/src/newsreader/scss/elements/index.scss index f0d7be3..3e2a01c 100644 --- a/src/newsreader/scss/elements/index.scss +++ b/src/newsreader/scss/elements/index.scss @@ -1,10 +1,11 @@ +@import "badge/index"; @import "button/index"; +@import "help-text/index"; +@import "input/index"; +@import "label/index"; @import "link/index"; @import "h1/index"; @import "h2/index"; @import "h3/index"; @import "small/index"; -@import "input/index"; -@import "label/index"; -@import "help-text/index"; -@import "badge/index"; +@import "select/index"; diff --git a/src/newsreader/scss/elements/input/_input.scss b/src/newsreader/scss/elements/input/_input.scss index 1cfb4bb..897fbf9 100644 --- a/src/newsreader/scss/elements/input/_input.scss +++ b/src/newsreader/scss/elements/input/_input.scss @@ -8,6 +8,15 @@ &:focus { border: 1px $focus-blue solid; } + + &[type="file"] { + width: 40%; + } + + &[type="checkbox"] { + align-self: flex-start; + margin: 0 0 0 10px; + } } input { diff --git a/src/newsreader/scss/elements/select/_select.scss b/src/newsreader/scss/elements/select/_select.scss new file mode 100644 index 0000000..d8737b4 --- /dev/null +++ b/src/newsreader/scss/elements/select/_select.scss @@ -0,0 +1,13 @@ +.select { + max-height: 200px; + + &:not([size]){ + width: 40%; + } + + padding: 0 15px; +} + +select { + @extend .select; +} diff --git a/src/newsreader/scss/elements/select/index.scss b/src/newsreader/scss/elements/select/index.scss new file mode 100644 index 0000000..8320088 --- /dev/null +++ b/src/newsreader/scss/elements/select/index.scss @@ -0,0 +1 @@ +@import "select"; diff --git a/src/newsreader/scss/pages/login/index.scss b/src/newsreader/scss/pages/login/index.scss index 69b946e..82b9457 100644 --- a/src/newsreader/scss/pages/login/index.scss +++ b/src/newsreader/scss/pages/login/index.scss @@ -3,4 +3,29 @@ width: 50%; border-radius: 4px; + + & .form { + @extend .form; + + width: 100%; + + h4 { + margin: 0; + padding: 20px 24px 5px 24px; + } + + &__section { + &--last { + flex-direction: row-reverse; + justify-content: space-between; + } + } + + &__fieldset { + @extend .form__fieldset; + + &--last { + } + } + } } diff --git a/src/newsreader/templates/components/card/card.html b/src/newsreader/templates/components/card/card.html new file mode 100644 index 0000000..750bd06 --- /dev/null +++ b/src/newsreader/templates/components/card/card.html @@ -0,0 +1,13 @@ +
+ {% if header_text %} + {% include "components/card/header.html" %} + {% endif %} + + {% if content %} + {% include "components/card/content.html" %} + {% endif %} + + {% if footer_text %} + {% include "components/card/footer.html" %} + {% endif %} +
diff --git a/src/newsreader/templates/components/card/content.html b/src/newsreader/templates/components/card/content.html new file mode 100644 index 0000000..8ae0141 --- /dev/null +++ b/src/newsreader/templates/components/card/content.html @@ -0,0 +1,3 @@ +
+

{{ content }}

+
diff --git a/src/newsreader/templates/components/card/footer.html b/src/newsreader/templates/components/card/footer.html new file mode 100644 index 0000000..1acffe0 --- /dev/null +++ b/src/newsreader/templates/components/card/footer.html @@ -0,0 +1,3 @@ + diff --git a/src/newsreader/templates/components/card/header.html b/src/newsreader/templates/components/card/header.html new file mode 100644 index 0000000..567756a --- /dev/null +++ b/src/newsreader/templates/components/card/header.html @@ -0,0 +1,3 @@ +
+

{{ header_text }}

+
diff --git a/src/newsreader/templates/components/form/cancel-button.html b/src/newsreader/templates/components/form/cancel-button.html new file mode 100644 index 0000000..0891136 --- /dev/null +++ b/src/newsreader/templates/components/form/cancel-button.html @@ -0,0 +1,5 @@ +{% load i18n %} + +{% if cancel_url %} + {% trans "Cancel" %} +{% endif %} diff --git a/src/newsreader/templates/components/form/confirm-button.html b/src/newsreader/templates/components/form/confirm-button.html new file mode 100644 index 0000000..e18b560 --- /dev/null +++ b/src/newsreader/templates/components/form/confirm-button.html @@ -0,0 +1,9 @@ +{% load i18n %} + + diff --git a/src/newsreader/templates/components/form/errors.html b/src/newsreader/templates/components/form/errors.html new file mode 100644 index 0000000..eed67f5 --- /dev/null +++ b/src/newsreader/templates/components/form/errors.html @@ -0,0 +1,3 @@ +
+ {{ errors }} +
diff --git a/src/newsreader/templates/components/form/form.html b/src/newsreader/templates/components/form/form.html new file mode 100644 index 0000000..d854eb1 --- /dev/null +++ b/src/newsreader/templates/components/form/form.html @@ -0,0 +1,43 @@ +{% load i18n %} + +
+ {% csrf_token %} + + {% if title %} + {% include "components/form/title.html" with title=title only %} + {% endif %} + + {% block intro %} + {% endblock intro %} + + {% if form.non_field_errors %} + {% include "components/form/errors.html" with errors=form.non_field_errors only %} + {% endif %} + + {% block fields %} +
+ {% for field in form.hidden_fields %} + {{ field }} + {% endfor %} + + {% for field in form.visible_fields %} +
+ {% include "components/form/label.html" %} + + {{ field.errors }} + {{ field }} + {% include "components/form/help-text.html" %} +
+ {% endfor %} +
+ {% endblock fields %} + + {% block actions %} +
+
+ {% include "components/form/cancel-button.html" %} + {% include "components/form/confirm-button.html" %} +
+
+ {% endblock actions %} +
diff --git a/src/newsreader/templates/components/form/help-text.html b/src/newsreader/templates/components/form/help-text.html new file mode 100644 index 0000000..eb02d82 --- /dev/null +++ b/src/newsreader/templates/components/form/help-text.html @@ -0,0 +1 @@ +{{ field.help_text }} diff --git a/src/newsreader/templates/components/form/label.html b/src/newsreader/templates/components/form/label.html new file mode 100644 index 0000000..4058b29 --- /dev/null +++ b/src/newsreader/templates/components/form/label.html @@ -0,0 +1,3 @@ + diff --git a/src/newsreader/templates/components/form/title.html b/src/newsreader/templates/components/form/title.html new file mode 100644 index 0000000..3adcb75 --- /dev/null +++ b/src/newsreader/templates/components/form/title.html @@ -0,0 +1,3 @@ +
+

{{ title }}

+
diff --git a/src/newsreader/templates/password-reset/password-reset-complete.html b/src/newsreader/templates/password-reset/password-reset-complete.html new file mode 100755 index 0000000..0b7796f --- /dev/null +++ b/src/newsreader/templates/password-reset/password-reset-complete.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block content %} +
+ {% trans "Password reset complete" as header_text %} + {% blocktrans asvar content %} + You may now log in + {% endblocktrans %} + + {% include "components/card/card.html" with header_text=header_text content=content %} +
+{% endblock %} diff --git a/src/newsreader/templates/password-reset/password-reset-confirm.html b/src/newsreader/templates/password-reset/password-reset-confirm.html new file mode 100755 index 0000000..d0d5037 --- /dev/null +++ b/src/newsreader/templates/password-reset/password-reset-confirm.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block meta %} + + +{% endblock %} + +{% block content %} +
+ {% if validlink %} + {% url 'accounts:login' as cancel_url %} + {% trans "Enter your new password below to reset your password:" as title %} + {% trans "Change password" as confirm_text %} + {% include "components/form/form.html" with form=form title=title confirm_text=confirm_text cancel_url=cancel_url %} + {% else %} + {% trans "Password reset unsuccessful" as header_text %} + {% url 'accounts:password-reset' as reset_url %} + {% blocktrans asvar content %} + Password reset unsuccessful. Please + try again. + {% endblocktrans %} + + {% include "components/card/card.html" with header_text=header_text content=content %} + {% endif %} +
+{% endblock %} + +{# This is used by django.contrib.auth #} diff --git a/src/newsreader/templates/password-reset/password-reset-done.html b/src/newsreader/templates/password-reset/password-reset-done.html new file mode 100755 index 0000000..7012439 --- /dev/null +++ b/src/newsreader/templates/password-reset/password-reset-done.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{% load static i18n %} + +{% block title %}{% trans "Password reset" %}{% endblock %} + +{% block content %} +
+ {% trans "Password reset" as header_text %} + {% blocktrans asvar content %} + We have sent you an email with a link to reset your password. Please check + your email and click the link to continue. + {% endblocktrans %} + + {% include "components/card/card.html" with header_text=header_text content=content %} +
+{% endblock %} diff --git a/src/newsreader/templates/password-reset/password_reset_email.html b/src/newsreader/templates/password-reset/password-reset-email.html similarity index 100% rename from src/newsreader/templates/password-reset/password_reset_email.html rename to src/newsreader/templates/password-reset/password-reset-email.html diff --git a/src/newsreader/templates/password-reset/password-reset-form.html b/src/newsreader/templates/password-reset/password-reset-form.html new file mode 100644 index 0000000..e423560 --- /dev/null +++ b/src/newsreader/templates/password-reset/password-reset-form.html @@ -0,0 +1,11 @@ +{% extends "components/form/form.html" %} +{% load i18n %} + +{% block intro %} +

+ {% blocktrans %} + Forgot your password? Enter your email in the form below and we'll send you + instructions for creating a new one. + {% endblocktrans %} +

+{% endblock intro %} diff --git a/src/newsreader/templates/password-reset/password_reset_subject.txt b/src/newsreader/templates/password-reset/password-reset-subject.txt similarity index 100% rename from src/newsreader/templates/password-reset/password_reset_subject.txt rename to src/newsreader/templates/password-reset/password-reset-subject.txt diff --git a/src/newsreader/templates/password-reset/password-reset.html b/src/newsreader/templates/password-reset/password-reset.html new file mode 100644 index 0000000..97e5678 --- /dev/null +++ b/src/newsreader/templates/password-reset/password-reset.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block content %} +
+ {% include "password-reset/password-reset-form.html" with form=form title="Reset password" confirm_text="Reset password" %} +
+{% endblock %} diff --git a/src/newsreader/templates/password-reset/password_reset_complete.html b/src/newsreader/templates/password-reset/password_reset_complete.html deleted file mode 100755 index 8a47f55..0000000 --- a/src/newsreader/templates/password-reset/password_reset_complete.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Password reset complete" %}{% endblock %} - -{% block content %} -
-
-
-

{% trans "Password reset complete" %}

-
-
-

- {% trans "Your password has been reset!" %} - {% blocktrans %} - You may now log in - {% endblocktrans %}. -

-
- -
-{% endblock %} diff --git a/src/newsreader/templates/password-reset/password_reset_confirm.html b/src/newsreader/templates/password-reset/password_reset_confirm.html deleted file mode 100755 index c438971..0000000 --- a/src/newsreader/templates/password-reset/password_reset_confirm.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends "base.html" %} -{% load static i18n %} - -{% block meta %} - - -{% endblock %} - -{% block title %}{% trans "Confirm password reset" %}{% endblock %} - -{% block content %} -
- - {% if validlink %} -
- {% csrf_token %} -
-

- {% trans "Enter your new password below to reset your password:" %} -

-
- -
- {{ form }} -
-
- Cancel - -
-
- - {% else %} -
-
-

{% trans "Password reset unsuccessful" %}

-
-
-

- {% url 'accounts:password-reset' as reset_url %} - {% blocktrans %} - Password reset unsuccessful. Please - try again. - {% endblocktrans %} -

-
- - {% endif %} - -
-{% endblock %} - - -{# This is used by django.contrib.auth #} diff --git a/src/newsreader/templates/password-reset/password_reset_done.html b/src/newsreader/templates/password-reset/password_reset_done.html deleted file mode 100755 index dfa141c..0000000 --- a/src/newsreader/templates/password-reset/password_reset_done.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Password reset" %}{% endblock %} - -{% block content %} -
-
-
-

{% trans "Password reset" %}

-
-
-

- {% blocktrans %} - We have sent you an email with a link to reset your password. Please check - your email and click the link to continue. - {% endblocktrans %} -

-
- -
-{% endblock %} diff --git a/src/newsreader/templates/password-reset/password_reset_form.html b/src/newsreader/templates/password-reset/password_reset_form.html deleted file mode 100755 index cd5fc3e..0000000 --- a/src/newsreader/templates/password-reset/password_reset_form.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Reset password" %}{% endblock %} - -{% block content %} -
-
- {% csrf_token %} -
-

{% trans "Reset password" %}

- -

- {% blocktrans %} - Forgot your password? Enter your email in the form below and we'll send you - instructions for creating a new one. - {% endblocktrans %} -

-
- -
- {{ form }} -
-
- Cancel - -
-
-
-{% endblock %} diff --git a/src/newsreader/templates/registration/activation_complete.html b/src/newsreader/templates/registration/activation_complete.html index 61ea493..f8dd91b 100755 --- a/src/newsreader/templates/registration/activation_complete.html +++ b/src/newsreader/templates/registration/activation_complete.html @@ -1,7 +1,5 @@ {% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Account Activated" %}{% endblock %} +{% load i18n %} {% comment %} **registration/activation_complete.html** @@ -13,19 +11,14 @@ account is now active. {% block content %}
-
-
-

{% trans "Account activated" %}

-
-
-

- {% trans "Your account is now activated." %} - {% if not user.is_authenticated %} - {% trans "You can log in." %} - {% endif %} -

-
- + {% trans "Account activated" as header_text %} + + {% if user.is_authenticated %} + {% trans "Your account is activated. You can now log in." as content %} + {% else %} + {% trans "Your account is activated." as content %} + {% endif %} + + {% include "components/card/card.html" with header_text=header_text content=content %}
{% endblock %} diff --git a/src/newsreader/templates/registration/activation_email.html b/src/newsreader/templates/registration/activation_email.html index 8be4421..8773b29 100644 --- a/src/newsreader/templates/registration/activation_email.html +++ b/src/newsreader/templates/registration/activation_email.html @@ -68,5 +68,5 @@ following context: ``HttpRequest`` instance for better flexibility. For example it can be used to compute absolute register URL: - {{ request.scheme }}://{{ request.get_host }}{% url 'registration_activate' activation_key %} + {{ request.scheme }}://{{ request.get_host }}{% url 'accounts:activate' activation_key %} {% endcomment %} diff --git a/src/newsreader/templates/registration/activation_email.txt b/src/newsreader/templates/registration/activation_email.txt index 7f52a60..d07e785 100644 --- a/src/newsreader/templates/registration/activation_email.txt +++ b/src/newsreader/templates/registration/activation_email.txt @@ -48,5 +48,5 @@ following context: ``HttpRequest`` instance for better flexibility. For example it can be used to compute absolute register URL: - {{ request.scheme }}://{{ request.get_host }}{% url 'registration_activate' activation_key %} + {{ request.scheme }}://{{ request.get_host }}{% url 'accounts:activate' activation_key %} {% endcomment %} diff --git a/src/newsreader/templates/registration/activation_failure.html b/src/newsreader/templates/registration/activation_failure.html index 5cf0f67..c99cc34 100644 --- a/src/newsreader/templates/registration/activation_failure.html +++ b/src/newsreader/templates/registration/activation_failure.html @@ -1,7 +1,5 @@ {% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Activation Failure" %}{% endblock %} +{% load i18n %} {% comment %} **registration/activate.html** @@ -14,14 +12,8 @@ Used if account activation fails. With the default setup, has the following cont {% block content %}
-
-
-

{% trans "Activation Failure" %}

-
-
-

{% trans "Account activation failed." %}

-
- + {% trans "Activation Failure" as header_text %} + {% trans "Account activation failed." as content %} + {% include "components/card/card.html" with header_text=header_text content=content %}
{% endblock %} diff --git a/src/newsreader/templates/registration/activation_resend_complete.html b/src/newsreader/templates/registration/activation_resend_complete.html index dcf1e79..6d01fee 100644 --- a/src/newsreader/templates/registration/activation_resend_complete.html +++ b/src/newsreader/templates/registration/activation_resend_complete.html @@ -14,18 +14,10 @@ the following context: {% block content %}
-
-
-

{% trans "Account activation resent" %}

-
-
-

- {% blocktrans %} - We have sent an email to {{ email }} with further instructions. - {% endblocktrans %} -

-
- + {% trans "Account activation resent" as header_text %} + {% blocktrans asvar content %} + We have sent an email to {{ email }} with further instructions. + {% endblocktrans %} + {% include "components/card/card.html" with header_text=header_text content=content %}
{% endblock %} diff --git a/src/newsreader/templates/registration/activation_resend_form.html b/src/newsreader/templates/registration/activation_resend_form.html index f721242..5f0dd82 100644 --- a/src/newsreader/templates/registration/activation_resend_form.html +++ b/src/newsreader/templates/registration/activation_resend_form.html @@ -1,35 +1,9 @@ {% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Resend Activation Email" %}{% endblock %} - -{% comment %} -**registration/resend_activation_form.html** -Used to show the form users will fill out to resend the activation email. By -default, has the following context: - -``form`` - The registration form. This will be an instance of some subclass - of ``django.forms.Form``; consult `Django's forms documentation - `_ for - information on how to display this in a template. -{% endcomment %} +{% load static %} {% block content %}
-
- {% csrf_token %} -
-

Resend activation code

-
- -
- {{ form }} -
-
- Cancel - -
-
+ {% url "accounts:login" as cancel_url %} + {% include "components/form/form.html" with form=form title="Resend activation code" cancel_url=cancel_url confirm_text="Resend code" %}
{% endblock %} diff --git a/src/newsreader/templates/registration/registration_closed.html b/src/newsreader/templates/registration/registration_closed.html index 6169ebe..c7cfd9a 100755 --- a/src/newsreader/templates/registration/registration_closed.html +++ b/src/newsreader/templates/registration/registration_closed.html @@ -1,20 +1,10 @@ {% extends "base.html" %} {% load static i18n %} -{% block title %}{% trans "Registration is closed" %}{% endblock %} - {% block content %}
-
-
-

{% trans "Registration is closed" %}

-
-
-

- {% trans "Sorry, but registration is closed at this moment. Come back later." %} -

-
- + {% trans "Registration is closed" as header_text %} + {% trans "Sorry, but registration is closed at this moment. Come back later." as content %} + {% include "components/card/card.html" with header_text=header_text content=content %}
{% endblock %} diff --git a/src/newsreader/templates/registration/registration_complete.html b/src/newsreader/templates/registration/registration_complete.html index cc5f868..ccf70b2 100755 --- a/src/newsreader/templates/registration/registration_complete.html +++ b/src/newsreader/templates/registration/registration_complete.html @@ -1,7 +1,5 @@ {% extends "base.html" %} -{% load static i18n %} - -{% block title %}{% trans "Activation email sent" %}{% endblock %} +{% load i18n %} {% comment %} **registration/registration_complete.html** @@ -14,16 +12,8 @@ been sent. {% block content %}
-
-
-

{% trans "Activation email sent" %}

-
-
-

- {% trans "Please check your email to complete the registration process." %} -

-
- + {% trans "Activation email sent" as header_text %} + {% trans "Please check your email to complete the registration process." as content %} + {% include "components/card/card.html" with header_text=header_text content=content %}
{% endblock %} diff --git a/src/newsreader/templates/registration/registration_form.html b/src/newsreader/templates/registration/registration_form.html index 9b8619c..ccc07c9 100644 --- a/src/newsreader/templates/registration/registration_form.html +++ b/src/newsreader/templates/registration/registration_form.html @@ -1,22 +1,9 @@ {% extends "base.html" %} - {% load static %} {% block content %}
-
- {% csrf_token %} -
-

Register

-
- -
- {{ form }} -
-
- Cancel - -
-
+ {% url "accounts:login" as cancel_url %} + {% include "components/form/form.html" with form=form title="Register" cancel_url=cancel_url confirm_text="Register" %}
{% endblock %}