]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add min and max Minetest version support
authorrubenwardy <rw@rubenwardy.com>
Mon, 28 Jan 2019 20:48:07 +0000 (20:48 +0000)
committerrubenwardy <rw@rubenwardy.com>
Mon, 28 Jan 2019 20:48:07 +0000 (20:48 +0000)
12 files changed:
.gitignore
Dockerfile
README.md
app/models.py
app/templates/packages/release_edit.html
app/templates/packages/release_new.html
app/views/packages/releases.py
docker-compose.yml
migrations/versions/7def3e843d04_.py [new file with mode: 0644]
rundebug.sh
runprod.sh
runprodguni.sh

index 03d9779941b1d1fef8ff7b03a10a3a07bf6f329a..382c3d6e24a1fbab35910270114d0ca5b985c9aa 100644 (file)
@@ -1,5 +1,4 @@
 config.cfg
-config.prod.cfg
 *.env
 *.sqlite
 custom.css
index c91a69f395e2aba8b8b157aa70f1f65a108393f9..73b620d82b3ee79ed49672aa69281756326463a6 100644 (file)
@@ -8,9 +8,10 @@ RUN pip install gunicorn
 RUN pip install psycopg2
 
 COPY runprodguni.sh ./
+COPY rundebug.sh ./
 RUN chmod +x runprodguni.sh
 
 COPY setup.py ./setup.py
 COPY app app
 COPY migrations migrations
