示例#1
0
 def leave(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "leave", project)
     self.pre_conditions_on_save(project)
     services.remove_user_from_project(request.user, project)
     return response.Ok()
示例#2
0
 def list(self, request, **kwargs):
     stats = OrderedDict()
     stats["projects"] = services.get_projects_discover_stats(
         user=request.user)
     return response.Ok(stats)
示例#3
0
 def regenerate_tasks_csv_uuid(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "regenerate_tasks_csv_uuid", project)
     data = {"uuid": self._regenerate_csv_uuid(project, "tasks_csv_uuid")}
     return response.Ok(data)
示例#4
0
文件: api.py 项目: shadown/taiga-back
 def member_stats(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "member_stats", project)
     return response.Ok(data=services.get_member_stats_for_project(project))
示例#5
0
 def retrieve(self, request, *args, **kwargs):
     self.object = get_object_or_404(models.User, **kwargs)
     self.check_permissions(request, 'retrieve', self.object)
     serializer = self.get_serializer(self.object)
     return response.Ok(serializer.data)
示例#6
0
文件: api.py 项目: shadown/taiga-back
 def issue_filters_data(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "issues_filters_data", project)
     return response.Ok(data=services.get_issues_filters_data(project))
示例#7
0
文件: api.py 项目: shadown/taiga-back
 def unstar(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "unstar", project)
     votes_service.remove_vote(project, user=request.user)
     return response.Ok()
示例#8
0
    def _add_voter(self, permission, request, pk=None):
        obj = self.get_object()
        self.check_permissions(request, permission, obj)

        services.add_vote(obj, user=request.user)
        return response.Ok()
示例#9
0
    def downvote(self, request, pk=None):
        obj = self.get_object()
        self.check_permissions(request, "downvote", obj)

        services.remove_vote(obj, user=request.user)
        return response.Ok()
示例#10
0
    def like(self, request, pk=None):
        obj = self.get_object()
        self.check_permissions(request, "like", obj)

        services.add_like(obj, user=request.user)
        return response.Ok()
示例#11
0
文件: api.py 项目: z131031231/taiga
    def import_project(self, request, *args, **kwargs):
        self.check_permissions(request, "import_project", None)

        url = request.DATA.get('url', None)
        token = self._get_token(request)
        project_id = request.DATA.get('project', None)
        if not project_id:
            raise exc.WrongArguments(_("The project param is needed"))

        if not url:
            raise exc.WrongArguments(_("The url param is needed"))

        options = {
            "name":
            request.DATA.get('name', None),
            "description":
            request.DATA.get('description', None),
            "users_bindings":
            resolve_users_bindings(request.DATA.get("users_bindings", {})),
            "keep_external_reference":
            request.DATA.get("keep_external_reference", False),
            "is_private":
            request.DATA.get("is_private", False),
        }

        importer_type = request.DATA.get('importer_type', "normal")
        if importer_type == "agile":
            importer = JiraAgileImporter(request.user, url, token)
        else:
            project_type = request.DATA.get("project_type", "scrum")
            if project_type == "kanban":
                options['template'] = "kanban"
            else:
                options['template'] = "scrum"

            importer = JiraNormalImporter(request.user, url, token)

            types_bindings = {
                "epic": [],
                "us": [],
                "task": [],
                "issue": [],
            }
            for issue_type in importer.list_issue_types(project_id):
                if project_type in ['scrum', 'kanban']:
                    # Set the type bindings
                    if issue_type['subtask']:
                        types_bindings['task'].append(issue_type)
                    elif issue_type['name'].upper() == "EPIC":
                        types_bindings["epic"].append(issue_type)
                    elif issue_type['name'].upper() in [
                            "US", "USERSTORY", "USER STORY"
                    ]:
                        types_bindings["us"].append(issue_type)
                    elif issue_type['name'].upper() in [
                            "ISSUE", "BUG", "ENHANCEMENT"
                    ]:
                        types_bindings["issue"].append(issue_type)
                    else:
                        types_bindings["us"].append(issue_type)
                elif project_type == "issues":
                    # Set the type bindings
                    if issue_type['subtask']:
                        continue
                    types_bindings["issue"].append(issue_type)
                elif project_type == "issues-with-subissues":
                    types_bindings["issue"].append(issue_type)
                else:
                    raise exc.WrongArguments(
                        _("Invalid project_type {}").format(project_type))

            options["types_bindings"] = types_bindings

        if settings.CELERY_ENABLED:
            task = tasks.import_project.delay(request.user.id, url, token,
                                              project_id, options,
                                              importer_type)
            return response.Accepted({"task_id": task.id})

        project = importer.import_project(project_id, options)
        project_data = {
            "slug": project.slug,
            "my_permissions": ["view_us"],
            "is_backlog_activated": project.is_backlog_activated,
            "is_kanban_activated": project.is_kanban_activated,
        }

        return response.Ok(project_data)
