Exemplo n.º 1
0
    def get(self, uri_path, query_params=None):
        headers = {'Accept': 'application/json'}
        if query_params is None:
            query_params = {}

        if uri_path[0] == '/':
            uri_path = uri_path[1:]
        url = 'https://api.trello.com/1/%s' % uri_path

        response = requests.get(url,
                                params=query_params,
                                headers=headers,
                                auth=self.oauth)

        if response.status_code == 400:
            raise exc.WrongArguments(
                _("Invalid Request: %s at %s") % (response.text, url))
        if response.status_code == 401:
            raise exc.AuthenticationFailed(
                _("Unauthorized: %s at %s") % (response.text, url))
        if response.status_code == 403:
            raise exc.PermissionDenied(
                _("Unauthorized: %s at %s") % (response.text, url))
        if response.status_code == 404:
            raise exc.NotFound(
                _("Resource Unavailable: %s at %s") % (response.text, url))
        if response.status_code != 200:
            raise exc.WrongArguments(
                _("Resource Unavailable: %s at %s") % (response.text, url))

        return response.json()
def get_membership_by_token(token: str):
    """
    Given a token, returns a membership instance
    that matches with specified token.

    If not matches with any membership NotFound exception
    is raised.
    """
    membership_model = apps.get_model("projects", "Membership")
    qs = membership_model.objects.filter(token=token)
    if len(qs) == 0:
        raise exc.NotFound(_("Token not matches any valid invitation."))
    return qs[0]
Exemplo n.º 3
0
def accept_invitation_by_existing_user(token:str, user_id:int):
    user_model = get_user_model()
    try:
        user = user_model.objects.get(id=user_id)
    except user_model.DoesNotExist:
        raise exc.NotFound(_("User does not exist."))

    membership = get_membership_by_token(token)
    try:
        membership.user = user
        membership.save(update_fields=["user"])
    except IntegrityError:
        raise exc.IntegrityError(_("This user is already a member of the project."))
    return user
Exemplo n.º 4
0
    def join_project(self, request, pk=None):
        project_slug = request.QUERY_PARAMS.get("project", None)
        project = get_object_or_404(Project, slug=project_slug)

        self.check_permissions(request, 'join_project', project)

        if not project.get_roles().filter(
                project=project,
                name__iexact=settings.UNRATED_PROJECT_JOIN_ROLE).exists():
            raise exc.NotFound(
                _("No join role with name '%s' in project '%s' (see UNRATED_PROJECT_JOIN_ROLE in config)"
                  % (settings.UNRATED_PROJECT_JOIN_ROLE, project.slug)))
        if project.memberships.filter(user=request.user).exists():
            raise exc.IntegrityError(
                _("Already member of project '%s'" % project.slug))

        services.add_user_to_project(request.user, project)
        return response.Ok()
Exemplo n.º 5
0
 def _validate_response(self, response):
     if response.status_code == 400:
         raise exc.WrongArguments(
             _("Invalid Request: %s at %s") % (response.text, response.url))
     if response.status_code == 401:
         raise exc.AuthenticationFailed(
             _("Unauthorized: %s at %s") % (response.text, response.url))
     if response.status_code == 403:
         raise exc.PermissionDenied(
             _("Unauthorized: %s at %s") % (response.text, response.url))
     if response.status_code == 404:
         raise exc.NotFound(
             _("Resource Unavailable: %s at %s") %
             (response.text, response.url))
     if response.status_code != 200:
         raise exc.WrongArguments(
             _("Resource Unavailable: %s at %s") %
             (response.text, response.url))