From e83cbe9c5d9337e8d746d1ab0a68a059c45d6375 Mon Sep 17 00:00:00 2001 From: philipp Date: Sun, 30 Jul 2017 21:26:03 +0000 Subject: [PATCH] Change "date_invalid" of a report is working again. git-svn-id: http://www.winterrodeln.org/svn/wradmin/trunk@2693 7aebc617-e5e2-0310-91dc-80fb5f6d2477 --- wradmin/__init__.py | 2 +- wradmin/controllers/bericht.py | 56 ++++++++++++---------------------- 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/wradmin/__init__.py b/wradmin/__init__.py index 7804928..bbbbd92 100644 --- a/wradmin/__init__.py +++ b/wradmin/__init__.py @@ -77,7 +77,7 @@ def bericht_view(id): @app.route("/bericht/change_date_invalid/", methods=['POST']) def bericht_change_date_invalid(id): get_db() - return BerichtController().view(id) + return BerichtController().change_date_invalid(id) @app.route("/gasthaus/list") diff --git a/wradmin/controllers/bericht.py b/wradmin/controllers/bericht.py index 33687bd..805bad3 100644 --- a/wradmin/controllers/bericht.py +++ b/wradmin/controllers/bericht.py @@ -1,36 +1,11 @@ -#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): @@ -64,23 +39,30 @@ class BerichtController: 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'] - model.meta.Session.commit() - session['flash'] = 'Datum wurde erfolgreich geändert' - session.save() - return redirect(url(controller='bericht', action='view', id=id)) + 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 + flash('Datum wurde erfolgreich geändert') + return redirect(url_for('bericht_view', id=id)) -- 2.39.5