def validate(self, attrs): """ Validate sms campaign form """ request = self.context['request'] if request.method == 'POST': name_count = SMSCampaign.objects.filter(name=attrs.get('name'), user=request.user).count() if name_count != 0: raise serializers.ValidationError("The SMS Campaign name duplicated!") if not user_dialer_setting(request.user): raise serializers.ValidationError("Your settings are not configured properly, Please contact the administrator.") if check_sms_dialer_setting(request, check_for="smscampaign"): raise serializers.ValidationError("Too many sms campaigns. Max allowed %s" % dialer_setting_limit(request, limit_for="smscampaign")) frequency = attrs.get('frequency') if frequency: if check_sms_dialer_setting(request, check_for="smsfrequency", field_value=int(frequency)): raise serializers.ValidationError("Frequency limit of %s exceeded." % dialer_setting_limit(request, limit_for="smsfrequency")) maxretry = attrs.get('maxretry') if maxretry: if check_sms_dialer_setting(request, check_for="smsretry", field_value=int(maxretry)): raise serializers.ValidationError("Retries limit of %s exceeded." % dialer_setting_limit(request, limit_for="smsretry")) return attrs
def sms_campaign_add(request): """Add a new sms campaign for the logged in user **Attributes**: * ``form`` - SMSCampaignForm * ``template`` - mod_sms/change.html **Logic Description**: * Before adding a sms campaign, check dialer setting limit if applicable to the user. * Add the new sms campaign which will belong to the logged in user via SMSCampaignForm & get redirected to sms campaign list """ # If dialer setting is not attached with user, redirect to sms campaign list if not user_dialer_setting(request.user): request.session['error_msg'] = \ _("in order to add a sms campaign, you need to have your \ settings configured properly, please contact the admin." ) return HttpResponseRedirect(redirect_url_to_smscampaign_list) # Check dialer setting limit if request.user and request.method != 'POST': # check Max Number of running campaign if check_sms_dialer_setting(request, check_for="smscampaign"): msg = _("you have too many sms campaigns. Max allowed %(limit)s")\ % {'limit': dialer_setting_limit(request, limit_for="smscampaign")} request.session['msg'] = msg # sms campaign limit reached frontend_send_notification( request, SMS_NOTIFICATION_NAME.sms_campaign_limit_reached) return HttpResponseRedirect(redirect_url_to_smscampaign_list) form = SMSCampaignForm(request.user, request.POST or None) # Add sms campaign if form.is_valid(): obj = form.save(commit=False) obj.user = User.objects.get(username=request.user) obj.stoppeddate = obj.expirationdate obj.save() form.save_m2m() request.session["msg"] = _('"%(name)s" is added.') % { 'name': request.POST['name'] } return HttpResponseRedirect(redirect_url_to_smscampaign_list) data = { 'form': form, 'action': 'add', } return render_to_response('mod_sms/change.html', data, context_instance=RequestContext(request))
def sms_campaign_add(request): """Add a new sms campaign for the logged in user **Attributes**: * ``form`` - SMSCampaignForm * ``template`` - mod_sms/change.html **Logic Description**: * Before adding a sms campaign, check dialer setting limit if applicable to the user. * Add the new sms campaign which will belong to the logged in user via SMSCampaignForm & get redirected to sms campaign list """ # If dialer setting is not attached with user, redirect to sms campaign list if not user_dialer_setting(request.user): request.session['error_msg'] = \ _("in order to add a sms campaign, you need to have your \ settings configured properly, please contact the admin.") return HttpResponseRedirect(redirect_url_to_smscampaign_list) # Check dialer setting limit if request.user and request.method != 'POST': # check Max Number of running campaign if check_sms_dialer_setting(request, check_for="smscampaign"): msg = _("you have too many sms campaigns. Max allowed %(limit)s")\ % {'limit': dialer_setting_limit(request, limit_for="smscampaign")} request.session['msg'] = msg # sms campaign limit reached frontend_send_notification(request, SMS_NOTIFICATION_NAME.sms_campaign_limit_reached) return HttpResponseRedirect(redirect_url_to_smscampaign_list) form = SMSCampaignForm(request.user, request.POST or None) # Add sms campaign if form.is_valid(): obj = form.save(commit=False) obj.user = User.objects.get(username=request.user) obj.stoppeddate = obj.expirationdate obj.save() form.save_m2m() request.session["msg"] = _('"%(name)s" is added.') % {'name': request.POST['name']} return HttpResponseRedirect(redirect_url_to_smscampaign_list) data = { 'form': form, 'action': 'add', } return render_to_response('mod_sms/change.html', data, context_instance=RequestContext(request))
def add_view(self, request, extra_context=None): """ Override django add_view method for checking the dialer setting limit **Logic Description**: * Before adding sms campaign, check dialer setting limit if applicable to the user, if matched then the user will be redirected to the sms campaign list """ # Check dialer setting limit # check Max Number of running sms campaigns if check_sms_dialer_setting(request, check_for="smscampaign"): msg = _("you have too many sms campaigns. Max allowed %(limit)s") \ % {'limit': dialer_setting_limit(request, limit_for="smscampaign")} messages.error(request, msg) # campaign limit reached #common_send_notification(request, '3') return HttpResponseRedirect(reverse("admin:sms_campaign_campaign_changelist")) ctx = {} return super(SMSCampaignAdmin, self).add_view(request, extra_context=ctx)
def add_view(self, request, extra_context=None): """ Override django add_view method for checking the dialer setting limit **Logic Description**: * Before adding sms campaign, check dialer setting limit if applicable to the user, if matched then the user will be redirected to the sms campaign list """ # Check dialer setting limit # check Max Number of running sms campaigns if check_sms_dialer_setting(request, check_for="smscampaign"): msg = _("you have too many sms campaigns. Max allowed %(limit)s") \ % {'limit': dialer_setting_limit(request, limit_for="smscampaign")} messages.error(request, msg) # campaign limit reached #common_send_notification(request, '3') return HttpResponseRedirect( reverse("admin:sms_campaign_campaign_changelist")) ctx = {} return super(SMSCampaignAdmin, self).add_view(request, extra_context=ctx)