diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 77bde16..3a7f96e 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -213,7 +213,6 @@ def update_git(obj, repo, repofolder): if obj.isa == 'issue': ticketuid = obj.uid elif obj.isa == 'pull-request': - args['requestuid'] = obj.uid requestuid = obj.uid else: raise NotImplementedError('Unknown object type %s' % obj.isa) @@ -317,6 +316,17 @@ def _update_git(obj, repo, repofolder): def clean_git(obj, repo, repofolder): + user = None + ticketuid = obj.uid + + if repo.is_fork: + user = repo.user + + return pagure.lib.tasks.clean_git.delay( + repo.name, repo.namespace, user, ticketuid) + + +def _clean_git(obj, repo, repofolder): """ Update the given issue remove it from its git. """ diff --git a/pagure/lib/tasks.py b/pagure/lib/tasks.py index 92f1dfa..3459e83 100644 --- a/pagure/lib/tasks.py +++ b/pagure/lib/tasks.py @@ -142,8 +142,8 @@ def create_project(username, namespace, name, add_readme, ignore_existing_repo): def update_git(name, namespace, user, ticketuid=None, requestuid=None): session = pagure.lib.create_session() - project = pagure.lib._get_project(session, namespace=namespace, - name=name, user=user, with_lock=True) + project = pagure.lib._get_project(session, namespace=namespace, name=name, + user=user, with_lock=True) if ticketuid is not None: obj = pagure.lib.get_issue_by_uid(session, ticketuid) folder = APP.config['TICKETS_FOLDER'] @@ -153,6 +153,26 @@ def update_git(name, namespace, user, ticketuid=None, requestuid=None): else: raise NotImplementedError('No ticket ID or request ID provided') + if obj is None: + raise Exception('Unable to find object') + result = pagure.lib.git._update_git(obj, project, folder) session.remove() return result + + +@conn.task +def clean_git(name, namespace, user, ticketuid): + session = pagure.lib.create_session() + + project = pagure.lib._get_project(session, namespace=namespace, name=name, + user=user, with_lock=True) + obj = pagure.lib.get_issue_by_uid(session, ticketuid) + folder = APP.config['TICKETS_FOLDER'] + + if obj is None: + raise Exception('Unable to find object') + + result = pagure.lib.git._clean_git(obj, project, folder) + session.remove() + return result