]> TLD Linux GIT Repositories - tld-builder.git/blobdiff - TLD_Builder/request_handler.py
- PLD merge, fully (re)TLDized
[tld-builder.git] / TLD_Builder / request_handler.py
similarity index 86%
rename from PLD_Builder/request_handler.py
rename to TLD_Builder/request_handler.py
index 2c38e83069b7863046a11ba95908617ba93f1994..033cf39d8760b4c605db7a478a04be9beaedbd4e 100644 (file)
@@ -16,9 +16,11 @@ import util
 import wrap
 import status
 from acl import acl
+from blacklist import blacklist
 from lock import lock
 from bqueue import B_Queue
 from config import config, init_conf
+from mailer import Message
 
 def check_double_id(id):
     id_nl = id + "\n"
@@ -45,7 +47,8 @@ def handle_group(r, user):
         else:
             spec = "None.spec"
         log.error("%s: %s" % (spec, msg))
-        m = user.message_to()
+        m = Message()
+        m.set_headers(to = r.requester_email, cc = config.builder_list)
         m.set_headers(subject = "building %s failed" % spec)
         m.write_line(msg)
         m.send()
@@ -55,6 +58,15 @@ def handle_group(r, user):
         lockf.close()
         return
 
+    try:
+        if (user.change_requester and r.requester):
+            user = acl.user_by_login(r.requester)
+    except KeyError:
+        r.requester += '/' + user.get_login()
+    else:
+        r.requester = user.get_login()
+        r.requester_email = user.mail_to()
+
     for batch in r.batches:
 
         if not user.can_do("src", config.builder, batch.branch):
@@ -112,10 +124,21 @@ def handle_group(r, user):
                                 % (user.get_login(), pkg, bld, batch.branch))
                     lockf.close()
                     return
+            if not "test-build" in r.flags and not user.can_do("ready", bld, batch.branch):
+                fail_mail("user %s is not allowed to send ready builds (ready:%s:%s)" \
+                     % (user.get_login(), bld, batch.branch))
+                lockf.close()
+                return
+
+            pkg = batch.spec
+            if pkg.endswith(".spec"):
+                pkg = pkg[:-5]
+            if not "test-build" in r.flags and blacklist.package(pkg):
+                fail_mail("package '%s' is blacklisted, only test-builds allowed" % pkg)
+                lockf.close()
+                return
 
     r.priority = user.check_priority(r.priority,config.builder)
-    r.requester = user.get_login()
-    r.requester_email = user.mail_to()
     r.time = time.time()
     log.notice("queued %s from %s" % (r.id, user.get_login()))
     q = B_Queue(path.queue_file)
@@ -190,6 +213,7 @@ def handle_request(req, filename = None):
 
 def handle_request_main(req, filename = None):
     acl.try_reload()
+    blacklist.try_reload()
     init_conf("src")
     status.push("handling email request")
     ret = handle_request(req, filename = filename)