[BUGFIX] Restructure view classes so they actually work.
This commit is contained in:
parent
8ed554bca9
commit
e965a76fb8
|
@ -6,11 +6,12 @@ from django.contrib import admin
|
|||
admin.autodiscover()
|
||||
|
||||
from frontend.views import login_wrap, logout_wrap
|
||||
from frontend.views import IndexView, RegisterView
|
||||
from frontend.views import IndexView, RegisterView, ProjectContextView
|
||||
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^$', IndexView.as_view(), name='frontend-index'),
|
||||
url(r'^project/$', ProjectContextView.as_view(), name='frontend-projectcontext'),
|
||||
url(r'^login/$', login_wrap, name='frontend-login'),
|
||||
url(r'^logout/$', logout_wrap, name='frontend-logout'),
|
||||
url(r'^register/', RegisterView.as_view(), name='frontend-register'),
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django import forms
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Submit, Layout
|
||||
|
||||
class ExampleForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ExampleForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-lg-2'
|
||||
self.helper.field_class = 'col-lg-10'
|
||||
self.helper.form_method = 'post'
|
||||
self.helper.layout = Layout(
|
||||
'like_website',
|
||||
'favorite_food',
|
||||
'favorite_color',
|
||||
'favorite_number',
|
||||
'notes',
|
||||
Submit('send', 'Senden', css_class = 'btn-default pull-right')
|
||||
)
|
||||
|
||||
like_website = forms.TypedChoiceField(
|
||||
label = "Do you like this website?",
|
||||
choices = ((1, "Yes"), (0, "No")),
|
||||
coerce = lambda x: bool(int(x)),
|
||||
widget = forms.RadioSelect,
|
||||
initial = '1',
|
||||
required = True,
|
||||
)
|
||||
|
||||
favorite_food = forms.CharField(
|
||||
label = "What is your favorite food?",
|
||||
max_length = 80,
|
||||
required = True,
|
||||
)
|
||||
|
||||
favorite_color = forms.CharField(
|
||||
label = "What is your favorite color?",
|
||||
max_length = 80,
|
||||
required = True,
|
||||
)
|
||||
|
||||
favorite_number = forms.IntegerField(
|
||||
label = "Favorite number",
|
||||
required = False,
|
||||
)
|
||||
|
||||
notes = forms.CharField(
|
||||
label = "Additional notes or feedback",
|
||||
required = False,
|
||||
)
|
|
@ -2,6 +2,7 @@
|
|||
{% block content %}
|
||||
<p>
|
||||
Welcome, {{user}}!<br>
|
||||
Feel free to discover.
|
||||
Feel free to discover.<br>
|
||||
<a href="project/">Project Contexts</a>
|
||||
</p>
|
||||
{% endblock %}
|
|
@ -12,6 +12,8 @@
|
|||
{% compressed_js 'bootstrap' %}
|
||||
<!-- /Bootstrap -->
|
||||
{% compressed_css 'frontend' %}
|
||||
<!-- Additional -->
|
||||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{% extends "layout/base.html" %}
|
||||
{% block head%}
|
||||
{% load crispy_forms_tags %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% crispy form %}
|
||||
</p>
|
||||
{% endblock %}
|
|
@ -1,13 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from django.views.generic import TemplateView, FormView, CreateView, UpdateView
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views.generic import TemplateView
|
||||
from django.contrib.auth.views import login, logout
|
||||
|
||||
from frontend.forms import ExampleForm
|
||||
|
||||
FRONTEND_PAGE_NAME = 'Citavi Mapper'
|
||||
|
||||
# Login wrapper functions
|
||||
def login_wrap(*args, **kwargs):
|
||||
kwargs['extra_context'] = {
|
||||
'page': {
|
||||
|
@ -27,7 +30,8 @@ def logout_wrap(*args, **kwargs):
|
|||
return logout(*args, **kwargs)
|
||||
|
||||
|
||||
class BaseView(TemplateView):
|
||||
# My base classes for views
|
||||
class MyTemplateView(TemplateView):
|
||||
template_name = 'base.html'
|
||||
page_name = FRONTEND_PAGE_NAME
|
||||
page_title = 'BASE'
|
||||
|
@ -37,25 +41,57 @@ class BaseView(TemplateView):
|
|||
u'name': self.page_name,
|
||||
u'title': self.page_title
|
||||
}
|
||||
def get(self, request, **kwargs):
|
||||
return super(BaseView, self).get(request, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs[u'page'] = self.get_page_data()
|
||||
return super(BaseView, self).get_context_data(**kwargs)
|
||||
return super(MyTemplateView, self).get_context_data(**kwargs)
|
||||
|
||||
class MyFormView(FormView):
|
||||
template_name = 'base.html'
|
||||
page_name = FRONTEND_PAGE_NAME
|
||||
page_title = 'BASE'
|
||||
|
||||
def get_page_data(self):
|
||||
return {
|
||||
u'name': self.page_name,
|
||||
u'title': self.page_title
|
||||
}
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs[u'page'] = self.get_page_data()
|
||||
return super(MyFormView, self).get_context_data(**kwargs)
|
||||
|
||||
class LoggedInMixin(object):
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, *args, **kwargs):
|
||||
return super(LoggedInMixin, self).dispatch(*args, **kwargs)
|
||||
|
||||
class ProtectedSiteView(LoggedInMixin, BaseView):
|
||||
class ProtectedTemplateView(LoggedInMixin, MyTemplateView):
|
||||
pass
|
||||
|
||||
class IndexView(ProtectedSiteView):
|
||||
class ProtectedFormView(LoggedInMixin, MyFormView):
|
||||
pass
|
||||
|
||||
# Actual Views
|
||||
|
||||
class IndexView(ProtectedTemplateView):
|
||||
template_name = 'index.html'
|
||||
page_title = 'Index'
|
||||
|
||||
class RegisterView(BaseView):
|
||||
class RegisterView(MyTemplateView):
|
||||
template_name = 'register.html'
|
||||
page_title = 'Register'
|
||||
|
||||
class ProjectContextView(ProtectedFormView):
|
||||
template_name = 'projectcontext.html'
|
||||
page_title = 'Project Contexts'
|
||||
form_class = ExampleForm
|
||||
success_url = '/project/thanks'
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(ProjectContextView, self).__init__(**kwargs)
|
||||
print(self.__class__.__mro__)
|
||||
|
||||
|
||||
def form_valid(self, form):
|
||||
pass
|
Loading…
Reference in New Issue