Refactor feedback feature to use colander/deform
This commit is contained in:
parent
4191e50456
commit
1c27efc8f1
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2017 Lance Edgar
|
||||
# Copyright © 2010-2018 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -34,26 +34,27 @@ from rattail.mail import send_email
|
|||
from rattail.util import OrderedDict
|
||||
from rattail.files import resource_path
|
||||
|
||||
import formencode as fe
|
||||
import colander
|
||||
from pyramid import httpexceptions
|
||||
from pyramid.response import Response
|
||||
from pyramid_simpleform import Form
|
||||
|
||||
import tailbone
|
||||
from tailbone import forms
|
||||
from tailbone import forms2 as forms
|
||||
from tailbone.db import Session
|
||||
from tailbone.views import View
|
||||
|
||||
|
||||
class Feedback(fe.Schema):
|
||||
class Feedback(colander.Schema):
|
||||
"""
|
||||
Form schema for user feedback.
|
||||
"""
|
||||
allow_extra_fields = True
|
||||
referrer = fe.validators.NotEmpty()
|
||||
user = forms.validators.ValidUser()
|
||||
user_name = fe.validators.NotEmpty()
|
||||
message = fe.validators.NotEmpty()
|
||||
referrer = colander.SchemaNode(colander.String())
|
||||
|
||||
user = colander.SchemaNode(forms.types.UserType())
|
||||
|
||||
user_name = colander.SchemaNode(colander.String())
|
||||
|
||||
message = colander.SchemaNode(colander.String())
|
||||
|
||||
|
||||
class CommonView(View):
|
||||
|
@ -117,9 +118,9 @@ class CommonView(View):
|
|||
"""
|
||||
Generic view to present/handle the user feedback form.
|
||||
"""
|
||||
form = Form(self.request, schema=Feedback)
|
||||
if form.validate():
|
||||
data = dict(form.data)
|
||||
form = forms.Form(schema=Feedback(), request=self.request)
|
||||
if form.validate(newstyle=True):
|
||||
data = dict(form.validated)
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue