#1647 Rebasing the private_repo branch over master
Merged 7 years ago by pingou. Opened 7 years ago by farhaan.
farhaan/pagure private-repo  into  master

@@ -0,0 +1,36 @@ 

+ """Create private column in project table

+ 

+ Revision ID: 4255158a6913

+ Revises: 3ffec872dfdf

+ Create Date: 2016-06-06 14:33:47.039207

+ 

+ """

+ 

+ # revision identifiers, used by Alembic.

+ revision = '4255158a6913'

+ down_revision = '3ffec872dfdf'

+ 

+ from alembic import op

+ import sqlalchemy as sa

+ 

+ 

+ def upgrade():

+     ''' Add a private column in the project table

+     '''

+     op.add_column(

+         'projects',

+         sa.Column('private', sa.Boolean, nullable=True, default=False)

+     )

+     op.execute('''UPDATE "projects" '''

+                '''SET private=False;''')

+ 

+     op.alter_column(

+         'projects',

+         column_name='private',

+         nullable=False, existing_nullable=True)

+ 

+ 

+ def downgrade():

+     ''' Remove the private column

+     '''

+     op.drop_column('projects', 'private')

file modified
+9 -10
@@ -257,7 +257,7 @@ 

      # projects_groups

      group = pagure.lib.search_groups(session, pattern=None,

                                       group_name="rel-eng", group_type=None)

-     repo = pagure.lib.get_project(session, 'test')

+     repo = pagure.get_authorized_project(session, 'test')

      item = pagure.lib.model.ProjectGroup(

          project_id=repo.id,

          group_id=group.id
@@ -267,7 +267,7 @@ 

  

      group = pagure.lib.search_groups(session, pattern=None,

                                       group_name="admin", group_type=None)

-     repo = pagure.lib.get_project(session, 'test2')

+     repo = pagure.get_authorized_project(session, 'test2')

      item = pagure.lib.model.ProjectGroup(

          project_id=repo.id,

          group_id=group.id
@@ -277,8 +277,8 @@ 

  

      ######################################

      # pull_requests

-     repo = pagure.lib.get_project(session, 'test')

-     forked_repo = pagure.lib.get_project(session, 'test')

+     repo = pagure.get_authorized_project(session, 'test')

+     forked_repo = pagure.get_authorized_project(session, 'test')

      req = pagure.lib.new_pull_request(

          session=session,

          repo_from=forked_repo,
@@ -298,7 +298,7 @@ 

      ######################################

      # user_projects

      user = pagure.lib.search_user(session, username='foo')

-     repo = pagure.lib.get_project(session, 'test')

+     repo = pagure.get_authorized_project(session, 'test')

      item = pagure.lib.model.ProjectUser(

          project_id=repo.id,

          user_id=user.id
@@ -307,7 +307,7 @@ 

      session.commit()

  

      user = pagure.lib.search_user(session, username=username)

-     repo = pagure.lib.get_project(session, 'test2')

+     repo = pagure.get_authorized_project(session, 'test2')

      item = pagure.lib.model.ProjectUser(

          project_id=repo.id,

          user_id=user.id
@@ -327,8 +327,7 @@ 

  

      ######################################

      # issue_to_issue

-     repo = pagure.lib.get_project(session, 'test')

- 

+     repo = pagure.get_authorized_project(session, 'test')

      all_issues = pagure.lib.search_issues(session, repo)

      pagure.lib.add_issue_dependency(session, all_issues[0],

                                      all_issues[1], 'pingou',
@@ -367,7 +366,7 @@ 

  

      ######################################

      # tags_issues

-     repo = pagure.lib.get_project(session, 'test')

+     repo = pagure.get_authorized_project(session, 'test')

      issues = pagure.lib.search_issues(session, repo)

      item = pagure.lib.model.TagIssue(

          issue_uid=issues[0].uid,
@@ -408,7 +407,7 @@ 

      except:

          print('requests folder already deleted')

  

-     repo = pagure.lib.get_project(session, 'test')

+     repo = pagure.get_authorized_project(session, 'test')

      result = pagure.lib.fork_project(session, 'foo', repo,

                                       pagure.APP.config['GIT_FOLDER'],

                                       pagure.APP.config['DOCS_FOLDER'],

file modified
+11
@@ -603,6 +603,17 @@ 

  

  Defaults to: ``None``

  

+ PRIVATE_PROJECTS

+ ~~~~~~~~~~~~~~~~

+ 

+ This configuration key allows you to host private repositories. These

+ repositories are visible only to the creator of the repository and to the

+ users who are given access to the repository. No information is leaked about the

+ private repository which means redis doesn't have the access to the repository

+ and even fedmsg doesn't get any notifications.

+ 

+ Defaults to: ``False``

+ 

  

  EXCLUDE_GROUP_INDEX

  ~~~~~~~~~~~~~~~~~~~

@@ -144,8 +144,8 @@ 

      """ Return the Ticket or Request object based on the path provided.

      """

      (username, namespace, reponame, objtype, objid) = _parse_path(path)

-     repo = pagure.lib.get_project(

-         pagure.SESSION, reponame, user=username, namespace=namespace)

+     repo = pagure.get_authorized_project(

+             pagure.SESSION, reponame, user=username, namespace=namespace)

  

      if repo is None:

          raise PagureEvException("Project '%s' not found" % reponame)

@@ -158,7 +158,7 @@ 

          _log.info('Looking for project: %s%s of user: %s',

                   '%s/' % namespace if namespace else '',

                   repo, username)

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              session, repo, user=username, namespace=namespace)

  

          if not project:

@@ -21,7 +21,6 @@ 

  import logging

  import os

  

- import requests

  import trollius

  import trollius_redis

  
@@ -99,7 +98,7 @@ 

          _log.info('Looking for project: %s%s of %s',

                   '%s/' % namespacerepo if namespace else '',

                   repo, username)

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              pagure.SESSION, repo, user=username, namespace=namespace)

  

          if not project:

file modified
+28 -4
@@ -374,6 +374,30 @@ 

      ) or (user in usergrps)

  

  

+ def get_authorized_project(session, project_name, user=None, namespace=None):

+     ''' Retrieving the project with user permission constraint

+ 

+     :arg session: The SQLAlchemy session to use

+     :type session: sqlalchemy.orm.session.Session

+     :arg project_name: Name of the project on pagure

+     :type project_name: String

+     :arg user: Pagure username

+     :type user: String

+     :arg namespace: Pagure namespace

+     :type namespace: String

+     :return: The project object if project is public or user has

+                 permissions for the project else it returns None

+     :rtype: Project

+ 

+     '''

+     repo = pagure.lib._get_project(session, project_name, user, namespace)

+ 

+     if repo and repo.private and not is_repo_admin(repo):

+         return None

+ 

+     return repo

+ 

+ 

  def generate_user_key_files():

      """ Regenerate the key files used by gitolite.

      """
@@ -476,12 +500,12 @@ 

      # If there isn't a `repo` in the URL path, or if there is but the

      # endpoint called is part of the API, just don't do anything

      if repo:

-         flask.g.repo = pagure.lib.get_project(

+         flask.g.repo = pagure.get_authorized_project(

              SESSION, repo, user=username, namespace=namespace)

          if authenticated():

-             flask.g.repo_forked = pagure.lib.get_project(

-                 SESSION, repo, user=flask.g.fas_user.username,

-                 namespace=namespace)

+             flask.g.repo_forked = pagure.get_authorized_project(

+                     SESSION, repo, user=flask.g.fas_user.username,

+                     namespace=namespace)

  

          if not flask.g.repo \

              and APP.config.get('OLD_VIEW_COMMIT_ENABLED', False) \

file modified
+1 -1
@@ -341,7 +341,7 @@ 

      if pattern is not None and not pattern.endswith('*'):

          pattern += '*'

  

-     project_obj = pagure.lib.get_project(SESSION, repo, username)

+     project_obj = pagure.get_authorized_project(SESSION, repo, username)

      if not project_obj:

          output = {'output': 'notok', 'error': 'Project not found'}

          jsonout = flask.jsonify(output)

file modified
+1 -1
@@ -44,7 +44,7 @@ 

  

      """

  

-     project = pagure.lib.get_project(

+     project = pagure.lib._get_project(

          SESSION, repo, user=username, namespace=namespace)

      if not project:

          raise pagure.exceptions.APIError(404, error_code=APIERROR.ENOPROJECT)

file modified
+8 -6
@@ -123,7 +123,7 @@ 

  

      """

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

  

      if repo is None:
@@ -249,7 +249,7 @@ 

  

      """

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

  

      if repo is None:
@@ -308,7 +308,7 @@ 

      """  # noqa

      output = {}

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

  

      if repo is None:
@@ -395,7 +395,7 @@ 

      """  # noqa

      output = {}

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

  

      if repo is None:
@@ -498,8 +498,9 @@ 

          }

  

      """  # noqa

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

+ 

      output = {}

  

      if repo is None:
@@ -641,8 +642,9 @@ 

          }

  

      """  # noqa

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

+ 

      output = {}

  

      if repo is None:

file modified
+1 -1
@@ -34,7 +34,7 @@ 

      :raises pagure.exceptions.APIError: when repository doesn't exists or is disabled

      :return: repository name

      """

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo_name, user=username, namespace=namespace)

  

      if repo is None:

file modified
+9 -6
@@ -15,7 +15,7 @@ 

  import pagure

  import pagure.exceptions

  import pagure.lib

- from pagure import SESSION, APP

+ from pagure import SESSION, APP, authenticated

  from pagure.api import API, api_method, APIERROR, api_login_required

  

  
@@ -51,9 +51,8 @@ 

          }

  

      """

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

- 

      if repo is None:

          raise pagure.exceptions.APIError(404, error_code=APIERROR.ENOPROJECT)

  
@@ -161,8 +160,12 @@ 

      elif str(fork).lower() in ['0', 'false']:

          fork = False

  

+     private = False

+     if authenticated() and username == flask.g.fas_user.username:

+         private = flask.g.fas_user.username

+ 

      projects = pagure.lib.search_projects(

-         SESSION, username=username, fork=fork, tags=tags, pattern=pattern)

+         SESSION, username=username, fork=fork, tags=tags, pattern=pattern, private=private)

  

      if not projects:

          raise pagure.exceptions.APIError(
@@ -213,7 +216,7 @@ 

          }

  

      """

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          SESSION, repo, user=username, namespace=namespace)

  

      if repo is None:
@@ -389,7 +392,7 @@ 

          username = form.username.data or None

          namespace = form.namespace.data.strip() or None

  

-         repo = pagure.lib.get_project(

+         repo = pagure.get_authorized_project(

              SESSION, repo, user=username, namespace=namespace)

          if repo is None:

              raise pagure.exceptions.APIError(

@@ -60,6 +60,9 @@ 

  # Enables / Disables managing groups via the UI

  ENABLE_GROUP_MNGT = True

  

+ # Enables / Disables private projects

+ PRIVATE_PROJECTS = False

+ 

  # Enables / Disables showing all the projects by default on the front page

  SHOW_PROJECTS_INDEX = ['repos', 'myrepos', 'myforks']

  

file modified
+3 -2
@@ -16,6 +16,7 @@ 

  

  from binaryornot.helpers import is_binary_string

  

+ import pagure

  import pagure.doc_utils

  import pagure.exceptions

  import pagure.lib
@@ -139,8 +140,8 @@ 

      if '.' in repo:

          namespace, repo = repo.split('.', 1)

  

-     repo = pagure.lib.get_project(

-         SESSION, repo, user=username, namespace=namespace)

+     repo = pagure.get_authorized_project(SESSION, repo, user=username,

+             namespace=namespace)

  

      if not repo:

          flask.abort(404, 'Project not found')

file modified
+4
@@ -130,6 +130,10 @@ 

              wtforms.validators.Length(max=255),

          ]

      )

+     private = wtforms.BooleanField(

+         'Private',

+         [wtforms.validators.Optional()]

+     )

  

  

  class ProjectForm(ProjectFormSimplified):

@@ -38,8 +38,8 @@ 

          print('user:', username)

          print('namespace:', namespace)

  

-     project = pagure.lib.get_project(

-         pagure.SESSION, repo, user=username, namespace=namespace)

+     project = pagure.lib._get_project(

+             pagure.SESSION, repo, user=username, namespace=namespace)

  

      for line in sys.stdin:

          if pagure.APP.config.get('HOOK_DEBUG', False):

@@ -55,7 +55,7 @@ 

      project_name = pagure.lib.git.get_repo_name(abspath)

      username = pagure.lib.git.get_username(abspath)

      namespace = pagure.lib.git.get_repo_namespace(abspath)

-     project = pagure.lib.get_project(

+     project = pagure._get_project(

          pagure.SESSION, project_name, username, namespace=namespace)

      if not project:

          project = project_name

@@ -33,8 +33,8 @@ 

          print 'user:     ', username

          print 'namspaces:', namespace

  

-     repo = pagure.lib.get_project(

-         pagure.SESSION, reponame, user=username, namespace=namespace)

+     repo = pagure.lib._get_project(

+             pagure.SESSION, reponame, user=username, namespace=namespace)

      if not repo:

          print 'Unknown repo %s of username: %s in namespace %s' % (

              reponame, username, namespace)

@@ -38,7 +38,7 @@ 

          print('user:', username)

          print('namespace:', namespace)

  

-     project = pagure.lib.get_project(

+     project = pagure.lib._get_project(

          pagure.SESSION, repo, user=username, namespace=namespace)

  

      for line in sys.stdin:
@@ -71,8 +71,8 @@ 

                      'commits': commits,

                      'data_type': 'ticket',

                      'agent': os.environ.get('GL_USER'),

-                 }

-             ))

+                 })

+             )

              print(

                  'A report will be emailed to you once the load is finished')

          else:

@@ -35,14 +35,13 @@ 

          print 'user:     ', username

          print 'namespace:', namespace

  

-     repo = pagure.lib.get_project(

-         pagure.SESSION, reponame, user=username, namespace=namespace)

+     repo = pagure.get_authorized_project(

+             pagure.SESSION, reponame, user=username, namespace=namespace)

      if not repo:

          print 'Unknown repo %s of username: %s' % (reponame, username)

          sys.exit(1)

  

      plugin = pagure.lib.plugins.get_plugin('Read the Doc')

