aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorrubenwardy <rubenwardy@gmail.com>2018-04-03 14:13:11 +0100
committerrubenwardy <rubenwardy@gmail.com>2018-04-03 14:13:16 +0100
commit5f2a3992602b59614a8c3d9a193e4669705c048c (patch)
tree549196f7317670279c0fc60c4e49a125a9dd9474 /app
parent743d1d909fbfb704185475c162f6ae2396272c75 (diff)
downloadcheatdb-5f2a3992602b59614a8c3d9a193e4669705c048c.tar.xz
Add package licenses
Diffstat (limited to 'app')
-rw-r--r--app/models.py16
-rw-r--r--app/templates/packages/create_edit.html1
-rw-r--r--app/templates/packages/editrequest_create.html1
-rw-r--r--app/templates/packages/view.html4
-rw-r--r--app/views/packages.py17
5 files changed, 27 insertions, 12 deletions
diff --git a/app/models.py b/app/models.py
index 444d606..4f5fee2 100644
--- a/app/models.py
+++ b/app/models.py
@@ -116,6 +116,18 @@ class User(db.Model, UserMixin):
else:
raise Exception("Permission {} is not related to users".format(perm.name))
+class License(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ name = db.Column(db.String(50), nullable=False, unique=True)
+ packages = db.relationship("Package", backref="license", lazy="dynamic")
+
+ def __init__(self, v):
+ self.name = v
+
+ def __str__(self):
+ return self.name
+
+
class PackageType(enum.Enum):
MOD = "Mod"
GAME = "Game"
@@ -142,6 +154,7 @@ class PackagePropertyKey(enum.Enum):
shortDesc = "Short Description"
desc = "Description"
type = "Type"
+ license = "License"
tags = "Tags"
repo = "Repository"
website = "Website"
@@ -170,6 +183,8 @@ class Package(db.Model):
desc = db.Column(db.Text, nullable=True)
type = db.Column(db.Enum(PackageType))
+ license_id = db.Column(db.Integer, db.ForeignKey("license.id"))
+
approved = db.Column(db.Boolean, nullable=False, default=False)
# Downloads
@@ -198,6 +213,7 @@ class Package(db.Model):
"author": self.author.display_name,
"shortDesc": self.shortDesc,
"type": self.type.toName(),
+ "license": self.license.name,
"repo": self.repo,
"url": base_url + self.getDownloadURL(),
"screenshots": [base_url + ss.url for ss in self.screenshots]
diff --git a/app/templates/packages/create_edit.html b/app/templates/packages/create_edit.html
index ad8ff6b..a7ebdfd 100644
--- a/app/templates/packages/create_edit.html
+++ b/app/templates/packages/create_edit.html
@@ -14,6 +14,7 @@
{{ render_field(form.shortDesc) }}
{{ render_field(form.desc) }}
{{ render_field(form.type) }}
+ {{ render_field(form.license) }}
{{ render_field(form.tags) }}
{{ render_field(form.repo) }}
{{ render_field(form.website) }}
diff --git a/app/templates/packages/editrequest_create.html b/app/templates/packages/editrequest_create.html
index cdf5cfa..fe8e482 100644
--- a/app/templates/packages/editrequest_create.html
+++ b/app/templates/packages/editrequest_create.html
@@ -14,6 +14,7 @@
{{ render_field(form.shortDesc) }}
{{ render_field(form.desc) }}
{{ render_field(form.type) }}
+ {{ render_field(form.license) }}
{{ render_field(form.tags) }}
{{ render_field(form.repo) }}
{{ render_field(form.website) }}
diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html
index 55d0d57..5c68ead 100644
--- a/app/templates/packages/view.html
+++ b/app/templates/packages/view.html
@@ -46,6 +46,10 @@
<td>Type</td>
<td>{{ package.type.value }}</td>
</tr>
+ <tr>
+ <td>License</td>
+ <td>{{ package.license.name }}</td>
+ </tr>
</table>
<ul class="buttonset linedbuttonset">
diff --git a/app/views/packages.py b/app/views/packages.py
index e532d3f..f683749 100644
--- a/app/views/packages.py
+++ b/app/views/packages.py
@@ -9,7 +9,7 @@ from .utils import *
from flask_wtf import FlaskForm
from wtforms import *
from wtforms.validators import *
-from wtforms.ext.sqlalchemy.fields import QuerySelectMultipleField
+from wtforms.ext.sqlalchemy.fields import QuerySelectField, QuerySelectMultipleField
# TODO: the following could be made into one route, except I"m not sure how
@@ -135,6 +135,7 @@ class PackageForm(FlaskForm):
shortDesc = StringField("Short Description", [InputRequired(), Length(1,200)])
desc = TextAreaField("Long Description", [Optional(), Length(0,10000)])
type = SelectField("Type", [InputRequired()], choices=PackageType.choices(), coerce=PackageType.coerce, default=PackageType.MOD)
+ license = QuerySelectField("License", [InputRequired()], query_factory=lambda: License.query, get_pk=lambda a: a.id, get_label=lambda a: a.name)
tags = QuerySelectMultipleField('Tags', query_factory=lambda: Tag.query, get_pk=lambda a: a.id, get_label=lambda a: a.title)
repo = StringField("Repo URL", [Optional(), URL()])
website = StringField("Website URL", [Optional(), URL()])
@@ -227,11 +228,6 @@ class EditRequestForm(PackageForm):
edit_title = StringField("Edit Title", [InputRequired(), Length(1, 100)])
edit_desc = TextField("Edit Description", [Optional()])
-class UnresolvedPackage(Package):
- edit_title = ""
- edit_desc = ""
-
-
@app.route("/<ptype>s/<author>/<name>/requests/new/", methods=["GET","POST"])
@login_required
def create_editrequest_page(ptype, author, name):
@@ -239,19 +235,16 @@ def create_editrequest_page(ptype, author, name):
form = EditRequestForm(request.form, obj=package)
if request.method == "POST" and form.validate():
- editedPackage = UnresolvedPackage()
- form.populate_obj(editedPackage)
-
erequest = EditRequest()
erequest.package = package
erequest.author = current_user
- erequest.title = editedPackage.edit_title
- erequest.desc = editedPackage.edit_desc
+ erequest.title = form["edit_title"].data
+ erequest.desc = form["edit_desc"].data
db.session.add(erequest)
wasChangeMade = False
for e in PackagePropertyKey:
- newValue = getattr(editedPackage, e.name)
+ newValue = form[e.name].data
oldValue = getattr(package, e.name)
newValueComp = newValue