Esempio n. 1
0
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")
Esempio n. 2
0
 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])
Esempio n. 3
0
 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])
Esempio n. 4
0
 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])
Esempio n. 5
0
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'])
            )
        )
Esempio n. 6
0
 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])
Esempio n. 7
0
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)
Esempio n. 8
0
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")
Esempio n. 9
0
 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])
Esempio n. 10
0
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")