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]
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
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()
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))