def git_status_translation(request, project, subproject, lang): obj = get_translation(request, project, subproject, lang) if not can_see_repository_status(request.user, obj.subproject.project): raise PermissionDenied() target = obj.subproject if target.is_repo_link: target = target.linked_subproject return render( request, 'js/git-status.html', { 'object': obj, 'translation': obj, 'project': obj.subproject.project, 'changes': Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=target, )[:10], 'statuses': [(None, obj.subproject.repository.status)], })
def git_status_project(request, project): obj = get_project(request, project) if not can_see_repository_status(request.user, obj): raise PermissionDenied() statuses = [(force_text(component), component.repository.status) for component in obj.all_repo_components()] return render( request, 'js/git-status.html', { 'object': obj, 'project': obj, 'changes': Change.objects.filter( subproject__project=obj, action__in=Change.ACTIONS_REPOSITORY, )[:10], 'statuses': statuses, })
def git_status_subproject(request, project, subproject): obj = get_subproject(request, project, subproject) if not can_see_repository_status(request.user, obj.project): raise PermissionDenied() target = obj if target.is_repo_link: target = target.linked_subproject return render( request, 'js/git-status.html', { 'object': obj, 'project': obj.project, 'changes': Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=target, )[:10], 'statuses': [(None, obj.repository.status)], } )
def git_status_project(request, project): obj = get_project(request, project) if not can_see_repository_status(request.user, obj): raise PermissionDenied() statuses = [ (force_text(component), component.repository.status) for component in obj.all_repo_components() ] return render( request, 'js/git-status.html', { 'object': obj, 'project': obj, 'changes': Change.objects.filter( subproject__project=obj, action__in=Change.ACTIONS_REPOSITORY, )[:10], 'statuses': statuses, } )
def repository(self, request, **kwargs): obj = self.get_object() if isinstance(obj, Translation): project = obj.subproject.project elif isinstance(obj, SubProject): project = obj.project else: project = obj if request.method == 'POST': serializer = RepoRequestSerializer(data=request.data) serializer.is_valid(raise_exception=True) data = { 'result': self.repository_operation( request, obj, project, serializer.validated_data['operation']) } storage = get_messages(request) if storage: data['detail'] = '\n'.join([m.message for m in storage]) return Response(data) if not can_see_repository_status(request.user, project): raise PermissionDenied() data = { 'needs_commit': obj.repo_needs_commit(), 'needs_merge': obj.repo_needs_merge(), 'needs_push': obj.repo_needs_push(), } if isinstance(obj, Project): data['url'] = reverse('api:project-repository', kwargs={'slug': obj.slug}, request=request) else: data['remote_commit'] = obj.get_last_remote_commit() if isinstance(obj, Translation): subproject = obj.subproject data['url'] = reverse('api:translation-repository', kwargs={ 'subproject__project__slug': subproject.project.slug, 'subproject__slug': subproject.slug, 'language__code': obj.language.code, }, request=request) data['status'] = obj.subproject.repository.status() changes = Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=obj.subproject, ) else: data['url'] = reverse('api:component-repository', kwargs={ 'project__slug': obj.project.slug, 'slug': obj.slug, }, request=request) data['status'] = obj.repository.status() changes = Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=obj, ) if changes.exists() and changes[0].is_merge_failure(): data['merge_failure'] = changes[0].target else: data['merge_failure'] = None return Response(data)
def repository(self, request, **kwargs): obj = self.get_object() if isinstance(obj, Translation): project = obj.subproject.project elif isinstance(obj, SubProject): project = obj.project else: project = obj if request.method == 'POST': serializer = RepoRequestSerializer(data=request.data) serializer.is_valid(raise_exception=True) data = { 'result': self.repository_operation( request, obj, project, serializer.validated_data['operation'] ) } storage = get_messages(request) if storage: data['detail'] = '\n'.join([m.message for m in storage]) return Response(data) if not can_see_repository_status(request.user, project): raise PermissionDenied() data = { 'needs_commit': obj.repo_needs_commit(), 'needs_merge': obj.repo_needs_merge(), 'needs_push': obj.repo_needs_push(), } if isinstance(obj, Project): data['url'] = reverse( 'api:project-repository', kwargs={'slug': obj.slug}, request=request ) else: data['remote_commit'] = obj.get_last_remote_commit() if isinstance(obj, Translation): subproject = obj.subproject data['url'] = reverse( 'api:translation-repository', kwargs={ 'subproject__project__slug': subproject.project.slug, 'subproject__slug': subproject.slug, 'language__code': obj.language.code, }, request=request ) data['status'] = obj.subproject.repository.status() changes = Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=obj.subproject, ) else: data['url'] = reverse( 'api:component-repository', kwargs={ 'project__slug': obj.project.slug, 'slug': obj.slug, }, request=request ) data['status'] = obj.repository.status() changes = Change.objects.filter( action__in=Change.ACTIONS_REPOSITORY, subproject=obj, ) if changes.exists() and changes[0].is_merge_failure(): data['merge_failure'] = changes[0].target else: data['merge_failure'] = None return Response(data)