Add form and template for adding a model.

This commit is contained in:
dameyer 2022-10-02 23:49:14 +02:00
parent 61098535be
commit 9802fdd175
3 changed files with 116 additions and 2 deletions

View File

@ -0,0 +1,75 @@
from flask_wtf import FlaskForm
from wtforms import (
BooleanField,
PasswordField,
StringField,
SubmitField,
SelectMultipleField,
ValidationError, FieldList, IntegerField
)
from wtforms.validators import InputRequired, Email, EqualTo, Length, Regexp
from app.models import User
class ContributionForm(FlaskForm):
# The id field will be generated on insert.
# The user_id will be retrieved from the user who is performing this operation.
# title = db.Column(db.String(64))
title = StringField(
'Title',
validators=[InputRequired(), Length(max=64)]
)
# description = db.Column(db.String(255))
description = StringField(
'Description',
validators=[InputRequired(), Length(max=255)]
)
# version = db.Column(db.String(16))
version = StringField(
'Version',
validators=[InputRequired(), Length(max=16)]
)
# compatible_service_versions = db.Column(ContainerColumn(list, 255))
compatible_service_versions = SelectMultipleField(
'Compatible Service Versions',
choices=["asd", "blub", "bla"]
)
# publisher = db.Column(db.String(128))
publisher = StringField(
'Publisher',
validators=[InputRequired(), Length(max=128)]
)
# publisher_url = db.Column(db.String(512))
publisher_url = StringField(
'Publisher URL',
validators=[InputRequired(), Length(max=512)]
)
# publishing_url = db.Column(db.String(512))
publishing_url = StringField(
'Publishing URL',
validators=[InputRequired(), Length(max=512)]
)
# publishing_year = db.Column(db.Integer)
publishing_year = IntegerField(
'Publishing year',
validators=[InputRequired()]
)
# shared = db.Column(db.Boolean, default=False)
shared = BooleanField(
'Shared',
validators=[InputRequired()]
)
submit = SubmitField()

View File

@ -1,7 +1,9 @@
from flask import render_template
from flask_login import login_required from flask_login import login_required
from app.decorators import permission_required from app.decorators import permission_required
from app.models import Permission from app.models import Permission
from . import bp from . import bp
from .forms import ContributionForm
@bp.before_request @bp.before_request
@ -11,6 +13,11 @@ def before_request():
pass pass
@bp.route('') @bp.route('', methods=['GET', 'POST'])
def contributions(): def contributions():
pass form = ContributionForm(prefix='contribution-form')
return render_template(
'contributions/contribute.html.j2',
form=form,
title='Contribution'
)

View File

@ -0,0 +1,32 @@
{% extends "base.html.j2" %}
{% import "materialize/wtf.html.j2" as wtf %}
{% block page_content %}
<div class="container">
<div class="row">
<div class="col s12 m8 offset-m2">
<h1 id="title">{{ title }}</h1>
<p>
In order to add a new model, please fill in the form below.
</p>
<form method="POST">
<div class="card-panel">
{{ form.hidden_tag() }}
{{ wtf.render_field(form.title) }}
{{ wtf.render_field(form.description) }}
{{ wtf.render_field(form.publisher) }}
{{ wtf.render_field(form.publisher_url) }}
{{ wtf.render_field(form.publishing_url) }}
{{ wtf.render_field(form.publishing_year) }}
{{ wtf.render_field(form.shared) }}
{{ wtf.render_field(form.version) }}
{{ wtf.render_field(form.compatible_service_versions) }}
{{ wtf.render_field(form.submit, class_='width-100', material_icon='send') }}
</div>
</form>
</div>
</div>
{% endblock page_content %}