def send_confirmation_link( self, slug='subs-confirmation', *args, **kwargs): from dbmail import db_sender kwargs['backend'] = self.backend db_sender(slug, self.address, *args, **kwargs)
def notify(cls, slug, user_id=None, sub_filter=None, **kwargs): from dbmail import db_sender now_hour = cls.get_current_hour() sub_filter = sub_filter if isinstance(sub_filter, dict) else {} for method in cls.get_notification_list(user_id, **sub_filter): kwargs['send_at_date'] = None start_hour = cls.convert_to_date(method.start_hour) end_hour = cls.convert_to_date(method.end_hour) if not (start_hour <= now_hour <= end_hour): if method.defer_at_allowed_hours and kwargs['use_celery']: kwargs['send_at_date'] = cls.mix_hour_with_date( method.start_hour) else: continue kwargs['backend'] = method.backend extra_slug = '%s-%s' % (slug, method.backend.split('.')[-1]) use_slug = slug try: if MailTemplate.get_template(slug=extra_slug): use_slug = extra_slug except MailTemplate.DoesNotExist: pass db_sender(use_slug, method.address, **kwargs)
def notify(cls, slug, user_id=None, sub_filter=None, **kwargs): from dbmail import db_sender now_hour = cls.get_current_hour() sub_filter = sub_filter if isinstance(sub_filter, dict) else {} for method in cls.get_notification_list(user_id, **sub_filter): kwargs['send_at_date'] = None start_hour = cls.convert_to_date(method.start_hour) end_hour = cls.convert_to_date(method.end_hour) if not (start_hour <= now_hour <= end_hour): if method.defer_at_allowed_hours and kwargs['use_celery']: kwargs['send_at_date'] = cls.mix_hour_with_date( method.start_hour) else: continue kwargs['backend'] = method.backend extra_slug = '%s-%s' % (slug, method.get_short_type()) use_slug = slug kwargs = method.update_notify_kwargs(**kwargs) try: if MailTemplate.get_template(slug=extra_slug): use_slug = extra_slug except MailTemplate.DoesNotExist: pass db_sender(use_slug, method.address, **kwargs)
def send_by_dbmail(request): if request.method == 'POST': kwargs = dict() for f in allowed_fields: if request.POST.get(f): kwargs[f] = request.POST.get(f) backend = defaults.BACKEND.get(kwargs.pop('backend', 'mail')) api_key = kwargs.get('api_key') if api_key: del kwargs['api_key'] if not cache.get(api_key): get_object_or_404(ApiKey, api_key=api_key, is_active=True) cache.set(api_key, 1, timeout=defaults.CACHE_TTL) args = [] if request.POST.get('data'): args = [json.loads(request.POST['data'])] if kwargs.get('slug') and kwargs.get('recipient'): if backend is not None: kwargs['backend'] = backend db_sender(kwargs.pop('slug'), kwargs.pop('recipient'), *args, **kwargs) return HttpResponse('OK') raise Http404
def send_by_dbmail(request): if request.method == 'POST': kwargs = dict() for f in allowed_fields: if request.POST.get(f): kwargs[f] = request.POST.get(f) backend = defaults.BACKEND.get(kwargs.pop('backend', 'mail')) api_key = kwargs.get('api_key') if api_key: del kwargs['api_key'] if not cache.get(api_key): get_object_or_404( ApiKey, api_key=api_key, is_active=True) cache.set(api_key, 1, timeout=defaults.CACHE_TTL) args = [] if request.POST.get('data'): args = [json.loads(request.POST['data'])] if kwargs.get('slug') and kwargs.get('recipient'): if backend is not None: kwargs['backend'] = backend db_sender( kwargs.pop('slug'), kwargs.pop('recipient'), *args, **kwargs) return HttpResponse('OK') raise Http404
def send_by_dbmail(request): if request.method == 'POST': kwargs = dict() for f in allowed_fields: if request.POST.get(f): kwargs[f] = request.POST.get(f) if request.FILES: kwargs['files'] = list(request.FILES.values()) backend = defaults.BACKEND.get(kwargs.pop('backend', 'mail')) api_key = kwargs.get('api_key') if api_key: del kwargs['api_key'] api_key = get_object_or_404(ApiKey, api_key=api_key, is_active=True) if not api_key.is_allowed_ip(request): raise Http404 args = [] if request.POST.get('data'): args = [json.loads(request.POST['data'])] if kwargs.get('slug') and kwargs.get('recipient'): if backend is not None: kwargs['backend'] = backend db_sender(kwargs.pop('slug'), kwargs.pop('recipient'), *args, **kwargs) return HttpResponse('OK') raise Http404
def send_test_msg(pk, email, user=None, **kwargs): template = MailTemplate.objects.get(pk=pk) slug = template.slug var_list = re.findall(r'\{\{\s?(\w+)\s?\}\}', template.message) context = {} for var in var_list: context[var] = '%s' % var.upper().replace('_', '-') return db_sender(slug, email, user, context, **kwargs)
def send_test_msg(pk, email, user=None, **kwargs): template = MailTemplate.objects.get(pk=pk) slug = template.slug var_list = re.findall('\{\{\s?(\w+)\s?\}\}', template.message) context = {} for var in var_list: context[var] = '%s' % var.upper().replace('_', '-') return db_sender(slug, email, user, context, **kwargs)
def notify(cls, slug, user_id=None, sub_filter=None, **kwargs): from dbmail import db_sender now_hour = cls.get_current_hour() context_dict = kwargs.pop('context', {}) context_instance = kwargs.pop('context_instance', None) sub_filter = sub_filter if isinstance(sub_filter, dict) else {} for method_id in cls.get_notification_list( user_id, **sub_filter).values_list('pk', flat=True): method = cls.objects.get(pk=method_id) method_kwargs = kwargs.copy() method_kwargs['send_at_date'] = None start_hour = cls.convert_to_date(method.start_hour) end_hour = cls.convert_to_date(method.end_hour) if not (start_hour <= now_hour <= end_hour): if (method.defer_at_allowed_hours and method_kwargs['use_celery']): method_kwargs['send_at_date'] = cls.mix_hour_with_date( method.start_hour) else: continue method_kwargs['backend'] = method.backend extra_slug = '%s-%s' % (slug, method.get_short_type()) use_slug = slug method_kwargs = method.update_notify_kwargs(**method_kwargs) try: if MailTemplate.get_template(slug=extra_slug): use_slug = extra_slug except MailTemplate.DoesNotExist: pass db_sender(use_slug, method.address, context_dict, context_instance, **method_kwargs)
def send_db_slack(slug, *args, **kwargs): from dbmail import db_sender kwargs['backend'] = 'demo.custom_backends.slack' db_sender(slug, *args, **kwargs)
def send_double_notification(*args, **kwargs): from dbmail import db_sender kwargs['backend'] = 'demo.custom_backends.double' db_sender(*args, **kwargs)