diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index f074ccd..482801b 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -42,6 +42,7 @@ from sqlalchemy import asc from sqlalchemy.orm import aliased from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import scoped_session +from sqlalchemy.exc import SQLAlchemyError import pagure import pagure.exceptions @@ -4212,3 +4213,15 @@ def search_token( return query.first() else: return query.all() + + +def set_project_owner(session, project, user): + ''' Set the ownership of a project + :arg session: the session to use to connect to the database. + :arg project: a Project object representing the project's ownership to + change. + :arg user: a User object representing the new owner of the project. + :return: None + ''' + project.user = user + session.add(project) diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 9b8ed55..d749bc5 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -2597,8 +2597,7 @@ def give_project(repo, username=None, namespace=None): 404, 'No such user %s found' % new_username) try: - repo.user = new_owner - SESSION.add(repo) + pagure.lib.set_project_owner(SESSION, repo, new_owner) SESSION.commit() flask.flash( 'The project has been transferred to %s' % new_username)