From 385746fdd43bff55dc5623f0e70aa18b08c7adf4 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 30 2015 09:33:55 +0000 Subject: Adjust update_project_settings to support JSON based settings Relates to http://pagure.dev.fedoraproject.org/pagure/issue/80 --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index ec99d1e..d718a6d 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -740,22 +740,25 @@ def edit_issue(session, issue, ticketfolder, user, return 'Edited successfully issue #%s' % issue.id -def update_project_settings( - session, repo, issue_tracker, project_docs, user): +def update_project_settings(session, repo, settings, user): ''' Update the settings of a project. ''' user_obj = __get_user(session, user) update = [] - if issue_tracker != repo.issue_tracker: - repo.issue_tracker = issue_tracker - update.append('issue_tracker') - if project_docs != repo.project_docs: - repo.project_docs = project_docs - update.append('project_docs') + new_settings = repo.settings + for key in new_settings: + if key in settings: + if new_settings[key] != settings[key]: + update.append(key) + new_settings[key] = settings[key] + else: + update.append(key) + new_settings[key] = False if not update: return 'No settings to change' else: + repo.save_settings(new_settings) session.add(repo) session.flush() pagure.lib.notify.fedmsg_publish(