def new_paste(self, language=None): """The 'create a new paste' view.""" language = local.request.args.get('language', language) if language is None: language = local.request.session.get('language', 'text') code = error = '' show_captcha = private = False parent = None req = local.request getform = req.form.get if local.request.method == 'POST': code = getform('code', u'') language = getform('language') parent_id = getform('parent') if parent_id is not None: parent = Paste.get(parent_id) spam = getform('webpage') or antispam.is_spam(code) if spam: error = _('your paste contains spam') captcha = getform('captcha') if captcha: if check_hashed_solution(captcha): error = None else: error = _('your paste contains spam and the ' 'CAPTCHA solution was incorrect') show_captcha = True if code and language and not error: paste = Paste(code, language, parent, req.user_hash, 'private' in req.form) session.flush() local.request.session['language'] = language return redirect(paste.url) else: parent_id = req.values.get('reply_to') if parent_id is not None: parent = Paste.get(parent_id) if parent is not None: code = parent.code language = parent.language private = parent.private return render_to_response('new_paste.html', languages=list_languages(), parent=parent, code=code, language=language, error=error, show_captcha=show_captcha, private=private )
def new_paste(self, language=None): """The 'create a new paste' view.""" language = local.request.args.get('language', language) if language is None: language = local.request.session.get('language', 'text') code = error = '' show_captcha = private = False parent = None req = local.request getform = req.form.get if local.request.method == 'POST': code = getform('code', u'') language = getform('language') parent_id = getform('parent') if parent_id is not None: parent = Paste.get(parent_id) spam = getform('webpage') or antispam.is_spam(code) if spam: error = _('your paste contains spam') captcha = getform('captcha') if captcha: if check_hashed_solution(captcha): error = None else: error = _('your paste contains spam and the ' 'CAPTCHA solution was incorrect') show_captcha = True if code and language and not error: paste = Paste(code, language, parent, req.user_hash, 'private' in req.form) session.flush() local.request.session['language'] = language return redirect(paste.url) else: parent_id = req.values.get('reply_to') if parent_id is not None: parent = Paste.get(parent_id) if parent is not None: code = parent.code language = parent.language private = parent.private return render_to_response('new_paste.html', languages=list_languages(), parent=parent, code=code, language=language, error=error, show_captcha=show_captcha, private=private)
def pastes_new_paste(language, code, parent_id=None, filename="", mimetype="", private=False): """Create a new paste. Return the new ID. `language` can be None, in which case the language will be guessed from `filename` and/or `mimetype`. """ if not language: language = get_language_for(filename or "", mimetype or "") parent = None if parent_id: parent = Paste.get(parent_id) if parent is None: raise ValueError("parent paste not found") paste = Paste(code, language, parent, private=private) session.flush() return paste.identifier