aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md16
-rw-r--r--app/models.py40
-rw-r--r--app/templates/packages/editrequest_create_edit.html2
3 files changed, 58 insertions, 0 deletions
diff --git a/README.md b/README.md
index c96fbf0..c5203e1 100644
--- a/README.md
+++ b/README.md
@@ -40,3 +40,19 @@ Then run the server:
./rundebug.py
Then view in your web browser: http://localhost:5000/
+
+## How-tos
+
+### Create migration
+
+```sh
+# if sqlite
+python setup.py -t
+rm db.sqlite && python setup.py -t && FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db stamp head
+
+# Create migration
+FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db migrate
+
+# Run migration
+FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db migrate
+```
diff --git a/app/models.py b/app/models.py
index cafdf5d..c0c9a09 100644
--- a/app/models.py
+++ b/app/models.py
@@ -225,6 +225,9 @@ class PackagePropertyKey(enum.Enum):
def convert(self, value):
if self == PackagePropertyKey.tags:
return ",".join([t.title for t in value])
+ elif self == PackagePropertyKey.harddeps or self == PackagePropertyKey.softdeps:
+ return ",".join([t.author.username + "/" + t.name for t in value])
+
else:
return str(value)
@@ -531,6 +534,43 @@ class EditRequestChange(db.Model):
for tagTitle in self.newValue.split(","):
tag = Tag.query.filter_by(title=tagTitle.strip()).first()
package.tags.append(tag)
+
+ elif self.key == PackagePropertyKey.harddeps:
+ package.harddeps.clear()
+ for pair in self.newValue.split(","):
+ key, value = pair.split("/")
+ if key is None or value is None:
+ continue
+
+ user = User.query.filter_by(username=key).first()
+ if user is None:
+ continue
+
+ dep = Package.query.filter_by(author=user, name=value).first()
+ if dep is None:
+ continue
+
+ package.harddeps.append(dep)
+
+ elif self.key == PackagePropertyKey.softdeps:
+ package.softdeps.clear()
+ for pair in self.newValue.split(","):
+ key, value = pair.split("/")
+ if key is None or value is None:
+ continue
+
+ user = User.query.filter_by(username=key).first()
+ if user is None:
+ raise Exception("No such user!")
+ continue
+
+ dep = Package.query.filter_by(author=user, name=value).first()
+ if dep is None:
+ raise Exception("No such package!")
+ continue
+
+ package.softdeps.append(dep)
+
else:
setattr(package, self.key.name, self.newValue)
diff --git a/app/templates/packages/editrequest_create_edit.html b/app/templates/packages/editrequest_create_edit.html
index d245206..987a292 100644
--- a/app/templates/packages/editrequest_create_edit.html
+++ b/app/templates/packages/editrequest_create_edit.html
@@ -18,6 +18,8 @@
{{ render_field(form.type) }}
{{ render_field(form.license) }}
{{ render_multiselect_field(form.tags) }}
+ {{ render_multiselect_field(form.harddeps) }}
+ {{ render_multiselect_field(form.softdeps) }}
{{ render_field(form.repo) }}
{{ render_field(form.website) }}
{{ render_field(form.issueTracker) }}