Skip to content

Instantly share code, notes, and snippets.

View mentix02's full-sized avatar
💻
coding away

Manan mentix02

💻
coding away
View GitHub Profile
#!/usr/bin/env python3
import re
import csv
import datetime as dt
from prettytable import PrettyTable
# intialize table
rows = []
table = PrettyTable()
class PostSerializer(serializers.ModelSerializer):
user = UserListSerializer()
images = ImageListSerializer(many=True)
is_liked = serializers.SerializerMethodField(allow_null=True)
class Meta:
model = Post
exclude = ['timestamp', 'vote_score', 'num_vote_down']
from django.db import IntegrityError
from django.shortcuts import get_object_or_404
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from post.models import Post
from django.db.models import QuerySet
from django.shortcuts import get_object_or_404
from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import PermissionDenied
from rest_framework.generics import (
ListAPIView,
CreateAPIView,
RetrieveAPIView,
RetrieveUpdateAPIView,
class UserDetailAPIView(RetrieveAPIView):
lookup_url_kwarg = 'username'
queryset = User.objects.all()
lookup_field = 'username__iexact'
serializer_class = UserSerializer
class UserPostListAPIView(ListAPIView):
serializer_class = PostSerializer
permission_classes = (IsAuthenticated,)
class FeedAPIView(ListAPIView):
serializer_class = PostSerializer
permission_classes = (IsAuthenticated,)
def get_queryset(self) -> QuerySet:
user = self.request.user
followers = user.following
follower_ids = list(followers.values_list('id', flat=True)) + [user.id]
return Post.objects.filter(user__in=follower_ids).order_by('-timestamp')
class FollowRequestActionAPIView(APIView):
"""
APIView to accept or reject a FollowRequest by the person
who is being requested to act upon said request.
"""
parser_classes = (FormParser,)
permission_classes = (IsAuthenticated,)
from django.shortcuts import get_object_or_404
from django.contrib.auth import get_user_model
from django.core.handlers.wsgi import WSGIRequest
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import FormParser
from rest_framework.permissions import IsAuthenticated
from django.db import models
from typing import List, Tuple
class FollowRequest(models.Model):
requester = models.ForeignKey('user.User', on_delete=models.CASCADE)
to_follow = models.ForeignKey(
'user.User', on_delete=models.CASCADE, related_name='requests'
)
_follows = models.ManyToManyField('User', blank=True, related_name='followed_by')
objects = UserManager()
REQUIRED_FIELDS = ['email', 'password']
def unfollow(self, user: User) -> None:
""" Helper function to remove a user from this users following list. """
self._follows.remove(user)