mirror of
https://github.com/openSUSE/osc.git
synced 2025-03-01 13:42:12 +01:00
Remove all path quoting, rely on makeurl()
This commit is contained in:
parent
dcd147f52d
commit
0f8a8430fc
@ -21,7 +21,7 @@ from . import conf
|
|||||||
from . import connection
|
from . import connection
|
||||||
from . import core
|
from . import core
|
||||||
from . import oscerr
|
from . import oscerr
|
||||||
from .core import get_buildinfo, meta_exists, quote_plus, get_buildconfig, dgst
|
from .core import get_buildinfo, meta_exists, get_buildconfig, dgst
|
||||||
from .core import get_binarylist, get_binary_file, run_external, return_external, raw_input
|
from .core import get_binarylist, get_binary_file, run_external, return_external, raw_input
|
||||||
from .fetch import Fetcher, OscFileGrabber, verify_pacs
|
from .fetch import Fetcher, OscFileGrabber, verify_pacs
|
||||||
from .meter import create_text_meter
|
from .meter import create_text_meter
|
||||||
@ -1021,13 +1021,13 @@ def main(apiurl, store, opts, argv):
|
|||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
if e.code == 404:
|
if e.code == 404:
|
||||||
# check what caused the 404
|
# check what caused the 404
|
||||||
if meta_exists(metatype='prj', path_args=(quote_plus(prj), ),
|
if meta_exists(metatype='prj', path_args=(prj, ),
|
||||||
template_args=None, create_new=False, apiurl=apiurl):
|
template_args=None, create_new=False, apiurl=apiurl):
|
||||||
pkg_meta_e = None
|
pkg_meta_e = None
|
||||||
try:
|
try:
|
||||||
# take care, not to run into double trouble.
|
# take care, not to run into double trouble.
|
||||||
pkg_meta_e = meta_exists(metatype='pkg', path_args=(quote_plus(prj),
|
pkg_meta_e = meta_exists(metatype='pkg', path_args=(prj, pac),
|
||||||
quote_plus(pac)), template_args=None, create_new=False,
|
template_args=None, create_new=False,
|
||||||
apiurl=apiurl)
|
apiurl=apiurl)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
@ -1949,7 +1949,7 @@ class Osc(cmdln.Cmdln):
|
|||||||
edit=True,
|
edit=True,
|
||||||
force=opts.force,
|
force=opts.force,
|
||||||
remove_linking_repositories=opts.remove_linking_repositories,
|
remove_linking_repositories=opts.remove_linking_repositories,
|
||||||
path_args=quote_plus(project),
|
path_args=(project, ),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
msg=opts.message,
|
msg=opts.message,
|
||||||
template_args=({
|
template_args=({
|
||||||
@ -1958,7 +1958,7 @@ class Osc(cmdln.Cmdln):
|
|||||||
elif cmd == 'pkg':
|
elif cmd == 'pkg':
|
||||||
edit_meta(metatype='pkg',
|
edit_meta(metatype='pkg',
|
||||||
edit=True,
|
edit=True,
|
||||||
path_args=(quote_plus(project), quote_plus(package)),
|
path_args=(project, package),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
template_args=({
|
template_args=({
|
||||||
'name': package,
|
'name': package,
|
||||||
@ -1966,20 +1966,20 @@ class Osc(cmdln.Cmdln):
|
|||||||
elif cmd == 'prjconf':
|
elif cmd == 'prjconf':
|
||||||
edit_meta(metatype='prjconf',
|
edit_meta(metatype='prjconf',
|
||||||
edit=True,
|
edit=True,
|
||||||
path_args=quote_plus(project),
|
path_args=(project, ),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
msg=opts.message,
|
msg=opts.message,
|
||||||
template_args=None)
|
template_args=None)
|
||||||
elif cmd == 'user':
|
elif cmd == 'user':
|
||||||
edit_meta(metatype='user',
|
edit_meta(metatype='user',
|
||||||
edit=True,
|
edit=True,
|
||||||
path_args=(quote_plus(user)),
|
path_args=(user, ),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
template_args=({'user': user}))
|
template_args=({'user': user}))
|
||||||
elif cmd == 'group':
|
elif cmd == 'group':
|
||||||
edit_meta(metatype='group',
|
edit_meta(metatype='group',
|
||||||
edit=True,
|
edit=True,
|
||||||
path_args=(quote_plus(group)),
|
path_args=(group, ),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
template_args=({'group': group}))
|
template_args=({'group': group}))
|
||||||
elif cmd == 'pattern':
|
elif cmd == 'pattern':
|
||||||
@ -1992,7 +1992,7 @@ class Osc(cmdln.Cmdln):
|
|||||||
edit_meta(
|
edit_meta(
|
||||||
metatype='attribute',
|
metatype='attribute',
|
||||||
edit=True,
|
edit=True,
|
||||||
path_args=(quote_plus(project), quote_plus(opts.attribute)),
|
path_args=(project, opts.attribute),
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
# PUT is not supported
|
# PUT is not supported
|
||||||
method="POST",
|
method="POST",
|
||||||
@ -2061,32 +2061,32 @@ class Osc(cmdln.Cmdln):
|
|||||||
remove_linking_repositories=opts.remove_linking_repositories,
|
remove_linking_repositories=opts.remove_linking_repositories,
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
msg=opts.message,
|
msg=opts.message,
|
||||||
path_args=quote_plus(project))
|
path_args=(project, ))
|
||||||
elif cmd == 'pkg':
|
elif cmd == 'pkg':
|
||||||
edit_meta(metatype='pkg',
|
edit_meta(metatype='pkg',
|
||||||
data=f,
|
data=f,
|
||||||
edit=opts.edit,
|
edit=opts.edit,
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
path_args=(quote_plus(project), quote_plus(package)))
|
path_args=(project, package))
|
||||||
elif cmd == 'prjconf':
|
elif cmd == 'prjconf':
|
||||||
edit_meta(metatype='prjconf',
|
edit_meta(metatype='prjconf',
|
||||||
data=f,
|
data=f,
|
||||||
edit=opts.edit,
|
edit=opts.edit,
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
msg=opts.message,
|
msg=opts.message,
|
||||||
path_args=quote_plus(project))
|
path_args=(project, ))
|
||||||
elif cmd == 'user':
|
elif cmd == 'user':
|
||||||
edit_meta(metatype='user',
|
edit_meta(metatype='user',
|
||||||
data=f,
|
data=f,
|
||||||
edit=opts.edit,
|
edit=opts.edit,
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
path_args=(quote_plus(user)))
|
path_args=(user, ))
|
||||||
elif cmd == 'group':
|
elif cmd == 'group':
|
||||||
edit_meta(metatype='group',
|
edit_meta(metatype='group',
|
||||||
data=f,
|
data=f,
|
||||||
edit=opts.edit,
|
edit=opts.edit,
|
||||||
apiurl=apiurl,
|
apiurl=apiurl,
|
||||||
path_args=(quote_plus(group)))
|
path_args=(group, ))
|
||||||
elif cmd == 'pattern':
|
elif cmd == 'pattern':
|
||||||
edit_meta(metatype='pattern',
|
edit_meta(metatype='pattern',
|
||||||
data=f,
|
data=f,
|
||||||
@ -6276,7 +6276,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
query['last'] = 1
|
query['last'] = 1
|
||||||
if opts.lastsucceeded:
|
if opts.lastsucceeded:
|
||||||
query['lastsucceeded'] = 1
|
query['lastsucceeded'] = 1
|
||||||
u = makeurl(self.get_api_url(), ['build', quote_plus(project), quote_plus(repository), quote_plus(arch), quote_plus(package), '_log'], query=query)
|
u = makeurl(self.get_api_url(), ['build', project, repository, arch, package, '_log'], query=query)
|
||||||
f = http_GET(u)
|
f = http_GET(u)
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
offset = int(root.find('entry').get('size'))
|
offset = int(root.find('entry').get('size'))
|
||||||
@ -6289,7 +6289,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
elif opts.offset:
|
elif opts.offset:
|
||||||
offset = int(opts.offset)
|
offset = int(opts.offset)
|
||||||
strip_time = opts.strip_time or conf.config['buildlog_strip_time']
|
strip_time = opts.strip_time or conf.config['buildlog_strip_time']
|
||||||
print_buildlog(apiurl, quote_plus(project), quote_plus(package), quote_plus(repository), quote_plus(arch), offset, strip_time, opts.last, opts.lastsucceeded)
|
print_buildlog(apiurl, project, package, repository, arch, offset, strip_time, opts.last, opts.lastsucceeded)
|
||||||
|
|
||||||
def print_repos(self, repos_only=False, exc_class=oscerr.WrongArgs, exc_msg='Missing arguments', project=None):
|
def print_repos(self, repos_only=False, exc_class=oscerr.WrongArgs, exc_msg='Missing arguments', project=None):
|
||||||
wd = Path.cwd()
|
wd = Path.cwd()
|
||||||
@ -6370,7 +6370,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
query['last'] = 1
|
query['last'] = 1
|
||||||
if opts.lastsucceeded:
|
if opts.lastsucceeded:
|
||||||
query['lastsucceeded'] = 1
|
query['lastsucceeded'] = 1
|
||||||
u = makeurl(self.get_api_url(), ['build', quote_plus(project), quote_plus(repository), quote_plus(arch), quote_plus(package), '_log'], query=query)
|
u = makeurl(self.get_api_url(), ['build', project, repository, arch, package, '_log'], query=query)
|
||||||
f = http_GET(u)
|
f = http_GET(u)
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
offset = int(root.find('entry').get('size'))
|
offset = int(root.find('entry').get('size'))
|
||||||
@ -6383,7 +6383,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
elif opts.offset:
|
elif opts.offset:
|
||||||
offset = int(opts.offset)
|
offset = int(opts.offset)
|
||||||
strip_time = opts.strip_time or conf.config['buildlog_strip_time']
|
strip_time = opts.strip_time or conf.config['buildlog_strip_time']
|
||||||
print_buildlog(apiurl, quote_plus(project), quote_plus(package), quote_plus(repository), quote_plus(arch), offset, strip_time, opts.last, opts.lastsucceeded)
|
print_buildlog(apiurl, project, package, repository, arch, offset, strip_time, opts.last, opts.lastsucceeded)
|
||||||
|
|
||||||
def _find_last_repo_arch(self, repo=None, fatal=True):
|
def _find_last_repo_arch(self, repo=None, fatal=True):
|
||||||
files = glob.glob(os.path.join(Path.cwd(), store, "_buildinfo-*"))
|
files = glob.glob(os.path.join(Path.cwd(), store, "_buildinfo-*"))
|
||||||
@ -8709,7 +8709,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
apiurl = osc_store.Store(project_dir).apiurl
|
apiurl = osc_store.Store(project_dir).apiurl
|
||||||
user = conf.get_apiurl_usr(apiurl)
|
user = conf.get_apiurl_usr(apiurl)
|
||||||
data = meta_exists(metatype='pkg',
|
data = meta_exists(metatype='pkg',
|
||||||
path_args=(quote_plus(project), quote_plus(pac)),
|
path_args=(project, pac),
|
||||||
template_args=({
|
template_args=({
|
||||||
'name': pac,
|
'name': pac,
|
||||||
'user': user}), apiurl=apiurl)
|
'user': user}), apiurl=apiurl)
|
||||||
@ -8723,7 +8723,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
print('error - cannot get meta data', file=sys.stderr)
|
print('error - cannot get meta data', file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
edit_meta(metatype='pkg',
|
edit_meta(metatype='pkg',
|
||||||
path_args=(quote_plus(project), quote_plus(pac)),
|
path_args=(project, pac),
|
||||||
data=data, apiurl=apiurl)
|
data=data, apiurl=apiurl)
|
||||||
Package.init_package(apiurl, project, pac, os.path.join(project_dir, pac))
|
Package.init_package(apiurl, project, pac, os.path.join(project_dir, pac))
|
||||||
else:
|
else:
|
||||||
@ -9254,7 +9254,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
o = open(destfile, 'wb')
|
o = open(destfile, 'wb')
|
||||||
if md5 != '':
|
if md5 != '':
|
||||||
query = {'rev': dir['srcmd5']}
|
query = {'rev': dir['srcmd5']}
|
||||||
u = makeurl(dir['apiurl'], ['source', dir['project'], dir['package'], pathname2url(name)], query=query)
|
u = makeurl(dir['apiurl'], ['source', dir['project'], dir['package'], name], query=query)
|
||||||
for buf in streamfile(u, http_GET, BUFSIZE):
|
for buf in streamfile(u, http_GET, BUFSIZE):
|
||||||
o.write(buf)
|
o.write(buf)
|
||||||
o.close()
|
o.close()
|
||||||
|
43
osc/core.py
43
osc/core.py
@ -36,9 +36,8 @@ from http.client import IncompleteRead
|
|||||||
from io import StringIO
|
from io import StringIO
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional, Dict, Union, List, Iterable
|
from typing import Optional, Dict, Union, List, Iterable
|
||||||
from urllib.parse import urlsplit, urlunsplit, urlparse, quote, quote_plus, urlencode, unquote
|
from urllib.parse import urlsplit, urlunsplit, urlparse, quote, urlencode, unquote
|
||||||
from urllib.error import HTTPError
|
from urllib.error import HTTPError
|
||||||
from urllib.request import pathname2url
|
|
||||||
from xml.etree import ElementTree as ET
|
from xml.etree import ElementTree as ET
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -1116,7 +1115,7 @@ class Project:
|
|||||||
else:
|
else:
|
||||||
user = conf.get_apiurl_usr(self.apiurl)
|
user = conf.get_apiurl_usr(self.apiurl)
|
||||||
edit_meta(metatype='pkg',
|
edit_meta(metatype='pkg',
|
||||||
path_args=(quote_plus(self.name), quote_plus(pac)),
|
path_args=(self.name, pac),
|
||||||
template_args=({
|
template_args=({
|
||||||
'name': pac,
|
'name': pac,
|
||||||
'user': user}),
|
'user': user}),
|
||||||
@ -1171,11 +1170,11 @@ class Project:
|
|||||||
package = store_read_package(pac_path)
|
package = store_read_package(pac_path)
|
||||||
apiurl = store.apiurl
|
apiurl = store.apiurl
|
||||||
if not meta_exists(metatype='pkg',
|
if not meta_exists(metatype='pkg',
|
||||||
path_args=(quote_plus(project), quote_plus(package)),
|
path_args=(project, package),
|
||||||
template_args=None, create_new=False, apiurl=apiurl):
|
template_args=None, create_new=False, apiurl=apiurl):
|
||||||
user = conf.get_apiurl_usr(self.apiurl)
|
user = conf.get_apiurl_usr(self.apiurl)
|
||||||
edit_meta(metatype='pkg',
|
edit_meta(metatype='pkg',
|
||||||
path_args=(quote_plus(project), quote_plus(package)),
|
path_args=(project, package),
|
||||||
template_args=({'name': pac, 'user': user}), apiurl=apiurl)
|
template_args=({'name': pac, 'user': user}), apiurl=apiurl)
|
||||||
p = Package(pac_path)
|
p = Package(pac_path)
|
||||||
p.todo = files
|
p.todo = files
|
||||||
@ -1542,7 +1541,7 @@ class Package:
|
|||||||
def delete_remote_source_file(self, n):
|
def delete_remote_source_file(self, n):
|
||||||
"""delete a remote source file (e.g. from the server)"""
|
"""delete a remote source file (e.g. from the server)"""
|
||||||
query = 'rev=upload'
|
query = 'rev=upload'
|
||||||
u = makeurl(self.apiurl, ['source', self.prjname, self.name, pathname2url(n)], query=query)
|
u = makeurl(self.apiurl, ['source', self.prjname, self.name, n], query=query)
|
||||||
http_DELETE(u)
|
http_DELETE(u)
|
||||||
|
|
||||||
def put_source_file(self, n, tdir, copy_only=False):
|
def put_source_file(self, n, tdir, copy_only=False):
|
||||||
@ -1552,7 +1551,7 @@ class Package:
|
|||||||
# escaping '+' in the URL path (note: not in the URL query string) is
|
# escaping '+' in the URL path (note: not in the URL query string) is
|
||||||
# only a workaround for ruby on rails, which swallows it otherwise
|
# only a workaround for ruby on rails, which swallows it otherwise
|
||||||
if not copy_only:
|
if not copy_only:
|
||||||
u = makeurl(self.apiurl, ['source', self.prjname, self.name, pathname2url(n)], query=query)
|
u = makeurl(self.apiurl, ['source', self.prjname, self.name, n], query=query)
|
||||||
http_PUT(u, file=tfilename)
|
http_PUT(u, file=tfilename)
|
||||||
if n in self.to_be_added:
|
if n in self.to_be_added:
|
||||||
self.to_be_added.remove(n)
|
self.to_be_added.remove(n)
|
||||||
@ -5179,7 +5178,7 @@ def get_group(apiurl: str, group: str):
|
|||||||
|
|
||||||
|
|
||||||
def get_group_meta(apiurl: str, group: str):
|
def get_group_meta(apiurl: str, group: str):
|
||||||
u = makeurl(apiurl, ['group', quote_plus(group)])
|
u = makeurl(apiurl, ['group', group])
|
||||||
try:
|
try:
|
||||||
f = http_GET(u)
|
f = http_GET(u)
|
||||||
return b''.join(f.readlines())
|
return b''.join(f.readlines())
|
||||||
@ -5189,7 +5188,7 @@ def get_group_meta(apiurl: str, group: str):
|
|||||||
|
|
||||||
|
|
||||||
def get_user_meta(apiurl: str, user: str):
|
def get_user_meta(apiurl: str, user: str):
|
||||||
u = makeurl(apiurl, ['person', quote_plus(user)])
|
u = makeurl(apiurl, ['person', user])
|
||||||
try:
|
try:
|
||||||
f = http_GET(u)
|
f = http_GET(u)
|
||||||
return b''.join(f.readlines())
|
return b''.join(f.readlines())
|
||||||
@ -5270,7 +5269,7 @@ def get_source_file(
|
|||||||
query['rev'] = revision
|
query['rev'] = revision
|
||||||
u = makeurl(
|
u = makeurl(
|
||||||
apiurl,
|
apiurl,
|
||||||
["source", prj, package, pathname2url(filename.encode(locale.getpreferredencoding(), "replace"))],
|
["source", prj, package, filename],
|
||||||
query=query,
|
query=query,
|
||||||
)
|
)
|
||||||
download(u, targetfilename, progress_obj, mtime)
|
download(u, targetfilename, progress_obj, mtime)
|
||||||
@ -5701,7 +5700,7 @@ def checkout_package(
|
|||||||
|
|
||||||
# before we create directories and stuff, check if the package actually
|
# before we create directories and stuff, check if the package actually
|
||||||
# exists
|
# exists
|
||||||
meta_data = b''.join(show_package_meta(apiurl, quote_plus(project), quote_plus(package)))
|
meta_data = b''.join(show_package_meta(apiurl, project, package))
|
||||||
root = ET.fromstring(meta_data)
|
root = ET.fromstring(meta_data)
|
||||||
scmsync_element = root.find("scmsync")
|
scmsync_element = root.find("scmsync")
|
||||||
if scmsync_element is not None and scmsync_element.text is not None:
|
if scmsync_element is not None and scmsync_element.text is not None:
|
||||||
@ -5821,7 +5820,7 @@ def link_pac(
|
|||||||
apiurl = conf.config['apiurl']
|
apiurl = conf.config['apiurl']
|
||||||
try:
|
try:
|
||||||
dst_meta = meta_exists(metatype='pkg',
|
dst_meta = meta_exists(metatype='pkg',
|
||||||
path_args=(quote_plus(dst_project), quote_plus(dst_package)),
|
path_args=(dst_project, dst_package),
|
||||||
template_args=None,
|
template_args=None,
|
||||||
create_new=False, apiurl=apiurl)
|
create_new=False, apiurl=apiurl)
|
||||||
root = ET.fromstring(parse_meta_to_string(dst_meta))
|
root = ET.fromstring(parse_meta_to_string(dst_meta))
|
||||||
@ -5951,7 +5950,7 @@ def aggregate_pac(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
dst_meta = meta_exists(metatype='pkg',
|
dst_meta = meta_exists(metatype='pkg',
|
||||||
path_args=(quote_plus(dst_project), quote_plus(dst_package_meta)),
|
path_args=(dst_project, dst_package_meta),
|
||||||
template_args=None,
|
template_args=None,
|
||||||
create_new=False, apiurl=apiurl)
|
create_new=False, apiurl=apiurl)
|
||||||
root = ET.fromstring(parse_meta_to_string(dst_meta))
|
root = ET.fromstring(parse_meta_to_string(dst_meta))
|
||||||
@ -6245,7 +6244,7 @@ def copy_pac(
|
|||||||
src_meta = replace_pkg_meta(src_meta, dst_package, dst_project, keep_maintainers,
|
src_meta = replace_pkg_meta(src_meta, dst_package, dst_project, keep_maintainers,
|
||||||
dst_userid, keep_develproject)
|
dst_userid, keep_develproject)
|
||||||
|
|
||||||
url = make_meta_url('pkg', (quote_plus(dst_project),) + (quote_plus(dst_package),), dst_apiurl)
|
url = make_meta_url('pkg', (dst_project, dst_package), dst_apiurl)
|
||||||
found = None
|
found = None
|
||||||
try:
|
try:
|
||||||
found = http_GET(url).readlines()
|
found = http_GET(url).readlines()
|
||||||
@ -6294,7 +6293,7 @@ def copy_pac(
|
|||||||
with tempfile.NamedTemporaryFile(prefix='osc-copypac') as f:
|
with tempfile.NamedTemporaryFile(prefix='osc-copypac') as f:
|
||||||
get_source_file(src_apiurl, src_project, src_package, filename,
|
get_source_file(src_apiurl, src_project, src_package, filename,
|
||||||
targetfilename=f.name, revision=revision)
|
targetfilename=f.name, revision=revision)
|
||||||
path = ['source', dst_project, dst_package, pathname2url(filename)]
|
path = ['source', dst_project, dst_package, filename]
|
||||||
u = makeurl(dst_apiurl, path, query={'rev': 'repository'})
|
u = makeurl(dst_apiurl, path, query={'rev': 'repository'})
|
||||||
http_PUT(u, file=f.name)
|
http_PUT(u, file=f.name)
|
||||||
tfilelist = Package.commit_filelist(dst_apiurl, dst_project, dst_package,
|
tfilelist = Package.commit_filelist(dst_apiurl, dst_project, dst_package,
|
||||||
@ -7874,10 +7873,10 @@ def addMaintainer(apiurl: str, prj: str, pac: str, user: str):
|
|||||||
|
|
||||||
def addPerson(apiurl: str, prj: str, pac: str, user: str, role="maintainer"):
|
def addPerson(apiurl: str, prj: str, pac: str, user: str, role="maintainer"):
|
||||||
""" add a new person to a package or project """
|
""" add a new person to a package or project """
|
||||||
path = quote_plus(prj),
|
path = (prj, )
|
||||||
kind = 'prj'
|
kind = 'prj'
|
||||||
if pac:
|
if pac:
|
||||||
path = path + (quote_plus(pac),)
|
path = path + (pac ,)
|
||||||
kind = 'pkg'
|
kind = 'pkg'
|
||||||
data = meta_exists(metatype=kind,
|
data = meta_exists(metatype=kind,
|
||||||
path_args=path,
|
path_args=path,
|
||||||
@ -7910,10 +7909,10 @@ def delMaintainer(apiurl: str, prj: str, pac: str, user: str):
|
|||||||
|
|
||||||
def delPerson(apiurl: str, prj: str, pac: str, user: str, role="maintainer"):
|
def delPerson(apiurl: str, prj: str, pac: str, user: str, role="maintainer"):
|
||||||
""" delete a person from a package or project """
|
""" delete a person from a package or project """
|
||||||
path = quote_plus(prj),
|
path = (prj, )
|
||||||
kind = 'prj'
|
kind = 'prj'
|
||||||
if pac:
|
if pac:
|
||||||
path = path + (quote_plus(pac), )
|
path = path + (pac, )
|
||||||
kind = 'pkg'
|
kind = 'pkg'
|
||||||
data = meta_exists(metatype=kind,
|
data = meta_exists(metatype=kind,
|
||||||
path_args=path,
|
path_args=path,
|
||||||
@ -7939,10 +7938,10 @@ def delPerson(apiurl: str, prj: str, pac: str, user: str, role="maintainer"):
|
|||||||
|
|
||||||
def setBugowner(apiurl: str, prj: str, pac: str, user=None, group=None):
|
def setBugowner(apiurl: str, prj: str, pac: str, user=None, group=None):
|
||||||
""" delete all bugowners (user and group entries) and set one new one in a package or project """
|
""" delete all bugowners (user and group entries) and set one new one in a package or project """
|
||||||
path = quote_plus(prj),
|
path = (prj, )
|
||||||
kind = 'prj'
|
kind = 'prj'
|
||||||
if pac:
|
if pac:
|
||||||
path = path + (quote_plus(pac), )
|
path = path + (pac, )
|
||||||
kind = 'pkg'
|
kind = 'pkg'
|
||||||
data = meta_exists(metatype=kind,
|
data = meta_exists(metatype=kind,
|
||||||
path_args=path,
|
path_args=path,
|
||||||
@ -7972,7 +7971,7 @@ def setBugowner(apiurl: str, prj: str, pac: str, user=None, group=None):
|
|||||||
|
|
||||||
def setDevelProject(apiurl, prj, pac, dprj, dpkg=None):
|
def setDevelProject(apiurl, prj, pac, dprj, dpkg=None):
|
||||||
""" set the <devel project="..."> element to package metadata"""
|
""" set the <devel project="..."> element to package metadata"""
|
||||||
path = (quote_plus(prj),) + (quote_plus(pac),)
|
path = (prj, pac)
|
||||||
data = meta_exists(metatype='pkg',
|
data = meta_exists(metatype='pkg',
|
||||||
path_args=path,
|
path_args=path,
|
||||||
template_args=None,
|
template_args=None,
|
||||||
|
@ -10,7 +10,6 @@ import shutil
|
|||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
from urllib.parse import quote_plus
|
|
||||||
from urllib.request import HTTPError
|
from urllib.request import HTTPError
|
||||||
|
|
||||||
from . import checker as osc_checker
|
from . import checker as osc_checker
|
||||||
@ -51,10 +50,10 @@ class Fetcher:
|
|||||||
def __download_cpio_archive(self, apiurl, project, repo, arch, package, **pkgs):
|
def __download_cpio_archive(self, apiurl, project, repo, arch, package, **pkgs):
|
||||||
if not pkgs:
|
if not pkgs:
|
||||||
return
|
return
|
||||||
query = [f'binary={quote_plus(i)}' for i in pkgs]
|
query = {}
|
||||||
query.append('view=cpio')
|
query["binary"] = pkgs
|
||||||
for module in self.modules:
|
query["view"] = "cpio"
|
||||||
query.append(f"module={module}")
|
query["module"] = self.modules
|
||||||
try:
|
try:
|
||||||
url = makeurl(apiurl, ['build', project, repo, arch, package], query=query)
|
url = makeurl(apiurl, ['build', project, repo, arch, package], query=query)
|
||||||
sys.stdout.write("preparing download ...\r")
|
sys.stdout.write("preparing download ...\r")
|
||||||
|
@ -193,8 +193,8 @@ class TestUpdate(OscTestCase):
|
|||||||
|
|
||||||
@GET('http://localhost/source/osctest/services?rev=latest', file='testUpdateServiceFilesAddDelete_filesremote')
|
@GET('http://localhost/source/osctest/services?rev=latest', file='testUpdateServiceFilesAddDelete_filesremote')
|
||||||
@GET('http://localhost/source/osctest/services/bigfile?rev=2', file='testUpdateServiceFilesAddDelete_bigfile')
|
@GET('http://localhost/source/osctest/services/bigfile?rev=2', file='testUpdateServiceFilesAddDelete_bigfile')
|
||||||
@GET('http://localhost/source/osctest/services/_service%3Abar?rev=2', file='testUpdateServiceFilesAddDelete__service:bar')
|
@GET('http://localhost/source/osctest/services/_service:bar?rev=2', file='testUpdateServiceFilesAddDelete__service:bar')
|
||||||
@GET('http://localhost/source/osctest/services/_service%3Afoo?rev=2', file='testUpdateServiceFilesAddDelete__service:foo')
|
@GET('http://localhost/source/osctest/services/_service:foo?rev=2', file='testUpdateServiceFilesAddDelete__service:foo')
|
||||||
@GET('http://localhost/source/osctest/services/_meta', file='meta.xml')
|
@GET('http://localhost/source/osctest/services/_meta', file='meta.xml')
|
||||||
def testUpdateAddDeleteServiceFiles(self):
|
def testUpdateAddDeleteServiceFiles(self):
|
||||||
"""update package with _service:* files"""
|
"""update package with _service:* files"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user