]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add separate media license
authorrubenwardy <rw@rubenwardy.com>
Tue, 29 May 2018 19:17:18 +0000 (20:17 +0100)
committerrubenwardy <rw@rubenwardy.com>
Tue, 29 May 2018 19:17:18 +0000 (20:17 +0100)
Fixes #91

app/models.py
app/templates/packages/create_edit.html
app/templates/packages/view.html
app/views/packages/__init__.py
migrations/versions/aa6d7b595a94_.py [new file with mode: 0644]

index 5a4cfac1ea77948d7afeda1ffae2230f6a21c621..25a4300bf7b4c84376d7cbe87cb59de24659fefc 100644 (file)
@@ -186,7 +186,6 @@ class Notification(db.Model):
 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
@@ -327,7 +326,10 @@ class Package(db.Model):
        type         = db.Column(db.Enum(PackageType))
        created_at   = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
 
-       license_id   = db.Column(db.Integer, db.ForeignKey("license.id"))
+       license_id   = db.Column(db.Integer, db.ForeignKey("license.id"), nullable=False, default=1)
+       license      = db.relationship("License", foreign_keys=[license_id])
+       media_license_id = db.Column(db.Integer, db.ForeignKey("license.id"), nullable=False, default=1)
+       media_license    = db.relationship("License", foreign_keys=[media_license_id])
 
        approved     = db.Column(db.Boolean, nullable=False, default=False)
        soft_deleted = db.Column(db.Boolean, nullable=False, default=False)
index 24a23b6330d833e2bfb38fffbcb7f8e164e5d603..ee05940d0779e4d20b848670cf87a059168b4233 100644 (file)
@@ -57,6 +57,7 @@
                {{ render_field(form.desc, class_="pkg_meta") }}
                {{ render_multiselect_field(form.tags, class_="pkg_meta") }}
                {{ render_field(form.license, class_="pkg_meta") }}
+               {{ render_field(form.media_license, class_="pkg_meta") }}
 
                <div class="pkg_meta">
                        <h2 class="not_txp">Dependency Info</h2>
index 3633a9d658667fd6860d333fe57eb112520a35ca..93f6645d429e39711e5d6dcdd4005b0c695192b0 100644 (file)
                                </tr>
                                <tr>
                                        <td>License</td>
-                                       <td>{{ package.license.name }}</td>
+                                       <td>
+                                               {% if package.license != package.media_license %}
+                                                       {{ package.license.name }} for code,<br />
+                                                       {{ package.media_license.name }} for media.
+                                               {% else %}
+                                                       {{ package.license.name }}
+                                               {% endif %}
+                                       </td>
                                </tr>
                                <tr>
                                        <td>Added</td>
index 8d201ce24718d0fae7e5bbf4e74865c60554c9da..2a28876dd4046600e55a7388f60b2e8c86d281ab 100644 (file)
@@ -116,6 +116,7 @@ class PackageForm(FlaskForm):
        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", [InputRequired()], query_factory=lambda: License.query, get_pk=lambda a: a.id, get_label=lambda a: a.name)
+       media_license = QuerySelectField("Media License", [InputRequired()], query_factory=lambda: License.query, get_pk=lambda a: a.id, get_label=lambda a: a.name)
        provides_str  = StringField("Provides (mods included in package)", [Optional(), Length(0,1000)])
        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(), Length(0,1000)])
diff --git a/migrations/versions/aa6d7b595a94_.py b/migrations/versions/aa6d7b595a94_.py
new file mode 100644 (file)
index 0000000..784082f
--- /dev/null
@@ -0,0 +1,35 @@
+"""empty message
+
+Revision ID: aa6d7b595a94
+Revises: aa6d21889d22
+Create Date: 2018-05-29 20:09:56.647358
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'aa6d7b595a94'
+down_revision = 'aa6d21889d22'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.add_column('package', sa.Column('media_license_id', sa.Integer()))
+    op.execute('UPDATE package SET media_license_id=license_id')
+    op.alter_column('package', 'media_license_id', nullable=False)
+    op.alter_column('package', 'license_id', existing_type=sa.INTEGER(),  nullable=False)
+    op.create_foreign_key(None, 'package', 'license', ['media_license_id'], ['id'])
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.alter_column('package', 'license_id',
+               existing_type=sa.INTEGER(),
+               nullable=True)
+    op.drop_column('package', 'media_license_id')
+    # ### end Alembic commands ###