-#from pylons import request, response, session, url, tmpl_context as c
-#from pylons.controllers.util import abort, redirect
import datetime
-from flask import request, abort, url_for
+from flask import request, abort, redirect, url_for, flash
import paginate
import sqlalchemy as sa
-
-import wrpylib.wrmwmarkup
-import wrpylib.wrmwcache
-import wrpylib.mwmarkup
-
import wradmin.model as model
from wradmin.genshi import render_genshi_template, TemplateContext
-# class RequireDateIfUserDefined(formencode.validators.FormValidator):
-# "requires that date_userdefined is not empty if date_invalid == 'userdefined'"
-# def _to_python(self, value_dict, state):
-# # if not value_dict.get('date_invalid'): ... # This is _not_ checked because this should be checked elsewhere
-# if value_dict.get('date_invalid') == 'userdefined' and not value_dict.get('date_userdefined'):
-# value = value_dict.get('date_userdefined')
-# raise formencode.Invalid('Es muss ein Wert eingegeben werden', value, state, error_dict={'date_userdefined': formencode.Invalid(self.message('empty', state), value, state)})
-# return value_dict
-#
-#
-# class ChangeDateInvalidForm(formencode.Schema):
-# allow_extra_fields = True
-# filter_extra_fields = True
-# date_invalid = formencode.validators.OneOf(['no_change', 'tomorrow', 'one_week', 'two_weeks', 'one_week_more', 'end_of_saison', 'now', 'userdefined'], not_empty=True)
-# date_userdefined = wrpylib.wrvalidators.DateTimeNoSec
-# chained_validators = [RequireDateIfUserDefined()]
-
-
class BerichtController:
def _add_dates_to_c(self, c, date_invalid):
self._add_dates_to_c(c, c.wrreport.date_invalid)
return render_genshi_template('bericht_view.html', c=c)
- #@restrict('POST')
- #@validate(schema=ChangeDateInvalidForm(), form='view')
def change_date_invalid(self, id=None):
- if id is None: abort(404)
+ assert request.method == 'POST'
+ if id is None:
+ abort(404)
wrreport_q = model.meta.Session.query(model.WrReport)
- wrreport = wrreport_q.get(id)
- if wrreport is None: abort(404)
+ wrreport = wrreport_q.get(id)
+ if wrreport is None:
+ abort(404)
+ c = TemplateContext()
self._add_dates_to_c(c, wrreport.date_invalid)
- date = self.form_result['date_invalid']
+ date = request.form['date_invalid']
if date == 'tomorrow': wrreport.date_invalid = c.date_tomorrow
elif date == 'one_week': wrreport.date_invalid = c.date_one_week
elif date == 'two_weeks': wrreport.date_invalid = c.date_two_weeks
elif date == 'one_week_more': wrreport.date_invalid = c.date_one_week_more
elif date == 'end_of_saison': wrreport.date_invalid = c.date_end_of_saison
elif date == 'now': wrreport.date_invalid = c.date_now
- elif date == 'userdefined': wrreport.date_invalid = self.form_result['date_userdefined']
+ elif date == 'userdefined':
+ date_userdefined = request.form['date_userdefined']
+ try:
+ date_userdefined = datetime.datetime.strptime(date_userdefined, '%Y-%m-%d %H:%M')
+ except ValueError as e:
+ flash(str(e))
+ return redirect(url_for('bericht_view', id=id))
+ wrreport.date_invalid = date_userdefined
model.meta.Session.commit()
- session['flash'] = 'Datum wurde erfolgreich geändert'
- session.save()
- return redirect(url(controller='bericht', action='view', id=id))
+ flash('Datum wurde erfolgreich geändert')
+ return redirect(url_for('bericht_view', id=id))