def get(self, request, *args, **kwargs): """Returns a list of public or private posts, depending on whether or not the requested user is the one authenticated, """ username = kwargs.get('username') try: request_user = get_user_model().objects.get(username=username) except: return Http404("User, %s, does not exist" % username) if request.user.is_authenticated() and \ username == request.user.username: model_filters = {'user': request_user} else: model_filters = {'user': request_user, 'is_draft': False} posts = paginate(request=request, model=BlogPost, model_filters=model_filters) post_fields = ["title", "caption", ("last_updated", lambda obj: obj.last_updated.strftime( "%B %d, %Y")), ("url", lambda obj: obj.get_url()), ("user", dict(fields=[ "username", 'image', ("url", lambda obj: obj.get_url()) ])) ] serialized_data = { "posts": serialize(posts.object_list, post_fields), "page": posts.number, "count": posts.paginator.per_page } return Http200(serialized_data)
def get(self, request, *args, **kwargs): """Returns a user's profile.""" # Get user try: username = kwargs.get('username') user = DjangoDev.objects.get(username=username) except: return Http404('This user does not exist') # Serialize user user_fields = ['username', 'job_title', 'company', 'interests', 'email', 'website', 'image'] serialized_user = serialize(user, fields=user_fields) # Serialize attached posts # Check if logged in user is authorized to view these posts model_filters = {"user": user} if not ((request.user.is_authenticated()) and (user == request.user)): model_filters["is_draft"] = True posts = paginate(request=request, model=BlogPost, model_filters=model_filters) post_fields = ['title', 'caption', ('url', lambda obj: obj.get_url()), ] serialized_posts = serialize(posts.object_list, fields=post_fields) # Conjoin the two together serialized_user['posts'] = serialized_posts return Http200(serialized_user)
def get(self, request, *args, **kwargs): """Returns a list of paginated comments.""" try: # Check if Blog post exists, and return a list of related comments username = kwargs.get('username') user = get_user_model().objects.get(username=username) title_slug = kwargs.get('title_slug') post = BlogPost.objects.get(user=user, title_slug=title_slug) model_filters = {"post": post} comments = paginate(request=request, model=Comment, model_filters=model_filters) comment_fields = ['text', 'pk', ('date_created', lambda obj: obj.date_created.strftime( "%B %d, %Y")), ('date_updated', lambda obj: obj.date_updated.strftime( "%B %d, %Y")), ('user', dict(fields=[ 'username', 'image', ('url', lambda obj: obj.get_url()) ])) ] return_data = { "comments": serialize(comments.object_list, comment_fields), "page": comments.number, "count": comments.paginator.per_page } return Http200(return_data) except: return Http404("Blog post does not exist.")
def get(self, request, *args, **kwargs): """Returns a list of recent meetups.""" meetups = paginate(request=request, model=Meetup) meetup_fields = ["address", "city", "description", "event_url", "location_name", "title", ("group_url", GROUP_URL), ("date", lambda obj: obj.date.strftime("%B %d, %Y")) ] serialized_data = { "meetups": serialize(meetups.object_list, meetup_fields), "page": meetups.number, "count": meetups.paginator.per_page } return Http200(serialized_data)
def get(self, request, *args, **kwargs): """Returns a company's jobs posted.""" company_slug = kwargs.get('company_slug') model_filters = {"company_slug": company_slug, "is_expired": False} jobs = paginate(request=request, model=Job, model_filters=model_filters) job_fields = ["title", "company", "company_url", "company_slug", "pk", ("description", lambda obj: obj.get_short_description()), ("date_created", lambda obj: obj.date_created.strftime( "%B %d, %Y")) ] serialized_data = { "jobs": serialize(jobs.object_list, job_fields) } return Http200(serialized_data)
def get(self, request, *args, **kwargs): """Endpoint for getting jobs""" model_filters = {"is_expired": False} jobs = paginate(request=request, model=Job, model_filters=model_filters) job_fields = ["title", "company", "company_slug", "pk", ("short_description", lambda obj: obj.get_short_description()), ("date_created", lambda obj: obj.date_created.ctime()), ("company_url", lambda obj: obj.get_company_url()), ("url", lambda obj: obj.get_url()), ("user", dict(fields=[ 'username', 'image', ('url', lambda obj: obj.get_url()) ])) ] serialized_data = { "jobs": serialize(jobs.object_list, job_fields) } return Http200(serialized_data)
def get(self, request, *args, **kwargs): """API endpoint for getting a list of public blog posts.""" model_filters = {"is_draft": False} posts = paginate(request=request, model=BlogPost, model_filters=model_filters) post_fields = ["title", "caption", ("date_published", lambda obj: obj.date_published.strftime( "%B %d, %Y")), ("url", lambda obj: obj.get_url()), ("user", dict(fields=[ 'username', 'image', ('url', lambda obj: obj.get_url()) ])) ] serialized_data = { "posts": serialize(posts.object_list, post_fields), "page": posts.number, "count": posts.paginator.per_page } return Http200(serialized_data)