コード例 #1
0
def new_site():
    user = users.get_current_user()
    form = PageForm(request.form)
    if request.method == 'POST':
        if form.validate():
            site = Site(
                name=form.name.data,
                owner=user,
                users=[user],
                admins=[user],
            )
            site.put()
            page = Page.new_page(site, form.name.data, form.url.data)
            new_url = url_for('editor', page_id=page.key().id())
            if request.is_xhr:
                return jsonify(dict(type='success', redirect=new_url))
            else:
                return redirect(new_url)
        elif request.is_xhr:
            return jsonify(
                dict(type='error',
                     errors=render_template('form_errors.html', form=form)))
    if request.is_xhr:
        return render_template('site_creator.html', form=form)
    return render_template('new_site.html', form=form)
コード例 #2
0
class PageHandler(BaseHandler):
    """Manage individual pages"""
    @admin_required
    def get(self, page_id=None, **kwargs):
        """Return a page to edit or an empty form to create"""
        template = 'admin/page/new.html'
        context = {
            'form': self.form,
        }
        # render edit
        if page_id is not None:
            page = Page.get_by_id(page_id)
            if page:
                self.form = PageForm(obj=page)
                context.update({'form': self.form})
                template = 'admin/page/edit.html'
            else:
                return redirect('admin/page/')
        # render new
        return self.render_response(template, **context)

    @admin_required
    def post(self, page_id=None, **kwargs):
        """Handle submitted form data"""
        # validate form
        if self.form.validate():
            title = self.form.title.data
            content = self.form.content.data
            live = self.form.live.data
            language = self.form.language.data
            # saving edited
            if page_id:
                page = Page.get_by_id(page_id)
                page.title = title
                page.content = content
                page.live = live
                page.language = language
            # creating new
            else:
                page = Page(title=title,
                            content=content,
                            live=live,
                            language=language)
            if page.put():
                return redirect('admin/page')
        return self.get(**kwargs)

    @cached_property
    def form(self):
        """Form instance as cached_property"""
        return PageForm(self.request)
コード例 #3
0
ファイル: handlers.py プロジェクト: tresacton/gae-shop
class PageHandler(BaseHandler):
    """Manage individual pages"""
    
    @admin_required
    def get(self, page_id=None, **kwargs):
        """Return a page to edit or an empty form to create"""
        template = 'admin/page/new.html'
        context = {
            'form': self.form,
        }
        # render edit
        if page_id is not None:
            page = Page.get_by_id(page_id)
            if page:
                self.form = PageForm(obj=page)
                context.update({ 'form': self.form })
                template = 'admin/page/edit.html'
            else:
                return redirect('admin/page/')
        # render new
        return self.render_response(template, **context)
    
    @admin_required
    def post(self, page_id=None, **kwargs):
        """Handle submitted form data"""
        # validate form
        if self.form.validate():
            title = self.form.title.data
            content = self.form.content.data
            live = self.form.live.data
            language = self.form.language.data
            # saving edited
            if page_id:
                page = Page.get_by_id(page_id)
                page.title = title
                page.content = content
                page.live = live
                page.language = language
            # creating new
            else:
                page = Page(title=title, content=content, live=live, language=language)
            if page.put():
                return redirect('admin/page')
        return self.get(**kwargs)
    
    @cached_property
    def form(self):
        """Form instance as cached_property"""
        return PageForm(self.request)
コード例 #4
0
ファイル: admin.py プロジェクト: jkossen/imposter
def save_page(page_id=None):
    """Save Page to database

    If page_id is None a new Page will be inserted in the database. Otherwise
    the existing Page will be updated.
    """
    message = 'Page updated'

    page_form = PageForm(request.form)

    if not page_form.validate():
        flash('ERROR: errors detected. Page NOT saved!', category='error')
        return edit_page(page_id=page_id, page_form=page_form)

    if page_id is None:
        page = Page(request.form['title'], request.form['content'])
        page.status_id = 1
        page.user_id = session['user_id']
        page.createdate = datetime.now()
    else:
        page = get_page(page_id)

    page_form.populate_obj(page)
    page.lastmoddate = datetime.now()

    # compile input to html
    page.compile(app.config['REPL_TAGS'])

    # update pubdate if page's pubdate is None and its status is set
    # to public
    if request.form['status'] == 'public' and \
           unicode(page.status) != 'public' and \
           page.pubdate is None:
        page.pubdate = datetime.now()

    page.status = get_status(request.form['status'])

    if page.slug is None:
        page.slug = slugify(page.title)

    if page_id is None:
        db_session.add(page)
        message = 'New page was successfully added'

    db_session.commit()

    flash(message)

    return redirect(url_for('edit_page', page_id=page.id))
