예제 #1
0
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
예제 #2
0
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)
예제 #3
0
파일: app.py 프로젝트: anandology/jottit
 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)
예제 #4
0
파일: app.py 프로젝트: anandology/jottit
    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)
예제 #5
0
파일: app.py 프로젝트: anandology/jottit
    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)
예제 #6
0
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