Esempio n. 1
0
def send_contact_message(request):
    if not request.is_ajax():
        return JsonResponse({
                'status': 'not_ajax',
        })

    d = JSON_parse(request.POST.get('data'))

    if not d:
        return JsonResponse({'status': 'error', 'message': _("No data in request")})

    if "email" not in d:
        return JsonResponse({
                'status': 'no_email',
        })

    if "first_last_name" not in d:
        return JsonResponse({
                'status': 'no_first_name',
        })

    if "message" not in d:
        return JsonResponse({
                'status': 'no_message',
        })

    try:
        validate_email(d.get('email'))
    except ValidationError:
        return JsonResponse({
                'status': 'not_valid_email',
        })

    subject = _('Message from') + " " + settings.SITE_URL
    message = d.get('message')

    message_html = message.replace("\r\n", "<br />")
    message_html = message_html.replace("\n", "<br />")
    message_html = message_html + "<br /><br />"
    message_html = message_html + _("Message was sent by:") + " " + d.get('first_last_name')

    if settings.DEBUG:
        print "We are sending email with subject:"
        print subject
        print "and message:"
        print "--- text ---"
        print message
        print "--- text ---"
        print "--- html ---"
        print message_html
        print "--- html ---"
    else:
        send_email(d.get('email'), [settings.CONTACT_EMAIL], None, subject, message, message_html)

    return JsonResponse({
            'status': 'ok'
    })
Esempio n. 2
0
def send_reactivation_key(request, bluser):
    """
    This is not a view, just normal function used in lost_password view.

    First we get unique key for user profile, then send mail with unique
    reactivation key.
    """

    # we need unique key
    def create_key():
        # 15: defined in BlocklogicUser model (password_reset_key)
        return get_random_string(15, string.lowercase + string.digits)

    key = create_key()
    while BlocklogicUser.objects.filter(password_reset_key=key).count() > 0:
        key = create_key()

    bluser.password_reset_key = key
    bluser.save()

    # render a message from template and send it to email
    reactivation_url = reverse('web:recover_password', args={key})

    # put the stuff in template, then render it to string and send it via email
    mail_context = {
        'url': settings.SITE_URL + reactivation_url,
        'site_url': settings.SITE_URL,
    }

    subject = settings.EMAIL_SUBJECT_PREFIX + " " + _("Recover lost password")

    message_html = render_to_string('email/lost_password.html', mail_context)
    message_text = render_to_string('email/lost_password.txt', mail_context)

    if settings.DEBUG:
        print "sending register email"
        print message_text
        print message_html
    else:
        send_email(settings.EMAIL_FROM, [bluser.email], None, subject, message_text, message_html)
Esempio n. 3
0
def try_register(user_form):
    new_user = user_form.save()
    new_user.set_password(user_form.cleaned_data['password1'])

    key = ""
    while key == "":
        key = get_random_string(15, string.lowercase + string.digits)
        user = BlocklogicUser.objects.filter(password_reset_key=key)

        if user:
            key = ""

    new_user.password_reset_key = key
    new_user.type = 'normal'
    new_user.is_active = False
    new_user.save()
    new_user.update_user_profile()

    # TODO: add the free subscription on register
    # add_free_subscription(new_user)

    activation_url = reverse('web:activate_account', args={key})

    # put the stuff in template, then render it to string and send it via email
    mail_context = {
        'url': settings.SITE_URL + activation_url,
        'site_url': settings.SITE_URL,
    }

    subject = settings.EMAIL_SUBJECT_PREFIX + " " + _("Registration successful")

    message_html = render_to_string('email/email_verification.html', mail_context)
    message_text = render_to_string('email/email_verification.txt', mail_context)

    if settings.DEBUG:
        print message_text
        print message_html
    else:
        send_email(settings.EMAIL_FROM, [new_user.email], None, subject, message_text, message_html)
                    if datetime_created_with_offset < datetime.datetime.now():
                        if payment.amount_paid > 0:
                            payment.status = NOT_ENOUGH_MONEY_ARRIVED
                        else:
                            payment.status = NO_MONEY_ARRIVED

                        payment.save()
            except Payment.DoesNotExist:
                pass
            # POS Bills, POS Bills, POS Bills
            # POS Bills, POS Bills, POS Bills
            # POS Bills, POS Bills, POS Bills

        if transactions and last_checked_block != transactions['lastblock']:
            update_last_checked_block(transactions['lastblock'])

    except Exception, error:
        subject = "ERROR when getting transactions from bitcoin client or something..."
        message = "see subject"
        if (settings.DEBUG):
            print subject
            print message
        else:
            send_email(settings.EMAIL_FROM, [settings.EMAIL_FROM], None, "ERROR when getting total received by addresss",
                       message, message)

        continue

    print "Sleeping %s seconds..." % (settings.PAYMENT_OFFICER["bitcoin_check_interval"])
    time.sleep(settings.PAYMENT_OFFICER["bitcoin_check_interval"])
