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.')
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
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
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
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
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)
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