コード例 #5
0
ファイル: views.py プロジェクト: 1ncnspcuous/WebPutty
def new_page(site_id):
    site = Site.get_admin_or_404(site_id)
    form = PageForm(request.form, site=site)
    if request.method == 'POST':
        if form.validate():
            page = Page.new_page(site, form.name.data, form.url.data)
            new_url = url_for('editor', page_id=page.key().id())
            if request.is_xhr:
                return jsonify(dict(type='success', redirect=new_url))
            return redirect(new_url)
        elif request.is_xhr:
            return jsonify(dict(type='error', errors=render_template('form_errors.html', form=form)))
    if request.is_xhr:
        return render_template('page_creator.html', form=form, site=site)
    return render_template('new_page.html', form=form, site=site)
コード例 #6
0
def create_page():
    form = PageForm(request.form)
    menu = Markup(db.static.find_one({'name': 'menu'})['content'])

    if request.method == 'POST' and form.validate():
        title = form.page_title.data
        content = form.page_content.data
        name = form.page_name.data
        db.static.insert({
            'name': name,
            'content': content,
            'title': title,
            'type': 'page'
        })
        return redirect(url_for('edit_pages'))

    return render_template('edit.html', form=form, menu=menu)
コード例 #7
0
def new_page(site_id):
    site = Site.get_admin_or_404(site_id)
    form = PageForm(request.form, site=site)
    if request.method == 'POST':
        if form.validate():
            page = Page.new_page(site, form.name.data, form.url.data)
            new_url = url_for('editor', page_id=page.key().id())
            if request.is_xhr:
                return jsonify(dict(type='success', redirect=new_url))
            return redirect(new_url)
        elif request.is_xhr:
            return jsonify(
                dict(type='error',
                     errors=render_template('form_errors.html', form=form)))
    if request.is_xhr:
        return render_template('page_creator.html', form=form, site=site)
    return render_template('new_page.html', form=form, site=site)
コード例 #8
0
ファイル: views.py プロジェクト: 1ncnspcuous/WebPutty
def edit_page(page_id):
    page = Page.get_admin_or_404(page_id)
    form = PageForm(request.form, page)
    if request.method == 'POST':
        if form.validate():
            if form.data['url'] != page.url:
                page.queue_preview()
            page.name = form.name.data
            page.url = form.url.data
            page.preview_urls = [Link(url.data) for url in form.preview_urls]
            page.put()
            if request.is_xhr:
                return 'OK'
        elif request.is_xhr:
            return render_template('form_errors.html', form=form)
    if request.is_xhr:
        return render_template('page_editor.html', form=form, page=page)
    return render_template('edit_page.html', form=form, site=page.site, page=page)
コード例 #9
0
def edit_page(page_id):
    page = Page.get_admin_or_404(page_id)
    form = PageForm(request.form, page)
    if request.method == 'POST':
        if form.validate():
            if form.data['url'] != page.url:
                page.queue_preview()
            page.name = form.name.data
            page.url = form.url.data
            page.preview_urls = [Link(url.data) for url in form.preview_urls]
            page.put()
            if request.is_xhr:
                return 'OK'
        elif request.is_xhr:
            return render_template('form_errors.html', form=form)
    if request.is_xhr:
        return render_template('page_editor.html', form=form, page=page)
    return render_template('edit_page.html',
                           form=form,
                           site=page.site,
                           page=page)
コード例 #10
0
ファイル: views.py プロジェクト: 1ncnspcuous/WebPutty
def new_site():
    user = users.get_current_user()
    form = PageForm(request.form)
    if request.method == 'POST':
        if form.validate():
            site = Site(
                name = form.name.data,
                owner = user,
                users = [user],
                admins = [user],
            )
            site.put()
            page = Page.new_page(site, form.name.data, form.url.data)
            new_url = url_for('editor', page_id=page.key().id())
            if request.is_xhr:
                return jsonify(dict(type='success', redirect=new_url))
            else:
                return redirect(new_url)
        elif request.is_xhr:
            return jsonify(dict(type='error', errors=render_template('form_errors.html', form=form)))
    if request.is_xhr:
        return render_template('site_creator.html', form=form)
    return render_template('new_site.html', form=form)