Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
 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.")
Пример #4
0
 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)
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
 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)