Ejemplo n.º 1
0
def email(request):
    context = {}
    kbsite = request.kbsite

    email_backend = getattr(settings, "EMAIL_BACKEND", None)
    email_configured = (
        email_backend
        and email_backend != "django.core.mail.backends.dummy.EmailBackend")
    email_configured = email_configured and settings.DEFAULT_FROM_EMAIL

    if request.method == "POST":
        if "send_test_email" in request.POST:
            test_email_form = forms.TestEmailForm(request.POST)
            if test_email_form.is_valid():
                address = test_email_form.cleaned_data.get("address")
                context["site_name"] = kbsite.title
                context["site_url"] = kbsite.base_url()
                context["settings_url"] = context["site_url"] + "/account"
                message = build_message(address,
                                        "notification/email_test.html",
                                        context)
                message.send(fail_silently=True)
                messages.success(request,
                                 "E-mail successfully sent to %s" % address)

    context["email_configured"] = email_configured

    return render(request, "kegadmin/email.html", context=context)
Ejemplo n.º 2
0
def email(request):
    context = RequestContext(request)
    kbsite = request.kbsite

    email_backend = getattr(settings, 'EMAIL_BACKEND', None)
    email_configured = email_backend and email_backend != 'django.core.mail.backends.dummy.EmailBackend'
    email_configured = email_configured and bool(
        getattr(settings, 'EMAIL_FROM_ADDRESS', None))

    if request.method == 'POST':
        if 'send_test_email' in request.POST:
            test_email_form = forms.TestEmailForm(request.POST)
            if test_email_form.is_valid():
                address = test_email_form.cleaned_data.get('address')
                context['site_name'] = kbsite.title
                context['site_url'] = kbsite.base_url()
                context['settings_url'] = context['site_url'] + '/account'
                message = build_message(address,
                                        'notification/email_test.html',
                                        context)
                message.send(fail_silently=True)
                messages.success(request,
                                 'E-mail successfully sent to %s' % address)

    context['email_configured'] = email_configured

    return render_to_response('kegadmin/email.html', context_instance=context)
Ejemplo n.º 3
0
def notifications(request):
    # TODO(mikey): Dynamically add settings forms for other e-mail
    # backends (currently hardcoded to email backend).

    context = {}
    existing_settings = models.NotificationSettings.objects.get_or_create(
        user=request.user,
        backend="pykeg.notification.backends.email.EmailNotificationBackend"
    )[0]

    if request.method == "POST":
        if "submit-settings" in request.POST:
            form = NotificationSettingsForm(request.POST,
                                            instance=existing_settings)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.user = request.user
                instance.backend = "pykeg.notification.backends.email.EmailNotificationBackend"
                instance.save()
                messages.success(request, "Settings updated")
                existing_settings = instance

        elif "submit-email" in request.POST:
            form = forms.ChangeEmailForm(request.POST)
            if form.is_valid():
                new_email = form.cleaned_data["email"]
                if new_email == request.user.email:
                    messages.warning(request, "E-mail address unchanged.")
                else:
                    token = email.build_email_change_token(
                        request.user, new_email)
                    url = models.KegbotSite.get().reverse_full(
                        "account-confirm-email",
                        args=(),
                        kwargs={"token": token})

                    email_context = {
                        "url": url,
                        "site_name": request.kbsite.title
                    }
                    message = email.build_message(
                        new_email,
                        "registration/email_confirm_email_change.html",
                        email_context)
                    message.send()
                    messages.success(
                        request,
                        "An e-mail confirmation has been sent to {}".format(
                            new_email))

        else:
            messages.error(request, "Unknown request.")

    context["form"] = NotificationSettingsForm(instance=existing_settings)
    context["email_form"] = forms.ChangeEmailForm(
        initial={"email": request.user.email})

    return render(request, "account/notifications.html", context=context)
Ejemplo n.º 4
0
def notifications(request):
    # TODO(mikey): Dynamically add settings forms for other e-mail
    # backends (currently hardcoded to email backend).

    context = RequestContext(request)
    existing_settings = models.NotificationSettings.objects.get_or_create(
        user=request.user,
        backend='pykeg.notification.backends.email.EmailNotificationBackend'
    )[0]

    if request.method == 'POST':
        if 'submit-settings' in request.POST:
            form = NotificationSettingsForm(request.POST,
                                            instance=existing_settings)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.user = request.user
                instance.backend = 'pykeg.notification.backends.email.EmailNotificationBackend'
                instance.save()
                messages.success(request, 'Settings updated')
                existing_settings = instance

        elif 'submit-email' in request.POST:
            form = forms.ChangeEmailForm(request.POST)
            if form.is_valid():
                new_email = form.cleaned_data['email']
                if new_email == request.user.email:
                    messages.warning(request, 'E-mail address unchanged.')
                else:
                    token = email.build_email_change_token(
                        request.user, new_email)
                    url = models.KegbotSite.get().reverse_full(
                        'account-confirm-email',
                        args=(),
                        kwargs={'token': token})

                    message = email.build_message(
                        new_email,
                        'registration/email_confirm_email_change.html',
                        {'url': url})
                    message.send()
                    messages.success(
                        request,
                        'An e-mail confirmation has been sent to {}'.format(
                            new_email))

        else:
            messages.error(request, 'Unknown request.')

    context['form'] = NotificationSettingsForm(instance=existing_settings)
    context['email_form'] = forms.ChangeEmailForm(
        initial={'email': request.user.email})

    return render_to_response('account/notifications.html',
                              context_instance=context)
