diff options
Diffstat (limited to 'app/blueprints/packages/packages.py')
-rw-r--r-- | app/blueprints/packages/packages.py | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index 716e79e..5a775b2 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -198,22 +198,24 @@ def download(package): class PackageForm(FlaskForm): - name = StringField("Name (Technical)", [InputRequired(), Length(1, 100), Regexp("^[a-z0-9_]+$", 0, "Lower case letters (a-z), digits (0-9), and underscores (_) only")]) - title = StringField("Title (Human-readable)", [InputRequired(), Length(3, 100)]) - short_desc = StringField("Short Description (Plaintext)", [InputRequired(), Length(1,200)]) - desc = TextAreaField("Long Description (Markdown)", [Optional(), Length(0,10000)]) - type = SelectField("Type", [InputRequired()], choices=PackageType.choices(), coerce=PackageType.coerce, default=PackageType.MOD) - license = QuerySelectField("License", [DataRequired()], allow_blank=True, query_factory=lambda: License.query.order_by(db.asc(License.name)), get_pk=lambda a: a.id, get_label=lambda a: a.name) - media_license = QuerySelectField("Media License", [DataRequired()], allow_blank=True, query_factory=lambda: License.query.order_by(db.asc(License.name)), get_pk=lambda a: a.id, get_label=lambda a: a.name) - provides_str = StringField("Provides (mods included in package)", [Optional()]) - tags = QuerySelectMultipleField('Tags', query_factory=lambda: Tag.query.order_by(db.asc(Tag.name)), get_pk=lambda a: a.id, get_label=lambda a: a.title) - harddep_str = StringField("Hard Dependencies", [Optional()]) - softdep_str = StringField("Soft Dependencies", [Optional()]) - repo = StringField("VCS Repository URL", [Optional(), URL()], filters = [lambda x: x or None]) - website = StringField("Website URL", [Optional(), URL()], filters = [lambda x: x or None]) - issueTracker = StringField("Issue Tracker URL", [Optional(), URL()], filters = [lambda x: x or None]) - forums = IntegerField("Forum Topic ID", [Optional(), NumberRange(0,999999)]) - submit = SubmitField("Save") + name = StringField("Name (Technical)", [InputRequired(), Length(1, 100), Regexp("^[a-z0-9_]+$", 0, "Lower case letters (a-z), digits (0-9), and underscores (_) only")]) + title = StringField("Title (Human-readable)", [InputRequired(), Length(3, 100)]) + short_desc = StringField("Short Description (Plaintext)", [InputRequired(), Length(1,200)]) + desc = TextAreaField("Long Description (Markdown)", [Optional(), Length(0,10000)]) + type = SelectField("Type", [InputRequired()], choices=PackageType.choices(), coerce=PackageType.coerce, default=PackageType.MOD) + license = QuerySelectField("License", [DataRequired()], allow_blank=True, query_factory=lambda: License.query.order_by(db.asc(License.name)), get_pk=lambda a: a.id, get_label=lambda a: a.name) + media_license = QuerySelectField("Media License", [DataRequired()], allow_blank=True, query_factory=lambda: License.query.order_by(db.asc(License.name)), get_pk=lambda a: a.id, get_label=lambda a: a.name) + provides_str = StringField("Provides (mods included in package)", [Optional()]) + tags = QuerySelectMultipleField('Tags', query_factory=lambda: Tag.query.order_by(db.asc(Tag.name)), get_pk=lambda a: a.id, get_label=lambda a: a.title) + content_warnings = QuerySelectMultipleField('Content Warnings', query_factory=lambda: ContentWarning.query.order_by(db.asc(ContentWarning.name)), get_pk=lambda a: a.id, get_label=lambda a: a.title) + harddep_str = StringField("Hard Dependencies", [Optional()]) + softdep_str = StringField("Soft Dependencies", [Optional()]) + repo = StringField("VCS Repository URL", [Optional(), URL()], filters = [lambda x: x or None]) + website = StringField("Website URL", [Optional(), URL()], filters = [lambda x: x or None]) + issueTracker = StringField("Issue Tracker URL", [Optional(), URL()], filters = [lambda x: x or None]) + forums = IntegerField("Forum Topic ID", [Optional(), NumberRange(0,999999)]) + submit = SubmitField("Save") + @bp.route("/packages/new/", methods=["GET", "POST"]) @bp.route("/packages/<author>/<name>/edit/", methods=["GET", "POST"]) @@ -259,6 +261,7 @@ def create_edit(author=None, name=None): form.softdep_str.data = ",".join([str(x) for x in package.getSortedOptionalDependencies() ]) form.provides_str.data = MetaPackage.ListToSpec(package.provides) form.tags.data = list(package.tags) + form.content_warnings.data = list(package.content_warnings) if request.method == "POST" and form.validate(): wasNew = False @@ -320,6 +323,10 @@ def create_edit(author=None, name=None): for tag in form.tags.raw_data: package.tags.append(Tag.query.get(tag)) + package.content_warnings.clear() + for warning in form.content_warnings.raw_data: + package.content_warnings.append(ContentWarning.query.get(warning)) + db.session.commit() # save next_url = package.getDetailsURL() |