-     dbobj = plugin.db_object()

      # Get the list of branches

      branches = [

          branch.strip()

file modified
+3 -3
@@ -249,7 +249,7 @@ 

          response.status_code = 400

          return response

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          pagure.SESSION,

          flask.request.form.get('repo', '').strip() or None,

          namespace=flask.request.form.get('namespace', '').strip() or None,
@@ -336,7 +336,7 @@ 

          response.status_code = 400

          return response

  

-     repo = pagure.lib.get_project(pagure.SESSION, repo, user=username)

+     repo = pagure.get_authorized_project(pagure.SESSION, repo, user=username)

  

      if repo is None:

          response = flask.jsonify({
@@ -405,7 +405,7 @@ 

          response.status_code = 400

          return response

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          pagure.SESSION,

          flask.request.form.get('repo', '').strip() or None,

          user=flask.request.form.get('repouser', '').strip() or None)

file modified
+45 -18
@@ -5,6 +5,7 @@ 

  

   Authors:

     Pierre-Yves Chibon <pingou@pingoured.fr>

+    Farhaan Bukhsh <farhaan.bukhsh@gmail.com>

  

  """

  
@@ -43,6 +44,7 @@ 

  

  import pygit2

  

+ import pagure

  import pagure.exceptions

  import pagure.lib.git

  import pagure.lib.login
@@ -433,7 +435,7 @@ 

              )

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not obj.project.private:

              REDIS.publish('pagure.%s' % obj.uid, json.dumps(

                  {'added_tags': added_tags}))

  
@@ -474,7 +476,7 @@ 

              )

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not issue.project.private:

              REDIS.publish('pagure.%s' % issue.uid, json.dumps(

                  {'unassigned': '-'}))

  
@@ -511,7 +513,7 @@ 

          issue.last_updated = datetime.datetime.utcnow()

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not issue.project.private:

              REDIS.publish('pagure.%s' % issue.uid, json.dumps(

                  {'assigned': assignee_obj.to_json(public=True)}))

  
@@ -536,6 +538,7 @@ 

              request, repo=request.project, repofolder=requestfolder)

  

          pagure.lib.notify.notify_assigned_request(request, None, user_obj)

+ 

          pagure.lib.notify.log(

              request.project,

              topic='request.assigned.reset',
@@ -620,7 +623,7 @@ 

              )

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not issue.project.private:

              REDIS.publish('pagure.%s' % issue.uid, json.dumps({

                  'added_dependency': issue_blocked.id,

                  'issue_uid': issue.uid,
@@ -677,7 +680,7 @@ 

              )

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not issue.project.private:

              REDIS.publish('pagure.%s' % issue.uid, json.dumps({

                  'removed_dependency': parent_del,

                  'issue_uid': issue.uid,
@@ -778,7 +781,7 @@ 

          )

  

          # Send notification for the event-source server

-         if REDIS:

+         if REDIS and not obj.project.private:

              REDIS.publish('pagure.%s' % obj.uid, json.dumps(

                  {'removed_tags': removed_tags}))

  
@@ -853,6 +856,7 @@ 

              new_tag, new_tag_description, new_tag_color

          )

      )

+ 

      pagure.lib.notify.log(

          project,

          topic='project.tag.edited',
@@ -1101,7 +1105,7 @@ 

          pagure.lib.notify.notify_pull_request_comment(pr_comment, user_obj)

  

      # Send notification for the event-source server

-     if REDIS:

+     if REDIS and not request.project.private:

          comment_text = text2markdown(pr_comment.comment)

  

          REDIS.publish('pagure.%s' % request.uid, json.dumps({
@@ -1120,9 +1124,10 @@ 

          }))

  

          # Send notification to the CI server, if the comment added was a

-         # notification and the PR is still open

+         # notification and the PR is still open and project is not private

          if notification and request.status == 'Open' \

-                 and request.project.ci_hook and PAGURE_CI:

+             and request.project.ci_hook and PAGURE_CI \

+                 and not request.project.private:

              REDIS.publish('pagure.ci', json.dumps({

                  'ci_type': request.project.ci_hook.ci_type,

                  'pr': request.to_json(public=True, with_comments=False)
@@ -1193,7 +1198,7 @@ 

              redis=REDIS,

          )

  

-     if REDIS:

+     if REDIS and not parent.project.private:

          if private:

              REDIS.publish('pagure.%s' % comment.parent.uid, json.dumps({

                  'comment_updated': 'private',
@@ -1264,7 +1269,7 @@ 

                  description=None, url=None, avatar_email=None,

                  parent_id=None, add_readme=False, userobj=None,

                  prevent_40_chars=False, namespace=None, user_ns=False,

-                 ignore_existing_repo=False):

+                 ignore_existing_repo=False, private=False):

      ''' Create a new project based on the information provided.

      '''

      if (not namespace and name in blacklist) \
@@ -1313,7 +1318,7 @@ 

              )

  

      # Repo exists in the DB

-     repo = pagure.lib.get_project(session, name, namespace=namespace)

+     repo = pagure.get_authorized_project(session, name, namespace=namespace)

      if repo:

          raise pagure.exceptions.RepoExistsException(

              'The project repo "%s" already exists in the database' % (
@@ -1328,6 +1333,7 @@ 

          avatar_email=avatar_email if avatar_email else None,

          user_id=user_obj.id,

          parent_id=parent_id,

+         private=private,

          hook_token=pagure.lib.login.id_generator(40)

      )

      session.add(project)
@@ -1576,7 +1582,8 @@ 

      )

  

      # Send notification to the CI server

-     if REDIS and request.project.ci_hook and PAGURE_CI:

+     if REDIS and request.project.ci_hook and PAGURE_CI \

+             and not request.project.private:

          REDIS.publish('pagure.ci', json.dumps({

              'ci_type': request.project.ci_hook.ci_type,

              'pr': request.to_json(public=True, with_comments=False)
@@ -1699,7 +1706,7 @@ 

              redis=REDIS,

          )

  

-     if REDIS and edit:

+     if REDIS and edit and not issue.project.private:

          if issue.private:

              REDIS.publish('pagure.%s' % issue.uid, json.dumps({

                  'issue': 'private',
@@ -1759,6 +1766,7 @@ 

          repo.settings = new_settings

          session.add(repo)

          session.flush()

+ 

          pagure.lib.notify.log(

              repo,

              topic='project.edit',
@@ -1897,7 +1905,7 @@ 

          session, username=None,

          fork=None, tags=None, namespace=None, pattern=None,

          start=None, limit=None, count=False, sort=None,

-         exclude_groups=None):

+         exclude_groups=None, private=None):

      '''List existing projects

      '''

      projects = session.query(
@@ -1973,6 +1981,25 @@ 

  

          projects = projects.union(sub_q2).union(sub_q3).union(sub_q4)

  

+     if not private:

+         projects = projects.filter(

+             model.Project.private == False

+         )

+     # No filtering is done if private == username i.e  if the owner of the

+     # project is viewing the project

+     elif isinstance(private, basestring) and private != username:

+         projects = projects.filter(

+                 sqlalchemy.or_(

+                     model.Project.private == False,

+                     sqlalchemy.and_(

+                         model.User.user == private,

+                         model.User.id == model.ProjectUser.user_id,

+                         model.ProjectUser.project_id == model.Project.id,

+                         model.Project.private == True,

+                     )

+                 )

+         )

+ 

      if fork is not None:

          if fork is True:

              projects = projects.filter(
@@ -1982,7 +2009,6 @@ 

              projects = projects.filter(

                  model.Project.is_fork == False

              )

- 

      if tags:

          if not isinstance(tags, (list, tuple)):

              tags = [tags]
@@ -2040,7 +2066,7 @@ 

          return query.all()

  

  

- def get_project(session, name, user=None, namespace=None):

+ def _get_project(session, name, user=None, namespace=None):

      '''Get a project from the database

      '''

      query = session.query(
@@ -3614,8 +3640,9 @@ 

      if watcher:

          return watcher.watch

  

-     project = pagure.lib.get_project(

+     project = pagure.get_authorized_project(

          session, reponame, user=repouser, namespace=namespace)

+ 

      if not project:

          return False

  

file modified
+6 -5
@@ -411,7 +411,7 @@ 

      project_user = None

      if jsondata.get('parent'):

          project_user = user.username

-     project = pagure.lib.get_project(

+     project = pagure.lib._get_project(

          session, name, user=project_user, namespace=namespace)

  

      if not project:
@@ -451,7 +451,7 @@ 

              )

  

          session.commit()

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              session, name, user=user.username, namespace=namespace)

  

          tags = jsondata.get('tags', None)
@@ -529,8 +529,9 @@ 

  

      """

  

-     repo = pagure.lib.get_project(

+     repo = pagure.lib._get_project(

          session, reponame, user=username, namespace=namespace)

+ 

      if not repo:

          raise pagure.exceptions.PagureException(

              'Unknown repo %s of username: %s in namespace: %s' % (
@@ -707,8 +708,8 @@ 

  

      """

  

-     repo = pagure.lib.get_project(

-         session, reponame, user=username, namespace=namespace)

+     repo = pagure.lib._get_project(

+             session, reponame, user=username, namespace=namespace)

      if not repo:

          raise pagure.exceptions.PagureException(

              'Unknown repo %s of username: %s in namespace: %s' % (

file modified
+2 -2
@@ -12,7 +12,7 @@ 

  

  

  import re

- 

+ import pagure

  import pagure.exceptions

  

  
@@ -57,7 +57,7 @@ 

  

      '''

  

-     repo = pagure.lib.get_project(

+     repo = pagure.get_authorized_project(

          session, reponame, user=username, namespace=namespace)

      if not repo:

          return []

file modified
+1
@@ -376,6 +376,7 @@ 

      parent = relation('Project', remote_side=[id], backref='forks')

      user = relation('User', foreign_keys=[user_id],

                      remote_side=[User.id], backref='projects')

+     private = sa.Column(sa.Boolean, nullable=False, default=False)

  

      users = relation(

          'User',

file modified
+4 -2
@@ -53,11 +53,13 @@ 

      ''' This is the place where we send notifications to user about actions

      occuring in pagure.

      '''

+ 

      # Send fedmsg notification (if fedmsg is there and set-up)

-     if not project or project.settings.get('fedmsg_notifications', True):

+     if not project or (project.settings.get('fedmsg_notifications', True)

+                        and not project.private):

          fedmsg_publish(topic, msg)

  

-     if redis and project:

+     if redis and project and not project.private:

          redis.publish(

              'pagure.hook',

              json.dumps({

file modified
+9 -6
@@ -315,8 +315,10 @@ 

  

  def _issue_exists(user, namespace, repo, idx):

      """ Utility method checking if a given issue exists. """

-     repo_obj = pagure.lib.get_project(

-         pagure.SESSION, name=repo, user=user, namespace=namespace)

+ 

+     repo_obj = pagure.get_authorized_project(

+         pagure.SESSION, project_name=repo, user=user, namespace=namespace)

+ 

      if not repo_obj:

          return False

  
@@ -330,8 +332,9 @@ 

  

  def _pr_exists(user, namespace, repo, idx):

      """ Utility method checking if a given PR exists. """

-     repo_obj = pagure.lib.get_project(

-         pagure.SESSION, name=repo, user=user, namespace=namespace)

+     repo_obj = pagure.get_authorized_project(

+         pagure.SESSION, project_name=repo, user=user, namespace=namespace)

+ 

      if not repo_obj:

          return False

  
@@ -345,8 +348,8 @@ 

  

  def _commit_exists(user, namespace, repo, githash):

      """ Utility method checking if a given commit exists. """

-     repo_obj = pagure.lib.get_project(

-         pagure.SESSION, name=repo, user=user, namespace=namespace)

+     repo_obj = pagure.get_authorized_project(

+         pagure.SESSION, project_name=repo, user=user, namespace=namespace)

      if not repo_obj:

          return False

  

@@ -20,6 +20,9 @@ 

              {{ render_bootstrap_field(form.namespace, field_description="namespace of the project") }}

              {{ render_bootstrap_field(form.url, field_description="url of the project's website") }}

              {{ render_bootstrap_field(form.avatar_email, field_description="libravatar email address avatar email") }}

+             {% if config.get('PRIVATE_PROJECTS', False) %}

+               {{ render_bootstrap_field(form.private, field_description="To mark the repo private") }}

+             {% endif %}

              {{ render_bootstrap_field(form.create_readme, field_description="Create a README file automatically") }}

              <input class="btn btn-primary" type="submit" value="Create" title="Update description">

              <input type="button" class="btn btn-default pull-md-right"

@@ -41,6 +41,14 @@ 

                <input class="form-control" name="tags" value="{{ repo.tags_text |join(', ') if repo.tags else '' }}" />

                <small class="text-muted">tags for project (separated by commas)</small>

              </fieldset>

+             {% if config.get('PRIVATE_PROJECTS', False) %}

+                 <fieldset class="form-group">

+                     <label class="c-input c-checkbox">Private</lable>

+                     <input type="checkbox" value="private" name="private" {%

+                         if repo.private -%}checked=""{%- endif -%}/>

+                     <span class="c-indicator"></span>

+                 </fieldset>

+             {% endif %}

              <button class="btn btn-primary" type="submit" title="Update description">

                Update

              </button>

file modified
+43 -13
@@ -5,6 +5,7 @@ 

  

   Authors:

     Pierre-Yves Chibon <pingou@pingoured.fr>

+    Farhaan Bukhsh <farhaan.bukhsh@gmail.com>

  

  """

  
@@ -20,8 +21,7 @@ 

  import pagure.forms

  import pagure.ui.filters

  from pagure import (APP, SESSION, login_required,

-                     authenticated,

-                     admin_session_timedout)

+                     authenticated, admin_session_timedout)

  

  

  @APP.route('/browse/projects', endpoint='browse_projects')
@@ -97,23 +97,28 @@ 

          SESSION,

          username=flask.g.fas_user.username,

          exclude_groups=APP.config.get('EXCLUDE_GROUP_INDEX'),

-         fork=False)

+         fork=False, private=flask.g.fas_user.username)

+ 

      repos_length = pagure.lib.search_projects(

          SESSION,

          username=flask.g.fas_user.username,

          exclude_groups=APP.config.get('EXCLUDE_GROUP_INDEX'),

          fork=False,

-         count=True)

+         count=True,

+         private=flask.g.fas_user.username)

  

      forks = pagure.lib.search_projects(

          SESSION,

          username=flask.g.fas_user.username,

-         fork=True)

+         fork=True,

+         private=flask.g.fas_user.username)

+ 

      forks_length = pagure.lib.search_projects(

          SESSION,

          username=flask.g.fas_user.username,

          fork=True,

-         count=True)

+         count=True,

+         private=flask.g.fas_user.username)

  

      watch_list = pagure.lib.user_watch_list(

          SESSION,
@@ -175,6 +180,12 @@ 

  

      users = pagure.lib.search_user(SESSION, pattern=username)

  

+     private = False

+     # Condition to check non-authorized user should't be able to access private

+     # project of other users

+     if authenticated() and username == flask.g.fas_user.username:

+         private = flask.g.fas_user.username

+ 

      if len(users) == 1:

          flask.flash('Only one result found, redirecting you to it')

          return flask.redirect(
@@ -193,13 +204,15 @@ 

              SESSION,

              username=user.user,

              fork=False,

-             count=True)

+             count=True,

+             private=private)

  

          forks_length = pagure.lib.search_projects(

              SESSION,

              username=user.user,

              fork=True,

-             count=True)

+             count=True,

+             private=private)

          user.repos_length = repos_length

          user.forks_length = forks_length

  
@@ -237,13 +250,18 @@ 

          select = 'projects_forks'

      else:

          forks = False

+     private = False

+ 

+     if authenticated():

+         private = flask.g.fas_user.username

  

      limit = APP.config['ITEM_PER_PAGE']

      start = limit * (page - 1)

  

      projects = pagure.lib.search_projects(

          SESSION, pattern=pattern, namespace=namespace,

-         fork=forks, start=start, limit=limit)

+         fork=forks, start=start, limit=limit, private=private)

+ 

  

      if len(projects) == 1:

          flask.flash('Only one result found, redirecting you to it')
@@ -299,31 +317,39 @@ 

      repo_start = limit * (repopage - 1)

      fork_start = limit * (forkpage - 1)

  

+     private = False

+     if authenticated() and username == flask.g.fas_user.username:

+         private = flask.g.fas_user.username

+ 

      repos = pagure.lib.search_projects(

          SESSION,

          username=username,

          fork=False,

          exclude_groups=APP.config.get('EXCLUDE_GROUP_INDEX'),

          start=repo_start,

-         limit=limit)

+         limit=limit,

+         private=private)

      repos_length = pagure.lib.search_projects(

          SESSION,

          username=username,

          fork=False,

          exclude_groups=APP.config.get('EXCLUDE_GROUP_INDEX'),

-         count=True)

+         count=True,

+         private=private)

  

      forks = pagure.lib.search_projects(

          SESSION,

          username=username,

          fork=True,

          start=fork_start,

-         limit=limit)

+         limit=limit,

+         private=private)

      forks_length = pagure.lib.search_projects(

          SESSION,

          username=username,

          fork=True,

-         count=True)

+         count=True,

+         private=private)

  

      total_page_repos = int(ceil(repos_length / float(limit)))

      total_page_forks = int(ceil(forks_length / float(limit)))
@@ -418,11 +444,15 @@ 

          namespace = form.namespace.data

          if namespace:

              namespace = namespace.strip()

+         private = False

+         if pagure.APP.config.get('PRIVATE_PROJECTS', False):

+             private = form.private.data

  

          try:

              pagure.lib.new_project(

                  SESSION,

                  name=name,

+                 private=private,

                  description=description,

                  namespace=namespace,

                  url=url,

file modified
+5 -3
@@ -170,7 +170,6 @@ 

  def request_pull(repo, requestid, username=None, namespace=None):

      """ Create a pull request with the changes from the fork into the project.

      """

- 

      repo = flask.g.repo

  

      if not repo.settings.get('pull_requests', True):
@@ -519,6 +518,9 @@ 

      """

      repo = flask.g.repo

  

+     if not repo:

+         flask.abort(404, 'Project not found')

+ 

      if not repo.settings.get('pull_requests', True):

          flask.abort(404, 'No pull-requests found for this project')

  
@@ -886,7 +888,7 @@ 

      if not form.validate_on_submit():

          flask.abort(400)

  

-     if pagure.lib.get_project(

+     if pagure.lib._get_project(

              SESSION, repo.name, user=flask.g.fas_user.username,

              namespace=namespace):

          return flask.redirect(flask.url_for(
@@ -1251,7 +1253,7 @@ 

      if not form.validate_on_submit():

          flask.abort(400)

  

-     if pagure.lib.get_project(

+     if pagure.lib._get_project(

              SESSION, repo.name, user=flask.g.fas_user.username):

          flask.flash('You had already forked this project')

          return flask.redirect(flask.url_for(

file modified
+7
@@ -5,6 +5,7 @@ 

  

   Authors:

     Pierre-Yves Chibon <pingou@pingoured.fr>

+    Farhaan Bukhsh <farhaan.bukhsh@gmail.com>

  

  """

  
@@ -73,6 +74,12 @@ 

              403,

              'You are not allowed to change the settings for this project')

  

+     # Private repos are not allowed to leak information outside so disabling CI

+     # enables us to keep the repos totally discreate and prevents from leaking

+     # information outside

+     if repo.private and plugin == 'Pagure CI':

+         flask.abort(404, 'Plugin disabled')

+ 

      if plugin in APP.config.get('DISABLED_PLUGINS', []):

          flask.abort(404, 'Plugin disabled')

  

file modified
+2
@@ -5,6 +5,7 @@ 

  

   Authors:

     Pierre-Yves Chibon <pingou@pingoured.fr>

+    Farhaan Bukhsh <farhaan.bukhsh@gmail.com>

  

  """

  
@@ -1140,6 +1141,7 @@ 

              repo.description = form.description.data

              repo.avatar_email = form.avatar_email.data.strip()

              repo.url = form.url.data.strip()

+             repo.private = form.private.data

              pagure.lib.update_tags(

                  SESSION, repo,

                  tags=[t.strip() for t in form.tags.data.split(',')],

@@ -21,6 +21,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import pagure.lib.model

  import tests
@@ -52,7 +53,7 @@ 

              msg, 'User `pingou` added to the group `provenpackager`.')

  

          # Add the `provenpackager` group to the test2 project

-         project = pagure.lib.get_project(self.session, 'test2')

+         project = pagure.get_authorized_project(self.session, 'test2')

We could keep using _get_project() in most of the tests

Basically I think it only make sense for the tests working with a private project.

          msg = pagure.lib.add_group_to_project(

              session=self.session,

              project=project,

@@ -23,7 +23,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

- import pagure.api

+ import pagure

  import pagure.lib

  import tests

  
@@ -55,8 +55,8 @@ 

          tests.create_tokens_acl(self.session)

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -216,8 +216,8 @@ 

          tests.create_tokens_acl(self.session)

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -381,8 +381,8 @@ 

          tests.create_tokens_acl(self.session)

  

          # Create the pull-request to close

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -494,8 +494,8 @@ 

          tests.create_tokens_acl(self.session)

  

          # Create the pull-request to close

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -607,8 +607,8 @@ 

          tests.create_tokens_acl(self.session)

  

          # Create the pull-request to close

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -757,8 +757,8 @@ 

          )

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -871,8 +871,8 @@ 

          )

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -981,8 +981,8 @@ 

          )

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -1129,8 +1129,8 @@ 

          )

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,

@@ -25,6 +25,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  
@@ -839,7 +840,7 @@ 

          )

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1096,7 +1097,7 @@ 

          tests.create_tokens(self.session)

          tests.create_tokens_acl(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create 2 tickets but only 1 has a milestone

          start = datetime.datetime.utcnow().strftime('%s')
@@ -1187,7 +1188,7 @@ 

          tests.create_tokens(self.session)

          tests.create_tokens_acl(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create 2 tickets but only 1 has a priority

          start = datetime.datetime.utcnow().strftime('%s')
@@ -1329,7 +1330,7 @@ 

          tests.create_tokens(self.session)

          tests.create_tokens_acl(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create 2 tickets but only 1 has a milestone

          start = datetime.datetime.utcnow().strftime('%s')
@@ -1444,7 +1445,7 @@ 

          tests.create_tokens(self.session)

          tests.create_tokens_acl(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create 1st tickets

          start = datetime.datetime.utcnow().strftime('%s')
@@ -1716,7 +1717,7 @@ 

          )

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1886,7 +1887,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1928,7 +1929,7 @@ 

          self.session.add(item)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          # Create private issue

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -1943,7 +1944,7 @@ 

          self.assertEqual(msg.title, 'Test issue')

  

          # Check status before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -1966,7 +1967,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -1985,7 +1986,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -1998,6 +1999,7 @@ 

              '/api/0/test/issue/1/status', data=data, headers=headers)

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.data)

+ 

          self.assertDictEqual(

              data,

              {'message':[
@@ -2025,7 +2027,7 @@ 

          tests.create_tokens_acl(self.session)

  

          # Set some milestones to the project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.milestones = {'v1.0': None, 'v2.0': 'Soon'}

          self.session.add(repo)

          self.session.commit()
@@ -2065,7 +2067,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2079,7 +2081,7 @@ 

          self.assertEqual(msg.title, 'Test issue #1')

  

          # Check milestone before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.milestone, None)

  
@@ -2098,7 +2100,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.milestone, None)

  
@@ -2162,7 +2164,7 @@ 

          )

  

          # Change recorded

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.milestone, None)

  
@@ -2202,7 +2204,7 @@ 

          )

  

          # Change recorded

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.milestone, None)

  
@@ -2264,7 +2266,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2279,7 +2281,7 @@ 

          self.assertEqual(msg.title, 'Test issue #1')

  

          # Check comments before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2302,7 +2304,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -2321,7 +2323,7 @@ 

          )

  

          # One comment added

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

  
@@ -2355,7 +2357,7 @@ 

          self.session.add(item)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          # Create private issue

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -2371,7 +2373,7 @@ 

          self.assertEqual(msg.title, 'Test issue')

  

          # Check before

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2390,7 +2392,7 @@ 

          self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error'])

  

          # No comment added

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2470,7 +2472,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2485,7 +2487,7 @@ 

          self.assertEqual(msg.title, 'Test issue #1')

  

          # Check comments before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2508,7 +2510,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -2527,7 +2529,7 @@ 

          )

  

          # One comment added

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

  
@@ -2561,7 +2563,7 @@ 

          self.session.add(item)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          # Create private issue

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -2577,7 +2579,7 @@ 

          self.assertEqual(msg.title, 'Test issue')

  

          # Check before

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2596,7 +2598,7 @@ 

          self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error'])

  

          # No comment added

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2787,7 +2789,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2802,12 +2804,12 @@ 

          self.assertEqual(msg.title, 'Test issue #1')

  

          # Check comments before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.status, 'Open')

  
@@ -2834,7 +2836,8 @@ 

              data,

              {'message': 'Assignee reset'}

          )

-         repo = pagure.lib.get_project(self.session, 'test')

+         # No change

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.assignee, None)

  
@@ -2848,7 +2851,7 @@ 

              data,

              {'message': 'Nothing to change'}

          )

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.assignee, None)

  
@@ -2886,7 +2889,7 @@ 

          )

  

          # One comment added

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.assignee.user, 'pingou')

  
@@ -2920,7 +2923,7 @@ 

          self.session.add(item)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          # Create private issue

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -2936,7 +2939,7 @@ 

          self.assertEqual(msg.title, 'Test issue')

  

          # Check before

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -2955,7 +2958,7 @@ 

          self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error'])

  

          # No comment added

-         repo = pagure.lib.get_project(self.session, 'foo')

+         repo = pagure.get_authorized_project(self.session, 'foo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -3048,7 +3051,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -3063,7 +3066,7 @@ 

          self.assertEqual(msg.title, 'Test issue #1')

  

          # Check subscribtion before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(

              pagure.lib.get_watch_list(self.session, issue),
@@ -3092,7 +3095,7 @@ 

          )

  

          # No change

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(

              pagure.lib.get_watch_list(self.session, issue),
@@ -3120,7 +3123,7 @@ 

              {'message': 'You are now watching this issue'}

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(

              pagure.lib.get_watch_list(self.session, issue),
@@ -3137,7 +3140,7 @@ 

              {'message': 'You are no longer watching this issue'}

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(

              pagure.lib.get_watch_list(self.session, issue),
@@ -3188,7 +3191,7 @@ 

          )

  

          # Create normal issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -3215,7 +3218,7 @@ 

          )

  

          # Check the behavior if the project disabled the issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['issue_tracker'] = False

          repo.settings = settings
@@ -3234,7 +3237,7 @@ 

              }

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['issue_tracker'] = True

          repo.settings = settings
@@ -3260,7 +3263,7 @@ 

          headers = {'Authorization': 'token aaabbbcccddd'}

  

          # Set some custom fields

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.set_custom_key_fields(

              self.session, repo,

              ['bugzilla', 'upstream', 'reviewstatus'],
@@ -3294,7 +3297,7 @@ 

              }

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.other_fields, [])

          self.assertEqual(len(issue.other_fields), 0)
@@ -3314,7 +3317,7 @@ 

              }

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.other_fields, [])

          self.assertEqual(len(issue.other_fields), 0)
@@ -3333,7 +3336,7 @@ 

              }

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.other_fields), 1)

          self.assertEqual(issue.other_fields[0].key.name, 'bugzilla')
@@ -3355,7 +3358,7 @@ 

              }

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.other_fields), 0)

  

@@ -115,7 +115,7 @@ 

          tests.create_projects(self.session)

  

          # Check before adding

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.tags, [])

  

          # Adding a tag
@@ -125,7 +125,7 @@ 

          self.assertEqual(output, ['Issue tagged with: infra'])

  

          # Check after adding

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.tags), 1)

          self.assertEqual(repo.tags_text, ['infra'])

  
@@ -354,7 +354,7 @@ 

          tests.create_projects(self.session)

  

          # Check before adding

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.tags, [])

  

          # Adding a tag
@@ -364,7 +364,7 @@ 

          self.assertEqual(output, ['Issue tagged with: infra'])

  

          # Check after adding

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.tags), 1)

          self.assertEqual(repo.tags_text, ['infra'])

  

The added file is too large to be shown here, see it at: tests/test_pagure_flask_api_ui_private_repo.py
@@ -255,8 +255,8 @@ 

          headers = {'Authorization': 'token aaabbbcccddd'}

  

          # Create a pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

+         forked_repo = pagure.lib._get_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=forked_repo,
@@ -426,7 +426,7 @@ 

          api when the user only did one action. """

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          now = datetime.datetime.utcnow()

          date = now.date().strftime('%Y-%m-%d')

@@ -24,6 +24,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.docs_server

  import pagure.lib

  import tests
@@ -102,7 +103,7 @@ 

          PagureRepo.push(remote, 'refs/heads/master:refs/heads/master')

  

          # Turn on the docs project since it's off by default

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'project_documentation': True}

          self.session.add(repo)

          self.session.commit()
@@ -120,7 +121,7 @@ 

          tests.create_projects(self.session)

  

          # Turn on the docs project since it's off by default

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'project_documentation': True}

          self.session.add(repo)

          self.session.commit()
@@ -140,7 +141,7 @@ 

          docs.

          """

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          tests.create_projects_git(os.path.join(self.path, 'docs'))

  

          output = self.app.get('/test/docs')

@@ -24,6 +24,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  
@@ -67,7 +68,7 @@ 

          os.makedirs(self.gitrepo)

          repo_obj = pygit2.init_repository(self.gitrepo, bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Create an issue to play with

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -208,7 +209,7 @@ 

          )

  

          # Post loading

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.issues), 1)

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

@@ -23,6 +23,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  
@@ -55,7 +56,7 @@ 

  

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          req = pagure.lib.new_pull_request(

              session=self.session,
@@ -117,7 +118,7 @@ 

          js_data = json.loads(output.data)

          self.assertDictEqual(js_data, {'message': 'Comment added'})

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          request = repo.requests[0]

          self.assertEqual(len(request.comments), 1)

          self.assertEqual(len(request.discussion), 1)
@@ -139,7 +140,7 @@ 

          tests.create_projects(self.session)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -196,7 +197,7 @@ 

          js_data = json.loads(output.data)

          self.assertDictEqual(js_data, {'message': 'Comment added'})

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = repo.issues[0]

          self.assertEqual(len(issue.comments), 1)

  
@@ -218,7 +219,7 @@ 

          tests.create_projects(self.session)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -285,7 +286,7 @@ 

          js_data = json.loads(output.data)

          self.assertDictEqual(js_data, {'message': 'Comment added'})

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = repo.issues[0]

          self.assertEqual(len(issue.comments), 1)

  
@@ -306,7 +307,7 @@ 

          tests.create_projects(self.session)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -319,7 +320,7 @@ 

          self.session.commit()

          self.assertEqual(msg.title, 'Test issue')

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = repo.issues[0]

          self.assertEqual(len(issue.comments), 0)

  
@@ -335,7 +336,7 @@ 

          output = self.app.put('/pv/ticket/comment/', data=data)

          self.assertEqual(output.status_code, 403)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Let's promote him to be a ticketer

          # He shoudn't be able to comment even then though

          msg = pagure.lib.add_user_to_project(
@@ -347,7 +348,7 @@ 

          )

          self.session.commit()

          self.assertEqual(msg, 'User added')

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(

              sorted([u.username for u in repo.users]), ['foo'])

          self.assertEqual(
@@ -358,7 +359,7 @@ 

          output = self.app.put('/pv/ticket/comment/', data=data)

          self.assertEqual(output.status_code, 403)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Let's promote him to be a committer

          # He should be able to comment

          msg = pagure.lib.add_user_to_project(
@@ -370,7 +371,7 @@ 

          )

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(

              sorted([u.username for u in repo.users]), ['foo'])

          self.assertEqual(
@@ -384,7 +385,7 @@ 

          js_data = json.loads(output.data)

          self.assertDictEqual(js_data, {'message': 'Comment added'})

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = repo.issues[0]

          self.assertEqual(len(issue.comments), 1)

  
@@ -400,7 +401,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(

              sorted([u.username for u in repo.users]), ['foo'])

          self.assertEqual(
@@ -414,7 +415,7 @@ 

          js_data = json.loads(output.data)

          self.assertDictEqual(js_data, {'message': 'Comment added'})

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = repo.issues[0]

          self.assertEqual(len(issue.comments), 2)

  
@@ -494,7 +495,7 @@ 

  

          # Create a PR for these changes

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=project,
@@ -533,7 +534,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # With all the desired information

-             project = pagure.lib.get_project(self.session, 'test')

+             project = pagure.get_authorized_project(self.session, 'test')

              data = {

                  'csrf_token': csrf_token,

                  'requestid': project.requests[0].uid,
@@ -616,7 +617,7 @@ 

  

          # Create a PR for these changes

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=project,
@@ -655,7 +656,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # With all the desired information

-             project = pagure.lib.get_project(self.session, 'test')

+             project = pagure.get_authorized_project(self.session, 'test')

              data = {

                  'csrf_token': csrf_token,

                  'requestid': project.requests[0].uid,
@@ -759,7 +760,7 @@ 

  

          # Create a PR for these changes

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=project,
@@ -796,7 +797,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # With all the desired information

-             project = pagure.lib.get_project(self.session, 'test')

+             project = pagure.get_authorized_project(self.session, 'test')

              data = {

                  'csrf_token': csrf_token,

                  'requestid': project.requests[0].uid,
@@ -900,7 +901,7 @@ 

  

          # Create a PR for these changes

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=project,
@@ -937,7 +938,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # With all the desired information

-             project = pagure.lib.get_project(self.session, 'test')

+             project = pagure.get_authorized_project(self.session, 'test')

              data = {

                  'csrf_token': csrf_token,

                  'requestid': project.requests[0].uid,

@@ -1053,7 +1053,7 @@ 

          """Test the view_user_requests endpoint. """

          # Create the PR

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=repo,
@@ -1085,7 +1085,7 @@ 

              hook_token='aaabbbttt',

          )

          self.session.add(item)

-         repo = pagure.lib.get_project(

+         repo = pagure.lib._get_project(

              self.session, 'test_fork', user='pingou')

  

          req = pagure.lib.new_pull_request(
@@ -1123,7 +1123,7 @@ 

          """Test the view_user_issues endpoint when the user exists."""

          # Create the issue

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1153,7 +1153,7 @@ 

              hook_token='aaabbbttt',

          )

          self.session.add(item)

-         repo = pagure.lib.get_project(self.session, 'test_fork', user='foo')

+         repo = pagure.lib._get_project(self.session, 'test_fork', user='foo')

  

          msg = pagure.lib.new_issue(

              session=self.session,

@@ -24,6 +24,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  from pagure.lib.repo import PagureRepo
@@ -206,7 +207,7 @@ 

              PagureRepo.push(ori_remote, refname)

  

          # Create a PR for these changes

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=project,
@@ -242,7 +243,7 @@ 

  

          self.set_up_git_repo(new_project=None, branch_from='feature')

  

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(project.requests), 1)

  

          # View the pull-request
@@ -317,7 +318,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -351,7 +352,7 @@ 

                  'assigned to be merged', output.data)

  

              # PR assigned but not to this user

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              req = repo.requests[0]

              req.assignee_id = 2

              self.session.add(req)
@@ -565,7 +566,7 @@ 

          self.set_up_git_repo(new_project=None, branch_from='feature')

  

          # Project w/o pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['pull_requests'] = False

          repo.settings = settings
@@ -633,7 +634,7 @@ 

          PagureRepo.push(ori_remote, refname)

  

          # Create a PR for these changes

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=item,
@@ -695,7 +696,7 @@ 

  

          # Create a PR for these "changes" (there are none, both repos are

          # empty)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=item,
@@ -789,7 +790,7 @@ 

              'href="/test/pull-requests?status=0">Closed</a>', output.data)

  

          # Project w/o pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['pull_requests'] = False

          repo.settings = settings
@@ -862,7 +863,7 @@ 

          self.assertEqual(patch, exp)

  

          # Project w/o pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['pull_requests'] = False

          repo.settings = settings
@@ -976,7 +977,7 @@ 

  

          # Create a PR for these "changes" (there are none, both repos are

          # empty)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=item,
@@ -1067,7 +1068,7 @@ 

  

          # Create a PR for these "changes" (there are none, both repos are

          # empty)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=item,
@@ -1149,7 +1150,7 @@ 

          user.username = 'pingou'

          with tests.user_set(pagure.APP, user):

              # Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -1162,7 +1163,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # Project w/ pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = True

              repo.settings = settings
@@ -1288,7 +1289,7 @@ 

                  output.data)

  

              # Pull-Request closed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              req = repo.requests[0]

              req.status = 'Closed'

              req.closed_by_in = 1
@@ -1301,7 +1302,7 @@ 

              self.assertEqual(output.status_code, 403)

  

              # Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -1370,8 +1371,8 @@ 

          tests.create_projects_git(

              os.path.join(self.path, 'requests'), bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         fork = pagure.lib.get_project(self.session, 'test', user='foo')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         fork = pagure.get_authorized_project(self.session, 'test', user='foo')

  

          self.set_up_git_repo(

              new_project=fork, branch_from='feature', mtype='FF')
@@ -1466,8 +1467,8 @@ 

          tests.create_projects_git(

              os.path.join(self.path, 'requests'), bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         fork = pagure.lib.get_project(self.session, 'test', user='foo')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         fork = pagure.get_authorized_project(self.session, 'test', user='foo')

  

          self.set_up_git_repo(

              new_project=fork, branch_from='feature', mtype='FF')
@@ -1518,8 +1519,8 @@ 

          tests.create_projects_git(

              os.path.join(self.path, 'requests'), bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         fork = pagure.lib.get_project(self.session, 'test', user='foo')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         fork = pagure.get_authorized_project(self.session, 'test', user='foo')

  

          # Create a git repo to play with

          gitrepo = os.path.join(self.path, 'repos', 'test.git')
@@ -1569,8 +1570,8 @@ 

          tests.create_projects_git(

              os.path.join(self.path, 'requests'), bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         fork = pagure.lib.get_project(self.session, 'test', user='foo')

+         repo = pagure.get_authorized_project(self.session, 'test')

+         fork = pagure.get_authorized_project(self.session, 'test', user='foo')

  

          # Create a git repo to play with

          gitrepo = os.path.join(self.path, 'repos', 'test.git')
@@ -1634,7 +1635,7 @@ 

                  output.data)

  

              # Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -1653,7 +1654,7 @@ 

  

          self.test_pull_request_add_comment()

          # Project w/ pull-request

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['pull_requests'] = True

          repo.settings = settings
@@ -1715,7 +1716,7 @@ 

                  output.data)

  

              # Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -1809,7 +1810,7 @@ 

                  '</button>\n                      Comment updated', output.data)

  

              #  Project w/o pull-request

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['pull_requests'] = False

              repo.settings = settings
@@ -1879,7 +1880,7 @@ 

              self.assertEqual(output.status_code, 404)

  

              # Project requiring a merge commit

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              settings = repo.settings

              settings['always_merge'] = True

              repo.settings = settings
@@ -2191,7 +2192,7 @@ 

          self.session.commit()

  

          # Get fork project

-         project = pagure.lib.get_project(self.session, 'test', 'foo')

+         project = pagure.lib._get_project(self.session, 'test', 'foo')

  

          # Pull-requests and issue-trackers are off for forks

          # lib function is not used here so mannually turning them off

@@ -29,6 +29,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  
@@ -145,7 +146,7 @@ 

                  output.data)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -211,7 +212,7 @@ 

                  output.data)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -297,7 +298,7 @@ 

          self.assertTrue(

              '<h2>\n      0 Open Issues' in output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Create some custom fields to play with

          msg = pagure.lib.set_custom_key_fields(

              session=self.session,
@@ -461,7 +462,7 @@ 

                  output.data)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -496,7 +497,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -560,7 +561,7 @@ 

                  'name="csrf_token" type="hidden" value="')[1].split('">')[0]

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -600,7 +601,7 @@ 

                  output.data)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -626,7 +627,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -651,7 +652,7 @@ 

              in output.data)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add user 'foo' with ticket access on repo

          msg = pagure.lib.add_user_to_project(
@@ -705,7 +706,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -718,7 +719,7 @@ 

          self.assertEqual(msg.title, 'Test issue')

  

          # Add user 'foo' with ticket access on repo

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.add_user_to_project(

              self.session,

              repo,
@@ -730,7 +731,7 @@ 

          self.session.commit()

  

          # Set some custom fields

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.set_custom_key_fields(

              self.session,

              repo,
@@ -825,7 +826,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -863,7 +864,7 @@ 

          self.assertNotIn(b'käpy'.decode('utf-8'), output.data)

  

          # Add a non-ascii milestone to the project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.milestones = {b'käpy'.decode('utf-8'): None}

          self.session.add(repo)

          self.session.commit()
@@ -888,7 +889,7 @@ 

          tests.create_projects_git(

              os.path.join(self.path), bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add custom fields to the project

          msg = pagure.lib.set_custom_key_fields(
@@ -952,7 +953,7 @@ 

          self.assertEqual(output.status_code, 302)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1167,7 +1168,7 @@ 

                  in output.data)

  

          # Create another issue with a dependency

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1213,7 +1214,7 @@ 

                  in output.data)

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1234,7 +1235,7 @@ 

              self.assertEqual(output.status_code, 403)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -1259,7 +1260,7 @@ 

              os.path.join(self.path), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1309,7 +1310,7 @@ 

                  '<p>Woohoo a second comment !</p>' in output.data)

              self.assertEqual(output.data.count('comment_body">'), 2)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

  
@@ -1353,7 +1354,7 @@ 

                  '/test/issue/1/update', data=data, follow_redirects=True)

              self.assertEqual(output.status_code, 404)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 0)

  
@@ -1369,7 +1370,7 @@ 

              os.path.join(self.path), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1381,7 +1382,7 @@ 

          self.session.commit()

          self.assertEqual(msg.title, 'Test issue')

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1445,7 +1446,7 @@ 

                  'Successfully edited issue #1',

                  output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.depending_text, [2])

          self.assertEqual(issue.blocking_text, [])
@@ -1462,7 +1463,7 @@ 

              os.path.join(self.path), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1474,7 +1475,7 @@ 

          self.session.commit()

          self.assertEqual(msg.title, 'Test issue')

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1510,7 +1511,7 @@ 

                  '<title>Issue #1: Test issue - test - Pagure</title>',

                  output.data)

  

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              issue = pagure.lib.search_issues(self.session, repo, issueid=1)

              self.assertEqual(issue.depending_text, [])

              self.assertEqual(issue.blocking_text, [])
@@ -1567,7 +1568,7 @@ 

                  'Successfully edited issue #1',

                  output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(issue.depending_text, [])

          self.assertEqual(issue.blocking_text, [2])
@@ -1588,7 +1589,7 @@ 

              os.path.join(self.path, 'tickets'), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1678,7 +1679,7 @@ 

              self.assertDictEqual(json_data, exp)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -1695,7 +1696,7 @@ 

              os.path.join(self.path, 'tickets'), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1719,7 +1720,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -1733,7 +1734,7 @@ 

          self.test_upload_issue()

  

          # Project w/ issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': True}

          self.session.add(repo)

          self.session.commit()
@@ -1754,7 +1755,7 @@ 

          self.assertEqual(output.status_code, 200)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -1795,7 +1796,7 @@ 

              self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1868,7 +1869,7 @@ 

                  '<p>We should work on this!</p>'), 1)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -1905,7 +1906,7 @@ 

          self.assertEqual(output.status_code, 302)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2008,7 +2009,7 @@ 

          self.assertEqual(output.status_code, 302)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2076,7 +2077,7 @@ 

          tests.create_projects_git(os.path.join(self.path, 'tickets'))

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2136,7 +2137,7 @@ 

                  output.data)

  

          # Project w/o issue tracker

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.settings = {'issue_tracker': False}

          self.session.add(repo)

          self.session.commit()
@@ -2158,7 +2159,7 @@ 

              os.path.join(self.path), bare=True)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2208,7 +2209,7 @@ 

                  '<p>Woohoo a second comment !</p>' in output.data)

              self.assertEqual(output.data.count('comment_body">'), 2)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

          self.assertEqual(
@@ -2251,7 +2252,7 @@ 

                  '</button>\n                      Comment updated',

                  output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

          self.assertEqual(issue.comments[0].comment, 'Updated comment')
@@ -2289,13 +2290,13 @@ 

                  '</button>\n                      Comment updated',

                  output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(len(issue.comments), 1)

          self.assertEqual(issue.comments[0].comment, 'Second update')

  

          # Create another issue from someone else

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -2410,7 +2411,7 @@ 

                  '<h5><strong>Issues GIT URLs</strong></h5>', output.data)

  

              # Project w/o issue tracker

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              repo.settings = {'issue_tracker': True}

              self.session.add(repo)

              self.session.commit()
@@ -2447,7 +2448,7 @@ 

          self.assertEqual(output.status_code, 302)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,

@@ -74,7 +74,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -268,7 +268,7 @@ 

                  output.data)

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -325,7 +325,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add user 'foo' with ticket access on repo

          msg = pagure.lib.add_user_to_project(
@@ -338,7 +338,7 @@ 

          self.assertEqual(msg, 'User added')

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -531,7 +531,7 @@ 

                  output.data)

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -588,7 +588,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add user 'foo' with ticket access on repo

          msg = pagure.lib.add_user_to_project(
@@ -601,7 +601,7 @@ 

          self.assertEqual(msg, 'User added')

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -793,7 +793,7 @@ 

                  output.data)

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -850,7 +850,7 @@ 

          self.assertEqual(output.status_code, 404)

  

          # Create issues to play with

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add user 'foo' with ticket access on repo

          msg = pagure.lib.add_user_to_project(
@@ -863,7 +863,7 @@ 

          self.assertEqual(msg, 'User added')

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,
@@ -1056,7 +1056,7 @@ 

                  output.data)

  

          # Create private issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.new_issue(

              session=self.session,

              repo=repo,

@@ -25,6 +25,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  from pagure.lib.repo import PagureRepo
@@ -110,7 +111,7 @@ 

          tests.create_projects_git(os.path.join(self.path), bare=True)

  

          # Set some priorities

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.priorities = {'1': 'High', '2': 'Normal'}

          self.session.add(repo)

          self.session.commit()
@@ -156,7 +157,7 @@ 

          tests.create_projects_git(os.path.join(self.path), bare=True)

  

          # Set some priorities

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.priorities, {})

  

          user = tests.FakeUser()
@@ -185,7 +186,7 @@ 

                  '<title>Settings - test - Pagure</title>', output.data)

              self.assertIn('<h3>Settings for test</h3>', output.data)

              # Check the result of the action -- None, no CSRF

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.priorities, {})

  

              data = {
@@ -201,7 +202,7 @@ 

                  '<title>Settings - test - Pagure</title>', output.data)

              self.assertIn('<h3>Settings for test</h3>', output.data)

              # Check the result of the action -- Priority recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.priorities, {u'': u'', u'1': u'High'})

  

              data = {
@@ -222,7 +223,7 @@ 

              self.assertTrue(

                  output.data.find('Normal') < output.data.find('Low'))

              # Check the result of the action -- Priority recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -245,7 +246,7 @@ 

                  '</button>\n'

                  '                      Priorities weights and titles are '

                  'not of the same length', output.data)            # Check the result of the action -- Priorities un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -269,7 +270,7 @@ 

                  '                      Priorities weights must be numbers',

                  output.data)

              # Check the result of the action -- Priorities un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -293,7 +294,7 @@ 

                  '                      Priority weight 2 is present 2 times',

                  output.data)

              # Check the result of the action -- Priorities un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -317,7 +318,7 @@ 

                  '                      Priority Normal is present 2 times',

                  output.data)

              # Check the result of the action -- Priorities un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -363,7 +364,7 @@ 

          tests.create_projects_git(os.path.join(self.path), bare=True)

  

          # Start from scrach on priorities

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.priorities, {})

  

          user = tests.FakeUser()
@@ -394,7 +395,7 @@ 

              self.assertIn('<h3>Settings for test</h3>', output.data)

  

              # Check the result of the action -- Priority recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.lib._get_project(self.session, 'test')

              self.assertEqual(

                  repo.priorities,

                  {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'}
@@ -448,7 +449,7 @@ 

              self.assertNotIn('<option value="1">High</option>', output.data)

  

              # Check the result of the action -- Priority recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.lib._get_project(self.session, 'test')

              self.assertEqual(repo.priorities, {})

  

  

@@ -51,7 +51,7 @@ 

  

          self.admin = tests.FakeUser(username='pingou')

          self.user = tests.FakeUser(username='ralph')

-         self.repo = pagure.lib.get_project(self.session, 'test')

+         self.repo = pagure.lib._get_project(self.session, 'test')

  

      def disable_issues_and_pull_requests(self):

          """Disable both issues and pull requests."""
@@ -101,7 +101,7 @@ 

              self.assertIn(notice, output.data)

  

      def assertQuickReplies(self, quick_replies, project='test'):

-         repo = pagure.lib.get_project(self.session, project)

+         repo = pagure.lib._get_project(self.session, project)

          self.assertEqual(repo.quick_replies, quick_replies)

  

      def assertQuickReplyLinks(self, output):
@@ -158,7 +158,7 @@ 

  

      def test_update_quick_replies_empty_to_reset(self):

          # Set some quick replies

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          repo.quick_replies = ['Ship it!', 'Nah.']

          self.session.add(repo)

          self.session.commit()

@@ -25,6 +25,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  from pagure.lib.repo import PagureRepo
@@ -499,7 +500,7 @@ 

          self.assertEqual(output.status_code, 302)

  

          # Add an user to a project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.add_user_to_project(

              session=self.session,

              project=repo,
@@ -568,7 +569,7 @@ 

              self.assertIn('Deploy key does not exist in project', output.data)

  

          # Add a deploy key to a project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.add_deploykey_to_project(

              session=self.session,

              project=repo,
@@ -646,7 +647,7 @@ 

                  'access on the repo', output.data)

  

          # Add an user to a project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.add_user_to_project(

              session=self.session,

              project=repo,
@@ -722,7 +723,7 @@ 

          self.assertEqual(msg, 'User `pingou` added to the group `testgrp`.')

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add the group to a project

          msg = pagure.lib.add_group_to_project(

              session=self.session,
@@ -808,7 +809,7 @@ 

          self.assertEqual(msg, 'User `pingou` added to the group `testgrp`.')

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add the group to a project

          msg = pagure.lib.add_group_to_project(

              session=self.session,
@@ -1310,7 +1311,7 @@ 

          self.perfReset()

  

          # Turn that repo into a fork

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.parent_id = 2

          repo.is_fork = True

          self.session.add(repo)
@@ -1445,7 +1446,7 @@ 

              'test project #1        </div>', output.data)

  

          # Turn that repo into a fork

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.parent_id = 2

          repo.is_fork = True

          self.session.add(repo)
@@ -1540,7 +1541,7 @@ 

              'test project #1        </div>', output.data)

  

          # Turn that repo into a fork

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.parent_id = 2

          repo.is_fork = True

          self.session.add(repo)
@@ -2598,7 +2599,7 @@ 

                  output.data)

  

              # add issues

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.new_issue(

                  session=self.session,

                  repo=repo,
@@ -2692,9 +2693,9 @@ 

              output = self.app.post('/test/delete', follow_redirects=True)

              self.assertEqual(output.status_code, 404)

  

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertNotEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertNotEqual(repo, None)

  

              # Add a fork of a fork
@@ -2849,7 +2850,7 @@ 

                  output.data)

  

              # add issues

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.new_issue(

                  session=self.session,

                  repo=repo,
@@ -2949,9 +2950,9 @@ 

                  'Forks <span class="label label-default">0</span>',

                  output.data)

  

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertNotEqual(repo, None)

  

              # Add a fork of a fork
@@ -3032,7 +3033,7 @@ 

                  output.data)

  

              # add user

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.add_user_to_project(

                  session=self.session,

                  project=repo,
@@ -3051,9 +3052,9 @@ 

              self.assertIn(

                  'Forks <span class="label label-default">0</span>',

                  output.data)

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertNotEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertEqual(repo, None)

  

              # Delete the project
@@ -3067,9 +3068,9 @@ 

                  output.data)

  

              # Check after

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertEqual(repo, None)

  

      @patch('pagure.lib.notify.send_email')
@@ -3126,7 +3127,7 @@ 

              self.assertEqual(msg, 'User `pingou` added to the group `foo`.')

  

              # Add group to the project

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.add_group_to_project(

                  session=self.session,

                  project=repo,
@@ -3137,7 +3138,7 @@ 

              self.assertEqual(msg, 'Group added')

  

              # check if group where we expect it

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(len(repo.projects_groups), 1)

  

              # Check before deleting the project
@@ -3149,7 +3150,7 @@ 

              self.assertIn(

                  'Forks <span class="label label-default">0</span>',

                  output.data)

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertNotEqual(repo, None)

  

              # Delete the project
@@ -3163,7 +3164,7 @@ 

                  output.data)

  

              # Check after

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo, None)

  

      @patch('pagure.lib.notify.send_email')
@@ -3206,7 +3207,7 @@ 

                  output.data)

  

              # Create the issue

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.new_issue(

                  session=self.session,

                  repo=repo,
@@ -3219,7 +3220,7 @@ 

              self.assertEqual(msg.title, 'Test issue')

  

              # Add a tag to the issue

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              issue = pagure.lib.search_issues(self.session, repo, issueid=1)

              msg = pagure.lib.add_tag_obj(

                  session=self.session,
@@ -3239,9 +3240,9 @@ 

              self.assertIn(

                  'Forks <span class="label label-default">0</span>',

                  output.data)

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertNotEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertEqual(repo, None)

  

              # Delete the project
@@ -3255,9 +3256,9 @@ 

                  output.data)

  

              # Check after

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo, None)

-             repo = pagure.lib.get_project(self.session, 'test2')

+             repo = pagure.get_authorized_project(self.session, 'test2')

              self.assertEqual(repo, None)

  

      @patch('pagure.ui.repo.admin_session_timedout')
@@ -3267,7 +3268,7 @@ 

          tests.create_projects(self.session)

          tests.create_projects_git(self.path)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.hook_token, 'aaabbbccc')

  

          user = tests.FakeUser()
@@ -3293,7 +3294,7 @@ 

  

              pagure.APP.config['WEBHOOK'] = False

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.hook_token, 'aaabbbccc')

  

          user.username = 'pingou'
@@ -3304,7 +3305,7 @@ 

  

              data = {'csrf_token': csrf_token}

  

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.hook_token, 'aaabbbccc')

  

              output = self.app.post(
@@ -3315,7 +3316,7 @@ 

                  output.data)

              pagure.APP.config['WEBHOOK'] = False

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertNotEqual(repo.hook_token, 'aaabbbccc')

  

      @patch('pagure.lib.notify.send_email')
@@ -3364,7 +3365,7 @@ 

              self.assertEqual(output.status_code, 400)

  

              # Create an issue to play with

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.new_issue(

                  session=self.session,

                  repo=repo,
@@ -3385,7 +3386,7 @@ 

                  output.data)

  

              # Create a request to play with

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              msg = pagure.lib.new_pull_request(

                  session=self.session,

                  repo_from=repo,
@@ -3925,7 +3926,7 @@ 

                  output.data)

  

              # Existing token will expire in 60 days

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.tokens[0].expiration.date(),

                  datetime.datetime.utcnow().date() + datetime.timedelta(days=60))
@@ -3942,7 +3943,7 @@ 

                  output.data)

  

              # Existing token has been expired

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.tokens[0].expiration.date(),

                  repo.tokens[0].created.date())
@@ -4223,7 +4224,7 @@ 

                  output.data)

  

              # Create a report

-             project = pagure.lib.get_project(self.session, name='test')

+             project = pagure.get_authorized_project(self.session, project_name='test')

              self.assertEqual(project.reports, {})

              name = 'test report'

              url = '?foo=bar&baz=biz'
@@ -4235,7 +4236,7 @@ 

                  username=None

              )

              self.session.commit()

-             project = pagure.lib.get_project(self.session, name='test')

+             project = pagure.get_authorized_project(self.session, project_name='test')

              self.assertEqual(

                  project.reports,

                  {'test report': {'baz': 'biz', 'foo': 'bar'}}
@@ -4252,7 +4253,7 @@ 

                  '<title>Settings - test - Pagure</title>',

                  output.data)

  

-             project = pagure.lib.get_project(self.session, name='test')

+             project = pagure.get_authorized_project(self.session, project_name='test')

              self.assertEqual(

                  project.reports,

                  {'test report': {'baz': 'biz', 'foo': 'bar'}}
@@ -4269,7 +4270,7 @@ 

              self.assertIn(

                  '</button>\n                      List of reports updated',

                  output.data)

-             project = pagure.lib.get_project(self.session, name='test')

+             project = pagure.get_authorized_project(self.session, project_name='test')

              self.assertEqual(project.reports, {})

  

      def test_delete_report_ns_project(self):
@@ -4328,8 +4329,8 @@ 

                  output.data)

  

              # Create a report

-             project = pagure.lib.get_project(

-                 self.session, name='test', namespace='foo')

+             project = pagure.get_authorized_project(

+                 self.session, project_name='test', namespace='foo')

              self.assertEqual(project.reports, {})

              name = 'test report'

              url = '?foo=bar&baz=biz'
@@ -4341,8 +4342,8 @@ 

                  username=None

              )

              self.session.commit()

-             project = pagure.lib.get_project(

-                 self.session, name='test', namespace='foo')

+             project = pagure.get_authorized_project(

+                 self.session, project_name='test', namespace='foo')

              self.assertEqual(

                  project.reports,

                  {'test report': {'baz': 'biz', 'foo': 'bar'}}
@@ -4359,8 +4360,8 @@ 

                  '<title>Settings - foo/test - Pagure</title>',

                  output.data)

  

-             project = pagure.lib.get_project(

-                 self.session, name='test', namespace='foo')

+             project = pagure.get_authorized_project(

+                 self.session, project_name='test', namespace='foo')

              self.assertEqual(

                  project.reports,

                  {'test report': {'baz': 'biz', 'foo': 'bar'}}
@@ -4378,8 +4379,8 @@ 

                  '</button>\n                      List of reports updated',

                  output.data)

  

-             project = pagure.lib.get_project(

-                 self.session, name='test', namespace='foo')

+             project = pagure.get_authorized_project(

+                 self.session, project_name='test', namespace='foo')

              self.assertEqual(project.reports, {})

  

  

@@ -25,6 +25,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  from pagure.lib.repo import PagureRepo
@@ -108,7 +109,7 @@ 

          tests.create_projects_git(os.path.join(self.path), bare=True)

  

          # Set some milestone

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.milestone = {'v1.0': '', 'v2.0': 'Tomorrow!'}

          self.session.add(repo)

          self.session.commit()
@@ -168,7 +169,7 @@ 

          tests.create_projects_git(os.path.join(self.path), bare=True)

  

          # Set some milestones

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.milestones, {})

  

          user = tests.FakeUser()
@@ -197,7 +198,7 @@ 

                  u'<title>Settings - test - Pagure</title>', output.data)

              self.assertIn('<h3>Settings for test</h3>', output.data)

              # Check the result of the action -- None, no CSRF

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.milestones, {})

  

              data = {
@@ -214,7 +215,7 @@ 

              self.assertIn(u'<h3>Settings for test</h3>', output.data)

              self.assertIn(u'Milestones updated', output.data)

              # Check the result of the action -- Milestones recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.milestones, {u'1': u'Tomorrow'})

  

              data = {
@@ -231,7 +232,7 @@ 

              self.assertIn(u'<h3>Settings for test</h3>', output.data)

              self.assertIn(u'Milestones updated', output.data)

              # Check the result of the action -- Milestones recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.milestones, {u'v1.0': u'Tomorrow', u'v2.0': u''}

              )
@@ -254,7 +255,7 @@ 

                  '                      Milestones and dates are not of the '

                  'same length', output.data)

              # Check the result of the action -- Milestones un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.milestones, {u'v1.0': u'Tomorrow', u'v2.0': u''}

              )
@@ -277,7 +278,7 @@ 

                  '                      Milestone v2.0 is present 2 times',

                  output.data)

              # Check the result of the action -- Milestones un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.milestones, {u'v1.0': u'Tomorrow', u'v2.0': u''}

              )
@@ -300,7 +301,7 @@ 

                  '                      Date Next week is present 2 times',

                  output.data)

              # Check the result of the action -- Milestones un-changed

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(

                  repo.milestones, {u'v1.0': u'Tomorrow', u'v2.0': u''}

              )
@@ -363,7 +364,7 @@ 

              self.assertIn(u'<h3>Settings for test</h3>', output.data)

              self.assertIn(u'Milestones updated', output.data)

              # Check the result of the action -- Milestones recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.get_authorized_project(self.session, 'test')

              self.assertEqual(repo.milestones, {u'v1.0': u'', u'v2.0': u''})

  

      @patch('pagure.lib.git.update_git')
@@ -404,7 +405,7 @@ 

              self.assertIn(u'<h3>Settings for test</h3>', output.data)

              self.assertIn(u'Milestones updated', output.data)

              # Check the result of the action -- Milestones recorded

-             repo = pagure.lib.get_project(self.session, 'test')

+             repo = pagure.lib._get_project(self.session, 'test')

              self.assertEqual(

                  repo.milestones,

                  {
@@ -464,7 +465,7 @@ 

                      u'Issue set to the milestone: %s\n' % mstone,

                      output.data)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Mark ticket #1 as Fixed

          for iid in [1, 4]:
@@ -528,7 +529,7 @@ 

          output = self.app.get('/foo/roadmap')

          self.assertEqual(output.status_code, 404)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          settings = repo.settings

          settings['issue_tracker'] = False

          repo.settings = settings

file modified
+89 -84
@@ -21,6 +21,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import pagure.lib.model

  import tests
@@ -141,7 +142,7 @@ 

          p_ugt.return_value = True

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          # Before

          issues = pagure.lib.search_issues(self.session, repo)
@@ -162,7 +163,7 @@ 

          )

  

          # Add an extra user to project `foo`

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          msg = pagure.lib.add_user_to_project(

              session=self.session,

              project=repo,
@@ -225,7 +226,7 @@ 

  

          self.test_new_issue()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=2)

  

          self.assertEqual(repo.open_tickets, 2)
@@ -273,7 +274,7 @@ 

              ]

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.open_tickets, 1)

          self.assertEqual(repo.open_tickets_public, 1)

          self.assertEqual(repo.issues[1].status, 'Closed')
@@ -292,7 +293,7 @@ 

          self.assertEqual(

              msg, ['Issue status updated to: Open (was: Closed)'])

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          for issue in repo.issues:

              self.assertEqual(issue.status, 'Open')

              self.assertEqual(issue.close_status, None)
@@ -319,7 +320,7 @@ 

              ]

          )

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.open_tickets, 1)

          self.assertEqual(repo.open_tickets_public, 1)

          self.assertEqual(repo.issues[1].status, 'Closed')
@@ -335,11 +336,11 @@ 

  

          self.test_new_issue()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=2)

  

          # Set some priorities to the repo

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          repo.priorities = {'1': 'High', '2': 'Normal'}

          self.session.add(repo)

          self.session.commit()
@@ -400,7 +401,7 @@ 

          p_ugt.return_value = True

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create 3 issues

          msg = pagure.lib.new_issue(
@@ -508,7 +509,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          issue_blocked = pagure.lib.search_issues(

              self.session, repo, issueid=2)
@@ -560,7 +561,7 @@ 

          p_ugt.return_value = True

  

          self.test_edit_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          # Add a tag to the issue
@@ -598,7 +599,7 @@ 

          p_ugt.return_value = True

  

          self.test_add_tag_obj()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertRaises(

              pagure.exceptions.PagureException,
@@ -626,7 +627,7 @@ 

          p_ugt.return_value = True

  

          self.test_add_tag_obj()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          msgs = pagure.lib.remove_tags_obj(
@@ -647,7 +648,7 @@ 

          tests.create_projects(self.session)

  

          # Add a tag to the project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          msg = pagure.lib.add_tag_obj(

              self.session, repo,

              tags=['pagure', 'test'],
@@ -657,7 +658,7 @@ 

          self.session.commit()

  

          # Check the tags

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.tags_text, ['pagure', 'test'])

  

          # Remove one of the the tag
@@ -671,7 +672,7 @@ 

          self.session.commit()

  

          # Check the tags

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(repo.tags_text, ['pagure'])

  

      @patch('pagure.lib.git.update_git')
@@ -682,7 +683,7 @@ 

          p_ugt.return_value = True

  

          self.test_add_tag_obj()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertRaises(
@@ -774,7 +775,7 @@ 

          p_ugt.return_value = True

  

          self.test_edit_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          # All issues

          issues = pagure.lib.search_issues(self.session, repo)
@@ -847,7 +848,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=2)

  

          # Before
@@ -951,7 +952,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          # Before

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)
@@ -992,7 +993,7 @@ 

          tests.create_projects(self.session)

  

          # Before

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(len(repo.users), 0)

  

          # Add an user to a project
@@ -1015,7 +1016,7 @@ 

          self.assertEqual(msg, 'User added')

  

          # After

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(len(repo.users), 1)

          self.assertEqual(repo.users[0].user, 'foo')

          self.assertEqual(repo.admins[0].user, 'foo')
@@ -1123,7 +1124,7 @@ 

              parent_id=None,

          )

  

-         repo = pagure.lib.get_project(self.session, 'testproject')

+         repo = pagure.get_authorized_project(self.session, 'testproject')

          self.assertEqual(repo.path, 'testproject.git')

  

          gitrepo = os.path.join(gitfolder, repo.path)
@@ -1178,7 +1179,7 @@ 

          self.session.rollback()

  

          # Re-create it, ignoring the existing repos on disk

-         repo = pagure.lib.get_project(self.session, 'testproject')

+         repo = pagure.lib._get_project(self.session, 'testproject')

          self.session.delete(repo)

          self.session.commit()

  
@@ -1320,7 +1321,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'Project "pingou/testproject" created')

  

-         repo = pagure.lib.get_project(

+         repo = pagure.lib._get_project(

              self.session, 'testproject', namespace='pingou')

          self.assertEqual(repo.path, 'pingou/testproject.git')

  
@@ -1353,7 +1354,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'Project "testns/testproject2" created')

  

-         repo = pagure.lib.get_project(

+         repo = pagure.lib._get_project(

              self.session, 'testproject2', namespace='testns')

          self.assertEqual(repo.path, 'testns/testproject2.git')

  
@@ -1373,7 +1374,7 @@ 

          tests.create_projects(self.session)

  

          # Before

-         repo = pagure.lib.get_project(self.session, 'test2')

+         repo = pagure.lib._get_project(self.session, 'test2')

          self.assertTrue(repo.settings['issue_tracker'])

          self.assertFalse(repo.settings['project_documentation'])

  
@@ -1430,7 +1431,7 @@ 

          self.assertEqual(args[1]['topic'], 'project.edit')

  

          # After

-         repo = pagure.lib.get_project(self.session, 'test2')

+         repo = pagure.lib._get_project(self.session, 'test2')

          self.assertFalse(repo.settings['issue_tracker'])

          self.assertTrue(repo.settings['project_documentation'])

          self.assertFalse(repo.settings['pull_requests'])
@@ -1466,7 +1467,7 @@ 

          # Also check if the project shows up if a user doesn't

          # have admin access in the project

          # Check with commit access first

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_user_to_project(

              self.session,

              project=project,
@@ -1481,7 +1482,7 @@ 

          self.assertEqual(len(projects), 1)

  

          # Now check with only ticket access

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_user_to_project(

              self.session,

              project=project,
@@ -1529,7 +1530,7 @@ 

          """ Test the get_tags_of_project of pagure.lib. """

  

          self.test_add_tag_obj()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          tags = pagure.lib.get_tags_of_project(self.session, repo)

          self.assertEqual([tag.tag for tag in tags], ['tag1'])
@@ -1538,7 +1539,7 @@ 

              self.session, repo, pattern='T*')

          self.assertEqual([tag.tag for tag in tags], ['tag1'])

  

-         repo = pagure.lib.get_project(self.session, 'test2')

+         repo = pagure.lib._get_project(self.session, 'test2')

  

          tags = pagure.lib.get_tags_of_project(self.session, repo)

          self.assertEqual([tag.tag for tag in tags], [])
@@ -1679,7 +1680,7 @@ 

          projects = pagure.lib.search_projects(self.session)

          self.assertEqual(len(projects), 1)

  

-         repo = pagure.lib.get_project(self.session, 'testproject')

+         repo = pagure.lib._get_project(self.session, 'testproject')

          gitrepo = os.path.join(gitfolder, repo.path)

          docrepo = os.path.join(docfolder, repo.path)

          ticketrepo = os.path.join(ticketfolder, repo.path)
@@ -1785,7 +1786,7 @@ 

  

          # Fork a fork

  

-         repo = pagure.lib.get_project(

+         repo = pagure.lib._get_project(

              self.session, 'testproject', user='foo')

  

          msg = pagure.lib.fork_project(
@@ -1836,8 +1837,7 @@ 

          projects = pagure.lib.search_projects(self.session)

          self.assertEqual(len(projects), 1)

  

-         repo = pagure.lib.get_project(

-             self.session, 'testproject', namespace='foonamespace')

+         repo = pagure.lib._get_project(self.session, 'testproject', namespace='foonamespace')

          gitrepo = os.path.join(gitfolder, repo.path)

          docrepo = os.path.join(docfolder, repo.path)

          ticketrepo = os.path.join(ticketfolder, repo.path)
@@ -1945,9 +1945,7 @@ 

  

          # Fork a fork

  

-         repo = pagure.lib.get_project(

-             self.session, 'testproject',

-             namespace='foonamespace', user='foo')

+         repo = pagure.lib._get_project(self.session, 'testproject', user='foo', namespace='foonamespace')

  

          msg = pagure.lib.fork_project(

              session=self.session,
@@ -1987,7 +1985,7 @@ 

          self.session.add(item)

  

          # Add an extra user to project `foo`

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.open_requests, 0)

  

          msg = pagure.lib.add_user_to_project(
@@ -1999,8 +1997,8 @@ 

          self.session.commit()

          self.assertEqual(msg, 'User added')

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(

+         repo = pagure.lib._get_project(self.session, 'test')

+         forked_repo = pagure.lib._get_project(

              self.session, 'test', user='pingou')

  

          req = pagure.lib.new_pull_request(
@@ -2185,7 +2183,7 @@ 

  

          self.test_new_pull_request()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.open_requests, 1)

          request = pagure.lib.search_pull_requests(self.session, requestid=1)

  
@@ -2197,7 +2195,7 @@ 

              merged=True,

          )

          self.session.commit()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertEqual(repo.open_requests, 0)

  

          prs = pagure.lib.search_pull_requests(
@@ -2231,7 +2229,7 @@ 

          p_ugt.return_value = True

  

          self.test_add_issue_dependency()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          issue_blocked = pagure.lib.search_issues(

              self.session, repo, issueid=2)
@@ -2291,7 +2289,7 @@ 

  

          self.test_add_issue_comment()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertEqual(
@@ -2311,7 +2309,7 @@ 

  

          self.test_new_issue()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertEqual(
@@ -2330,7 +2328,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          # before
@@ -2342,7 +2340,7 @@ 

          self.assertEqual(messages, ['Issue tagged with: tag'])

  

          # after

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertEqual(
@@ -2361,7 +2359,7 @@ 

          )

  

          # after

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertEqual(
@@ -2378,7 +2376,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          self.assertEqual(repo.open_tickets, 2)
@@ -2434,7 +2432,7 @@ 

          p_ugt.return_value = True

  

          self.test_new_issue()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

  

          # Create issues to play with
@@ -3052,7 +3050,7 @@ 

          tests.create_projects(self.session)

          self.test_add_group()

  

-         project = pagure.lib.get_project(self.session, 'test2')

+         project = pagure.lib._get_project(self.session, 'test2')

  

          # Group does not exist

          self.assertRaises(
@@ -3135,7 +3133,7 @@ 

          """ Test the update_watch_status method of pagure.lib. """

          tests.create_projects(self.session)

  

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.lib._get_project(self.session, 'test')

  

          # User does not exist

          self.assertRaises(
@@ -3192,7 +3190,7 @@ 

          tests.create_projects(self.session)

          self.test_add_group()

  

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.lib._get_project(self.session, 'test')

  

          # If user not logged in

          watch = pagure.lib.is_watching(
@@ -3363,9 +3361,8 @@ 

          self.test_new_pull_request()

  

          # create PR#2 to project pingou/test

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(

-             self.session, 'test', user='pingou')

+         repo = pagure.lib._get_project(self.session, 'test')

+         forked_repo = pagure.lib._get_project(self.session, 'test', user='pingou')

          req = pagure.lib.new_pull_request(

              requestid=2,

              session=self.session,
@@ -3570,7 +3567,7 @@ 

          '''

  

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

  

          # Default value of combine is True

          # which means the an admin is a user, committer as well
@@ -3605,7 +3602,7 @@ 

          # since, he is an admin, the msg should be 'User added'

          self.assertEqual(msg, 'User added')

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          users = project.get_project_users(access='admin')

  

          self.assertEqual(len(users), 1)
@@ -3634,7 +3631,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          # No admin now, even though pingou the creator is there

          users = project.get_project_users(access='admin')

          self.assertEqual(len(users), 0)
@@ -3661,7 +3658,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          # No admin now, even though pingou the creator is there

          users = project.get_project_users(access='admin')

          self.assertEqual(len(users), 0)
@@ -3681,7 +3678,7 @@ 

          '''

  

          tests.create_projects(self.session)

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

  

          # Let's add a new user to the project, 'foo'

          # By default, if no access is specified, he becomes an admin
@@ -3721,8 +3718,9 @@ 

          self.assertEqual(msg, 'User access updated')

  

          # He is just a committer

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          users = project.get_project_users(access='admin', combine=False)

+ 

          self.assertEqual(len(users), 0)

  

          # He is just a committer
@@ -3746,8 +3744,9 @@ 

          self.assertEqual(msg, 'User access updated')

  

          # He is just a ticketer

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          users = project.get_project_users(access='admin',combine=False)

+ 

          self.assertEqual(len(users), 0)

  

          # He is just a ticketer
@@ -3784,7 +3783,7 @@ 

  

          # Add the group to project we just created, test

          # First add it as an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_group_to_project(

              self.session,

              project=project,
@@ -3796,8 +3795,9 @@ 

  

          # Now, the group is an admin in the project

          # so, it must have access to everything

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin')

+ 

          self.assertEqual(len(groups), 1)

          self.assertEqual(groups[0].display_name, 'Justice League')

          self.assertEqual(len(project.admin_groups), 1)
@@ -3827,7 +3827,7 @@ 

          )

  

          # Update the access level of the group, JL to commit

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_group_to_project(

              self.session,

              project=project,
@@ -3839,8 +3839,9 @@ 

          self.assertEqual(msg, 'Group access updated')

  

          # It shouldn't be an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin')

+ 

          self.assertEqual(len(groups), 0)

          self.assertEqual(len(project.admin_groups), 0)

  
@@ -3876,8 +3877,9 @@ 

          self.assertEqual(msg, 'Group access updated')

  

          # It is not an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin')

+ 

          self.assertEqual(len(groups), 0)

          self.assertEqual(len(project.admin_groups), 0)

  
@@ -3921,7 +3923,7 @@ 

  

          # Add the group to project we just created, test

          # First add it as an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_group_to_project(

              self.session,

              project=project,
@@ -3933,8 +3935,9 @@ 

  

          # Now, the group is an admin in the project

          # so, it must have access to everything

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin', combine=False)

+ 

          self.assertEqual(len(groups), 1)

          self.assertEqual(groups[0].display_name, 'Justice League')

          self.assertEqual(len(project.admin_groups), 1)
@@ -3952,7 +3955,7 @@ 

          self.assertEqual(len(groups), 0)

  

          # Update the access level of the group, JL to commit

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_group_to_project(

              self.session,

              project=project,
@@ -3964,8 +3967,9 @@ 

          self.assertEqual(msg, 'Group access updated')

  

          # It shouldn't be an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin', combine=False)

+ 

          self.assertEqual(len(groups), 0)

  

          # It is a committer
@@ -3994,8 +3998,9 @@ 

          self.assertEqual(msg, 'Group access updated')

  

          # It is not an admin

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          groups = project.get_project_groups(access='admin', combine=False)

+ 

          self.assertEqual(len(groups), 0)

  

          # The group shouldn't be a committer
@@ -4020,7 +4025,7 @@ 

          tests.create_projects(self.session)

  

          # Add a user object - make him an admin first

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_user_to_project(

              self.session,

              project=project,
@@ -4049,7 +4054,7 @@ 

          )

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

  

          # He should be a committer

          access_obj = pagure.lib.get_obj_access(
@@ -4069,7 +4074,7 @@ 

          )

          self.session.commit()

          self.assertEqual(msg, 'User access updated')

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

  

          # He should be a ticketer

          access_obj = pagure.lib.get_obj_access(
@@ -4104,7 +4109,7 @@ 

          )

  

          # Add a group object - make him an admin first

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          msg = pagure.lib.add_group_to_project(

              self.session,

              project=project,
@@ -4134,7 +4139,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'Group access updated')

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          # He should be a committer

          access_obj = pagure.lib.get_obj_access(

              self.session,
@@ -4153,7 +4158,7 @@ 

          )

          self.session.commit()

          self.assertEqual(msg, 'Group access updated')

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

  

          # He should be a ticketer

          access_obj = pagure.lib.get_obj_access(
@@ -4244,7 +4249,7 @@ 

          # Create the projects

          tests.create_projects(self.session)

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          self.assertEqual(project.reports, {})

  

          name = 'test report'
@@ -4258,7 +4263,7 @@ 

              username=None

          )

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          self.assertEqual(

              project.reports,

              {'test report': {'baz': 'biz', 'foo': 'bar'}}
@@ -4275,7 +4280,7 @@ 

              username=None

          )

  

-         project = pagure.lib.get_project(self.session, name='test')

+         project = pagure.get_authorized_project(self.session, project_name='test')

          self.assertEqual(

              project.reports,

              {

@@ -21,6 +21,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import pagure.lib.model

  import tests
@@ -42,7 +43,7 @@ 

  

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Before

          issues = pagure.lib.search_issues(self.session, repo)
@@ -92,7 +93,7 @@ 

          )

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(

              str(repo.tags_colored),

              '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]'
@@ -110,7 +111,7 @@ 

          p_send_email.return_value = True

          p_ugt.return_value = True

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add tag to the second issue

          issue = pagure.lib.search_issues(self.session, repo, issueid=2)
@@ -125,7 +126,7 @@ 

  

          self.assertEqual(msgs, ['Issue tagged with: red'])

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.issues), 2)

          issue = pagure.lib.search_issues(self.session, repo, issueid=2)

          self.assertEqual(
@@ -139,7 +140,7 @@ 

              self.session, issue, user='pingou', ticketfolder=None)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.issues), 1)

  

      @patch('pagure.lib.git.update_git')
@@ -154,7 +155,7 @@ 

          p_send_email.return_value = True

          p_ugt.return_value = True

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add the tag to both issues

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)
@@ -179,7 +180,7 @@ 

          self.session.commit()

          self.assertEqual(msgs, ['Issue tagged with: red'])

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.issues), 2)

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          self.assertEqual(
@@ -198,7 +199,7 @@ 

              self.session, issue, user='pingou', ticketfolder=None)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          self.assertEqual(len(repo.issues), 1)

  

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

file modified
+21 -20
@@ -26,6 +26,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib.git

  import tests

  
@@ -54,7 +55,7 @@ 

          when the new uesr is an made an admin """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add an user to a project

          # The user will be an admin of the project

          msg = pagure.lib.add_user_to_project(
@@ -158,7 +159,7 @@ 

          """ Test write_gitolite_acls function to add deploy keys. """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add two deploy keys (one readonly one push)

          msg1 = pagure.lib.add_deploykey_to_project(

              session=self.session,
@@ -275,7 +276,7 @@ 

          when the new uesr is just a ticketer """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add an user to a project

          # The user will be an admin of the project

          msg = pagure.lib.add_user_to_project(
@@ -377,7 +378,7 @@ 

          when the new uesr is just a committer """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Add an user to a project

          # The user will be an admin of the project

          msg = pagure.lib.add_user_to_project(
@@ -484,7 +485,7 @@ 

          """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add a couple of groups

          # They would be admins
@@ -641,7 +642,7 @@ 

          """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add a couple of groups

          # They would be ticketers
@@ -794,7 +795,7 @@ 

          """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Add a couple of groups

          # They would be committers
@@ -953,7 +954,7 @@ 

          """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          # Make the project enforce the PR workflow

          settings = repo.settings

          settings['pull_request_access_only'] = True
@@ -1062,7 +1063,7 @@ 

          """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          self.assertFalse(repo.settings['pull_request_access_only'])

  

          # Add an user to a project
@@ -1317,7 +1318,7 @@ 

          os.makedirs(self.gitrepo)

          repo_obj = pygit2.init_repository(self.gitrepo, bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test_ticket_repo')

+         repo = pagure.get_authorized_project(self.session, 'test_ticket_repo')

          # Create an issue to play with

          msg = pagure.lib.new_issue(

              session=self.session,
@@ -1538,7 +1539,7 @@ 

          files = [entry.name for entry in commit.tree]

          self.assertEqual(files, [hash_file])

  

-         repo = pagure.lib.get_project(self.session, 'test_ticket_repo')

+         repo = pagure.get_authorized_project(self.session, 'test_ticket_repo')

          issue = pagure.lib.search_issues(self.session, repo, issueid=1)

          pagure.lib.git.clean_git(issue, repo, self.path)

  
@@ -1567,8 +1568,9 @@ 

          os.makedirs(self.gitrepo)

          repo_obj = pygit2.init_repository(self.gitrepo, bare=True)

  

-         repo = pagure.lib.get_project(self.session, 'test_ticket_repo')

          # Create a PR to play with

+         repo = pagure.get_authorized_project(self.session, 'test_ticket_repo')

+         # Create an issue to play with

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=repo,
@@ -1774,7 +1776,7 @@ 

          """ Test the update_ticket_from_git method from pagure.lib.git. """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Before

          self.assertEqual(len(repo.issues), 0)
@@ -1848,7 +1850,7 @@ 

          """ Test the update_ticket_from_git method from pagure.lib.git. """

          tests.create_projects(self.session)

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          # Set some priorities to the project

          repo.priorities = {'1': 'High', '2': 'Normal'}

          self.session.add(repo)
@@ -1986,9 +1988,8 @@ 

          tests.create_projects(self.session)

          tests.create_projects_git(os.path.join(self.path, 'repos'))

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         namespaced_repo = pagure.lib.get_project(

-             self.session, 'test3', namespace='somenamespace')

+         repo = pagure.lib._get_project(self.session, 'test')

+         namespaced_repo = pagure.lib._get_project(self.session, 'test3', namespace='somenamespace')

  

          # Before

          self.assertEqual(len(repo.requests), 0)
@@ -2578,7 +2579,7 @@ 

          """ Test the update_custom_fields_from_json method of lib.git """

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

  

          # Create issues to play with

          pagure.lib.new_issue(
@@ -2688,7 +2689,7 @@ 

          self.session.add(item)

          self.session.commit()

  

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          gitrepo = os.path.join(gitfolder, repo.path)

          docrepo = os.path.join(docfolder, repo.path)

          ticketrepo = os.path.join(ticketfolder, repo.path)
@@ -2718,7 +2719,7 @@ 

              self.path, 'repos', 'forks', 'foo', 'test.git')

          tests.add_content_git_repo(self.gitrepo, branch='feature')

  

-         fork_repo = pagure.lib.get_project(self.session, 'test', user='foo')

+         fork_repo = pagure.get_authorized_project(self.session, 'test', user='foo')

          # Create a PR to play with

          req = pagure.lib.new_pull_request(

              session=self.session,

@@ -190,8 +190,8 @@ 

          shutil.rmtree(newpath)

  

          # Create the PR between the two repos

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(

              self.session, 'test', user='pingou')

  

          req = pagure.lib.new_pull_request(

@@ -18,6 +18,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib.git

  import tests

  
@@ -64,7 +65,7 @@ 

          """ Test the get_git_tags_objects method of pagure.lib.git. """

          tests.create_projects(self.session)

          tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)

-         project = pagure.lib.get_project(self.session, 'test')

+         project = pagure.lib._get_project(self.session, 'test')

  

          # Case 1 - Empty repo with no tags

          exp = []
@@ -89,7 +90,7 @@ 

          self.assertEqual(exp, get_tag_name(tags))

  

          # Case 4 - Sorting with different splitting characters

-         project = pagure.lib.get_project(self.session, 'test2')

+         project = pagure.get_authorized_project(self.session, 'test2')

          tests.add_readme_git_repo(os.path.join(os.path.join(

              self.path, 'repos'), 'test2.git'))

          repo = pygit2.Repository(os.path.join(os.path.join(

@@ -23,6 +23,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib.link

  import tests

  
@@ -66,7 +67,7 @@ 

          self.assertEqual(link, [])

  

          # Create the issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          pagure.lib.new_issue(

              self.session,

              repo,
@@ -104,7 +105,7 @@ 

          self.assertEqual(link, [])

  

          # Create the issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          pagure.lib.new_issue(

              self.session,

              repo,
@@ -162,7 +163,7 @@ 

          self.assertEqual(link, [])

  

          # Create the issue

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          pagure.lib.new_issue(

              self.session,

              repo,

@@ -20,6 +20,7 @@ 

  sys.path.insert(0, os.path.join(os.path.dirname(

      os.path.abspath(__file__)), '..'))

  

+ import pagure

  import pagure.lib

  import tests

  
@@ -43,7 +44,7 @@ 

          p_ugt.return_value = True

  

          tests.create_projects(self.session)

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

  

          # Create an issue

          msg = pagure.lib.new_issue(
@@ -82,8 +83,8 @@ 

          self.session.commit()

          self.session.add(item)

  

-         repo = pagure.lib.get_project(self.session, 'test')

-         forked_repo = pagure.lib.get_project(

+         repo = pagure.get_authorized_project(self.session, 'test')

+         forked_repo = pagure.get_authorized_project(

              self.session, 'test', user='pingou')

  

          # Create an pull-request
@@ -127,7 +128,7 @@ 

      def test_tagissue__repr__(self):

          """ Test the TagIssue.__repr__ function of pagure.lib.model. """

          self.test_issue__repr__()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issues = pagure.lib.search_issues(self.session, repo)

          self.assertEqual(len(issues), 1)

  
@@ -146,7 +147,7 @@ 

      def test_tagissuecolor__repr__(self):

          """ Test the TagIssue.__repr__ function of pagure.lib.model. """

          self.test_issue__repr__()

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          issues = pagure.lib.search_issues(self.session, repo)

          self.assertEqual(len(issues), 1)

  
@@ -217,7 +218,7 @@ 

          for ns, reponame in [

                  (None, 'aaa'), (None, 'KKK'), ('somenamespace', 'zzz')]:

  

-             repo = pagure.lib.get_project(

+             repo = pagure.get_authorized_project(

                  self.session, reponame, namespace=ns)

              msg = pagure.lib.add_group_to_project(

                  self.session,

@@ -161,7 +161,7 @@ 

          self.session.commit()

  

          # Watch the project

-         repo = pagure.lib.get_project(self.session, 'test3', namespace='ns')

+         repo = pagure.get_authorized_project(self.session, 'test3', namespace='ns')

          out = pagure.lib.update_watch_status(self.session, repo, 'bar', True)

          self.assertEqual(out, 'You are now watching this repo.')

  
@@ -189,7 +189,7 @@ 

          self.session.commit()

  

          # Create the PR

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.lib._get_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=repo,
@@ -269,7 +269,7 @@ 

          self.session.commit()

  

          # Create the PR

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          req = pagure.lib.new_pull_request(

              session=self.session,

              repo_from=repo,
@@ -322,7 +322,7 @@ 

          self.session.commit()

  

          # Watch the project

-         repo = pagure.lib.get_project(self.session, 'test')

+         repo = pagure.get_authorized_project(self.session, 'test')

          out = pagure.lib.update_watch_status(self.session, repo, 'bar', True)

          self.assertEqual(out, 'You are now watching this repo.')

  

@@ -40,9 +40,9 @@ 

  

          self.user1 = pagure.lib.get_user(self.session, 'pingou')

          self.user2 = pagure.lib.get_user(self.session, 'foo')

-         self.project1 = pagure.lib.get_project(self.session, 'test')

-         self.project2 = pagure.lib.get_project(self.session, 'test2')

-         self.project3 = pagure.lib.get_project(self.session, 'test3', namespace='somenamespace')

+         self.project1 = pagure.lib._get_project(self.session, 'test')

+         self.project2 = pagure.lib._get_project(self.session, 'test2')

+         self.project3 = pagure.lib._get_project(self.session, 'test3', namespace='somenamespace')

  

          # Create a forked repo, should be project #4

          # Not using fork_project as it tries to do a git clone
@@ -56,7 +56,7 @@ 

          )

          self.session.add(item)

          self.session.commit()

-         self.forkedproject = pagure.lib.get_project(self.session, 'test', user='foo')

+         self.forkedproject = pagure.lib._get_project(self.session, 'test', user='foo')

  

          # Report an issue on project #1

          self.issue1 = pagure.lib.new_issue(

@@ -149,7 +149,7 @@ 

              email='bar@bar.com')

          self.session.add(item)

  

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              self.session, 'test3', namespace='ns')

          msg = pagure.lib.add_user_to_project(

              session=self.session,
@@ -233,7 +233,7 @@ 

          self.session.commit()

          self.assertEqual(msg, 'User `bar` added to the group `foo`.')

  

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              self.session, 'test3', namespace='ns')

  

          # Add group to project
@@ -293,7 +293,7 @@ 

              email='bar@bar.com')

          self.session.add(item)

  

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              self.session, 'test3', namespace='ns')

          msg = pagure.lib.add_user_to_project(

              session=self.session,
@@ -361,7 +361,7 @@ 

              email='bar@bar.com')

          self.session.add(item)

  

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              self.session, 'test3', namespace='ns')

          msg = pagure.lib.add_user_to_project(

              session=self.session,
@@ -426,7 +426,7 @@ 

          self.session.add(item)

  

          # Set the user `bar` to watch the project

-         project = pagure.lib.get_project(

+         project = pagure.lib._get_project(

              self.session, 'test3', namespace='ns')

          msg = pagure.lib.update_watch_status(

              session=self.session,
@@ -486,7 +486,7 @@ 

          self.session.add(item)

  

          # Set the user `bar` to watch the project

-         project = pagure.lib.get_project(

+         project = pagure.get_authorized_project(

              self.session, 'test3', namespace='ns')

          msg = pagure.lib.update_watch_status(

              session=self.session,

file modified
+2 -2
@@ -49,8 +49,8 @@ 

  

          # Setup projects

          tests.create_projects(self.session)

-         self.repo = pagure.lib.get_project(self.session, 'test')

-         self.repo2 = pagure.lib.get_project(self.session, 'test2')

+         self.repo = pagure.lib._get_project(self.session, 'test')

+         self.repo2 = pagure.lib._get_project(self.session, 'test2')

  

          # Disable repo 2's issue tracker and PR tracker

          pagure.lib.update_project_settings(

@@ -134,7 +134,7 @@ 

              log.info(

                  'Searching %s/%s/%s' % (username, namespace, projectname))

              session = pagure.lib.create_session(pagure.APP.config['DB_URL'])

-             project = pagure.lib.get_project(

+             project = pagure.lib._get_project(

                  session=session, name=projectname, user=username,

                  namespace=namespace)

              if not project:

no initial comment

rebased

7 years ago

This PR is not up for review yet :smile:

rebased

7 years ago

rebased

7 years ago

rebased

7 years ago

1 new commit added

  • Fix _get_project to get_authorized project for the new files and removing imports
7 years ago

This pr is open for review and testing now :smile:

rebased

7 years ago

Did you rebase the migration script? (Try running alembic history to see what I mean)

I think we dropped this, no? :)

hm, not quite sure to follow what we are filtering here

Isn't this also depending on pagure's configuration?

Could you just refresh my memory, why the second check here (if username is the current user?)

We may want to add a comment here explaining why that is

There is one thing missing, but I'm willing to accept it in a different PR (assuming that work is started at the time this PR is merged), it's: documentation :)

work in progress :stuck_out_tongue_winking_eye:

for the user to view his private and public project if the second check is not there user will not be able to view his private project AFAIR , because I struggled with it and to be more precise it's your commit ;)

we are filtering public and private project of the specific user.

we are filtering: private == false OR private == true, so what's the third option? :)

Ah, I see. It's the other way around in fact, it's to prevent other users from viewing the user's private projects. Otherwise, I'm authenticated, viewing your page and seeing your private repo.

Maybe we should document this in a comment since we seem to easily forget :)

Thanks for pointing out , this slipped my mind !

Should this be moved into pagure.lib? It's using a private method from that package.

The name is a little bit weird since "project" and "repo" seem to be used interchangeably. The database model is Project, I believe, so it would be better to consistently use that. Maybe call the repo parameter "project_name" if that's what it is.

Something like:

Retrieve the project, taking into account user permissions

:param session: The SQLAlchemy session to use
:type  session: sqlalchemy.orm.session.Session
:param project_name: The project name
:type  project_name: str
:param user: A Pagure user
:type  user: str
:param namespace: A Pagure namespace
:type  namespace: str

:return: The project object if the repository is public or if the user is authorized to view the private repository, otherwise None is returned.
:rtype:  pagure.models.Project

I should note that I'm not sure what documentation formatting @pingou prefers. NumPy/Google style doc strings can be handled by the Napoleon sphinx extension and look like:

Args:
    session (Session): The SQLALchemy :class:`Session` to use
    project_name (str): ...

Returns:
    pagure.models.Project: The project object if the repository is public or if the user...

Which many consider to be much more legible

Looking through the PR, it seems like all the uses of pagure.lib.get_project have been replaced with this. Would it make more sense to simply make that function aware of private repos?

At the beginning it was to make sure we're always checking for private repo so we renamed the original method, making sure it would break for everyone except those who really wanted/needed the old method (and were thus adjusted).

However, now that I think about it, we could just have rename the old method _get_project and create this method as get_project in pagure.lib automatically moving everyone to this method.

This should make the change set much smaller as well since only a few method will have to call the old _get_project.

I remember this was something @puiterwijk discussed, so his input might be nice in case I am mis-remembering.

I like the first style more :)

@pingou that was exactly the case, and I think the main reason it was split out as a separate function was because it should be touching the users' login session, to check if they have access, and you didn't want stuff in pagure.lib accessing that, as they should be framework-independent.

That sounds like something I would say indeed :)

Thanks @puiterwijk, I had forgot that aspect

rebased

7 years ago

@pingou @jcline This is up for review :smile:

rebased

7 years ago

rebased

7 years ago

rebased

7 years ago

you don't need to start with a different column. You can simply do nullable=True, then set the value and then do nullable=False.

namespace is not specified here

1 new commit added

  • Fix the changes suggested by @vivekanad1101
7 years ago

1 new commit added

  • Fix 80 character pep8 convention
7 years ago

rebased

7 years ago

rebased

7 years ago

rebased

7 years ago

Do you need to end with closing colon or not?

It doesn't need to, because this is a repo object, not a repo name.

How about instead of adding this check to tons of places, just have the notify.log check project.private?

I am ending with a colon

rebased

7 years ago

rebased

7 years ago

out of the 4 places you have revision id, at least one is wrong

should we mention that these repositories would be visible to site admins?

i don't know if this line actually crosses 80 char limit but, can you check it once? (since, you will need to change a few other things anyway.)

rebased

7 years ago

92 new commits added

  • Fix tests and migrated to _getrepo
  • Fix test cases and replace get_project after acl
  • Fix private-repo feature after rebase
  • Fix the check for project=None
  • Fix docstring for get_authorized_project
  • Refactor code to have lesser check for sending notification
  • Fix test for private repo
  • Replacing get_project by get_authorized project after rebase
  • Fix test after rebase
  • Fix 80 character pep8 convention
  • Fix the changes suggested by @vivekanad1101
  • Add documetation about private repo
  • Fix tests
  • Document code and fix condition to filter
  • Fix tests after changing parameter name
  • Document the get_authorized_project function and change parameter name
  • Fix alembic version
  • Fix tests after rebase
  • Fix _get_project to get_authorized project for the new files and removing imports
  • Fix test after FORK_FOLDER change
  • Migration from get_project to _get_project
  • Fixed more breaking tests after recent rebase
  • Fix keys and file path for test
  • Fix failing test in ui and repo path fixed for test
  • Fix 401 error because of wrong acls
  • Fix modified json response
  • Fix using get_authorized_project in api/fork
  • Fix test for changing status of an issue
  • Fix test for api response json
  • Change of get_project to _get_project
  • Fix test for private repo in api/issue
  • Fix test for pushing to non-bare repo in private repo
  • Fix get_authorized_project
  • Fix overwriting conf file
  • Disable pagure ci for private repo
  • Fix test after the addition of conf key
  • Add conf key to turn private-repo on and off
  • Fix fedmsg and redis leaking private-repo info
  • Fix _get_project where it is required
  • Fix test for private-repo and rename get_project to _get_project
  • Replace get_project to get_authorized_project
  • Fix test after rebase
  • Fix test failling for card-header count and py3 compatibility
  • Fix docstring for get_authorized_project
  • Fix test for repo and fork ui
  • Fix missing import and pep 8
  • Test for private repo view issue comment api endpoint
  • Add test for adding comment to issue api endpoint
  • Add test for changing status through api point in private repo
  • Add tests to test issues api for private repo
  • Add test for Pr merge and close in private repo
  • Add test to flag PR in private repo
  • Add test private repo api endpoit for adding comment to PR
  • Add test a single PR retrival
  • Add test for pull request api and condition for pull request api(private
  • Add test for api end point to get projects
  • Fix api point to fetch tags
  • Add a different method to fetch project
  • Add is_repo_admin parameter to get_project
  • Fix pep 8 issues and remove duplication
  • Add check for api endpoint for private repo
  • Add check for repo admin when repo is private
  • Add test to check issues and pull-request
  • Add test for issues to private repo and changes to fix those test
  • Fix pep8 conventions
  • Fix duplicate lines
  • Add test for adding user to the private repo
  • Fix test for pull-request for private repo
  • Fix GIT_FOLDER in test for private repo
  • Add change for PR
  • Add test to check private checkbox UI
  • Fix test private repo UI
  • Add Test for UI and Pull request to Private Repo
  • Check if the user authenticated is the one for whom we're viewing the repos
  • Add test for private repo
  • Fix trailing space
  • Fix conditions
  • Fix test delete_repo endpoint
  • Fix typo
  • Fix header
  • Fix parameter
  • Fix variable change
  • Fix variable change and default private
  • Fix UI issuses and authorization issues
  • Fix repo controller
  • Fix repo controller
  • Fix alembic script
  • Add alembic migration and clean code
  • Fix update project and update project UI
  • Fix more conditions
  • Add private repo support
  • Add Private Repo UI
7 years ago

rebased

7 years ago

it can return a list?

I wonder if we shouldn't bail if project is None now

This is likely needed in other places :)

I don't think this indentation is valid pep8 :)

Don't we want to keep as it is?

I guess we can remove this one

Not sure we want to use get_authorized_project() here

I'd have put the new line after the opening bracket

here as well (as below)

except errors we normally use 2 spaces indentation in the html

isn't that already covered ?

We could keep using _get_project() in most of the tests

Basically I think it only make sense for the tests working with a private project.

rebased

7 years ago

pretty please pagure-ci rebuild

This is the default hook, so we may want to use _get_project() here.

Also if project is None, is a use-case that is covered in the other hooks, so easy to adjust ;-)
(But this could be done in another PR though)

new_column_name needs to be drop otherwise we're trying to rename private into private which will fail :)

The name get_authorized_project is confusing me. It sounds like it will return any project, since it's an authorized call...

Shouldn't all hooks use _get_project anyway, since they're run by the project owner during push?
The flask session will probably always be None, so otherwise we'd be breaking all hooks....

93 new commits added

  • Fix pep8 convention and chages suggested by @pingou
  • Fix tests and migrated to _getrepo
  • Fix test cases and replace get_project after acl
  • Fix private-repo feature after rebase
  • Fix the check for project=None
  • Fix docstring for get_authorized_project
  • Refactor code to have lesser check for sending notification
  • Fix test for private repo
  • Replacing get_project by get_authorized project after rebase
  • Fix test after rebase
  • Fix 80 character pep8 convention
  • Fix the changes suggested by @vivekanad1101
  • Add documetation about private repo
  • Fix tests
  • Document code and fix condition to filter
  • Fix tests after changing parameter name
  • Document the get_authorized_project function and change parameter name
  • Fix alembic version
  • Fix tests after rebase
  • Fix _get_project to get_authorized project for the new files and removing imports
  • Fix test after FORK_FOLDER change
  • Migration from get_project to _get_project
  • Fixed more breaking tests after recent rebase
  • Fix keys and file path for test
  • Fix failing test in ui and repo path fixed for test
  • Fix 401 error because of wrong acls
  • Fix modified json response
  • Fix using get_authorized_project in api/fork
  • Fix test for changing status of an issue
  • Fix test for api response json
  • Change of get_project to _get_project
  • Fix test for private repo in api/issue
  • Fix test for pushing to non-bare repo in private repo
  • Fix get_authorized_project
  • Fix overwriting conf file
  • Disable pagure ci for private repo
  • Fix test after the addition of conf key
  • Add conf key to turn private-repo on and off
  • Fix fedmsg and redis leaking private-repo info
  • Fix _get_project where it is required
  • Fix test for private-repo and rename get_project to _get_project
  • Replace get_project to get_authorized_project
  • Fix test after rebase
  • Fix test failling for card-header count and py3 compatibility
  • Fix docstring for get_authorized_project
  • Fix test for repo and fork ui
  • Fix missing import and pep 8
  • Test for private repo view issue comment api endpoint
  • Add test for adding comment to issue api endpoint
  • Add test for changing status through api point in private repo
  • Add tests to test issues api for private repo
  • Add test for Pr merge and close in private repo
  • Add test to flag PR in private repo
  • Add test private repo api endpoit for adding comment to PR
  • Add test a single PR retrival
  • Add test for pull request api and condition for pull request api(private
  • Add test for api end point to get projects
  • Fix api point to fetch tags
  • Add a different method to fetch project
  • Add is_repo_admin parameter to get_project
  • Fix pep 8 issues and remove duplication
  • Add check for api endpoint for private repo
  • Add check for repo admin when repo is private
  • Add test to check issues and pull-request
  • Add test for issues to private repo and changes to fix those test
  • Fix pep8 conventions
  • Fix duplicate lines
  • Add test for adding user to the private repo
  • Fix test for pull-request for private repo
  • Fix GIT_FOLDER in test for private repo
  • Add change for PR
  • Add test to check private checkbox UI
  • Fix test private repo UI
  • Add Test for UI and Pull request to Private Repo
  • Check if the user authenticated is the one for whom we're viewing the repos
  • Add test for private repo
  • Fix trailing space
  • Fix conditions
  • Fix test delete_repo endpoint
  • Fix typo
  • Fix header
  • Fix parameter
  • Fix variable change
  • Fix variable change and default private
  • Fix UI issuses and authorization issues
  • Fix repo controller
  • Fix repo controller
  • Fix alembic script
  • Add alembic migration and clean code
  • Fix update project and update project UI
  • Fix more conditions
  • Add private repo support
  • Add Private Repo UI
7 years ago

Someone just pointed out that Pagure private issues email mentioned people even in private tickets, and I think this might be the same in private projects.
We should make sure that that doesn't happen :).

@puiterwijk for tickets this was very much in purpose, the bit that is missing is to allow people that are mentioned to access the ticket.

rebased

7 years ago

rebased

7 years ago

Ok tests are passing, it has been rebased and @puiterwijk has agreed that we work on namespacing the private repo in a different PR.

So let's merge this one :)

Pull-Request has been merged by pingou

7 years ago
Changes Summary 62
+36
file added
alembic/versions/4255158a6913_create_private_column_in_project_table.py
+9 -10
file changed
dev-data.py
+11 -0
file changed
doc/configuration.rst
+2 -2
file changed
ev-server/pagure_stream_server.py
+1 -1
file changed
pagure-loadjson/pagure_loadjson_server.py
+1 -2
file changed
pagure-logcom/pagure_logcom_server.py
+28 -4
file changed
pagure/__init__.py
+1 -1
file changed
pagure/api/__init__.py
+1 -1
file changed
pagure/api/ci/jenkins.py
+8 -6
file changed
pagure/api/fork.py
+1 -1
file changed
pagure/api/issue.py
+9 -6
file changed
pagure/api/project.py
+3 -0
file changed
pagure/default_config.py
+3 -2
file changed
pagure/docs_server.py
+4 -0
file changed
pagure/forms.py
+2 -2
file changed
pagure/hooks/files/default_hook.py
+1 -1
file changed
pagure/hooks/files/fedmsg_hook.py
+2 -2
file changed
pagure/hooks/files/pagure_force_commit_hook.py
+3 -3
file changed
pagure/hooks/files/pagure_hook_tickets.py
+2 -3
file changed
pagure/hooks/files/rtd_hook.py
+3 -3
file changed
pagure/internal/__init__.py
+45 -18
file changed
pagure/lib/__init__.py
+6 -5
file changed
pagure/lib/git.py
+2 -2
file changed
pagure/lib/link.py
+1 -0
file changed
pagure/lib/model.py
+4 -2
file changed
pagure/lib/notify.py
+9 -6
file changed
pagure/pfmarkdown.py
+3 -0
file changed
pagure/templates/new_project.html
+8 -0
file changed
pagure/templates/settings.html
+43 -13
file changed
pagure/ui/app.py
+5 -3
file changed
pagure/ui/fork.py
+7 -0
file changed
pagure/ui/plugins.py
+2 -0
file changed
pagure/ui/repo.py
+2 -1
file changed
tests/test_pagure_exclude_group_index.py
+19 -19
file changed
tests/test_pagure_flask_api_fork.py
+56 -53
file changed
tests/test_pagure_flask_api_issue.py
+4 -4
file changed
tests/test_pagure_flask_api_project.py
+2793
file added
tests/test_pagure_flask_api_ui_private_repo.py
+3 -3
file changed
tests/test_pagure_flask_api_user.py
+4 -3
file changed
tests/test_pagure_flask_docs.py
+3 -2
file changed
tests/test_pagure_flask_dump_load_ticket.py
+24 -23
file changed
tests/test_pagure_flask_internal.py
+4 -4
file changed
tests/test_pagure_flask_ui_app.py
+30 -29
file changed
tests/test_pagure_flask_ui_fork.py
+49 -48
file changed
tests/test_pagure_flask_ui_issues.py
+11 -11
file changed
tests/test_pagure_flask_ui_issues_acl_checks.py
+13 -12
file changed
tests/test_pagure_flask_ui_priorities.py
+3 -3
file changed
tests/test_pagure_flask_ui_quick_reply.py
+50 -49
file changed
tests/test_pagure_flask_ui_repo.py
+13 -12
file changed
tests/test_pagure_flask_ui_roadmap.py
+89 -84
file changed
tests/test_pagure_lib.py
+9 -8
file changed
tests/test_pagure_lib_drop_issue.py
+21 -20
file changed
tests/test_pagure_lib_git.py
+2 -2
file changed
tests/test_pagure_lib_git_diff_pr.py
+3 -2
file changed
tests/test_pagure_lib_git_get_tags_objects.py
+4 -3
file changed
tests/test_pagure_lib_link.py
+7 -6
file changed
tests/test_pagure_lib_model.py
+4 -4
file changed
tests/test_pagure_lib_notify.py
+4 -4
file changed
tests/test_pagure_lib_notify_email.py
+6 -6
file changed
tests/test_pagure_lib_watch_list.py
+2 -2
file changed
tests/test_stream_server.py
+1 -1
file changed
webhook-server/pagure-webhook-server.py