mirror of
https://github.com/openSUSE/osc.git
synced 2025-08-23 14:48:53 +02:00
Merge pull request #1349 from dmach/xmlmodel
Object wrappers for OBS XML
This commit is contained in:
45
osc/core.py
45
osc/core.py
@@ -3865,15 +3865,20 @@ def show_scmsync(apiurl, prj, pac=None):
|
||||
|
||||
|
||||
def show_devel_project(apiurl, prj, pac):
|
||||
m = show_package_meta(apiurl, prj, pac)
|
||||
node = ET.fromstring(b''.join(m)).find('devel')
|
||||
if node is None:
|
||||
from . import obs_api
|
||||
|
||||
package_obj = obs_api.Package.from_api(apiurl, prj, pac)
|
||||
if package_obj.devel is None:
|
||||
return None, None
|
||||
else:
|
||||
return node.get('project'), node.get('package', None)
|
||||
|
||||
# mute a false-positive: Instance of 'dict' has no 'project' member (no-member)
|
||||
# pylint: disable=no-member
|
||||
return package_obj.devel.project, package_obj.devel.package
|
||||
|
||||
|
||||
def set_devel_project(apiurl, prj, pac, devprj=None, devpac=None, print_to="debug"):
|
||||
from . import obs_api
|
||||
|
||||
if devprj:
|
||||
msg = "Setting devel project of"
|
||||
else:
|
||||
@@ -3888,26 +3893,18 @@ def set_devel_project(apiurl, prj, pac, devprj=None, devpac=None, print_to="debu
|
||||
)
|
||||
_private.print_msg(msg, print_to=print_to)
|
||||
|
||||
meta = show_package_meta(apiurl, prj, pac)
|
||||
root = ET.fromstring(b''.join(meta))
|
||||
node = root.find('devel')
|
||||
if node is None:
|
||||
if devprj is None:
|
||||
return
|
||||
node = ET.Element('devel')
|
||||
root.append(node)
|
||||
package_obj = obs_api.Package.from_api(apiurl, prj, pac)
|
||||
|
||||
if devprj is None:
|
||||
package_obj.devel = None
|
||||
else:
|
||||
if devprj is None:
|
||||
root.remove(node)
|
||||
else:
|
||||
node.clear()
|
||||
if devprj:
|
||||
node.set('project', devprj)
|
||||
if devpac:
|
||||
node.set('package', devpac)
|
||||
url = makeurl(apiurl, ['source', prj, pac, '_meta'])
|
||||
mf = metafile(url, ET.tostring(root, encoding=ET_ENCODING))
|
||||
mf.sync()
|
||||
package_obj.devel = {"project": devprj, "package": devpac}
|
||||
|
||||
if package_obj.has_changed():
|
||||
return package_obj.to_api(apiurl)
|
||||
|
||||
# TODO: debug log that we have skipped the API call
|
||||
return None
|
||||
|
||||
|
||||
def show_package_disabled_repos(apiurl: str, prj: str, pac: str):
|
||||
|
Reference in New Issue
Block a user