Esempio n. 5
0
# -*- coding:utf-8 -*-
import os

import django

django.setup()

from common.functions import send_email

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sellout_biz.settings")
import settings

send_email(settings.EMAIL_FROM, [settings.ADMINS[0][1]], None, "Test message sellout.biz", "message", "message")


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sellout_biz.spletna_blagajna_settings")
import spletna_blagajna_settings as settings

send_email(
    settings.EMAIL_FROM, [settings.ADMINS[0][1]], None, "Test message from spletna-blagajna.si", "message", "message"
)
Esempio n. 6
0
def invite_users(request, company):
    """ create a new Action entry """
    try:
        c = Company.objects.get(url_name=company)
    except Company.DoesNotExist:
        return JsonError(_("Company not found"))

    # permissions
    if not has_permission(request.user, c, 'user', 'edit'):
        return JsonError(_("You have no permissions to invite users"))

    # POST data:
    # emails is a list of dictionaries:
    # {'email': '*****@*****.**', 'permission': 'cashier'}
    try:
        data = JsonParse(request.POST.get('data'))
        if not data:
            raise KeyError
    except (ValueError, AttributeError, TypeError, KeyError):
        return JsonError(_("No data in request"))

    # check POSTed emails and permissions:
    errors = []
    valid_data = []

    for d in data:
        email = str(d.get('email'))
        if not email:
            continue

        # validate permission
        permission = str(d.get('permission'))
        if permission not in g.PERMISSION_TYPES:
            # this shouldn't happen, don't even translate
            errors.append("This permission type is not valid: " + email + ": " + permission)

        # validate this email
        try:
            validate_email(email)
            valid_data.append(d)
        except ValidationError:
            errors.append(email)

        # check if this user is already a member of this company
        if Permission.objects.filter(company=c, user__email=email).exists():
            errors.append(_("User with this email is already member of the group: ") + email)

    # do nothing if there are errors
    if len(errors) > 0:
        return JsonError(errors)

    # insert all emails as Actions
    for d in valid_data:
        email = d.get('email')
        permission = d.get('permission')

        # delete any waiting actions from the same company and for the same user;
        Action.objects.filter(company=c, receiver=email, type=g.ACTION_INVITATION, status=g.ACTION_WAITING).delete()

        # create new Action entries
        action_data = {"user_email": request.user.email,
                       "user_first_last_name": str(request.user),
                       "permission": permission}

        action = Action(
            created_by=request.user,
            company=c,
            sender=request.user.email,
            receiver=email,
            type=g.ACTION_INVITATION,
            status=g.ACTION_WAITING,
            data=json.dumps(action_data)
        )
        action.save()

        # send a different invite to non-registered users and registered users
        if BlocklogicUser.objects.filter(email=email).exists():
            template_html = 'email/invitation_for_registered_users.html'
            template_text = 'email/invitation_for_registered_users.txt'
        else:
            template_html = 'email/invitation_for_non_registered_users.html'
            template_text = 'email/invitation_for_non_registered_users.txt'

        # send email
        mail_context = {
            'company_name': c.name,
            'register_url': settings.SITE_URL + reverse('web:sign_up'),
            'login_url': settings.SITE_URL + reverse('web:select_company'),
        }

        message_html = render_to_string(template_html, mail_context)
        message_text = render_to_string(template_text, mail_context)

        if settings.DEBUG:
            print "============="
            print message_text
            print "============="
            print message_html
            print "============="
        else:
            send_email(settings.EMAIL_FROM, [email], None,
                       settings.EMAIL_SUBJECT_PREFIX + " " + _("Invitation to join company on") + " " + settings.SITE_URL,
                       message_text, message_html)

    return JsonOk()