Ejemplo n.º 5
0
 def send(self):
     site = KegbotSite.get()
     base_url = site.reverse_full('registration_register')
     url = base_url + '?invite_code=' + self.invite_code
     context = {
         'site_name': site.title,
         'url': url,
     }
     message = build_message(self.for_email, 'registration/email_invite.html', context)
     if message:
         message.send(fail_silently=True)
Ejemplo n.º 6
0
class LocalAuthBackend(ModelBackend, AuthBackend):

    def is_manager(self, user):
        return user.is_staff

    def set_is_manager(self, user, is_manager):
        if user.is_staff != is_manager:
            user.is_staff = is_manager
            user.save()

    def is_owner(self, user):
        return user.is_superuser

    def set_is_owner(self, user, is_owner):
        if user.is_superuser != is_owner:
            user.is_superuser = is_owner
            user.save()

    def register(self, email, username, password=None, photo=None):
        try:
            user = models.User.objects.create(username=username, email=email)
        except IntegrityError, e:
            raise UserExistsError(e)

        if password:
            user.set_password(password)
        else:
            user.set_unusable_password()

        if photo:
            pic = models.Picture.objects.create(user=user)
            pic.image.save(photo.name, photo)
            pic.save()
            user.mugshot = pic

        user.save()
        if email and not password:
            user.activation_key = str(uuid.uuid4()).replace('-', '')
            user.save()

            kbsite = models.KegbotSite.get()
            url = kbsite.reverse_full('activate-account', args=(),
                kwargs={'activation_key': user.activation_key})
            context = {
                'site_name': kbsite.title,
                'url': url,
            }

            message = build_message(email, 'email_new_registration.html', context)
            if message:
                message.send(fail_silently=True)
        return user
Ejemplo n.º 7
0
    def register(self, email, username, password=None, photo=None):
        try:
            user = models.User.objects.create(username=username, email=email)
        except IntegrityError as e:
            raise UserExistsException(e)

        if password:
            user.set_password(password)
        else:
            user.set_unusable_password()
            user.activation_key = str(uuid.uuid4()).replace("-", "")

        if photo:
            pic = models.Picture.objects.create(user=user)
            pic.image.save(photo.name, photo)
            pic.save()
            user.mugshot = pic

        user.save()

        kbsite = models.KegbotSite.get()
        template = None

        if user.activation_key:
            # Needs further activation: send activation e-mail.
            template = "registration/email_activate_registration.html"
            url = kbsite.reverse_full(
                "activate-account",
                args=(),
                kwargs={"activation_key": user.activation_key})
        elif email:
            # User already activated, send "complete" email.
            template = "registration/email_registration_complete.html"
            url = kbsite.reverse_full("kb-account-main", args=(), kwargs={})

        if template:
            context = {
                "site_name": kbsite.title,
                "url": url,
            }
            message = build_message(email, template, context)
            if message:
                message.send(fail_silently=True)

        return user
Ejemplo n.º 8
0
    def register(self, email, username, password=None, photo=None):
        try:
            user = models.User.objects.create(username=username, email=email)
        except IntegrityError as e:
            raise UserExistsException(e)

        if password:
            user.set_password(password)
        else:
            user.set_unusable_password()
            user.activation_key = str(uuid.uuid4()).replace('-', '')

        if photo:
            pic = models.Picture.objects.create(user=user)
            pic.image.save(photo.name, photo)
            pic.save()
            user.mugshot = pic

        user.save()

        kbsite = models.KegbotSite.get()
        template = None

        if user.activation_key:
            # Needs further activation: send activation e-mail.
            template = 'registration/email_activate_registration.html'
            url = kbsite.reverse_full('activate-account', args=(),
                kwargs={'activation_key': user.activation_key})
        elif email:
            # User already activated, send "complete" email.
            template = 'registration/email_registration_complete.html'
            url = kbsite.reverse_full('kb-account-main', args=(), kwargs={})

        if template:
            context = {
                'site_name': kbsite.title,
                'url': url,
            }
            message = build_message(email, template, context)
            if message:
                message.send(fail_silently=True)

        return user
