示例#1
0
 def post(self,request):
     try:
         user = IsLoggedIn(request)
         if user is None:
             return Response(status=status.HTTP_401_UNAUTHORIZED)
         post_id = request.data['post_id']
         content = request.data['content']
         try:
             post = Post.objects.get(pk=post_id)
         except post.DoesNotExist:
             return Response(status=status.HTTP_404_NOT_FOUND)
         try:
             parent_id = request.data['parent_id']
             parent_comment = Comment.objects.get(pk=parent_id)
             comment = Comment.objects.create(user=user, content=content, post=post, parent=parent_comment)
             serializer = CommentSerializer(comment)
             data = serializer.data
             data['replies'] = []
             return Response(data, status=status.HTTP_200_OK)
         except: 
             comment = Comment.objects.create(user=user, content=content, post=post)
             serializer = CommentSerializer(comment)
             data = serializer.data
             data['replies'] = []
             return Response(data, status=status.HTTP_200_OK)
     except:
         return Response(status=status.HTTP_400_BAD_REQUEST)
示例#2
0
    def put(self, request):
        user = IsLoggedIn(request)
        if user is not None:
            try:
                pk = request.data.get("pk", "")
                post = Post.objects.get(pk=pk)
                author = post.author
                print(post.pub_date, post.last_modified, sep='\n')
                if author == user:
                    post_text = request.data.get("text", "")
                    post_title = request.data.get("title", "")
                    post.post_title = post_title
                    post.post_text = post_text
                    post.save()
                    print(post.pub_date, post.last_modified, sep='\n')
                    return Response(status=status.HTTP_201_CREATED)

                else:
                    return Response(status=status.HTTP_401_UNAUTHORIZED)

            except:
                return Response(status=status.HTTP_404_NOT_FOUND)

        else:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
示例#3
0
 def put(self, request):
     user = IsLoggedIn(request)
     if user is not None:
         request.session["username"] = user.username
         try:
             stream = Stream.objects.get(title=request.data.get("title"))
             if stream is not None:
                 stream.followed_by.add(user)
                 stream.save()
                 user.save()
                 return Response(status=status.HTTP_200_OK)
             else:
                 return Response(status=status.HTTP_400_BAD_REQUEST)
         except:
             return Response(status=status.HTTP_400_BAD_REQUEST)
     return Response(status=status.HTTP_401_UNAUTHORIZED)
示例#4
0
def CreateEventAPI(request):
    if request.method == "POST":
        user = IsLoggedIn(request)
        if user is not None:
            # print(request.data)
            owned_tags = user.tags.all(
            )  #calling tags wrong way ----corrected that
            title = request.data.get("title")
            description = request.data.get("description")
            date_str = request.data.get("date")
            match = re.search(r'\d{4}-\d{2}-\d{2}', date_str)
            date = datetime.datetime.strptime(match.group(), '%Y-%m-%d').date()
            start_time = request.data.get("start_time")
            end_time = request.data.get("end_time")
            day_long = request.data.get("day_long")
            summary = request.data.get("summary")
            venue = request.data.get("venue")
            venue_id = request.data.get("venue_id")
            tag_name = request.data.get("tag_name")
            hash_tags = request.data.get("hash_tags")
            eventlist = EventModel.objects.all().order_by("event_id")
            tags = TagModel.objects.filter(name=tag_name)
            now = datetime.datetime.now()
            date_time_event = datetime.datetime.strptime(
                date_str + " " + start_time, '%Y-%m-%d %H:%M:%S')
            if len(tags) == 1 and date_time_event > now:
                if tags[0] in owned_tags:
                    if len(eventlist) == 0:
                        event_id = 0
                    else:
                        event_id = eventlist.reverse()[0].event_id
                    data = EventModel(
                        event_id=event_id + 1,
                        title=title,
                        description=description,
                        date=date,
                        start_time=start_time,
                        end_time=end_time,
                        day_long=day_long,
                        summary=summary,
                        venue=venue,
                        venue_id=venue_id,
                        hash_tags=hash_tags,
                    )
                    data.save()
                    data.tags.add(tags[0])
                    data.save()
                    notify_new_event(title, tag_name, schedule=5)
                    if int((date_time_event - now).total_seconds()) - 3600 > 0:
                        notify_new_event(
                            title,
                            tag_name,
                            schedule=int(
                                (date_time_event - now).total_seconds()) -
                            3600)
                    return Response(status=status.HTTP_200_OK)
                return Response(status=status.HTTP_400_BAD_REQUEST)
        return Response(status=status.HTTP_400_BAD_REQUEST)
