Esempio n. 1
0
class ScheduleTriggerForm(BaseScheduleForm, forms.ModelForm):
    repeat_period = forms.ChoiceField(choices=repeat_choices, label="Repeat")
    repeat_days = forms.IntegerField(required=False)
    start = forms.CharField(max_length=16)
    start_datetime_value = forms.IntegerField(required=False)
    flow = forms.ModelChoiceField(Flow.objects.filter(pk__lt=0),
                                  label=_("Flow"),
                                  required=True)
    omnibox = OmniboxField(
        label=_('Contacts'),
        required=True,
        help_text=_("The groups and contacts the flow will be broadcast to"))

    def __init__(self, user, *args, **kwargs):
        super(ScheduleTriggerForm, self).__init__(*args, **kwargs)
        self.user = user
        self.fields['omnibox'].set_user(user)
        self.fields['flow'].queryset = Flow.objects.filter(
            org=self.user.get_org(), is_active=True,
            is_archived=False).exclude(flow_type=Flow.MESSAGE)

    def clean(self):
        data = super(ScheduleTriggerForm, self).clean()

        # only weekly gets repeat days
        if data['repeat_period'] != 'W':
            data['repeat_days'] = None
        return data

    class Meta:
        model = Trigger
        fields = ('flow', 'omnibox', 'repeat_period', 'repeat_days', 'start',
                  'start_datetime_value')
Esempio n. 2
0
class SendMessageForm(Form):
    omnibox = OmniboxField()
    text = forms.CharField(widget=forms.Textarea, max_length=640)
    schedule = forms.BooleanField(widget=forms.HiddenInput, required=False)
    step_node = forms.CharField(widget=forms.HiddenInput,
                                max_length=36,
                                required=False)

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.user = user
        self.fields["omnibox"].set_user(user)

    def is_valid(self):
        valid = super().is_valid()
        if valid:
            if ("step_node" not in self.data or not self.data["step_node"]
                ) and ("omnibox" not in self.data
                       or len(self.data["omnibox"].strip()) == 0):
                self.errors["__all__"] = self.error_class(
                    [str(_("At least one recipient is required"))])
                return False
        return valid

    def clean(self):
        cleaned = super().clean()
        if self.user.get_org().is_suspended():
            raise ValidationError(
                _("Sorry, your account is currently suspended. To enable sending messages, please contact support."
                  ))
        return cleaned
Esempio n. 3
0
class BroadcastForm(forms.ModelForm):
    message = forms.CharField(required=True,
                              widget=forms.Textarea,
                              max_length=160)
    omnibox = OmniboxField()

    def __init__(self, user, *args, **kwargs):
        super(BroadcastForm, self).__init__(*args, **kwargs)
        self.fields['omnibox'].set_user(user)

    def is_valid(self):
        valid = super(BroadcastForm, self).is_valid()
        if valid:
            if 'omnibox' not in self.data or len(
                    self.data['omnibox'].strip()) == 0:
                self.errors['__all__'] = self.error_class(
                    [_("At least one recipient is required")])
                return False
            else:
                print "omni: '%s'" % self.data['omnibox']

        return valid

    class Meta:
        model = Broadcast
Esempio n. 4
0
class BroadcastForm(forms.ModelForm):
    message = forms.CharField(
        required=True,
        widget=CompletionTextarea(attrs={"placeholder": _("Hi @contact.name!")}),
        max_length=Broadcast.MAX_TEXT_LEN,
    )

    omnibox = OmniboxField()

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["omnibox"].set_user(user)

    def is_valid(self):
        valid = super().is_valid()
        if valid:
            if "omnibox" not in self.data or len(self.data["omnibox"].strip()) == 0:  # pragma: needs cover
                self.errors["__all__"] = self.error_class([_("At least one recipient is required")])
                return False

        return valid

    class Meta:
        model = Broadcast
        fields = "__all__"
Esempio n. 5
0
class ScheduleTriggerForm(BaseScheduleForm, forms.ModelForm):
    repeat_period = forms.ChoiceField(choices=Schedule.REPEAT_CHOICES,
                                      label="Repeat")
    repeat_days_of_week = forms.CharField(required=False)
    start = forms.ChoiceField(choices=(("stop", "Stop Schedule"),
                                       ("later", "Schedule for later")))
    start_datetime_value = forms.IntegerField(required=False)
    flow = forms.ModelChoiceField(Flow.objects.filter(pk__lt=0),
                                  label=_("Flow"),
                                  required=True)
    omnibox = OmniboxField(
        label=_("Contacts"),
        required=True,
        help_text=_("The groups and contacts the flow will be broadcast to"))

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.user = user
        self.fields["omnibox"].set_user(user)

        flows = Flow.get_triggerable_flows(user.get_org())

        self.fields["flow"].queryset = flows

    class Meta:
        model = Trigger
        fields = ("flow", "omnibox", "repeat_period", "repeat_days_of_week",
                  "start", "start_datetime_value")
Esempio n. 6
0
class ScheduleTriggerForm(BaseScheduleForm, forms.ModelForm):
    repeat_period = forms.ChoiceField(choices=Schedule.REPEAT_CHOICES,
                                      label="Repeat")
    repeat_days = forms.IntegerField(required=False)
    start = forms.CharField(max_length=16)
    start_datetime_value = forms.IntegerField(required=False)
    flow = forms.ModelChoiceField(Flow.objects.filter(pk__lt=0),
                                  label=_("Flow"),
                                  required=True)
    omnibox = OmniboxField(
        label=_("Contacts"),
        required=True,
        help_text=_("The groups and contacts the flow will be broadcast to"))

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.user = user
        self.fields["omnibox"].set_user(user)

        flows = Flow.get_triggerable_flows(user.get_org())

        self.fields["flow"].queryset = flows

    def clean(self):
        data = super().clean()

        # only weekly gets repeat days
        if data["repeat_period"] != "W":
            data["repeat_days"] = None
        return data

    class Meta:
        model = Trigger
        fields = ("flow", "omnibox", "repeat_period", "repeat_days", "start",
                  "start_datetime_value")
Esempio n. 7
0
class SendMessageForm(Form):
    omnibox = OmniboxField()
    text = forms.CharField(widget=forms.Textarea, max_length=640)
    schedule = forms.BooleanField(widget=forms.HiddenInput, required=False)

    def __init__(self, user, *args, **kwargs):
        super(SendMessageForm, self).__init__(*args, **kwargs)
        self.fields['omnibox'].set_user(user)

    def is_valid(self):
        valid = super(SendMessageForm, self).is_valid()
        if valid:
            if 'omnibox' not in self.data or len(self.data['omnibox'].strip()) == 0:
                self.errors['__all__'] = self.error_class([unicode(_("At least one recipient is required"))])
                return False
        return valid
Esempio n. 8
0
class BroadcastForm(forms.ModelForm):
    message = forms.CharField(required=True,
                              widget=forms.Textarea,
                              max_length=160)
    omnibox = OmniboxField()

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["omnibox"].set_user(user)

    def is_valid(self):
        valid = super().is_valid()
        if valid:
            if "omnibox" not in self.data or len(
                    self.data["omnibox"].strip()) == 0:  # pragma: needs cover
                self.errors["__all__"] = self.error_class(
                    [_("At least one recipient is required")])
                return False

        return valid

    class Meta:
        model = Broadcast
        fields = "__all__"