Fix feed serializer and view
This commit is contained in:
+8
-10
@@ -73,24 +73,22 @@ class TagSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class FeedSerializer(serializers.ModelSerializer):
|
class FeedSerializer(serializers.ModelSerializer):
|
||||||
# tags = TagSerializer(many=True, read_only=False)
|
tag_id = serializers.PrimaryKeyRelatedField(
|
||||||
# tags = serializers.PrimaryKeyRelatedField(
|
many=True,
|
||||||
# many=True,
|
source="tags",
|
||||||
# queryset=Tag.objects.all(),
|
queryset=Tag.objects.all()
|
||||||
# read_only=False
|
)
|
||||||
# )
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Feed
|
model = Feed
|
||||||
fields = ('tags', 'visible', 'title', 'description',
|
fields = ('id', 'tags', 'tag_id', 'visible', 'title', 'description',
|
||||||
'content', 'publish_time', 'autohide')
|
'content', 'publish_time', 'autohide', 'autohide_enabled')
|
||||||
|
depth = 1
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
print("validated data: ", validated_data)
|
|
||||||
tags_data = validated_data.pop('tags')
|
tags_data = validated_data.pop('tags')
|
||||||
feed = Feed.objects.create(**validated_data)
|
feed = Feed.objects.create(**validated_data)
|
||||||
for tag in tags_data:
|
for tag in tags_data:
|
||||||
print(tag)
|
|
||||||
feed.tags.add(tag)
|
feed.tags.add(tag)
|
||||||
feed.save()
|
feed.save()
|
||||||
return feed
|
return feed
|
||||||
|
|||||||
+17
-12
@@ -33,15 +33,6 @@ class IsPostOrIsAuthenticated(permissions.BasePermission):
|
|||||||
return True
|
return True
|
||||||
return request.user and request.user.is_authenticated
|
return request.user and request.user.is_authenticated
|
||||||
|
|
||||||
|
|
||||||
class IsPostOrReadOnlyOrAuthenticated(permissions.BasePermission):
|
|
||||||
def has_permission(self, request, view):
|
|
||||||
if request.method in ['POST', 'GET']:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return request.user and request.user.is_authenticated
|
|
||||||
|
|
||||||
|
|
||||||
# -- REST API -- #
|
# -- REST API -- #
|
||||||
class RootView(routers.APIRootView):
|
class RootView(routers.APIRootView):
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
@@ -50,13 +41,17 @@ class RootView(routers.APIRootView):
|
|||||||
class EventViewSet(viewsets.ModelViewSet):
|
class EventViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Event.objects.all()
|
queryset = Event.objects.all()
|
||||||
serializer_class = EventSerializer
|
serializer_class = EventSerializer
|
||||||
permission_classes = [IsPostOrReadOnlyOrAuthenticated]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
||||||
filter_fields = '__all__'
|
filter_fields = '__all__'
|
||||||
search_fields = '__all__'
|
search_fields = '__all__'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time')
|
since = self.request.query_params.get('since', None)
|
||||||
|
if since:
|
||||||
|
return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time')
|
||||||
|
|
||||||
|
return Event.objects.filter(visible=True).order_by('start_time')
|
||||||
|
|
||||||
|
|
||||||
class SignupFormViewSet(viewsets.ModelViewSet):
|
class SignupFormViewSet(viewsets.ModelViewSet):
|
||||||
@@ -98,7 +93,17 @@ class FeedViewSet(viewsets.ModelViewSet):
|
|||||||
search_fields = '__all__'
|
search_fields = '__all__'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return Feed.objects.filter(visible=True, autohide__gt=timezone.now()).order_by('publish_time')
|
objs = Feed.objects.filter(visible=True).order_by('publish_time')
|
||||||
|
|
||||||
|
result_ids = []
|
||||||
|
for obj in objs:
|
||||||
|
if obj.autohide_enabled:
|
||||||
|
if obj.autohide > timezone.now():
|
||||||
|
result_ids.append(obj.id)
|
||||||
|
else:
|
||||||
|
result_ids.append(obj.id)
|
||||||
|
|
||||||
|
return Feed.objects.filter(id__in=result_ids)
|
||||||
|
|
||||||
|
|
||||||
class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
|
class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
|
|||||||
Reference in New Issue
Block a user