-COPY config.prod.cfg ./config.prod.cfg
+COPY config.cfg ./config.cfg
index e8cf5dc0ac1b481a1904f75e8c190376068fc95b..21e4410dd9b032bd90503f64a9933a3a059987a5 100644 (file)
--- a/README.md
+++ b/README.md
@@ -21,4 +21,7 @@ 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 upgrade
+
+# Enter docker
+docker exec -it contentdb_app_1 bash
 ```
index 20c3e601accbcaafa388a594435c7c5ede8213f7..30dc27d432e619100660fad8ce946385e61aacf4 100644 (file)
@@ -612,6 +612,18 @@ class Tag(db.Model):
                regex = re.compile("[^a-z_]")
                self.name = regex.sub("", self.title.lower().replace(" ", "_"))
 
+
+class MinetestRelease(db.Model):
+       id              = db.Column(db.Integer,    primary_key=True)
+       name            = db.Column(db.String(100), unique=True, nullable=False)
+
+       def __init__(self, name=None):
+               self.name = name
+
+       def getActual(self):
+               return None if self.name == "None" else self
+
+
 class PackageRelease(db.Model):
        id           = db.Column(db.Integer, primary_key=True)
 
@@ -623,6 +635,12 @@ class PackageRelease(db.Model):
        task_id      = db.Column(db.String(37), nullable=True)
        commit_hash  = db.Column(db.String(41), nullable=True, default=None)
 
+       min_rel_id = db.Column(db.Integer, db.ForeignKey("minetest_release.id"), nullable=True, server_default=None)
+       min_rel    = db.relationship("MinetestRelease", foreign_keys=[min_rel_id])
+
+       max_rel_id = db.Column(db.Integer, db.ForeignKey("minetest_release.id"), nullable=True, server_default=None)
+       max_rel    = db.relationship("MinetestRelease", foreign_keys=[max_rel_id])
+
 
        def getEditURL(self):
                return url_for("edit_release_page",
index c309dacc669ed2edd1176f616b805c62582ee255..32df3064889a7c39d5b87e4f226d7e6ac3239ed4 100644 (file)
                                Approved: {{ release.approved }}
                        {% endif %}
                {% endif %}
+               
+               <div class="row">
+                       {{ render_field(form.min_rel, class_="col-sm-6") }}
+                       {{ render_field(form.max_rel, class_="col-sm-6") }}
+               </div>
 
                {{ render_submit_field(form.submit) }}
        </form>
index 2f3bf68c891b1aeb3b80e2c72583a08745238acb..32cc8d864f30eebabd88279bb8087bb00133a441 100644 (file)
                {% endif %}
 
                {{ render_field(form.fileUpload, fieldclass="form-control-file") }}
+
+               <div class="row">
+                       {{ render_field(form.min_rel, class_="col-sm-6") }}
+                       {{ render_field(form.max_rel, class_="col-sm-6") }}
+               </div>
+
                {{ render_submit_field(form.submit) }}
        </form>
 {% endblock %}
index b314b810c2d6d5b8670f0d6d4dd20f4c30ebbc24..98a72a16e51bcdd717894ca2807e95563c65d36f 100644 (file)
@@ -27,12 +27,18 @@ from celery import uuid
 from flask_wtf import FlaskForm
 from wtforms import *
 from wtforms.validators import *
+from wtforms.ext.sqlalchemy.fields import QuerySelectField
+
 
 class CreatePackageReleaseForm(FlaskForm):
        title      = StringField("Title", [InputRequired(), Length(1, 30)])
        uploadOpt  = RadioField ("Method", choices=[("upload", "File Upload")], default="upload")
        vcsLabel   = StringField("VCS Commit or Branch", default="master")
        fileUpload = FileField("File Upload")
+       min_rel    = QuerySelectField("Minimum Minetest Version", [InputRequired()],
+                       query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name)
+       max_rel    = QuerySelectField("Maximum Minetest Version", [InputRequired()],
+                       query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name)
        submit     = SubmitField("Save")
 
 class EditPackageReleaseForm(FlaskForm):
@@ -40,6 +46,10 @@ class EditPackageReleaseForm(FlaskForm):
        url      = StringField("URL", [URL])
        task_id  = StringField("Task ID")
        approved = BooleanField("Is Approved")
+       min_rel  = QuerySelectField("Minimum Minetest Version", [InputRequired()],
+                       query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name)
+       max_rel  = QuerySelectField("Maximum Minetest Version", [InputRequired()],
+                       query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name)
        submit   = SubmitField("Save")
 
 @app.route("/packages/<author>/<name>/releases/new/", methods=["GET", "POST"])
@@ -63,6 +73,8 @@ def create_release_page(package):
                        rel.title   = form["title"].data
                        rel.url     = ""
                        rel.task_id = uuid()
+                       rel.min_rel = form["min_rel"].data.getActual()
+                       rel.max_rel = form["max_rel"].data.getActual()
                        db.session.add(rel)
                        db.session.commit()
 
@@ -80,6 +92,8 @@ def create_release_page(package):
                                rel.package = package
                                rel.title = form["title"].data
                                rel.url = uploadedPath
+                               rel.min_rel = form["min_rel"].data.getActual()
+                               rel.max_rel = form["max_rel"].data.getActual()
                                db.session.add(rel)
                                db.session.commit()
 
@@ -128,6 +142,8 @@ def edit_release_page(package, id):
                wasApproved = release.approved
                if canEdit:
                        release.title = form["title"].data
+                       release.min_rel = form["min_rel"].data.getActual()
+                       release.max_rel = form["max_rel"].data.getActual()
 
                if package.checkPerm(current_user, Permission.CHANGE_RELEASE_URL):
                        release.url = form["url"].data
index 93e86bccac799b47829fc4c6a179e644b5667f4d..a7e71e69b685b7b117afa193b773078526525b1a 100644 (file)
@@ -15,12 +15,13 @@ services:
 
   app:
     build: .
-    command: ./runprodguni.sh
+    command: ./rundebug.sh
     ports:
       - 5123:5123
     volumes:
       - "./data/uploads:/home/cdb/app/public/uploads"
       - "./app:/home/cdb/app"
+      - "./migrations:/home/cdb/migrations"
     depends_on:
       - db
       - redis
diff --git a/migrations/versions/7def3e843d04_.py b/migrations/versions/7def3e843d04_.py
new file mode 100644 (file)
index 0000000..80ffac6
--- /dev/null
@@ -0,0 +1,41 @@
+"""empty message
+
+Revision ID: 7def3e843d04
+Revises: dce69ad1e4eb
+Create Date: 2019-01-28 20:27:33.760232
+
+"""
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import postgresql
+
+# revision identifiers, used by Alembic.
+revision = '7def3e843d04'
+down_revision = 'dce69ad1e4eb'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.create_table('minetest_release',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('name', sa.String(length=100), nullable=False),
+    sa.PrimaryKeyConstraint('id'),
+    sa.UniqueConstraint('name')
+    )
+    op.add_column('package_release', sa.Column('max_rel_id', sa.Integer(), nullable=True, server_default=None))
+    op.add_column('package_release', sa.Column('min_rel_id', sa.Integer(), nullable=True, server_default=None))
+    op.create_foreign_key(None, 'package_release', 'minetest_release', ['max_rel_id'], ['id'])
+    op.create_foreign_key(None, 'package_release', 'minetest_release', ['min_rel_id'], ['id'])
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_constraint(None, 'package_release', type_='foreignkey')
+    op.drop_constraint(None, 'package_release', type_='foreignkey')
+    op.drop_column('package_release', 'min_rel_id')
+    op.drop_column('package_release', 'max_rel_id')
+    op.drop_table('minetest_release')
+    # ### end Alembic commands ###
index 242705941f9140d5381b91720a21220d3bc4b627..31e913751925235ca63862b9072ccb80dea65e3e 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-FLASK_APP=app/__init__.py FLASK_CONFIG=../config.cfg FLASK_DEBUG=1 python3 -m flask run
+FLASK_APP=app/__init__.py FLASK_CONFIG=../config.cfg FLASK_DEBUG=1 python3 -m flask run -h 0.0.0.0 -p 5123
index 995151669b9842d0d72051666feb560efa7666f9..c64450caa6f72a2ceb7efe0886e5fddc07112c64 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-FLASK_APP=app/__init__.py FLASK_CONFIG=../config.prod.cfg FLASK_DEBUG=0 python3 -m flask run -h 0.0.0.0 -p 5123
+FLASK_APP=app/__init__.py FLASK_CONFIG=../config.cfg FLASK_DEBUG=0 python3 -m flask run -h 0.0.0.0 -p 5123
index c7e8bb8855ae7d9eb1c1d24462c2cb64fd0f3257..68c696237d0edc2f3df35e6a866d44fecb246bb4 100644 (file)
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-gunicorn -w 4 -b :5123 -e FLASK_APP=app/__init__.py -e FLASK_CONFIG=../config.prod.cfg -e FLASK_DEBUG=1 app:app
+gunicorn -w 4 -b :5123 -e FLASK_APP=app/__init__.py -e FLASK_CONFIG=../config.cfg -e FLASK_DEBUG=0 app:app