Ejemplo n.º 1
0
def add_page():
    form = AddPageForm()
    for field in form:
        print(f"{field.name}: {field.data}")
    form.parent_id.choices = [(0, '---')] + [(p.id, f"{p.title} ({p.path})")
                                             for p in Page.query.all()]
    form.user_id.choices = [(u.id, u.username) for u in User.query.all()]
    form.notify_group.choices = [
        ('', ''), ('all', 'All')
    ] + current_app.config['SUBSCRIPTION_GROUPS'] + [
        ('discord', 'Discord Only')
    ]
    if form.validate_on_submit():
        parentid = form.parent_id.data if form.parent_id.data else None
        page = Page(
            title=form.title.data,
            slug=form.slug.data,
            template=form.template.data,
            parent_id=parentid,
            cover=form.cover.data,
            banner=form.banner.data,
            body=form.body.data,
            notes=form.notes.data,
            summary=form.summary.data,
            author_note=form.author_note.data,
            author_note_location=form.author_note_location.data,
            sidebar=form.sidebar.data,
            tags=form.tags.data,
            user_id=current_user.id,
            notify_group=form.notify_group.data,
            published=form.published.data,
        )
        pdate = form.pub_date.data
        ptime = form.pub_time.data
        local_tz = form.timezone.data if form.timezone.data else current_user.timezone
        if pdate and ptime:
            page.set_local_pub_date(f"{pdate} {ptime}", local_tz)
        page.set_path()
        db.session.add(page)
        db.session.commit()
        if form.notify_subs.data:
            page.notify_subscribers(form.notify_group.data)
        flash("Page added successfully.", "success")
        log_new(page, 'added a page')
        Page.set_nav()
        return redirect(url_for('admin.edit_page', id=page.id))
    if form.errors:
        flash("<b>Error!</b> Please fix the errors below.", "danger")
    return render_template('admin/page-edit.html',
                           form=form,
                           tab='pages',
                           action='Add',
                           page=Page.query.filter_by(slug='admin').first())