Example #1
0
def send_order_status(req, order):
    """ Send order status to order email.
        This function call calculate on order and create sha
    """
    cfg = Object()
    cfg.addresses_country = req.cfg.addresses_country
    cfg.addresses_region = req.cfg.addresses_region
    cfg.eshop_currency = req.cfg.eshop_currency

    order.calculate()   # calculate summary
    order.sha = sha1(str(order.create_date)).hexdigest()

    try:
        # TODO: use lang from cart when order was create
        req.smtp.send_email_alternative(
            morias_template(req, 'mail/eshop/order_subject.jinja',
                            order=order).encode('utf-8'),           # subject
            order.email,
            morias_template(req, 'mail/eshop/order.jinja',
                            order=order, cfg=cfg).encode('utf-8'),  # body
            morias_template(req, 'mail/eshop/order.html',
                            order=order, cfg=cfg).encode('utf-8'),  # body
            logger=req.log_info)
    except Exception as e:
        req.log_error('Mailing order[%d] error: %s' % (order.id, str(e)),
                      state.LOG_ERR)
Example #2
0
def send_login_created(req, login, sign_up=False):
    try:
        req.smtp.send_email_alternative(
            morias_template(req, "mail/login/created_subject.jinja", item=login, sign_up=sign_up).encode(  # subject
                "utf-8"
            ),
            login.email,
            morias_template(req, "mail/login/created.jinja", item=login, sign_up=sign_up).encode("utf-8"),  # body
            morias_template(req, "mail/login/created.html", item=login, sign_up=sign_up).encode("utf-8"),  # body
            logger=req.log_info,
        )
    except Exception:
        req.log_error("Login created [%s] error: \n%s" % (login.email, format_exc()), state.LOG_ERR)
Example #3
0
def send_log_in_link(req, login, host, browser):
    try:
        req.smtp.send_email_alternative(
            morias_template(req, "mail/login/log_in_link_subject.jinja", item=login, host=host, browser=browser).encode(
                "utf-8"
            ),
            login.email,
            morias_template(req, "mail/login/log_in_link.jinja", item=login, host=host, browser=browser).encode(  # body
                "utf-8"
            ),
            morias_template(req, "mail/login/log_in_link.html", item=login, host=host, browser=browser).encode(  # body
                "utf-8"
            ),
            logger=req.log_info,
        )
    except:
        req.log_error("Log-in link [%s] error: \n%s" % (login.email, format_exc()), state.LOG_ERR)
        raise
Example #4
0
def send_verify_email(req, login, old_email, host, browser):
    try:
        req.smtp.send_email_alternative(
            morias_template(
                req,
                "mail/login/verify_subject.jinja",  # subject
                item=login,
                old_email=old_email,
                host=host,
                browser=browser,
            ).encode("utf-8"),
            login.email,
            morias_template(
                req, "mail/login/verify.jinja", item=login, old_email=old_email, host=host, browser=browser  # body
            ).encode("utf-8"),
            morias_template(
                req, "mail/login/verify.html", item=login, old_email=old_email, host=host, browser=browser  # body
            ).encode("utf-8"),
            logger=req.log_info,
        )
    except Exception:
        req.log_error("Login forget [%s] error: \n%s" % (login.email, format_exc()), state.LOG_ERR)
Example #5
0
def form_send(req):
    locale = req.args.getfirst('locale', get_lang(req), uni)
    menu = req.cfg.get_static_menu(req)
    fdict = dict((key, uni(req.form.getvalue(key))) for key in req.form.keys())

    form_obj = req.cfg.forms[req.uri.split('/')[-1]]
    qid, question, answer = (0, '', form_obj.answer)
    status = None

    if req.method == 'POST':
        if form_obj.protection:
            robot = True if req.form.getfirst("robot", "", str) else False
            if not form_obj.answer:
                qid = int(req.form.getfirst("qid", '0', str), 16)
                question, answer = robot_questions[qid]

            check = req.form.getfirst("answer", "", str) == answer
        else:
            robot = False
            check = True
        # endif

        required = []
        # check email if exist
        if 'email' in req.form:
            if not Email.check(req.form.getfirst("email", fce=str)):
                required.append('email')

        for it in form_obj.required:
            if it not in req.form:
                required.append(it)

        if robot or not check or required:
            return generate_page(
                req, req.cfg.form_web_templates + form_obj.template + '.html',
                question=question, answer=answer, qid=hex(qid), form=fdict,
                menu=menu, lang=locale, required=required, robot=robot,
                check=check)
        # else
        kwargs = {'logger': req.log_info}
        if 'email' in req.form:
            kwargs['reply'] = req.form.getfirst('email', '', str)

        status = False
        try:
            req.smtp.send_email_txt(
                form_obj.subject,                       # subject
                form_obj.recipient,                     # recipient
                morias_template(
                    req,
                    req.cfg.form_mail_templates + form_obj.template + '.txt',
                    form=fdict).encode('utf-8'),        # body
                **kwargs)                               # logger + reply
            fdict = {}
            status = True
        except Exception as e:
            req.log_error('Mail form: %s', str(e), state.LOG_ERROR)
            status = False

    # else (reg.method != POST)
    if form_obj.protection and not form_obj.answer:
        qid = randint(0, len(robot_questions)-1)
        question, answer = robot_questions[qid]

    return generate_page(
        req, req.cfg.form_web_templates + form_obj.template + '.html',
        question=question, answer=answer, qid=hex(qid), form=fdict, menu=menu,
        lang=locale, status=status)