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)
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)
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)
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)
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)
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
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
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
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)
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)
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)