示例#12
0
 def watch(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "watch", project)
     notify_level = request.DATA.get("notify_level", NotifyLevel.involved)
     project.add_watcher(self.request.user, notify_level=notify_level)
     return response.Ok()
示例#13
0
 def retrieve(self, request, pk=None):
     wiki_pages = models.WikiPage.objects.filter(owner_id=pk)
     serializer = serializers.WikiPageSerializer(wiki_pages, many=True)
     print(serializer.data)
     return response.Ok(serializer.data)
示例#14
0
 def retrieve(self, request, *args, **kwargs):
     self.object = get_object_or_404(self.get_queryset(), **kwargs)
     self.check_permissions(request, "retrieve", self.object)
     serializer = self.get_serializer(self.object)
     return response.Ok(serializer.data)
示例#15
0
 def delete_issues_csv_uuid(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "delete_issues_csv_uuid", project)
     self.pre_conditions_on_save(project)
     data = {"uuid": self._delete_csv_uuid(project, "issues_csv_uuid")}
     return response.Ok(data)
示例#16
0
 def watch(self, request, pk=None):
     obj = self.get_object()
     self.check_permissions(request, "watch", obj)
     services.add_watcher(obj, request.user)
     return response.Ok()
示例#17
0
 def transfer_request(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "transfer_request", project)
     services.request_project_transfer(project, request.user)
     return response.Ok()
示例#18
0
 def list_projects(self, request, *args, **kwargs):
     self.check_permissions(request, "list_projects", None)
     token = request.DATA.get('token', None)
     importer = GithubImporter(request.user, token)
     projects = importer.list_projects()
     return response.Ok(projects)
示例#19
0
文件: api.py 项目: shadown/taiga-back
 def tags_colors(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "tags_colors", project)
     return response.Ok(data=dict(project.tags_colors))
示例#20
0
 def unwatch(self, request, pk=None):
     obj = self.get_object()
     self.check_permissions(request, "unwatch", obj)
     self.pre_conditions_on_save(obj)
     services.remove_watcher(obj, request.user)
     return response.Ok()
示例#21
0
文件: api.py 项目: shadown/taiga-back
 def leave(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, 'leave', project)
     services.remove_user_from_project(request.user, project)
     return response.Ok()
示例#22
0
 def retrieve(self, request, pk=None):
     project_details = models.Membership.objects.filter(project_id=pk)
     serializer = serializers.MembershipSerializer(project_details,
                                                   many=True)
     return response.Ok(serializer.data)
示例#23
0
 def stats(self, request, *args, **kwargs):
     user = get_object_or_404(models.User, **kwargs)
     self.check_permissions(request, "stats", user)
     return response.Ok(services.get_stats_for_user(user, request.user))
示例#24
0
 def transfer_validate_token(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "transfer_validate_token", project)
     token = request.DATA.get('token', None)
     services.transfer.validate_project_transfer_token(token, project, request.user)
     return response.Ok()
