Add basic 'about' page with some package versions
This commit is contained in:
parent
b2d7e14ef7
commit
ee6d3195c5
10
tailbone/templates/about.mako
Normal file
10
tailbone/templates/about.mako
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
## -*- coding: utf-8 -*-
|
||||||
|
<%inherit file="/base.mako" />
|
||||||
|
|
||||||
|
<%def name="title()">About ${project_title}</%def>
|
||||||
|
|
||||||
|
<h2>${project_title} ${project_version}</h2>
|
||||||
|
|
||||||
|
% for name, version in packages.iteritems():
|
||||||
|
<h3>${name} ${version}</h3>
|
||||||
|
% endfor
|
|
@ -26,41 +26,81 @@ Various common views
|
||||||
|
|
||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
|
import rattail
|
||||||
from rattail.mail import send_email
|
from rattail.mail import send_email
|
||||||
|
from rattail.util import OrderedDict
|
||||||
|
|
||||||
import formencode
|
import formencode as fe
|
||||||
from pyramid import httpexceptions
|
from pyramid import httpexceptions
|
||||||
from formencode import validators
|
|
||||||
from pyramid_simpleform import Form
|
from pyramid_simpleform import Form
|
||||||
|
|
||||||
|
import tailbone
|
||||||
from tailbone import forms
|
from tailbone import forms
|
||||||
|
from tailbone.views import View
|
||||||
|
|
||||||
|
|
||||||
class Feedback(formencode.Schema):
|
class Feedback(fe.Schema):
|
||||||
"""
|
"""
|
||||||
Form schema for user feedback.
|
Form schema for user feedback.
|
||||||
"""
|
"""
|
||||||
allow_extra_fields = True
|
allow_extra_fields = True
|
||||||
user = forms.validators.ValidUser()
|
user = forms.validators.ValidUser()
|
||||||
user_name = validators.NotEmpty()
|
user_name = fe.validators.NotEmpty()
|
||||||
message = validators.NotEmpty()
|
message = fe.validators.NotEmpty()
|
||||||
|
|
||||||
|
|
||||||
def feedback(request):
|
class CommonView(View):
|
||||||
"""
|
"""
|
||||||
Generic view to present/handle the user feedback form.
|
Base class for common views; override as needed.
|
||||||
"""
|
"""
|
||||||
form = Form(request, schema=Feedback)
|
project_title = "Tailbone"
|
||||||
if form.validate():
|
project_version = tailbone.__version__
|
||||||
data = dict(form.data)
|
|
||||||
if data['user']:
|
def about(self):
|
||||||
data['user_url'] = request.route_url('users.view', uuid=data['user'].uuid)
|
"""
|
||||||
send_email(request.rattail_config, 'user_feedback', data=data)
|
Generic view to show "about project" info page.
|
||||||
request.session.flash("Thank you for your feedback.")
|
"""
|
||||||
return httpexceptions.HTTPFound(location=form.data['referrer'])
|
return {
|
||||||
return {'form': forms.FormRenderer(form)}
|
'project_title': self.project_title,
|
||||||
|
'project_version': self.project_version,
|
||||||
|
'packages': self.get_packages(),
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_packages(self):
|
||||||
|
"""
|
||||||
|
Should return the full set of packages which should be displayed on the
|
||||||
|
'about' page.
|
||||||
|
"""
|
||||||
|
return OrderedDict([
|
||||||
|
('rattail', rattail.__version__),
|
||||||
|
('Tailbone', tailbone.__version__),
|
||||||
|
])
|
||||||
|
|
||||||
|
def feedback(self):
|
||||||
|
"""
|
||||||
|
Generic view to present/handle the user feedback form.
|
||||||
|
"""
|
||||||
|
form = Form(self.request, schema=Feedback)
|
||||||
|
if form.validate():
|
||||||
|
data = dict(form.data)
|
||||||
|
if data['user']:
|
||||||
|
data['user_url'] = self.request.route_url('users.view', uuid=data['user'].uuid)
|
||||||
|
send_email(self.rattail_config, 'user_feedback', data=data)
|
||||||
|
self.request.session.flash("Thank you for your feedback.")
|
||||||
|
return httpexceptions.HTTPFound(location=form.data['referrer'])
|
||||||
|
return {'form': forms.FormRenderer(form)}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def defaults(cls, config):
|
||||||
|
|
||||||
|
config.add_route('about', '/about')
|
||||||
|
config.add_view(cls, attr='about', route_name='about',
|
||||||
|
renderer='/about.mako')
|
||||||
|
|
||||||
|
config.add_route('feedback', '/feedback')
|
||||||
|
config.add_view(cls, attr='feedback', route_name='feedback',
|
||||||
|
renderer='/feedback.mako')
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
config.add_route('feedback', '/feedback')
|
CommonView.defaults(config)
|
||||||
config.add_view(feedback, route_name='feedback', renderer='/feedback.mako')
|
|
||||||
|
|
Loading…
Reference in a new issue