From e7acd7faa38f4c08beb6e674deab976181034103 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 29 May 2018 20:17:18 +0100 Subject: [PATCH] Add separate media license Fixes #91 --- app/models.py | 6 +++-- app/templates/packages/create_edit.html | 1 + app/templates/packages/view.html | 9 ++++++- app/views/packages/__init__.py | 1 + migrations/versions/aa6d7b595a94_.py | 35 +++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 migrations/versions/aa6d7b595a94_.py diff --git a/app/models.py b/app/models.py index 5a4cfac..25a4300 100644 --- a/app/models.py +++ b/app/models.py @@ -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) diff --git a/app/templates/packages/create_edit.html b/app/templates/packages/create_edit.html index 24a23b6..ee05940 100644 --- a/app/templates/packages/create_edit.html +++ b/app/templates/packages/create_edit.html @@ -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") }}

Dependency Info

diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index 3633a9d..93f6645 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -92,7 +92,14 @@ License - {{ package.license.name }} + + {% if package.license != package.media_license %} + {{ package.license.name }} for code,
+ {{ package.media_license.name }} for media. + {% else %} + {{ package.license.name }} + {% endif %} + Added diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py index 8d201ce..2a28876 100644 --- a/app/views/packages/__init__.py +++ b/app/views/packages/__init__.py @@ -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 index 0000000..784082f --- /dev/null +++ b/migrations/versions/aa6d7b595a94_.py @@ -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 ###