From e4ea44aa5bdbe63c3ad6f736d2e0bd0c545dcda8 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 4 Jan 2022 13:08:53 +0000 Subject: [PATCH] Allow null dev_state --- app/blueprints/packages/packages.py | 7 +------ app/logic/packages.py | 2 -- app/models/packages.py | 4 ++-- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index c081cb1..be5ebc3 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -229,18 +229,13 @@ def makeLabel(obj): return obj.title -def NotNullOption(_form, field): - if field.data is None or field.data.name == "__None": - raise ValidationError("This field is required") - - class PackageForm(FlaskForm): type = SelectField("Type", [InputRequired()], choices=PackageType.choices(), coerce=PackageType.coerce, default=PackageType.MOD) title = StringField("Title (Human-readable)", [InputRequired(), Length(1, 100)]) name = StringField("Name (Technical)", [InputRequired(), Length(1, 100), Regexp("^[a-z0-9_]+$", 0, "Lower case letters (a-z), digits (0-9), and underscores (_) only")]) short_desc = StringField("Short Description (Plaintext)", [InputRequired(), Length(1,200)]) - dev_state = SelectField("Maintenance State", [InputRequired(), NotNullOption], choices=PackageDevState.choices(with_none=True), coerce=PackageDevState.coerce) + dev_state = SelectField("Maintenance State", [InputRequired()], choices=PackageDevState.choices(with_none=True), coerce=PackageDevState.coerce) tags = QuerySelectMultipleField('Tags', query_factory=lambda: Tag.query.order_by(db.asc(Tag.name)), get_pk=lambda a: a.id, get_label=makeLabel) content_warnings = QuerySelectMultipleField('Content Warnings', query_factory=lambda: ContentWarning.query.order_by(db.asc(ContentWarning.name)), get_pk=lambda a: a.id, get_label=makeLabel) diff --git a/app/logic/packages.py b/app/logic/packages.py index f406bc9..d6f6286 100644 --- a/app/logic/packages.py +++ b/app/logic/packages.py @@ -120,8 +120,6 @@ def do_edit_package(user: User, package: Package, was_new: bool, was_web: bool, if "dev_state" in data: data["dev_state"] = PackageDevState.coerce(data["dev_state"]) - if data["dev_state"] is None: - raise LogicError(400, "dev_state cannot be null") if "license" in data: data["license"] = get_license(data["license"]) diff --git a/app/models/packages.py b/app/models/packages.py index 333ce8e..caa9eb2 100644 --- a/app/models/packages.py +++ b/app/models/packages.py @@ -121,13 +121,13 @@ class PackageDevState(enum.Enum): ret = [(choice, build_label(choice)) for choice in cls] if with_none: - ret.insert(0, ("__None", "")) + ret.insert(0, (None, "")) return ret @classmethod def coerce(cls, item): - if item is None or (isinstance(item, str) and item.upper() == "__NONE"): + if item is None or (isinstance(item, str) and item.upper() == "NONE"): return None return item if type(item) == PackageDevState else PackageDevState[item.upper()]