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