def add_complex_reminder_schedule(request, domain, handler_id=None): if handler_id: h = CaseReminderHandler.get(handler_id) if h.doc_type != 'CaseReminderHandler' or h.domain != domain: raise Http404 else: h = None form_list = get_form_list(domain) sample_list = get_sample_list(domain) if request.method == "POST": form = ComplexCaseReminderForm(request.POST) if form.is_valid(): if h is None: h = CaseReminderHandler(domain=domain) h.ui_type = UI_COMPLEX else: if h.start_condition_type != form.cleaned_data["start_condition_type"]: for reminder in h.get_reminders(): reminder.retire() h.active = form.cleaned_data["active"] h.case_type = form.cleaned_data["case_type"] h.nickname = form.cleaned_data["nickname"] h.default_lang = form.cleaned_data["default_lang"] h.method = form.cleaned_data["method"] h.recipient = form.cleaned_data["recipient"] h.start_property = form.cleaned_data["start_property"] h.start_value = form.cleaned_data["start_value"] h.start_date = form.cleaned_data["start_date"] h.start_offset = form.cleaned_data["start_offset"] h.start_match_type = form.cleaned_data["start_match_type"] h.schedule_length = form.cleaned_data["schedule_length"] h.event_interpretation = form.cleaned_data["event_interpretation"] h.max_iteration_count = form.cleaned_data["max_iteration_count"] h.until = form.cleaned_data["until"] h.events = form.cleaned_data["events"] h.submit_partial_forms = form.cleaned_data["submit_partial_forms"] h.include_case_side_effects = form.cleaned_data["include_case_side_effects"] h.ui_frequency = form.cleaned_data["frequency"] h.start_condition_type = form.cleaned_data["start_condition_type"] h.max_question_retries = form.cleaned_data["max_question_retries"] if form.cleaned_data["start_condition_type"] == "ON_DATETIME": dt = parse(form.cleaned_data["start_datetime_date"]).date() tm = parse(form.cleaned_data["start_datetime_time"]).time() h.start_datetime = datetime.combine(dt, tm) else: h.start_datetime = None h.sample_id = form.cleaned_data["sample_id"] h.save() return HttpResponseRedirect(reverse('list_reminders', args=[domain])) else: if h is not None: initial = { "active" : h.active, "case_type" : h.case_type, "nickname" : h.nickname, "default_lang" : h.default_lang, "method" : h.method, "recipient" : h.recipient, "start_property" : h.start_property, "start_value" : h.start_value, "start_date" : h.start_date, "start_match_type" : h.start_match_type, "start_offset" : h.start_offset, "schedule_length" : h.schedule_length, "event_interpretation" : h.event_interpretation, "max_iteration_count" : h.max_iteration_count, "until" : h.until, "events" : h.events, "submit_partial_forms" : h.submit_partial_forms, "include_case_side_effects" : h.include_case_side_effects, "start_condition_type" : h.start_condition_type, "start_datetime_date" : str(h.start_datetime.date()) if isinstance(h.start_datetime, datetime) else None, "start_datetime_time" : str(h.start_datetime.time()) if isinstance(h.start_datetime, datetime) else None, "frequency" : h.ui_frequency, "sample_id" : h.sample_id, "use_until" : "Y" if h.until is not None else "N", "max_question_retries" : h.max_question_retries, } else: initial = { "events" : [CaseReminderEvent(day_num=0, fire_time=time(0,0), message={"":""}, callback_timeout_intervals=[], form_unique_id=None)], "use_until" : "N", "max_question_retries" : QUESTION_RETRY_CHOICES[-1], "active" : True, } form = ComplexCaseReminderForm(initial=initial) return render(request, "reminders/partial/add_complex_reminder.html", { "domain": domain, "form": form, "form_list": form_list, "handler_id": handler_id, "sample_list": sample_list, })
def add_complex_reminder_schedule(request, domain, handler_id=None): if handler_id: h = CaseReminderHandler.get(handler_id) if h.doc_type != 'CaseReminderHandler' or h.domain != domain: raise Http404 else: h = None form_list = get_form_list(domain) if request.method == "POST": form = ComplexCaseReminderForm(request.POST) if form.is_valid(): if h is None: h = CaseReminderHandler(domain=domain) h.ui_type = UI_COMPLEX h.case_type = form.cleaned_data["case_type"] h.nickname = form.cleaned_data["nickname"] h.default_lang = form.cleaned_data["default_lang"] h.method = form.cleaned_data["method"] h.recipient = form.cleaned_data["recipient"] h.start_property = form.cleaned_data["start_property"] h.start_value = form.cleaned_data["start_value"] h.start_date = form.cleaned_data["start_date"] h.start_offset = form.cleaned_data["start_offset"] h.start_match_type = form.cleaned_data["start_match_type"] h.schedule_length = form.cleaned_data["schedule_length"] h.event_interpretation = form.cleaned_data["event_interpretation"] h.max_iteration_count = form.cleaned_data["max_iteration_count"] h.until = form.cleaned_data["until"] h.events = form.cleaned_data["events"] h.save() return HttpResponseRedirect(reverse('list_reminders', args=[domain])) else: if h is not None: initial = { "case_type" : h.case_type ,"nickname" : h.nickname ,"default_lang" : h.default_lang ,"method" : h.method ,"recipient" : h.recipient ,"start_property" : h.start_property ,"start_value" : h.start_value ,"start_date" : h.start_date ,"start_match_type" : h.start_match_type ,"start_offset" : h.start_offset ,"schedule_length" : h.schedule_length ,"event_interpretation" : h.event_interpretation ,"max_iteration_count" : h.max_iteration_count ,"until" : h.until ,"events" : h.events } else: initial = {} form = ComplexCaseReminderForm(initial=initial) return render_to_response(request, "reminders/partial/add_complex_reminder.html", { "domain": domain ,"form": form ,"form_list": form_list })
def add_complex_reminder_schedule(request, domain, handler_id=None): if handler_id: h = CaseReminderHandler.get(handler_id) if h.doc_type != 'CaseReminderHandler' or h.domain != domain: raise Http404 else: h = None form_list = get_form_list(domain) sample_list = get_sample_list(domain) if request.method == "POST": form = ComplexCaseReminderForm(request.POST) if form.is_valid(): if h is None: h = CaseReminderHandler(domain=domain) h.ui_type = UI_COMPLEX else: if h.start_condition_type != form.cleaned_data[ "start_condition_type"]: for reminder in h.get_reminders(): reminder.retire() h.active = form.cleaned_data["active"] h.case_type = form.cleaned_data["case_type"] h.nickname = form.cleaned_data["nickname"] h.default_lang = form.cleaned_data["default_lang"] h.method = form.cleaned_data["method"] h.recipient = form.cleaned_data["recipient"] h.start_property = form.cleaned_data["start_property"] h.start_value = form.cleaned_data["start_value"] h.start_date = form.cleaned_data["start_date"] h.start_offset = form.cleaned_data["start_offset"] h.start_match_type = form.cleaned_data["start_match_type"] h.schedule_length = form.cleaned_data["schedule_length"] h.event_interpretation = form.cleaned_data["event_interpretation"] h.max_iteration_count = form.cleaned_data["max_iteration_count"] h.until = form.cleaned_data["until"] h.events = form.cleaned_data["events"] h.submit_partial_forms = form.cleaned_data["submit_partial_forms"] h.include_case_side_effects = form.cleaned_data[ "include_case_side_effects"] h.ui_frequency = form.cleaned_data["frequency"] h.start_condition_type = form.cleaned_data["start_condition_type"] h.max_question_retries = form.cleaned_data["max_question_retries"] h.recipient_case_match_property = form.cleaned_data[ "recipient_case_match_property"] h.recipient_case_match_type = form.cleaned_data[ "recipient_case_match_type"] h.recipient_case_match_value = form.cleaned_data[ "recipient_case_match_value"] if form.cleaned_data["start_condition_type"] == "ON_DATETIME": dt = parse(form.cleaned_data["start_datetime_date"]).date() tm = parse(form.cleaned_data["start_datetime_time"]).time() h.start_datetime = datetime.combine(dt, tm) else: h.start_datetime = None h.sample_id = form.cleaned_data["sample_id"] h.save() return HttpResponseRedirect( reverse('list_reminders', args=[domain])) else: if h is not None: initial = { "active": h.active, "case_type": h.case_type, "nickname": h.nickname, "default_lang": h.default_lang, "method": h.method, "recipient": h.recipient, "start_property": h.start_property, "start_value": h.start_value, "start_date": h.start_date, "start_match_type": h.start_match_type, "start_offset": h.start_offset, "schedule_length": h.schedule_length, "event_interpretation": h.event_interpretation, "max_iteration_count": h.max_iteration_count, "until": h.until, "events": h.events, "submit_partial_forms": h.submit_partial_forms, "include_case_side_effects": h.include_case_side_effects, "start_condition_type": h.start_condition_type, "start_datetime_date": str(h.start_datetime.date()) if isinstance( h.start_datetime, datetime) else None, "start_datetime_time": str(h.start_datetime.time()) if isinstance( h.start_datetime, datetime) else None, "frequency": h.ui_frequency, "sample_id": h.sample_id, "use_until": "Y" if h.until is not None else "N", "max_question_retries": h.max_question_retries, "recipient_case_match_property": h.recipient_case_match_property, "recipient_case_match_type": h.recipient_case_match_type, "recipient_case_match_value": h.recipient_case_match_value, } else: initial = { "events": [ CaseReminderEvent(day_num=0, fire_time=time(0, 0), message={"": ""}, callback_timeout_intervals=[], form_unique_id=None) ], "use_until": "N", "max_question_retries": QUESTION_RETRY_CHOICES[-1], "active": True, } form = ComplexCaseReminderForm(initial=initial) return render( request, "reminders/partial/add_complex_reminder.html", { "domain": domain, "form": form, "form_list": form_list, "handler_id": handler_id, "sample_list": sample_list, })