Add basic form
This commit is contained in:
parent
6da103b148
commit
8b16fe573c
14 changed files with 424 additions and 11 deletions
|
@ -73,6 +73,7 @@ THIRD_PARTY_APPS = [
|
|||
|
||||
LOCAL_APPS = [
|
||||
"schickmacher.users.apps.UsersConfig",
|
||||
"schickmacher.renderer.apps.RendererConfig",
|
||||
# Your stuff: custom apps go here
|
||||
]
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
||||
|
@ -246,7 +247,7 @@ LOGGING = {
|
|||
|
||||
# django-allauth
|
||||
# ------------------------------------------------------------------------------
|
||||
ACCOUNT_ALLOW_REGISTRATION = env.bool("DJANGO_ACCOUNT_ALLOW_REGISTRATION", True)
|
||||
ACCOUNT_ALLOW_REGISTRATION = env.bool("DJANGO_ACCOUNT_ALLOW_REGISTRATION", False)
|
||||
# https://django-allauth.readthedocs.io/en/latest/configuration.html
|
||||
ACCOUNT_AUTHENTICATION_METHOD = "username"
|
||||
# https://django-allauth.readthedocs.io/en/latest/configuration.html
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
from django.conf import settings
|
||||
from django.urls import include, path
|
||||
from django.urls import include, path, reverse_lazy
|
||||
from django.conf.urls.static import static
|
||||
from django.contrib import admin
|
||||
from django.views.generic import TemplateView
|
||||
from django.views.generic import TemplateView, RedirectView
|
||||
from django.views import defaults as default_views
|
||||
|
||||
urlpatterns = [
|
||||
path("", TemplateView.as_view(template_name="pages/home.html"), name="home"),
|
||||
path("", RedirectView.as_view(url=reverse_lazy('renderer:form')), name="home"),
|
||||
path(
|
||||
"about/", TemplateView.as_view(template_name="pages/about.html"), name="about"
|
||||
),
|
||||
|
@ -14,6 +14,7 @@ urlpatterns = [
|
|||
path(settings.ADMIN_URL, admin.site.urls),
|
||||
# User management
|
||||
path("users/", include("schickmacher.users.urls", namespace="users")),
|
||||
path("renderer/", include("schickmacher.renderer.urls", namespace="renderer")),
|
||||
path("accounts/", include("allauth.urls")),
|
||||
# Your stuff: custom urls includes go here
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
|
0
locale/README.rst
Normal file → Executable file
0
locale/README.rst
Normal file → Executable file
305
locale/de/LC_MESSAGES/django.po
Executable file
305
locale/de/LC_MESSAGES/django.po
Executable file
|
@ -0,0 +1,305 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-09-05 08:52+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: schickmacher/renderer/apps.py:7
|
||||
msgid "Renderer"
|
||||
msgstr "Renderer"
|
||||
|
||||
#: schickmacher/renderer/forms.py:6
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#: schickmacher/templates/account/account_inactive.html:5
|
||||
#: schickmacher/templates/account/account_inactive.html:8
|
||||
msgid "Account Inactive"
|
||||
msgstr "Account Inaktiv"
|
||||
|
||||
#: schickmacher/templates/account/account_inactive.html:10
|
||||
msgid "This account is inactive."
|
||||
msgstr "Dieser Account ist deaktiviert"
|
||||
|
||||
#: schickmacher/templates/account/email.html:7
|
||||
msgid "Account"
|
||||
msgstr "Account"
|
||||
|
||||
#: schickmacher/templates/account/email.html:10
|
||||
msgid "E-mail Addresses"
|
||||
msgstr "E-Mail Adressen"
|
||||
|
||||
#: schickmacher/templates/account/email.html:13
|
||||
msgid "The following e-mail addresses are associated with your account:"
|
||||
msgstr "Die folgenden E-Mail Adressen gehören zu ihrem Account"
|
||||
|
||||
#: schickmacher/templates/account/email.html:27
|
||||
msgid "Verified"
|
||||
msgstr "Verifiziert"
|
||||
|
||||
#: schickmacher/templates/account/email.html:29
|
||||
msgid "Unverified"
|
||||
msgstr "Nicht verifiziert"
|
||||
|
||||
#: schickmacher/templates/account/email.html:31
|
||||
msgid "Primary"
|
||||
msgstr "Primär"
|
||||
|
||||
#: schickmacher/templates/account/email.html:37
|
||||
msgid "Make Primary"
|
||||
msgstr "Als primär festlegen"
|
||||
|
||||
#: schickmacher/templates/account/email.html:38
|
||||
msgid "Re-send Verification"
|
||||
msgstr "Verifikation erneut versenden"
|
||||
|
||||
#: schickmacher/templates/account/email.html:39
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: schickmacher/templates/account/email.html:46
|
||||
msgid "Warning:"
|
||||
msgstr "Warnung:"
|
||||
|
||||
#: schickmacher/templates/account/email.html:46
|
||||
msgid ""
|
||||
"You currently do not have any e-mail address set up. You should really add "
|
||||
"an e-mail address so you can receive notifications, reset your password, etc."
|
||||
msgstr ""
|
||||
"Sie haben zurzeit keine E-Mail Adressen eingerichtet. Sie sollten eine E-Mail "
|
||||
"Adresse einrichten um Benachrichtigungen zu erhalten, ihr Passwort zurückzusetpen, etc."
|
||||
|
||||
#: schickmacher/templates/account/email.html:51
|
||||
msgid "Add E-mail Address"
|
||||
msgstr "E-Mail Adresse hinzufügen"
|
||||
|
||||
#: schickmacher/templates/account/email.html:56
|
||||
msgid "Add E-mail"
|
||||
msgstr "E-Mail hinzufügen"
|
||||
|
||||
#: schickmacher/templates/account/email.html:66
|
||||
msgid "Do you really want to remove the selected e-mail address?"
|
||||
msgstr "Möchten sie die E-Mail Adresse wirklich entfernen?"
|
||||
|
||||
#: schickmacher/templates/account/email_confirm.html:6
|
||||
#: schickmacher/templates/account/email_confirm.html:10
|
||||
msgid "Confirm E-mail Address"
|
||||
msgstr "E-Mail Adresse bestätigen"
|
||||
|
||||
#: schickmacher/templates/account/email_confirm.html:16
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
|
||||
"address for user %(user_display)s."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/email_confirm.html:20
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/email_confirm.html:27
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This e-mail confirmation link expired or is invalid. Please <a href="
|
||||
"\"%(email_url)s\">issue a new e-mail confirmation request</a>."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/login.html:7
|
||||
#: schickmacher/templates/account/login.html:11
|
||||
#: schickmacher/templates/account/login.html:44
|
||||
#: schickmacher/templates/base.html:68
|
||||
msgid "Sign In"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/login.html:16
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please sign in with one\n"
|
||||
"of your existing third party accounts. Or, <a href=\"%(signup_url)s\">sign "
|
||||
"up</a>\n"
|
||||
"for a %(site_name)s account and sign in below:"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/login.html:26
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/login.html:33
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you have not created an account yet, then please\n"
|
||||
"<a href=\"%(signup_url)s\">sign up</a> first."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/login.html:43
|
||||
msgid "Forgot Password?"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/logout.html:5
|
||||
#: schickmacher/templates/account/logout.html:8
|
||||
#: schickmacher/templates/account/logout.html:17
|
||||
#: schickmacher/templates/base.html:59
|
||||
msgid "Sign Out"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/logout.html:10
|
||||
msgid "Are you sure you want to sign out?"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_change.html:6
|
||||
#: schickmacher/templates/account/password_change.html:9
|
||||
#: schickmacher/templates/account/password_change.html:14
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:5
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:8
|
||||
#: schickmacher/templates/account/password_reset_from_key_done.html:4
|
||||
#: schickmacher/templates/account/password_reset_from_key_done.html:7
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset.html:7
|
||||
#: schickmacher/templates/account/password_reset.html:11
|
||||
#: schickmacher/templates/account/password_reset_done.html:6
|
||||
#: schickmacher/templates/account/password_reset_done.html:9
|
||||
msgid "Password Reset"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset.html:16
|
||||
msgid ""
|
||||
"Forgotten your password? Enter your e-mail address below, and we'll send you "
|
||||
"an e-mail allowing you to reset it."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset.html:21
|
||||
msgid "Reset My Password"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset.html:24
|
||||
msgid "Please contact us if you have any trouble resetting your password."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset_done.html:15
|
||||
msgid ""
|
||||
"We have sent you an e-mail. Please contact us if you do not receive it "
|
||||
"within a few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:8
|
||||
msgid "Bad Token"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:12
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The password reset link was invalid, possibly because it has already been "
|
||||
"used. Please request a <a href=\"%(passwd_reset_url)s\">new password reset</"
|
||||
"a>."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:18
|
||||
msgid "change password"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_reset_from_key.html:21
|
||||
#: schickmacher/templates/account/password_reset_from_key_done.html:8
|
||||
msgid "Your password is now changed."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/password_set.html:6
|
||||
#: schickmacher/templates/account/password_set.html:9
|
||||
#: schickmacher/templates/account/password_set.html:14
|
||||
msgid "Set Password"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/signup.html:6
|
||||
msgid "Signup"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/signup.html:9
|
||||
#: schickmacher/templates/account/signup.html:19
|
||||
#: schickmacher/templates/base.html:64
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/signup.html:11
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/signup_closed.html:5
|
||||
#: schickmacher/templates/account/signup_closed.html:8
|
||||
msgid "Sign Up Closed"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/signup_closed.html:10
|
||||
msgid "We are sorry, but the sign up is currently closed."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/verification_sent.html:5
|
||||
#: schickmacher/templates/account/verification_sent.html:8
|
||||
#: schickmacher/templates/account/verified_email_required.html:5
|
||||
#: schickmacher/templates/account/verified_email_required.html:8
|
||||
msgid "Verify Your E-mail Address"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/verification_sent.html:10
|
||||
msgid ""
|
||||
"We have sent an e-mail to you for verification. Follow the link provided to "
|
||||
"finalize the signup process. Please contact us if you do not receive it "
|
||||
"within a few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/verified_email_required.html:12
|
||||
msgid ""
|
||||
"This part of the site requires us to verify that\n"
|
||||
"you are who you claim to be. For this purpose, we require that you\n"
|
||||
"verify ownership of your e-mail address. "
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/verified_email_required.html:16
|
||||
msgid ""
|
||||
"We have sent an e-mail to you for\n"
|
||||
"verification. Please click on the link inside this e-mail. Please\n"
|
||||
"contact us if you do not receive it within a few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/account/verified_email_required.html:20
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change your e-"
|
||||
"mail address</a>."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/templates/base.html:55
|
||||
msgid "My Profile"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/users/apps.py:7
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/users/forms.py:16
|
||||
msgid "This username has already been taken."
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/users/models.py:11
|
||||
msgid "Name of User"
|
||||
msgstr ""
|
||||
|
||||
#: schickmacher/users/views.py:34
|
||||
msgid "Infos successfully updated"
|
||||
msgstr ""
|
0
schickmacher/renderer/__init__.py
Normal file
0
schickmacher/renderer/__init__.py
Normal file
13
schickmacher/renderer/apps.py
Normal file
13
schickmacher/renderer/apps.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
from django.apps import AppConfig
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class RendererConfig(AppConfig):
|
||||
name = "schickmacher.renderer"
|
||||
verbose_name = _("Renderer")
|
||||
|
||||
def ready(self):
|
||||
try:
|
||||
import schickmacher.renderer.signals # noqa F401
|
||||
except ImportError:
|
||||
pass
|
15
schickmacher/renderer/forms.py
Normal file
15
schickmacher/renderer/forms.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
from django import forms
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
class RendererForm(forms.Form):
|
||||
date = forms.DateField(label=_('Date'),
|
||||
initial=lambda: timezone.now().strftime('%Y-%m-%d'),
|
||||
widget=forms.TextInput(
|
||||
attrs={'type': 'date'}
|
||||
))
|
||||
render_content = forms.CharField(
|
||||
label=_('Content'), widget=forms.Textarea, max_length=None,
|
||||
required=False, initial=""
|
||||
)
|
16
schickmacher/renderer/tests/test_forms.py
Normal file
16
schickmacher/renderer/tests/test_forms.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
from django.utils import timezone
|
||||
|
||||
from schickmacher.renderer.forms import RendererForm
|
||||
|
||||
|
||||
class TestRendererForm:
|
||||
def test_form_accepts_content(self):
|
||||
form = RendererForm({
|
||||
"date": timezone.now(),
|
||||
"render_content": "Example **content**"
|
||||
})
|
||||
assert form.is_valid()
|
||||
|
8
schickmacher/renderer/tests/test_urls.py
Normal file
8
schickmacher/renderer/tests/test_urls.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
import pytest
|
||||
|
||||
from django.urls import reverse, resolve
|
||||
|
||||
|
||||
def test_form():
|
||||
assert reverse('renderer:form') == '/renderer/'
|
||||
assert resolve('/renderer/').view_name == 'renderer:form'
|
15
schickmacher/renderer/tests/test_views.py
Normal file
15
schickmacher/renderer/tests/test_views.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
import pytest
|
||||
|
||||
from django.test import Client
|
||||
from django.utils import timezone
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
class TestRendererFormView:
|
||||
|
||||
def test_get_empty_form(self, client: Client):
|
||||
response = client.get('/renderer/')
|
||||
assert response.status_code == 200
|
||||
assert response.context['form']['date'].value() \
|
||||
== timezone.now().strftime('%Y-%m-%d')
|
8
schickmacher/renderer/urls.py
Normal file
8
schickmacher/renderer/urls.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
from django.urls import path
|
||||
|
||||
from schickmacher.renderer.views import form_view
|
||||
|
||||
app_name = 'renderer'
|
||||
urlpatterns = [
|
||||
path("", view=form_view, name="form")
|
||||
]
|
9
schickmacher/renderer/views.py
Normal file
9
schickmacher/renderer/views.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.shortcuts import render
|
||||
|
||||
from schickmacher.renderer.forms import RendererForm
|
||||
|
||||
|
||||
def form_view(request: WSGIRequest):
|
||||
ctx = {"form": RendererForm()}
|
||||
return render(request, 'renderer/render_form.html', ctx)
|
|
@ -16,17 +16,17 @@
|
|||
<link rel="icon" href="{% static 'images/favicons/favicon.ico' %}">
|
||||
|
||||
{% block css %}
|
||||
|
||||
|
||||
<!-- Latest compiled and minified Bootstrap CSS -->
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||
|
||||
|
||||
|
||||
<!-- Your stuff: Third-party CSS libraries go here -->
|
||||
{% compress css %}
|
||||
<!-- This file stores project-specific CSS -->
|
||||
|
||||
|
||||
<link href="{% static 'css/project.css' %}" rel="stylesheet">
|
||||
|
||||
|
||||
{% endcompress %}
|
||||
{% endblock %}
|
||||
|
||||
|
@ -46,6 +46,9 @@
|
|||
<li class="nav-item active">
|
||||
<a class="nav-link" href="{% url 'home' %}">Home <span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'renderer:form' %}">Renderer</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'about' %}">About</a>
|
||||
</li>
|
||||
|
@ -94,14 +97,14 @@
|
|||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
{% block javascript %}
|
||||
|
||||
|
||||
<!-- Bootstrap JS and its dependencies-->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||||
|
||||
<!-- Your stuff: Third-party javascript libraries go here -->
|
||||
|
||||
|
||||
|
||||
<!-- place project specific Javascript in this file -->
|
||||
{% compress js %}
|
||||
|
@ -111,4 +114,4 @@
|
|||
{% endblock javascript %}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
|
19
schickmacher/templates/renderer/render_form.html
Normal file
19
schickmacher/templates/renderer/render_form.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
{% load crispy_forms_tags %}
|
||||
|
||||
{% block title %}{% trans "Renderer" %}{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<h1>{% trans "Renderer" %}</h1>
|
||||
<form class="form-horizontal" method="post" action="{% url 'renderer:form' %}">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn btn-primary">{% trans "Compile" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
Loading…
Reference in a new issue