2 from flask import request, abort, redirect, url_for, flash
4 import sqlalchemy as sa
5 import wradmin.model as model
6 from wradmin.genshi import render_genshi_template, TemplateContext
9 class BerichtController:
11 def _add_dates_to_c(self, c, date_invalid):
12 now = datetime.datetime.today()
13 if date_invalid is None: date_invalid = now
15 c.date_no_change = date_invalid
16 c.date_tomorrow = now + datetime.timedelta(1)
17 c.date_one_week = now + datetime.timedelta(7)
18 c.date_two_weeks = now + datetime.timedelta(14)
19 c.date_one_week_more = date_invalid + datetime.timedelta(7)
20 c.date_end_of_saison = datetime.datetime(now.year if now.month < 7 else now.year + 1, 7, 1)
23 """Lists all reports"""
24 q = model.meta.Session.query(model.WrReport)
25 q = q.order_by(sa.sql.expression.desc(model.WrReport.id))
27 c.paginator = paginate.Page(q.all(), page=int(request.args.get('page', 1)),
28 url_maker=lambda page: url_for('bericht_list', page=page),
30 return render_genshi_template('bericht_list.html', c=c)
33 """Displays a report"""
34 q = model.meta.Session.query(model.WrReport)
36 c.wrreport = q.get(id)
37 if c.wrreport is None:
39 self._add_dates_to_c(c, c.wrreport.date_invalid)
40 return render_genshi_template('bericht_view.html', c=c)
42 def change_date_invalid(self, id=None):
43 assert request.method == 'POST'
46 wrreport_q = model.meta.Session.query(model.WrReport)
47 wrreport = wrreport_q.get(id)
51 self._add_dates_to_c(c, wrreport.date_invalid)
52 date = request.form['date_invalid']
53 if date == 'tomorrow': wrreport.date_invalid = c.date_tomorrow
54 elif date == 'one_week': wrreport.date_invalid = c.date_one_week
55 elif date == 'two_weeks': wrreport.date_invalid = c.date_two_weeks
56 elif date == 'one_week_more': wrreport.date_invalid = c.date_one_week_more
57 elif date == 'end_of_saison': wrreport.date_invalid = c.date_end_of_saison
58 elif date == 'now': wrreport.date_invalid = c.date_now
59 elif date == 'userdefined':
60 date_userdefined = request.form['date_userdefined']
62 date_userdefined = datetime.datetime.strptime(date_userdefined, '%Y-%m-%d %H:%M')
63 except ValueError as e:
65 return redirect(url_for('bericht_view', id=id))
66 wrreport.date_invalid = date_userdefined
67 model.meta.Session.commit()
68 flash('Datum wurde erfolgreich geƤndert')
69 return redirect(url_for('bericht_view', id=id))