X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=inline;f=daklib%2Fchecks.py;h=d05c71fdaf66a51ac2fded6123702d7786a57724;hb=d066a0848f6c48e0e49d826b5edcf025e5f88957;hp=3895bb29fef044e90c3758c6fcd8c9119fd3fc53;hpb=1b70efbb284c409256589036ffe6d54c832421ea;p=dak.git diff --git a/daklib/checks.py b/daklib/checks.py index 3895bb29..d05c71fd 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