Ejemplo n.º 9
0
def notifications(request):
    # TODO(mikey): Dynamically add settings forms for other e-mail
    # backends (currently hardcoded to email backend).

    context = RequestContext(request)
    existing_settings = models.NotificationSettings.objects.get_or_create(user=request.user,
        backend='pykeg.notification.backends.email.EmailNotificationBackend')[0]

    if request.method == 'POST':
        if 'submit-settings' in request.POST:
            form = NotificationSettingsForm(request.POST, instance=existing_settings)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.user = request.user
                instance.backend = 'pykeg.notification.backends.email.EmailNotificationBackend'
                instance.save()
                messages.success(request, 'Settings updated')
                existing_settings = instance

        elif 'submit-email' in request.POST:
            form = forms.ChangeEmailForm(request.POST)
            if form.is_valid():
                new_email = form.cleaned_data['email']
                if new_email == request.user.email:
                    messages.warning(request, 'E-mail address unchanged.')
                else:
                    token = email.build_email_change_token(request.user, new_email)
                    url = models.KegbotSite.get().reverse_full(
                        'account-confirm-email', args=(), kwargs={'token': token})

                    message = email.build_message(new_email, 'registration/email_confirm_email_change.html',
                        {'url': url})
                    message.send()
                    messages.success(request, 'An e-mail confirmation has been sent to {}'.format(new_email))

        else:
            messages.error(request, 'Unknown request.')

    context['form'] = NotificationSettingsForm(instance=existing_settings)
    context['email_form'] = forms.ChangeEmailForm(initial={'email': request.user.email})

    return render_to_response('account/notifications.html', context_instance=context)
Ejemplo n.º 10
0
    def notify(self, event, user):
        logger.info('Event %s -> user %s' % (event, user))

        to_address = user.email
        if not to_address:
            logger.warning('No e-mail address available for user %s' % user)
            return

        context = {}
        template_name = None

        kbsite = core_models.KegbotSite.get()
        context['site_name'] = kbsite.title
        context['site_url'] = kbsite.base_url()
        context['settings_url'] = context['site_url'] + '/account'

        context['drink'] = event.drink
        context['keg'] = event.keg
        context['session'] = event.session

        if event.kind == core_models.SystemEvent.KEG_TAPPED:
            template_name = 'notification/email_keg_tapped.html'
            context['url'] = event.keg.full_url()
        elif event.kind == core_models.SystemEvent.KEG_ENDED:
            template_name = 'notification/email_keg_ended.html'
            context['url'] = event.keg.full_url()
        elif event.kind == core_models.SystemEvent.SESSION_STARTED:
            template_name = 'notification/email_session_started.html'
            context['url'] = event.session.short_url()
        elif event.kind == core_models.SystemEvent.KEG_VOLUME_LOW:
            template_name = 'notification/email_keg_volume_low.html'
            context['url'] = event.keg.full_url()
        else:
            logger.info('Skipping unknown event type: %s' % event.kind)
            return

        message = build_message(to_address, template_name, context)
        if not message:
            logger.warning('Aborting due to error building message.')
            return
        self.send_message(message)
Ejemplo n.º 11
0
    def notify(self, event, user):
        logger.info('Event %s -> user %s' % (event, user))

        to_address = user.email
        if not to_address:
            logger.warning('No e-mail address available for user %s' % user)
            return

        context = {}
        template_name = None

        kbsite = core_models.KegbotSite.get()
        context['site_name'] = kbsite.title
        context['site_url'] = kbsite.base_url()
        context['settings_url'] = context['site_url'] + '/account'

        context['drink'] = event.drink
        context['keg'] = event.keg
        context['session'] = event.session

        if event.kind == core_models.SystemEvent.KEG_TAPPED:
            template_name = 'notification/email_keg_tapped.html'
            context['url'] = event.keg.full_url()
        elif event.kind == core_models.SystemEvent.KEG_ENDED:
            template_name = 'notification/email_keg_ended.html'
            context['url'] = event.keg.full_url()
        elif event.kind == core_models.SystemEvent.SESSION_STARTED:
            template_name = 'notification/email_session_started.html'
            context['url'] = event.session.short_url()
        elif event.kind == core_models.SystemEvent.KEG_VOLUME_LOW:
            template_name = 'notification/email_keg_volume_low.html'
            context['url'] = event.keg.full_url()
        else:
            logger.info('Skipping unknown event type: %s' % event.kind)
            return

        message = build_message(to_address, template_name, context)
        if not message:
            logger.warning('Aborting due to error building message.')
            return
        self.send_message(message)
Ejemplo n.º 12
0
def email(request):
    context = RequestContext(request)
    kbsite = request.kbsite

    email_backend = getattr(settings, 'EMAIL_BACKEND', None)
    email_configured = email_backend and email_backend != 'django.core.mail.backends.dummy.EmailBackend'
    email_configured = email_configured and bool(getattr(settings, 'EMAIL_FROM_ADDRESS', None))

    if request.method == 'POST':
        if 'send_test_email' in request.POST:
            test_email_form = forms.TestEmailForm(request.POST)
            if test_email_form.is_valid():
                address = test_email_form.cleaned_data.get('address')
                context['site_name'] = kbsite.title
                context['site_url'] = kbsite.base_url()
                context['settings_url'] = context['site_url'] + '/account'
                message = build_message(address, 'notification/email_test.html', context)
                message.send(fail_silently=True)
                messages.success(request, 'E-mail successfully sent to %s' % address)

    context['email_configured'] = email_configured

    return render_to_response('kegadmin/email.html', context_instance=context)