def update_group_plugins(request):
# make sure the plugin id exists
group_id = request.matchdict['group_id']
can_modify_group(request, group_id)
group = request.db_session.query(LedGroup).filter(LedGroup.id == group_id).first()
if not group:
raise exc.HTTPBadRequest("No such plugin")
else:
def to_null(val):
if val == '':
return None
return val
POST = {k: to_null(v) for k, v in request.POST.items()}
time_from, time_to = sorted([request.POST['time_from'], request.POST['time_to']])
fmt_24 = "%H%M"
fmt_date = "%d/%m/%Y"
if (not time_from and time_to) or (not time_to and time_from):
raise exc.HTTPBadRequest('If you want a time range, please specify a time from and time to')
if time_from:
time_from = datetime.datetime.strptime(time_from, fmt_24)
time_to = datetime.datetime.strptime(time_to, fmt_24)
group.time_to = time_to
group.time_from = time_from
else:
group.time_from = None
group.time_to = None
if POST['date_from']:
date_from = datetime.datetime.strptime(POST['date_from'], fmt_date)
group.date_from = date_from
else:
group.date_from = None
if POST['days']:
days = POST['days'][:7]
if not re.match("[0|1]{7}", days):
raise exc.HTTPBadRequest("Days must have 7 valid days")
# print "Setting days", days
if "1" in days:
group.days_of_week = days
else:
group.days_of_week = None
else:
group.days_of_week = None
if POST['repeats']:
repeats = int(POST['repeats'])
group.repeats = max(0, repeats)
else:
group.repeats = None
if POST['enabled']:
group.enabled = POST['enabled'] == 'true'
log(request, "Updated scheduling for <a href='/group/{}'>{}</a>".format(group.id, group.name))
return {'success': True}
评论列表
文章目录