def send_account_info(request): response = {} try: account_info_send = False user_is_authenticated = request.user.is_authenticated() user_has_web_access = request.user.has_perm("auth.web_access") user_has_app_access = request.user.has_perm("auth.app_access") application = request.POST["application"] user_id = request.POST.get("user_id", -1) if user_is_authenticated: if (user_has_web_access and application == "web") or (user_has_app_access and application == "app"): if user_id == -1: user = User.objects.get(username__exact=request.user.username) else: user = User.objects.get(id=user_id) if user: send_email(MessageType.ACCOUNT_INFO, user) account_info_send = True response = {"success": account_info_send} except Exception: logger.error(request._get_request) logger.exception("An error occured:") return HttpResponse(json.dumps(response, sort_keys=False), mimetype="application/json")
def send_mail(self, subject_template_name, email_template_name, context, from_email, to_email, html_email_template_name=None ): subject = render(subject_template_name, **context) subject = ''.join(subject.splitlines()) body = render(email_template_name, **context) send_email(subject=subject, text=body, html=body, to=[to_email])
def send_email(self, obj): to_email = settings.SITE_EMAIL subject = render(self.mail_subject) html = render( self.mail_template, **{'subscribe': obj} ) if to_email: send_email(subject=subject, text=html, html=html, to=[to_email])
def send_password_mail(self, user, password): html = render(self.password_mail_template, **{ 'user': user, 'password': password }) to_email = self.form.cleaned_data.get('email') subject = render(self.password_mail_subject, ) if to_email: send_email(subject=subject, text=html, html=html, to=[to_email])
def forgotten_cart_send_email_job(*args, **kwargs): from .models import Cart from datetime import timedelta, datetime, timezone cart_id = None try: cart = Cart.objects.get(id=kwargs['cart_id']) if cart.updated.strftime("%Y-%m-%d %H:%M:%S.%f%z") !=\ kwargs['cart_modification_date'] and not kwargs.get('debug'): cart = None else: cart_id = cart.id except: cart = None if cart is not None and cart.user is not None and cart.items.exists(): activate(cart.language) subject = render( 'checkout/forgotten_cart/forgotten_cart_mail_subject.html' ) email = cart.user.email if settings.MEDIA_ROOT in settings.SITE_LOGO: logo_url = settings.MEDIA_URL + settings.SITE_LOGO.split( settings.MEDIA_ROOT)[-1] else: logo_url = settings.SITE_LOGO data = { 'cart': cart, 'host': Site.objects.get(id=settings.SITE_ID), 'logo': logo_url } html = render( 'checkout/forgotten_cart/forgotten_cart_mail.html', **data ) send_email(subject, '', [email], html) mod_date = datetime.strptime( kwargs['cart_modification_date'], "%Y-%m-%d %H:%M:%S.%f%z") cart_for_send_mail = Cart.objects.filter( updated__gt=mod_date, ).exclude(id=cart_id).order_by('updated').first() if cart_for_send_mail and kwargs['run_after'] in\ settings.CART_CHANGED_EMAIL_SEND_AFTER.split(','): modification_date = cart_for_send_mail.updated task_manager.schedule( 'checkout.jobs.forgotten_cart_send_email_job', kwargs={ 'cart_modification_date': modification_date.strftime( "%Y-%m-%d %H:%M:%S.%f%z"), 'cart_id': cart_for_send_mail.id, 'run_after': kwargs['run_after'] }, run_after=modification_date.replace( tzinfo=timezone.utc ).astimezone(tz=None) + timedelta( minutes=int(kwargs['run_after']) ) )
def send_order_created_mail(self, order): to_email = self.form.cleaned_data.get('email') site = get_current_site(self.request) subject = render(self.order_mail_subject, **{ 'order': order, 'site': site }) html = render(self.order_mail_template, **{ 'order': order, 'site': site }) if to_email: send_email(subject=subject, text=html, html=html, to=[to_email]) if getattr(settings, 'SITE_EMAIL', ''): send_email(subject=subject, text=html, html=html, to=[settings.SITE_EMAIL])
def review_product_mail_job(*args, **kwargs): from checkout.models import Order order = Order.objects.get(id=kwargs['order_id']) activate(order.language) subject = render('review_products/subject.html') email = order.get_user_email() if settings.MEDIA_ROOT in settings.SITE_LOGO: logo_url = settings.MEDIA_URL + settings.SITE_LOGO.split( settings.MEDIA_ROOT)[-1] else: logo_url = settings.SITE_LOGO data = { 'order': order, 'host': Site.objects.get_current(), 'logo': logo_url } html = render('review_products/mail.html', **data) if email: send_email(subject, '', [email], html)
def save_password(request): response = {} try: password_changed = False user_is_authenticated = request.user.is_authenticated() user_has_web_access = request.user.has_perm("auth.web_access") user_has_app_access = request.user.has_perm("auth.app_access") application = request.POST["application"] new_password = request.POST["new_password"] send_mail_with_password = request.POST["send_mail"] user_object_id = request.POST["user_object_id"] if user_is_authenticated: if (user_has_web_access and application == "web") or (user_has_app_access and application == "app"): if int(user_object_id) == -1: user = User.objects.get(username__exact=request.user.username) else: user = User.objects.get(id=user_object_id) user.set_password(new_password) user.save() if send_mail_with_password == "true": params = {"password": new_password} send_email(MessageType.NEW_PASSWORD, user, params) password_changed = True response = {"success": password_changed} except Exception: logger.error(request._get_request) logger.exception("An error occured:") return HttpResponse(json.dumps(response, sort_keys=False), mimetype="application/json")
def send_email(self, to_email, **kwargs): from mail.utils import send_email, render subject = render(self.mail_subject) html = render(self.mail_template, **kwargs) send_email(subject=subject, text=html, html=html, to=[to_email])
def save_user(request): response = {} generated_pwd = "" user_saved = False user_exists = False user = None try: user_is_authenticated = request.user.is_authenticated() user_has_web_access = request.user.has_perm("auth.web_access") user_has_application_management = request.user.has_perm("auth.application_management") if user_is_authenticated and user_has_web_access and user_has_application_management: # Get post values post_data = json.loads(request.POST.items()[0][0]) # We receive stringified data post_user_id = post_data["user_id"] post_editmode = post_data["editmode"] post_username = post_data["username"] post_first_name = post_data["first_name"] post_last_name = post_data["last_name"] post_email = post_data["email"] post_is_active = post_data["is_active"] post_send_account_info = post_data["send_account_info"] post_groups = post_data["groups"] post_permissions = post_data["permissions"] has_application_management = post_permissions["application_management"] has_display_views = post_permissions["display_views"] has_create_views = post_permissions["create_views"] has_web_access = post_permissions["web_access"] has_app_access = post_permissions["app_access"] # Are we in add or edit mode? if post_editmode == "add": # Generate pwd generated_pwd = User.objects.make_random_password(10) # Is the username unique? user_exists = len(User.objects.filter(username=post_username)) > 0 if not user_exists: # Create user user = User() user.username = post_username user.first_name = post_first_name user.last_name = post_last_name user.email = post_email user.is_active = post_is_active user.set_password(generated_pwd) user.save() # Loop groups for post_group in post_groups: if post_group["member"] is True: group = Group.objects.get(id=post_group["id"]) user.groups.add(group) # Add permissions to user if has_application_management: perm_application_management = Permission.objects.get( codename="application_management", content_type__app_label="auth" ) user.user_permissions.add(perm_application_management) if has_display_views: perm_display_views = Permission.objects.get( codename="display_views", content_type__app_label="auth" ) user.user_permissions.add(perm_display_views) if has_create_views: perm_create_views = Permission.objects.get( codename="create_views", content_type__app_label="auth" ) user.user_permissions.add(perm_create_views) if has_web_access: perm_web_access = Permission.objects.get(codename="web_access", content_type__app_label="auth") user.user_permissions.add(perm_web_access) if has_app_access: perm_app_access = Permission.objects.get(codename="app_access", content_type__app_label="auth") user.user_permissions.add(perm_app_access) user_saved = True elif post_editmode == "edit": user = User.objects.get(id=post_user_id) user.first_name = post_first_name user.last_name = post_last_name user.email = post_email user.is_active = post_is_active user.save() user_exists = user is not None # Add / remove groups to / from user for post_group in post_groups: was_member = len(user.groups.filter(id=post_group["id"])) > 0 is_member = post_group["member"] group = Group.objects.get(id=post_group["id"]) if was_member and not is_member: user.groups.remove(group) if not was_member and is_member: user.groups.add(group) # Get old / current permissions for group had_application_management = ( len(user.user_permissions.filter(codename="application_management", content_type__app_label="auth")) > 0 ) had_display_views = ( len(user.user_permissions.filter(codename="display_views", content_type__app_label="auth")) > 0 ) had_create_views = ( len(user.user_permissions.filter(codename="create_views", content_type__app_label="auth")) > 0 ) had_web_access = ( len(user.user_permissions.filter(codename="web_access", content_type__app_label="auth")) > 0 ) had_app_access = ( len(user.user_permissions.filter(codename="app_access", content_type__app_label="auth")) > 0 ) # Get permission objects perm_application_management = Permission.objects.get( codename="application_management", content_type__app_label="auth" ) perm_display_views = Permission.objects.get(codename="display_views", content_type__app_label="auth") perm_create_views = Permission.objects.get(codename="create_views", content_type__app_label="auth") perm_web_access = Permission.objects.get(codename="web_access", content_type__app_label="auth") perm_app_access = Permission.objects.get(codename="app_access", content_type__app_label="auth") # Update permissions if had_application_management and not has_application_management: user.user_permissions.remove(perm_application_management) if not had_application_management and has_application_management: user.user_permissions.add(perm_application_management) if had_display_views and not has_display_views: user.user_permissions.remove(perm_display_views) if not had_display_views and has_display_views: user.user_permissions.add(perm_display_views) if had_create_views and not has_create_views: user.user_permissions.remove(perm_create_views) if not had_create_views and has_create_views: user.user_permissions.add(perm_create_views) if had_web_access and not has_web_access: user.user_permissions.remove(perm_web_access) if not had_web_access and has_web_access: user.user_permissions.add(perm_web_access) if had_app_access and not has_app_access: user.user_permissions.remove(perm_app_access) if not had_app_access and has_app_access: user.user_permissions.add(perm_app_access) user_saved = True if user: response = { "success": user_saved, "user_exists": user_exists, "user_id": user.id, "username": user.username, } else: response = {"success": user_saved, "user_exists": user_exists, "user_id": -1, "username": ""} # Send account info? (two emails will be sent) if post_send_account_info: send_email(MessageType.ACCOUNT_INFO, user) params = {"password": generated_pwd} send_email(MessageType.NEW_PASSWORD, user, params) except Exception: logger.error(request._get_request) logger.exception("An error occured:") return HttpResponse(json.dumps(response, sort_keys=False), mimetype="application/json")