Beispiel #1
0
def news_list(req, locale=None):
    locale = locale if locale else get_lang(req)

    pager = Pager(limit=5, sort="desc", order="create_date")
    pager.bind(req.args)

    rows = New.list(req, pager, body=True, public=1, locale=(locale, ""))
    return generate_page(req, "news_list.html", pager=pager, rows=rows, lang=locale)
Beispiel #2
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)