def post(self): args = self.request.json year = int(args.pop('year')) if 1999 > year > 2099: return dict(status='nok', reason='Zły rok %s' % year) leaves = Leave.query.filter(Leave.year == year).all() leaves = groupby(leaves, lambda l: l.user_id) for user_id, (mandated, remarks) in args.iteritems(): user_id = int(user_id) try: mandated = int(mandated) except Exception: user = User.query.get(user_id) return dict( status='nok', reason=self._( u'Wrong hours format: ${hours} for user ${name}', hours=mandated, name=user.name)) if 0 > mandated or mandated > 99: user = User.query.get(user_id) return dict( status='nok', reason=self._( u'Wrong hours number: ${hours} for user ${name}', hours=mandated, name=user.name)) leave_obj = leaves.get(user_id) if not leave_obj: leave_obj = Leave(user_id=user_id, year=year) else: leave_obj = leave_obj[0] leave_obj.number = mandated leave_obj.remarks = remarks self.session.add(leave_obj) return dict(status='ok')