Esempio n. 1
0
    def post(self, request, *args, **kwargs):
        if self.async_response is not None:
            return self.async_response

        if self.schedule_form.is_valid():
            if not self.can_use_inbound_sms and self.schedule_form.uses_sms_survey:
                return HttpResponseBadRequest(
                    "Cannot create or edit survey reminders because subscription "
                    "does not have access to inbound SMS")

            broadcast, schedule = self.schedule_form.save_broadcast_and_schedule(
            )
            if isinstance(schedule, AlertSchedule):
                refresh_alert_schedule_instances.delay(schedule.schedule_id,
                                                       broadcast.recipients)
            elif isinstance(schedule, TimedSchedule):
                refresh_timed_schedule_instances.delay(
                    schedule.schedule_id,
                    broadcast.recipients,
                    start_date=broadcast.start_date)
            else:
                raise TypeError("Expected AlertSchedule or TimedSchedule")

            return HttpResponseRedirect(
                reverse(BroadcastListView.urlname, args=[self.domain]))

        return self.get(request, *args, **kwargs)
Esempio n. 2
0
    def post(self, request, *args, **kwargs):
        if self.async_response is not None:
            return self.async_response

        if self.message_form.is_valid():
            # TODO editing should not create a new one
            values = self.message_form.cleaned_data
            if values['send_frequency'] == 'immediately':
                if values['translate']:
                    messages = {}
                    for lang in self.project_languages:
                        key = 'message_%s' % lang
                        if key in values:
                            messages[lang] = values[key]
                    content = SMSContent(message=messages)
                else:
                    content = SMSContent(message={'*': values['non_translated_message']})
                with transaction.atomic():
                    schedule = AlertSchedule.create_simple_alert(self.domain, content)
                    broadcast = ImmediateBroadcast(
                        domain=self.domain, name=values['schedule_name'], schedule=schedule
                    )
                    broadcast.save()
                recipients = [('CommCareUser', r_id) for r_id in values['recipients']]
                refresh_alert_schedule_instances.delay(schedule, recipients)

            return HttpResponseRedirect(reverse(BroadcastListView.urlname, args=[self.domain]))
        return self.get(request, *args, **kwargs)
Esempio n. 3
0
    def post(self, request, *args, **kwargs):
        if self.async_response is not None:
            return self.async_response

        if self.schedule_form.is_valid():
            broadcast, schedule = self.schedule_form.save_broadcast_and_schedule(
            )
            if isinstance(schedule, AlertSchedule):
                refresh_alert_schedule_instances.delay(schedule.schedule_id,
                                                       broadcast.recipients)
            elif isinstance(schedule, TimedSchedule):
                refresh_timed_schedule_instances.delay(
                    schedule.schedule_id,
                    broadcast.recipients,
                    start_date=broadcast.start_date)
            else:
                raise TypeError("Expected AlertSchedule or TimedSchedule")

            return HttpResponseRedirect(
                reverse(BroadcastListView.urlname, args=[self.domain]))

        return self.get(request, *args, **kwargs)
Esempio n. 4
0
    def post(self, request, *args, **kwargs):
        if self.async_response is not None:
            return self.async_response

        if self.schedule_form.is_valid():
            if not self.can_use_inbound_sms and self.schedule_form.uses_sms_survey:
                return HttpResponseBadRequest(
                    "Cannot create or edit survey reminders because subscription "
                    "does not have access to inbound SMS"
                )

            broadcast, schedule = self.schedule_form.save_broadcast_and_schedule()
            if isinstance(schedule, AlertSchedule):
                refresh_alert_schedule_instances.delay(schedule.schedule_id, broadcast.recipients)
            elif isinstance(schedule, TimedSchedule):
                refresh_timed_schedule_instances.delay(schedule.schedule_id, broadcast.recipients,
                    start_date=broadcast.start_date)
            else:
                raise TypeError("Expected AlertSchedule or TimedSchedule")

            return HttpResponseRedirect(reverse(BroadcastListView.urlname, args=[self.domain]))

        return self.get(request, *args, **kwargs)
Esempio n. 5
0
 def refresh():
     refresh_alert_schedule_instances.delay(
         broadcast.schedule_id,
         broadcast.recipients,
     )
 def refresh():
     refresh_alert_schedule_instances.delay(
         broadcast.schedule_id,
         broadcast.recipients,
     )