def schedule_form(self): initial = self.reminder_form_class.compute_initial( self.reminder_handler, self.available_languages, ) if self.request.method == 'POST': return self.reminder_form_class( self.request.POST, initial=initial, is_previewer=self.is_previewer, domain=self.domain, is_edit=True, can_use_survey=can_use_survey_reminders(self.request), use_custom_content_handler=self.reminder_handler. custom_content_handler is not None, custom_content_handler=self.reminder_handler. custom_content_handler, available_languages=self.available_languages, ) return self.reminder_form_class( initial=initial, is_previewer=self.is_previewer, domain=self.domain, is_edit=True, can_use_survey=can_use_survey_reminders(self.request), use_custom_content_handler=self.reminder_handler. custom_content_handler is not None, custom_content_handler=self.reminder_handler. custom_content_handler, available_languages=self.available_languages, )
def schedule_form(self): if self.request.method == 'POST': return self.reminder_form_class( self.request.POST, domain=self.domain, is_previewer=self.is_previewer, can_use_survey=can_use_survey_reminders(self.request), available_languages=self.available_languages, ) return self.reminder_form_class( is_previewer=self.is_previewer, domain=self.domain, can_use_survey=can_use_survey_reminders(self.request), available_languages=self.available_languages, )
def sms_settings(request, domain): domain_obj = Domain.get_by_name(domain, strict=True) is_previewer = request.couch_user.is_previewer() if request.method == "POST": form = SMSSettingsForm(request.POST, _cchq_is_previewer=is_previewer) if form.is_valid(): domain_obj.use_default_sms_response = form.cleaned_data["use_default_sms_response"] domain_obj.default_sms_response = form.cleaned_data["default_sms_response"] if settings.SMS_QUEUE_ENABLED: domain_obj.restricted_sms_times = form.cleaned_data["restricted_sms_times_json"] if is_previewer: domain_obj.custom_case_username = form.cleaned_data["custom_case_username"] domain_obj.chat_message_count_threshold = form.cleaned_data["custom_message_count_threshold"] domain_obj.custom_chat_template = form.cleaned_data["custom_chat_template"] domain_obj.filter_surveys_from_chat = form.cleaned_data["filter_surveys_from_chat"] domain_obj.show_invalid_survey_responses_in_chat = form.cleaned_data["show_invalid_survey_responses_in_chat"] domain_obj.count_messages_as_read_by_anyone = form.cleaned_data["count_messages_as_read_by_anyone"] domain_obj.send_to_duplicated_case_numbers = form.cleaned_data["send_to_duplicated_case_numbers"] if settings.SMS_QUEUE_ENABLED: domain_obj.sms_conversation_times = form.cleaned_data["sms_conversation_times_json"] domain_obj.sms_conversation_length = int(form.cleaned_data["sms_conversation_length"]) domain_obj.save() messages.success(request, _("Changes Saved.")) else: initial = { "use_default_sms_response" : domain_obj.use_default_sms_response, "default_sms_response" : domain_obj.default_sms_response, "use_custom_case_username" : domain_obj.custom_case_username is not None, "custom_case_username" : domain_obj.custom_case_username, "use_custom_message_count_threshold" : domain_obj.chat_message_count_threshold is not None, "custom_message_count_threshold" : domain_obj.chat_message_count_threshold, "use_custom_chat_template" : domain_obj.custom_chat_template is not None, "custom_chat_template" : domain_obj.custom_chat_template, "restricted_sms_times" : domain_obj.restricted_sms_times, "sms_conversation_times" : domain_obj.sms_conversation_times, "sms_conversation_length" : domain_obj.sms_conversation_length, "filter_surveys_from_chat" : domain_obj.filter_surveys_from_chat, "show_invalid_survey_responses_in_chat" : domain_obj.show_invalid_survey_responses_in_chat, "count_messages_as_read_by_anyone" : domain_obj.count_messages_as_read_by_anyone, "send_to_duplicated_case_numbers": domain_obj.send_to_duplicated_case_numbers, } form = SMSSettingsForm(initial=initial) context = { "domain" : domain, "form" : form, "is_previewer" : is_previewer, "sms_queue_enabled" : settings.SMS_QUEUE_ENABLED, 'can_use_survey': can_use_survey_reminders(request), } return render(request, "sms/settings.html", context)
def sidebar_items(self): from corehq.apps.reports.standard.sms import MessageLogReport def reminder_subtitle(form=None, **context): return form['nickname'].value def keyword_subtitle(keyword=None, **context): return keyword.keyword reminders_urls = [] if self.can_access_reminders: if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): from corehq.apps.reminders.views import ( EditScheduledReminderView, CreateScheduledReminderView, RemindersListView, ) reminders_list_url = reverse(RemindersListView.urlname, args=[self.domain]) edit_reminder_urlname = EditScheduledReminderView.urlname new_reminder_urlname = CreateScheduledReminderView.urlname else: reminders_list_url = reverse('list_reminders', args=[self.domain]) edit_reminder_urlname = 'edit_complex' new_reminder_urlname = 'add_complex_reminder_schedule' reminders_urls.extend([ { 'title': _("Reminders"), 'url': reminders_list_url, 'subpages': [ { 'title': reminder_subtitle, 'urlname': edit_reminder_urlname }, { 'title': _("Schedule Reminder"), 'urlname': new_reminder_urlname, }, { 'title': _("Schedule Multi Event Reminder"), 'urlname': 'create_complex_reminder_schedule', }, ], }, { 'title': _("Reminder Calendar"), 'url': reverse('scheduled_reminders', args=[self.domain]) }, ]) can_use_survey = can_use_survey_reminders(self._request) if can_use_survey: from corehq.apps.reminders.views import ( KeywordsListView, AddNormalKeywordView, AddStructuredKeywordView, EditNormalKeywordView, EditStructuredKeywordView, ) if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): keyword_list_url = reverse(KeywordsListView.urlname, args=[self.domain]) else: keyword_list_url = reverse('manage_keywords', args=[self.domain]) reminders_urls.append({ 'title': _("Keywords"), 'url': keyword_list_url, 'subpages': [ { 'title': keyword_subtitle, 'urlname': 'edit_keyword' }, { 'title': _("New Keyword"), 'urlname': 'add_keyword', }, { 'title': AddNormalKeywordView.page_title, 'urlname': AddNormalKeywordView.urlname, }, { 'title': AddStructuredKeywordView.page_title, 'urlname': AddStructuredKeywordView.urlname, }, { 'title': EditNormalKeywordView.page_title, 'urlname': EditNormalKeywordView.urlname, }, { 'title': EditStructuredKeywordView.page_title, 'urlname': EditStructuredKeywordView.urlname, }, ], }) if self.can_access_reminders: reminders_urls.append({ 'title': _("Reminders in Error"), 'url': reverse('reminders_in_error', args=[self.domain]) }) items = [] messages_urls = [] if self.can_access_sms: messages_urls.extend([ { 'title': _('Compose SMS Message'), 'url': reverse('sms_compose_message', args=[self.domain]) }, ]) if self.can_access_reminders: messages_urls.extend([ { 'title': _("Broadcast Messages"), 'url': reverse('one_time_reminders', args=[self.domain]), 'subpages': [ { 'title': _("Edit Broadcast"), 'urlname': 'edit_one_time_reminder' }, { 'title': _("New Broadcast"), 'urlname': 'add_one_time_reminder' }, { 'title': _("New Broadcast"), 'urlname': 'copy_one_time_reminder' }, ] }, ]) if self.can_access_sms: messages_urls.extend([ { 'title': _('Message Log'), 'url': MessageLogReport.get_url(domain=self.domain) }, ]) if messages_urls: items.append((_("Messages"), messages_urls)) if reminders_urls: items.append((_("Data Collection and Reminders"), reminders_urls)) if self.project.commtrack_enabled: from corehq.apps.sms.views import SubscribeSMSView items.append( (_("CommTrack"), [ {'title': ugettext_lazy("Subscribe to SMS Reports"), 'url': reverse(SubscribeSMSView.urlname, args=[self.domain])},]) ) if self.couch_user.is_previewer(): items[0][1].append( {'title': _('Chat'), 'url': reverse('chat_contacts', args=[self.domain])} ) if self.project.survey_management_enabled and can_use_survey: def sample_title(form=None, **context): return form['name'].value def survey_title(form=None, **context): return form['name'].value items.append( (_("Survey Management"), [ {'title': _("Samples"), 'url': reverse('sample_list', args=[self.domain]), 'subpages': [ {'title': sample_title, 'urlname': 'edit_sample'}, {'title': _("New Sample"), 'urlname': 'add_sample'}, ]}, {'title': _("Surveys"), 'url': reverse('survey_list', args=[self.domain]), 'subpages': [ {'title': survey_title, 'urlname': 'edit_survey'}, {'title': _("New Survey"), 'urlname': 'add_survey'}, ]}, ]) ) settings_pages = [] if self.can_access_sms: from corehq.apps.sms.views import ( DomainSmsGatewayListView, AddDomainGatewayView, EditDomainGatewayView, ) if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): sms_connectivity_url = reverse( DomainSmsGatewayListView.urlname, args=[self.domain] ) else: sms_connectivity_url = reverse( 'list_domain_backends', args=[self.domain] ) settings_pages.append({ 'title': _('SMS Connectivity'), 'url': sms_connectivity_url, 'subpages': [ { 'title': _('Add Connection'), 'urlname': 'add_domain_backend' }, { 'title': _("Add Connection"), 'urlname': AddDomainGatewayView.urlname, }, { 'title': _('Edit Connection'), 'urlname': 'edit_domain_backend' }, { 'title': _("Edit Connection"), 'urlname': EditDomainGatewayView.urlname, }, ], }) if self.couch_user.is_superuser or self.couch_user.is_domain_admin(self.domain): settings_pages.extend([ {'title': ugettext_lazy("General Settings"), 'url': reverse('sms_settings', args=[self.domain])}, {'title': ugettext_lazy("Languages"), 'url': reverse('sms_languages', args=[self.domain])}, ]) if settings_pages: items.append((_("Settings"), settings_pages)) return items
def can_use_survey(self): return can_use_survey_reminders(self.request)
def form_kwargs(self): return { 'domain': self.domain, 'can_use_survey': can_use_survey_reminders(self.request), }
def sidebar_items(self): from corehq.apps.reports.standard.sms import MessageLogReport def reminder_subtitle(form=None, **context): return form['nickname'].value def keyword_subtitle(keyword=None, **context): return keyword.keyword reminders_urls = [] if self.can_access_reminders: if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): from corehq.apps.reminders.views import ( EditScheduledReminderView, CreateScheduledReminderView, RemindersListView, ) reminders_list_url = reverse(RemindersListView.urlname, args=[self.domain]) edit_reminder_urlname = EditScheduledReminderView.urlname new_reminder_urlname = CreateScheduledReminderView.urlname else: reminders_list_url = reverse('list_reminders', args=[self.domain]) edit_reminder_urlname = 'edit_complex' new_reminder_urlname = 'add_complex_reminder_schedule' reminders_urls.extend([ { 'title': _("Reminders"), 'url': reminders_list_url, 'subpages': [ { 'title': reminder_subtitle, 'urlname': edit_reminder_urlname }, { 'title': _("Schedule Reminder"), 'urlname': new_reminder_urlname, }, { 'title': _("Schedule Multi Event Reminder"), 'urlname': 'create_complex_reminder_schedule', }, ], }, { 'title': _("Reminder Calendar"), 'url': reverse('scheduled_reminders', args=[self.domain]) }, ]) can_use_survey = can_use_survey_reminders(self._request) if can_use_survey: from corehq.apps.reminders.views import KeywordsListView if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): keyword_list_url = reverse(KeywordsListView.urlname, args=[self.domain]) else: keyword_list_url = reverse('manage_keywords', args=[self.domain]) reminders_urls.append({ 'title': _("Keywords"), 'url': keyword_list_url, 'subpages': [ { 'title': keyword_subtitle, 'urlname': 'edit_keyword' }, { 'title': _("New Keyword"), 'urlname': 'add_keyword', }, ], }) if self.can_access_reminders: reminders_urls.append({ 'title': _("Reminders in Error"), 'url': reverse('reminders_in_error', args=[self.domain]) }) items = [] messages_urls = [] if self.can_access_sms: messages_urls.extend([ { 'title': _('Compose SMS Message'), 'url': reverse('sms_compose_message', args=[self.domain]) }, ]) if self.can_access_reminders: messages_urls.extend([ { 'title': _("Broadcast Messages"), 'url': reverse('one_time_reminders', args=[self.domain]), 'subpages': [ { 'title': _("Edit Broadcast"), 'urlname': 'edit_one_time_reminder' }, { 'title': _("New Broadcast"), 'urlname': 'add_one_time_reminder' }, { 'title': _("New Broadcast"), 'urlname': 'copy_one_time_reminder' }, ] }, ]) if self.can_access_sms: messages_urls.extend([ { 'title': _('Message Log'), 'url': MessageLogReport.get_url(domain=self.domain) }, ]) if messages_urls: items.append((_("Messages"), messages_urls)) if reminders_urls: items.append((_("Data Collection and Reminders"), reminders_urls)) if self.project.commtrack_enabled: from corehq.apps.sms.views import SubscribeSMSView items.append( (_("CommTrack"), [ {'title': ugettext_lazy("Subscribe to SMS Reports"), 'url': reverse(SubscribeSMSView.urlname, args=[self.domain])},]) ) if self.couch_user.is_previewer(): items[0][1].append( {'title': _('Chat'), 'url': reverse('chat_contacts', args=[self.domain])} ) if self.project.survey_management_enabled and can_use_survey: def sample_title(form=None, **context): return form['name'].value def survey_title(form=None, **context): return form['name'].value items.append( (_("Survey Management"), [ {'title': _("Samples"), 'url': reverse('sample_list', args=[self.domain]), 'subpages': [ {'title': sample_title, 'urlname': 'edit_sample'}, {'title': _("New Sample"), 'urlname': 'add_sample'}, ]}, {'title': _("Surveys"), 'url': reverse('survey_list', args=[self.domain]), 'subpages': [ {'title': survey_title, 'urlname': 'edit_survey'}, {'title': _("New Survey"), 'urlname': 'add_survey'}, ]}, ]) ) settings_pages = [] if self.can_access_sms: from corehq.apps.sms.views import ( DomainSmsGatewayListView, AddDomainGatewayView, EditDomainGatewayView, ) if toggles.REMINDERS_UI_PREVIEW.enabled(self.couch_user.username): sms_connectivity_url = reverse( DomainSmsGatewayListView.urlname, args=[self.domain] ) else: sms_connectivity_url = reverse( 'list_domain_backends', args=[self.domain] ) settings_pages.append({ 'title': _('SMS Connectivity'), 'url': sms_connectivity_url, 'subpages': [ { 'title': _('Add Connection'), 'urlname': 'add_domain_backend' }, { 'title': _("Add Connection"), 'urlname': AddDomainGatewayView.urlname, }, { 'title': _('Edit Connection'), 'urlname': 'edit_domain_backend' }, { 'title': _("Edit Connection"), 'urlname': EditDomainGatewayView.urlname, }, ], }) if self.couch_user.is_superuser or self.couch_user.is_domain_admin(self.domain): settings_pages.extend([ {'title': ugettext_lazy("General Settings"), 'url': reverse('sms_settings', args=[self.domain])}, {'title': ugettext_lazy("Languages"), 'url': reverse('sms_languages', args=[self.domain])}, ]) if settings_pages: items.append((_("Settings"), settings_pages)) return items