Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 57b20d0e08e0da5ff0e0efdd2cde2fd8bd6b25b3
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Thu Jul 30 12:05:16 2015 +0200
[frontend] forbid resubmit build for srpm_upload source type
---------------------------------------------------------------
frontend/coprs_frontend/coprs/helpers.py | 5 ++-
frontend/coprs_frontend/coprs/models.py | 46 +++++++++++++++--------------
2 files changed, 27 insertions(+), 24 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/helpers.py
b/frontend/coprs_frontend/coprs/helpers.py
index d5a4474..b9a4c8d 100644
--- a/frontend/coprs_frontend/coprs/helpers.py
+++ b/frontend/coprs_frontend/coprs/helpers.py
@@ -92,8 +92,9 @@ class StatusEnum(object):
class BuildSourceEnum(object):
__metaclass__ = EnumType
vals = {"unset": 0,
- "srpm_link": 1, # url
- "srpm_upload": 2} # pkg, tmp
+ "srpm_link": 1, # url
+ "srpm_upload": 2} # pkg, tmp
+
class Paginator(object):
diff --git a/frontend/coprs_frontend/coprs/models.py
b/frontend/coprs_frontend/coprs/models.py
index df8a44e..47385ec 100644
--- a/frontend/coprs_frontend/coprs/models.py
+++ b/frontend/coprs_frontend/coprs/models.py
@@ -10,6 +10,7 @@ from coprs import helpers
import itertools
import operator
+from coprs.helpers import BuildSourceEnum, StatusEnum, ActionTypeEnum
class User(db.Model, helpers.Serializer):
@@ -415,18 +416,18 @@ class Build(db.Model, helpers.Serializer):
# FIXME bad name
# used when checking if the repo is initialized and results can be set
# i think this is the only purpose - check
- return helpers.StatusEnum("pending") in self.chroot_states or \
- helpers.StatusEnum("starting") in self.chroot_states
+ return StatusEnum("pending") in self.chroot_states or \
+ StatusEnum("starting") in self.chroot_states
@property
def has_unfinished_chroot(self):
- return helpers.StatusEnum("pending") in self.chroot_states or \
- helpers.StatusEnum("starting") in self.chroot_states or \
- helpers.StatusEnum("running") in self.chroot_states
+ return StatusEnum("pending") in self.chroot_states or \
+ StatusEnum("starting") in self.chroot_states or \
+ StatusEnum("running") in self.chroot_states
@property
def has_importing_chroot(self):
- return helpers.StatusEnum("importing") in self.chroot_states
+ return StatusEnum("importing") in self.chroot_states
@property
def status(self):
@@ -434,11 +435,11 @@ class Build(db.Model, helpers.Serializer):
Return build status according to build status of its chroots
"""
if self.canceled:
- return helpers.StatusEnum("canceled")
+ return StatusEnum("canceled")
for state in ["failed", "running", "starting",
"importing", "pending", "succeeded", "skipped"]:
- if helpers.StatusEnum(state) in self.chroot_states:
- return helpers.StatusEnum(state)
+ if StatusEnum(state) in self.chroot_states:
+ return StatusEnum(state)
@property
def state(self):
@@ -447,7 +448,7 @@ class Build(db.Model, helpers.Serializer):
"""
if self.status is not None:
- return helpers.StatusEnum(self.status)
+ return StatusEnum(self.status)
return "unknown"
@@ -459,8 +460,8 @@ class Build(db.Model, helpers.Serializer):
Build is cancelabel only when it's pending (not started)
"""
- return self.status == helpers.StatusEnum("pending") or \
- self.status == helpers.StatusEnum("importing")
+ return self.status == StatusEnum("pending") or \
+ self.status == StatusEnum("importing")
@property
def repeatable(self):
@@ -469,10 +470,11 @@ class Build(db.Model, helpers.Serializer):
Build is repeatable only if it's not pending, starting or running
"""
-
- return self.status not in [helpers.StatusEnum("pending"),
- helpers.StatusEnum("starting"),
- helpers.StatusEnum("running"), ]
+ if self.source_type == BuildSourceEnum("srpm_upload"):
+ return False
+ return self.status not in [StatusEnum("pending"),
+ StatusEnum("starting"),
+ StatusEnum("running"), ]
@property
def deletable(self):
@@ -578,7 +580,7 @@ class BuildChroot(db.Model, helpers.Serializer):
primary_key=True)
build = db.relationship("Build",
backref=db.backref("build_chroots"))
git_hash = db.Column(db.String(40))
- status = db.Column(db.Integer, default=helpers.StatusEnum("importing"))
+ status = db.Column(db.Integer, default=StatusEnum("importing"))
started_on = db.Column(db.Integer)
ended_on = db.Column(db.Integer)
@@ -598,7 +600,7 @@ class BuildChroot(db.Model, helpers.Serializer):
"""
if self.status is not None:
- return helpers.StatusEnum(self.status)
+ return StatusEnum(self.status)
return "unknown"
@@ -643,7 +645,7 @@ class Action(db.Model, helpers.Serializer):
"""
id = db.Column(db.Integer, primary_key=True)
- # delete, rename, ...; see helpers.ActionTypeEnum
+ # delete, rename, ...; see ActionTypeEnum
action_type = db.Column(db.Integer, nullable=False)
# copr, ...; downcase name of class of modified object
object_type = db.Column(db.String(20))
@@ -668,13 +670,13 @@ class Action(db.Model, helpers.Serializer):
return self.__unicode__()
def __unicode__(self):
- if self.action_type == helpers.ActionTypeEnum("delete"):
+ if self.action_type == ActionTypeEnum("delete"):
return "Deleting {0} {1}".format(self.object_type, self.old_value)
- elif self.action_type == helpers.ActionTypeEnum("rename"):
+ elif self.action_type == ActionTypeEnum("rename"):
return "Renaming {0} from {1} to {2}.".format(self.object_type,
self.old_value,
self.new_value)
- elif self.action_type == helpers.ActionTypeEnum("legal-flag"):
+ elif self.action_type == ActionTypeEnum("legal-flag"):
return "Legal flag on copr {0}.".format(self.old_value)
return "Action {0} on {1}, old value: {2}, new value: {3}.".format(