示例#25
0
 def list(self, request, **kwargs):
     stats = OrderedDict()
     stats["users"] = services.get_users_public_stats()
     stats["projects"] = services.get_projects_public_stats()
     stats["userstories"] = services.get_user_stories_public_stats()
     return response.Ok(stats)
示例#26
0
    def list(self, request, **kwargs):
        validator = ResolverValidator(data=request.QUERY_PARAMS)
        if not validator.is_valid():
            raise exc.BadRequest(validator.errors)

        data = validator.data

        project_model = apps.get_model("projects", "Project")
        project = get_object_or_404(project_model, slug=data["project"])

        self.check_permissions(request, "list", project)

        result = {"project": project.pk}

        if data["epic"] and user_has_perm(request.user, "view_epics", project):
            result["epic"] = get_object_or_404(project.epics.all(),
                                               ref=data["epic"]).pk
        if data["us"] and user_has_perm(request.user, "view_us", project):
            result["us"] = get_object_or_404(project.user_stories.all(),
                                             ref=data["us"]).pk
        if data["task"] and user_has_perm(request.user, "view_tasks", project):
            result["task"] = get_object_or_404(project.tasks.all(),
                                               ref=data["task"]).pk
        if data["issue"] and user_has_perm(request.user, "view_issues",
                                           project):
            result["issue"] = get_object_or_404(project.issues.all(),
                                                ref=data["issue"]).pk
        if data["milestone"] and user_has_perm(request.user, "view_milestones",
                                               project):
            result["milestone"] = get_object_or_404(project.milestones.all(),
                                                    slug=data["milestone"]).pk
        if data["wikipage"] and user_has_perm(request.user, "view_wiki_pages",
                                              project):
            result["wikipage"] = get_object_or_404(project.wiki_pages.all(),
                                                   slug=data["wikipage"]).pk

        if data["ref"]:
            ref_found = False  # No need to continue once one ref is found
            try:
                value = int(data["ref"])

                if user_has_perm(request.user, "view_epics", project):
                    epic = project.epics.filter(ref=value).first()
                    if epic:
                        result["epic"] = epic.pk
                        ref_found = True
                if ref_found is False and user_has_perm(
                        request.user, "view_us", project):
                    us = project.user_stories.filter(ref=value).first()
                    if us:
                        result["us"] = us.pk
                        ref_found = True
                if ref_found is False and user_has_perm(
                        request.user, "view_tasks", project):
                    task = project.tasks.filter(ref=value).first()
                    if task:
                        result["task"] = task.pk
                        ref_found = True
                if ref_found is False and user_has_perm(
                        request.user, "view_issues", project):
                    issue = project.issues.filter(ref=value).first()
                    if issue:
                        result["issue"] = issue.pk
            except:
                value = data["ref"]

                if user_has_perm(request.user, "view_wiki_pages", project):
                    wiki_page = project.wiki_pages.filter(slug=value).first()
                    if wiki_page:
                        result["wikipage"] = wiki_page.pk

        return response.Ok(result)
示例#27
0
 def unwatch(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "unwatch", project)
     user = self.request.user
     project.remove_watcher(user)
     return response.Ok()
示例#28
0
 def regenerate_epics_csv_uuid(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "regenerate_epics_csv_uuid", project)
     self.pre_conditions_on_save(project)
     data = {"uuid": self._regenerate_csv_uuid(project, "epics_csv_uuid")}
     return response.Ok(data)
示例#29
0
 def issues_stats(self, request, pk=None):
     project = self.get_object()
     self.check_permissions(request, "issues_stats", project)
     return response.Ok(services.get_stats_for_project_issues(project))
示例#30
0
 def list(self, request):
     self.check_permissions(request, "list", None)
     queryset = models.FeedbackEntry.objects.filter(full_name=request.user)
     serializer = serializers.FeedbackSerializer(queryset, many=True)
     return response.Ok(serializer.data)