Hide VCS release option when not available

This commit is contained in:
rubenwardy 2018-05-24 19:02:27 +01:00
parent b93a612207
commit 746ce990bd
No known key found for this signature in database
GPG Key ID: A1E29D52FF81513C
3 changed files with 33 additions and 8 deletions

View File

@ -18,6 +18,7 @@
from flask import Flask, url_for from flask import Flask, url_for
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate from flask_migrate import Migrate
from urllib.parse import urlparse
from app import app from app import app
from datetime import datetime from datetime import datetime
from sqlalchemy.orm import validates from sqlalchemy.orm import validates
@ -339,6 +340,26 @@ class Package(db.Model):
return None return None
def canImportScreenshot(self):
if self.repo is None:
return False
url = urlparse(self.repo)
if url.netloc == "github.com":
return True
return False
def canMakeReleaseFromVCS(self):
if self.repo is None:
return False
url = urlparse(self.repo)
if url.netloc == "github.com":
return True
return False
def checkPerm(self, user, perm): def checkPerm(self, user, perm):
if not user.is_authenticated: if not user.is_authenticated:
return False return False

View File

@ -11,7 +11,9 @@
{{ render_field(form.title) }} {{ render_field(form.title) }}
{{ render_field(form.uploadOpt) }} {{ render_field(form.uploadOpt) }}
{% if package.canMakeReleaseFromVCS() %}
{{ render_field(form.vcsLabel) }} {{ render_field(form.vcsLabel) }}
{% endif %}
{{ render_field(form.fileUpload) }} {{ render_field(form.fileUpload) }}
{{ render_submit_field(form.submit) }} {{ render_submit_field(form.submit) }}
</form> </form>

View File

@ -25,7 +25,6 @@ from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease
from app.utils import * from app.utils import *
from celery import uuid from celery import uuid
from urllib.parse import urlparse
from flask_wtf import FlaskForm from flask_wtf import FlaskForm
from wtforms import * from wtforms import *
from wtforms.validators import * from wtforms.validators import *
@ -188,9 +187,7 @@ def create_edit_package_page(author=None, name=None):
db.session.commit() # save db.session.commit() # save
if wasNew: if wasNew and package.canImportScreenshot():
url = urlparse(package.repo)
if url.netloc == "github.com":
task = importRepoScreenshot.delay(package.id) task = importRepoScreenshot.delay(package.id)
return redirect(url_for("check_task", id=task.id, r=package.getDetailsURL())) return redirect(url_for("check_task", id=task.id, r=package.getDetailsURL()))
@ -395,7 +392,7 @@ def reject_editrequest_page(package, id):
class CreatePackageReleaseForm(FlaskForm): class CreatePackageReleaseForm(FlaskForm):
name = StringField("Name") name = StringField("Name")
title = StringField("Title") title = StringField("Title")
uploadOpt = RadioField ("File", choices=[("vcs", "From VCS Commit or Branch"), ("upload", "File Upload")]) uploadOpt = RadioField ("Method", choices=[("upload", "File Upload")], default="upload")
vcsLabel = StringField("VCS Commit or Branch", default="master") vcsLabel = StringField("VCS Commit or Branch", default="master")
fileUpload = FileField("File Upload") fileUpload = FileField("File Upload")
submit = SubmitField("Save") submit = SubmitField("Save")
@ -417,6 +414,11 @@ def create_release_page(package):
# Initial form class from post data and default data # Initial form class from post data and default data
form = CreatePackageReleaseForm() form = CreatePackageReleaseForm()
if package.canMakeReleaseFromVCS():
form["uploadOpt"].choices = [("vcs", "From VCS Commit or Branch"), ("upload", "File Upload")]
if request.method != "POST":
form["uploadOpt"].data = "vcs"
if request.method == "POST" and form.validate(): if request.method == "POST" and form.validate():
if form["uploadOpt"].data == "vcs": if form["uploadOpt"].data == "vcs":
rel = PackageRelease() rel = PackageRelease()