''.join([node.get('project') + '/' + node.get('package') for node in s.findall('linked')])
return s_dict
+ def is_lock_project(self, project):
+ """
+ is lock project
+ """
+ flag = 'lock'
+ value = 'enable'
+ meta = self.get_meta(project)
+ root = ElementTree.fromstring(meta)
+ elem = root.find(flag)
+ if elem is None:
+ return False
+
+ return True
+
+ def set_lock_project(self, project):
+ """
+ set lock project in meta
+ """
+ flag = 'lock'
+ value = 'enable'
+ meta = self.get_meta(project)
+ root = ElementTree.fromstring(meta)
+ elem = root.find(flag)
+ if elem is None:
+ elem = ElementTree.SubElement(root, flag)
+ else:
+ # remove all globel subelements, i.e. subelements without
+ # properties: <enable/> or <disable/>
+ for subelem in list(elem):
+ if not subelem.keys():
+ elem.remove(subelem)
+ ElementTree.SubElement(elem, value)
+ self.set_meta(ElementTree.tostring(root), project)
+
+ def set_unlock_project(self, project, comment):
+ """
+ set unlock project
+ """
+ flag = 'lock'
+ value = 'enable'
+ meta = self.get_meta(project)
+ root = ElementTree.fromstring(meta)
+ elem = root.find(flag)
+ if elem is None:
+ raise ObsError("This project is not locked status")
+
+ query = { 'cmd': 'unlock' }
+ if comment:
+ query['comment'] = comment
+ else:
+ raise ObsError("could not unlock for project")
+
+ u = core.makeurl(self.apiurl, ['source', project], query=query)
+ try:
+ f = core.http_POST(u)
+ except urllib2.HTTPError, e:
+ raise ObsError("could not unlock for project \'%s\'" % (project))
+
+ return
+
if action in ("accept", "accepted", "reject", "declined"):
state = "accepted" if action == "accept" or action == "accepted" else "declined"
print "Submission %s has been %sed" % (submission, action)
+ prj = get_project_by_name(build, submission, target_project)[0]
+ if build.is_lock_project(prj):
+ build.set_unlock_project(prj, comment)
+
return accept_or_reject(build, submission, state,
target_project, comment)
elif action == "rebuild":
print "Submission %s has been rebuilt" % submission
elif action == "remove":
prj = get_project_by_name(build, submission, target_project)[0]
+ if build.is_lock_project(prj):
+ build.set_unlock_project(prj, comment)
build.delete_project(prj, force=True, msg=comment)
print "Submission %s has been removed" % submission
elif action in ("lock", "unlock"):
prj = get_project_by_name(build, submission, target_project)[0]
- status = "disable" if action == "lock" else "enable"
+ if action == "lock":
+ build.set_lock_project(prj)
+ elif action == "unlock":
+ comment = "Comments: submission %s \n" \
+ % (submission)
+ build.set_unlock_project(prj, comment)
+ else:
+ print "exception"
+ print "Submission %s has been %sed" % (submission, action)
+ elif action in ("enable", "disable"):
+ prj = get_project_by_name(build, submission, target_project)[0]
+ status = "disable" if action == "disable" else "enable"
build.set_global_flag("build", status, prj)
print "Submission %s has been %sed" % (submission, action)
else: