parent
4864df3442
commit
944d105571
3 changed files with 26 additions and 5 deletions
|
|
@ -13,4 +13,8 @@ CREATE OR REPLACE FUNCTION get_event() RETURNS INTEGER AS '
|
||||||
SELECT currval(''events_id_seq'')::INTEGER;
|
SELECT currval(''events_id_seq'')::INTEGER;
|
||||||
' LANGUAGE SQL;
|
' LANGUAGE SQL;
|
||||||
|
|
||||||
|
-- merge_mode can not be null
|
||||||
|
UPDATE tag_external_repos SET merge_mode = 'koji' WHERE merge_mode is NULL;
|
||||||
|
ALTER TABLE tag_external_repos ALTER COLUMN merge_mode SET NOT NULL;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
|
||||||
|
|
@ -484,7 +484,7 @@ create table tag_external_repos (
|
||||||
tag_id INTEGER NOT NULL REFERENCES tag(id),
|
tag_id INTEGER NOT NULL REFERENCES tag(id),
|
||||||
external_repo_id INTEGER NOT NULL REFERENCES external_repo(id),
|
external_repo_id INTEGER NOT NULL REFERENCES external_repo(id),
|
||||||
priority INTEGER NOT NULL,
|
priority INTEGER NOT NULL,
|
||||||
merge_mode TEXT DEFAULT 'koji',
|
merge_mode TEXT NOT NULL DEFAULT 'koji',
|
||||||
-- versioned - see earlier description of versioning
|
-- versioned - see earlier description of versioning
|
||||||
create_event INTEGER NOT NULL REFERENCES events(id) DEFAULT get_event(),
|
create_event INTEGER NOT NULL REFERENCES events(id) DEFAULT get_event(),
|
||||||
revoke_event INTEGER REFERENCES events(id),
|
revoke_event INTEGER REFERENCES events(id),
|
||||||
|
|
|
||||||
|
|
@ -3678,6 +3678,9 @@ def add_external_repo_to_tag(tag_info, repo_info, priority, merge_mode='koji'):
|
||||||
|
|
||||||
context.session.assertPerm('tag')
|
context.session.assertPerm('tag')
|
||||||
|
|
||||||
|
# sanity check for None value, which may happen if DB schema isn't updated to 1.21+
|
||||||
|
if merge_mode is None:
|
||||||
|
merge_mode = 'koji'
|
||||||
if merge_mode not in koji.REPO_MERGE_MODES:
|
if merge_mode not in koji.REPO_MERGE_MODES:
|
||||||
raise koji.GenericError('Invalid merge mode: %s' % merge_mode)
|
raise koji.GenericError('Invalid merge mode: %s' % merge_mode)
|
||||||
|
|
||||||
|
|
@ -3721,9 +3724,12 @@ def remove_external_repo_from_tag(tag_info, repo_info):
|
||||||
update.execute()
|
update.execute()
|
||||||
|
|
||||||
|
|
||||||
def edit_tag_external_repo(tag_info, repo_info, priority):
|
def edit_tag_external_repo(tag_info, repo_info, priority=None, merge_mode=None):
|
||||||
"""Edit a tag<->external repo association
|
"""Edit a tag<->external repo association
|
||||||
This allows you to update the priority without removing/adding the repo."""
|
This allows you to update the priority and merge_mode without removing/adding the repo.
|
||||||
|
|
||||||
|
Note that None value of priority and merge_mode means no change on it
|
||||||
|
"""
|
||||||
|
|
||||||
context.session.assertPerm('tag')
|
context.session.assertPerm('tag')
|
||||||
|
|
||||||
|
|
@ -3738,9 +3744,20 @@ def edit_tag_external_repo(tag_info, repo_info, priority):
|
||||||
(repo['name'], tag['name']))
|
(repo['name'], tag['name']))
|
||||||
tag_repo = tag_repos[0]
|
tag_repo = tag_repos[0]
|
||||||
|
|
||||||
if priority != tag_repo['priority']:
|
data = {}
|
||||||
|
for k in ('priority', 'merge_mode'):
|
||||||
|
val = locals().get(k)
|
||||||
|
# None value means no change
|
||||||
|
if val is not None and val != tag_repo[k]:
|
||||||
|
data[k] = val
|
||||||
|
if not data:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
for k in ('priority', 'merge_mode'):
|
||||||
|
data.setdefault(k, tag_repo[k])
|
||||||
remove_external_repo_from_tag(tag_id, repo_id)
|
remove_external_repo_from_tag(tag_id, repo_id)
|
||||||
add_external_repo_to_tag(tag_id, repo_id, priority)
|
add_external_repo_to_tag(tag_id, repo_id, **data)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def get_tag_external_repos(tag_info=None, repo_info=None, event=None):
|
def get_tag_external_repos(tag_info=None, repo_info=None, event=None):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue