def save_update_page(db_name, form): if 'original_path' in form: path = form['original_path'].value if 'page_path' in form: page_path = form['page_path'].value if page_path[0] is not '/': page_path = '/' + page_path if not _valid_path(page_path): redirect_path = path + '?manage=true&error=' + GETVAR_INVALID_PATH elif 'page_title' in form: title = form['page_title'].value try: update_page(db_name, page_path, title=title) _create_superpage(db_name, page_path) redirect_path = page_path except PageNotFoundError: redirect_path = PATH_NOT_FOUND except PathUnavailableError: redirect_path = path + '?manage=true&error=' + GETVAR_PATH_UNAVAILABLE else: redirect_path = path + '?manage=true&error=' + GETVAR_INVALID_TITLE else: redirect_path = path + '?manage=true&error=' + GETVAR_INVALID_PATH else: redirect_path = PATH_ERROR + '?error=' + GETVAR_PAGE_NOT_FOUND return redirect_path
def _create_superpage(db_name, path): superpage_path = os.path.dirname(path) if path != PATH_HOME: try: query_page(db_name, superpage_path) except PageNotFoundError: insert_page(db_name, superpage_path) update_page(db_name, path, superpage_path=superpage_path) _create_superpage(db_name, superpage_path)
def POST_create(self, page_name=''): i = web.input('content', 'scroll_pos', 'caret_pos') page = db.get_page(page_name) if page: if page.deleted: db.undelete_page(page.id, page_name) db.update_page(page.id, i.content, i.scroll_pos, i.caret_pos) else: db.new_page(page_name, i.content, i.scroll_pos, i.caret_pos) page = db.get_page(page_name) web.seeother(page.url)
def POST_edit(self, page_name=''): i = web.input('spinner', recaptcha=False) spinner, recaptcha_p = i.spinner, i.recaptcha error_to_use = None if recaptcha_p: c = recaptcha.submit(i.recaptcha_challenge_field, i.recaptcha_response_field, os.environ['RECAPTCHA_PRIVKEY'], web.ctx.ip) if not c.is_valid: error_to_use = c.error_code i = auth.unspuninput(page_name, 'content', 'scroll_pos', 'caret_pos', 'current_revision', save=False, delete=False) page = db.get_page(page_name) content = re.sub(r'(\r\n|\r)', '\n', i.content) if (jt.site.security == 'open' and not auth.logged_in()) and (not recaptcha_p or error_to_use): captcha = recaptcha.displayhtml(os.environ['RECAPTCHA_PUBKEY'], use_ssl=True, error=error_to_use) timestamp, spinner, spinfield = auth.spinner(page_name) return render('captcha', vars=locals()) if not page: db.new_page(page_name, content, i.scroll_pos, i.caret_pos) page = db.get_page(page_name) revision = db.get_revision(page.id) if i.current_revision and revision.revision != int( i.current_revision ) and not page.deleted and revision.content != content: timestamp, spinner, spinfield = auth.spinner(page_name) orig = db.get_revision(page.id, i.current_revision) diff = better_diff(orig.content, content) return render('edit_conflict', vars=locals()) if i.delete and page_name: db.delete_page(page.id) return web.seeother(page.url) db.update_page(page.id, content, i.scroll_pos, i.caret_pos) if page.deleted: db.undelete_page(page.id, page_name) web.seeother(page.url)
def POST_revert(self, page_name=''): page = db.get_page(page_name) if not page: return web.badrequest() i = web.input('r') revert_to = db.get_revision(page.id, i.r) if not revert_to: return web.badrequest() if page.deleted: db.undelete_page(page.id, page_name) latest = db.get_revision(page.id) if latest.content != revert_to.content: db.update_page(page.id, revert_to.content) web.seeother(page.url)
def toggle_quicklink(db_name, form): page_path = form['path'].value form_ql = form['quicklink'].value if form_ql == 'False': quicklink = True else: quicklink = False try: page = update_page(db_name, page_path, quicklink=quicklink) redirect_path = page_path + '?message=' + GETVAR_SAVE_SUCCESS except PageNotFoundError: redirect_path = PATH_ERROR + '?error=' + GETVAR_PAGE_NOT_FOUND return redirect_path