[dak/master] daklib/archive.py, daklib/checks.py: implement upload blocks
---
daklib/archive.py | 1 +
daklib/checks.py | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/daklib/archive.py b/daklib/archive.py
index b96b989..6024e3e 100644
--- a/daklib/archive.py
+++ b/daklib/archive.py
@@ -795,6 +795,7 @@ class ArchiveUpload(object):
for chk in (
checks.SignatureCheck,
checks.ChangesCheck,
+ checks.UploadBlockCheck,
checks.HashesCheck,
checks.SourceCheck,
checks.BinaryCheck,
diff --git a/daklib/checks.py b/daklib/checks.py
index 3895bb2..d05c71f 100644
--- a/daklib/checks.py
+++ b/daklib/checks.py
@@ -438,6 +438,25 @@ class ACLCheck(Check):
return True
+class UploadBlockCheck(Check):
+ """check for upload blocks"""
+ def check(self, upload):
+ session = upload.session
+ control = upload.changes.changes
+
+ source = re_field_source.match(control['Source']).group('package')
+ version = control['Version']
+ blocks = session.query(UploadBlock).filter_by(source=source) \
+ .filter((UploadBlock.version == version) | (UploadBlock.version == None))
+
+ for block in blocks:
+ if block.fingerprint == upload.fingerprint:
+ raise Reject('Manual upload block in place for package {0} and fingerprint {1}:\n{2}'.format(source, upload.fingerprint.fingerprint, block.reason))
+ if block.uid == upload.fingerprint.uid:
+ raise Reject('Manual upload block in place for package {0} and uid {1}:\n{2}'.format(source, block.uid.uid, block.reason))
+
+ return True
+
class NoSourceOnlyCheck(Check):
"""Check for source-only upload
--
1.7.2.5
Reply to: