Пример #1
0
 def get(self, request, operation_id):
     op = self._get_instance_by_id(Operation, operation_id)
     commit_id = op.commit_id
     if commit_id:
         repository = op.repository
         p2_repo = p2.Repo(repository.get_full_path())
         diff = p2_repo.get_commit_diff(commit_id)
         return diff
     else:
         raise ErrorResponse(status.HTTP_404_NOT_FOUND, 'No diff information.')
Пример #2
0
 def post(self, request, repository_id):
     user = request.user
     if(User.has_perm(user, 'repo.change_repository', None)):
         repository = self._get_instance_by_id(Repository, repository_id)
         archive = self.CONTENT.get('archive')
         comment = self.CONTENT.get('comment')
         p2_repo = p2.Repo(repository.get_full_path())
         commit_id = p2_repo.publish(archive, comment)
         op = repository.operation_set.create(message=comment, type='P', committer=request.user)
         op.commit_id = commit_id
         op.save()
         return op.to_resource()
     else:
          raise PermissionDenied
Пример #3
0
 def post(self, request, repository_id):
     user = request.user
     if(User.has_perm(user, 'repo.change_repository', None)):
         repository = self._get_instance_by_id(Repository, repository_id)
         operations = Operation.objects.filter(repository=repository).exclude(type='R').order_by('commit_time').reverse();
         p2_repo = p2.Repo(repository.get_full_path())
         try:
             commit_id = p2_repo.cleanup(operations)
             op = repository.operation_set.create(message='Repository cleanup by user.', type='C', committer=request.user)
             op.commit_id = commit_id
             op.save()
             return op.to_resource()
         except P2Exception:
             raise ErrorResponse(status.HTTP_400_BAD_REQUEST, 'Not able to cleanup')
     else:
         raise PermissionDenied
Пример #4
0
 def delete(self, request, repository_id):
     user = request.user
     if(User.has_perm(user, 'repo.delete_repository', None)):
         repository = self._get_instance_by_id(Repository, repository_id)
         composites = repository.composite_set
         if composites.exists():
             raise ErrorResponse(status.HTTP_412_PRECONDITION_FAILED,
                             'Repository is referenced by composite ' + 
                             ', '.join((x.name for x in composites.all())))
         p2_repo = p2.Repo(repository.get_full_path())
         p2_repo.delete()
         deleted = repository.to_resource()
         dbhandler.delete_repository(repository.id)
         return deleted
     else:
         raise PermissionDenied
Пример #5
0
 def post(self, request, repository_id):
     user = request.user
     if(User.has_perm(user, 'repo.change_repository', None)):
         repository = self._get_instance_by_id(Repository, repository_id)
         mirror_url = request.POST['mirror_url']#self.CONTENT.get('mirror_url')
         comment = request.POST['comment']#self.CONTENT.get('comment')
         if mirror_url != repository.mirror_url:
             repository.mirror_url = mirror_url
             repository.save()
             p2_repo = p2.Repo(repository.get_full_path())
             commit_id = p2_repo.mirror(mirror_url, comment)
             op = repository.operation_set.create(message=comment, type='M', committer=request.user)
             op.commit_id = commit_id
             op.save()
             return op.to_resource()
     else:
          raise PermissionDenied
Пример #6
0
 def post(self, request, composite_id):
     composite = self._get_instance_by_id(Composite, composite_id)
     composite_full_path = composite.get_full_path()
     mirror_url = self.CONTENT.get('mirror_url')
     comment = self.CONTENT.get('comment')
     mirror_url = mirror_url.endswith('/') and mirror_url or mirror_url + '/'
     content = urllib2.urlopen(mirror_url + 'compositeArtifacts.xml').read()
     remote_locations = map(lambda x: x.getAttribute('location'), parseString(content).getElementsByTagName('child'))
     updated_repos = []
     for repository in composite.repositories.all():
         repository_full_path = repository.get_full_path()
         location = os.path.relpath(repository_full_path, composite_full_path).replace('\\', '/')
         if location in remote_locations:
             p2_repo = p2.Repo(repository_full_path)
             commit_id = p2_repo.mirror(mirror_url + location, comment)
             op = repository.operation_set.create(message=comment, type='M', committer=request.user)
             op.commit_id = commit_id
             op.save()
             updated_repos.append(repository)
     return (x.to_resource() for x in updated_repos)                
Пример #7
0
 def post(self, request, repository_id):
     user = request.user
     if(User.has_perm(user, 'repo.change_repository', None)):
         repository = self._get_instance_by_id(Repository, repository_id)
         #check if the rollback operation can be done, operations should be ordered by commit_time desc
         operations = repository.operation_set.filter(committer=request.user).order_by('commit_time').reverse()
         flag = p2.check_rollback(operations)
         if flag == False:
             raise ErrorResponse(status.HTTP_400_BAD_REQUEST, 'Last operation can not be rolled back.')
     
         p2_repo = p2.Repo(repository.get_full_path())
         try:
             p2_repo.rollback()
             op = repository.operation_set.create(message='Repository rollback by user.', type='R', committer=request.user)
             op.save()
             return op.to_resource()
         except P2Exception:
             raise ErrorResponse(status.HTTP_400_BAD_REQUEST, 'Not able to rollback')
     else:
          raise PermissionDenied