示例#5
0
 def get(self, request):
     try:
         user = IsLoggedIn(request)
         if user is None:
             return Response(status=status.HTTP_401_UNAUTHORIZED)
         streams = Stream.objects.filter(followed_by=user)
         serializer = StreamSerializer(streams, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
     except:
         return Response(status=status.HTTP_400_BAD_REQUEST)
示例#6
0
    def put(self, request):
        user = IsLoggedIn(request)
        if user is not None:
            try:
                pk = request.data.get("pk")
                stream = Stream.objects.get(pk=pk)
                stream.followed_by.add(user)
                stream.save()
                return Response(status=status.HTTP_200_OK)
            except:
                return Response(status=status.HTTP_400_BAD_REQUEST)

        else:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
示例#7
0
    def delete(self, request):
        user = IsLoggedIn(request)
        if user is not None:
            try:
                stream_title = request.data.get("title", "")
                if IsFollowing(user.username, stream_title) == False:
                    return Response(status=status.HTTP_404_NOT_FOUND)
                stream = Stream.objects.get(title=stream_title)
                stream.followed_by.remove(user)
                return Response(status=status.HTTP_200_OK)

            except:
                return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
示例#8
0
 def get_queryset(self):
     user = IsLoggedIn(self.request)
     if user is not None:
         tags = user.tags.all()
         tag_ids = [o.tag_id for o in tags]
         events = EventModel.objects.all()
         event_ids = list()
         for objects in events:
             event_tags = objects.tags.all()
             for tags in event_tags:
                 if tags.tag_id in tag_ids:
                     event_ids.append(objects.event_id)
         return EventModel.objects.filter(event_id__in=event_ids).order_by(
             "date__year", "date__month", "date__day", "start_time")
     return None
示例#9
0
 def delete(self, request):
     user = IsLoggedIn(request)
     if user is not None:
         try:
             pk = request.data.get("pk", "")
             post = Post.objects.get(pk=pk)
             author = post.author
             if author == user:
                 post.delete()
                 return Response(status=status.HTTP_204_NO_CONTENT)
             else:
                 return Response(status=status.HTTP_401_UNAUTHORIZED)
         except:
             return Response(status=status.HTTP_400_BAD_REQUEST)
     else:
         return Response(status=status.HTTP_401_UNAUTHORIZED)
示例#10
0
 def post(self, request):
     try:
         user = IsLoggedIn(request)
         if user is None:
             return Response(status=status.HTTP_401_UNAUTHORIZED)
         post_text = request.data.get("text", "")
         post_title = request.data.get("title", "")
         stream_title = request.data.get("stream", "")
         stream = Stream.objects.get(title=stream_title)
         follow_stream = IsFollowing(request.session["username"], stream.pk)
         if follow_stream == False:
             return Response(status=status.HTTP_401_UNAUTHORIZED)
         Post.objects.create(post_title=post_title, post_text=post_text, author=user, stream=stream)
         return Response(status=status.HTTP_201_CREATED)
     
     except:
         return Response(status=status.HTTP_400_BAD_REQUEST)
示例#11
0
    def get_queryset(self):
        query_month = self.request.GET.get("month")
        query_year = self.request.GET.get("year")
        user = IsLoggedIn(self.request)
        if user is not None:
            user_acads = user.acads.all()
            course_id = [course.code for course in user_acads]

            eventList = EventModel.objects.filter(event_id=None)

            for acad_event in user_acads:
                eventList = eventList | acad_event.events.all()

            return eventList.filter(date__year=query_year,
                                    date__month=query_month).order_by(
                                        "date", "start_time")
        return None
示例#12
0
def CreateEventAPI(request):
    if request.method == "POST":
        user = IsLoggedIn(request)
        if user is not None:
            owned_tags = user.owned.all()
            title = request.data.get("title")
            description = request.data.get("description")
            date_str = request.data.get("date")
            match = re.search(r'\d{4}-\d{2}-\d{2}', date_str)
            date = datetime.datetime.strptime(match.group(), '%Y-%m-%d').date()
            start_time = request.data.get("start_time")
            end_time = request.data.get("end_time")
            day_long = request.data.get("day_long")
            summary = request.data.get("summary")
            venue = request.data.get("venue")
            venue_id = request.data.get("venue_id")
            tag_name = request.data.get("tag_name")
            hash_tags = request.data.get("hash_tags")
            eventlist = EventModel.objects.all().order_by("event_id")
            tags = TagModel.objects.filter(name=tag_name)
            if len(tags) == 1:
                if tags[0] in owned_tags:
                    if len(eventlist) == 0:
                        event_id = 0
                    else:
                        event_id = eventlist.reverse()[0].event_id
                    data = EventModel(
                        event_id=event_id + 1,
                        title=title,
                        description=description,
                        date=date,
                        start_time=start_time,
                        end_time=end_time,
                        day_long=day_long,
                        summary=summary,
                        venue=venue,
                        venue_id=venue_id,
                        hash_tags=hash_tags,
                    )
                    data.save()
                    data.tags.add(tags[0])
                    data.save()
                    return Response(status=status.HTTP_200_OK)
                return Response(status=status.HTTP_400_BAD_REQUEST)
        return Response(status=status.HTTP_400_BAD_REQUEST)
示例#13
0
    def delete(self, request):
        try:
            user = IsLoggedIn(request)
            if user is None:
                    return Response(status=status.HTTP_401_UNAUTHORIZED)
            
            comment_id = request.data['pk']
            try:
                comment = Comment.objects.get(pk=comment_id)
            except:
                return Response(status=status.HTTP_404_NOT_FOUND)

            if comment.user == user:
                recursiveDelete(comment)
                return Response(status=status.HTTP_204_NO_CONTENT)
            else:
                return Response(status=status.HTTP_401_UNAUTHORIZED)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
示例#14
0
    def get(self, request):
        try:
            user = IsLoggedIn(request)
            if user is None:
                return Response(status=status.HTTP_401_UNAUTHORIZED)
            subbed_streams = Stream.objects.filter(followed_by=user)
            serializer = StreamSerializer(subbed_streams, many=True)
            subbed = serializer.data
            for stream in subbed:
                stream['is_subscribed'] = True
            unsubbed_streams = Stream.objects.all().exclude(followed_by=user)
            serializer = StreamSerializer(unsubbed_streams, many=True)
            unsubbed = serializer.data
            for stream in unsubbed:
                stream['is_subscribed'] = False

            data = unsubbed + subbed
            return Response(data, status=status.HTTP_200_OK)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
示例#15
0
    def post(self,request):
        try:
            pk = request.data['pk']
            try:
                post = Post.objects.get(pk=pk)
            except post.DoesNotExist:
                return Response(status=status.HTTP_404_NOT_FOUND)
            user = IsLoggedIn(request)
            if user is None:
                return Response(status=status.HTTP_401_UNAUTHORIZED)
            
            bookmark = Bookmark.objects.filter(user=user,post=post)
            if len(bookmark) != 0:
                bookmark.delete()
                return Response(status=status.HTTP_204_NO_CONTENT)
            else:
                Bookmark.objects.create(user=user,post=post)
                return Response(status=status.HTTP_201_CREATED)

        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
示例#16
0
    def get_queryset(self):
        query_month = self.request.GET.get("month")
        query_year = self.request.GET.get("year")
        user = IsLoggedIn(self.request)
        if user is not None:
            user_acads = user.acads.all()
            course_id = [course.code for course in user_acads]

            eventList = EventModel.objects.filter(event_id=None)

            print(query_month, query_year)
            for acad_event in user_acads:
                eventList = eventList | acad_event.events.all()

            non_academic_events = EventModel.objects.filter(acad_state=False)

            eventList = eventList | non_academic_events

            return eventList.filter(date__year=query_year,
                                    date__month=query_month).order_by(
                                        "date", "start_time")
        return Response(status=status.HTTP_400_BAD_REQUEST)
示例#17
0
 def get_queryset(self):
     user = IsLoggedIn(self.request)
     if user is not None:
         print(EventModel.objects.all()[0].tags,
               EventModel.objects.all()[1].tags)
         query_month = self.request.GET.get("month")
         query_year = today.year
         query_year = self.request.GET.get("year")
         tags = user.tags.all()
         tag_ids = [o.tag_id for o in tags]
         events = EventModel.objects.all()
         event_ids = list()
         for objects in events:
             event_tags = objects.tags.all()
             for tags in event_tags:
                 if tags.tag_id in tag_ids:
                     event_ids.append(objects.event_id)
         return EventModel.objects.filter(event_id__in=event_ids,
                                          date__year=query_year,
                                          date__month=query_month).order_by(
                                              "date", "start_time")
     return None