Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
def send_db_slack(slug, *args, **kwargs):
    from dbmail import db_sender

    kwargs['backend'] = 'demo.custom_backends.slack'
    db_sender(slug, *args, **kwargs)
Ejemplo n.º 13
0
def send_double_notification(*args, **kwargs):
    from dbmail import db_sender

    kwargs['backend'] = 'demo.custom_backends.double'
    db_sender(*args, **kwargs)