Exemple #1
0
 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,
     )
Exemple #2
0
 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,
     )
Exemple #3
0
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)
Exemple #4
0
    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
Exemple #5
0
 def can_use_survey(self):
     return can_use_survey_reminders(self.request)
Exemple #6
0
 def form_kwargs(self):
     return {
         'domain': self.domain,
         'can_use_survey': can_use_survey_reminders(self.request),
     }
Exemple #7
0
    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