Добавлены разные activities для пользователя

main
through-your-tears 1 year ago
parent e1249b3b69
commit 39dab848ae

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ActivitiesConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'activities'

@ -0,0 +1,25 @@
from django.conf import settings
from django.db import models
# Create your models here.
class Photo(models.Model):
image = models.ImageField(upload_to='users/photos/')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='gallery')
class FavouriteOrganization(models.Model):
organization = models.ForeignKey('organizations.Organization', on_delete=models.CASCADE)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
# class Test(models.Model):
# title = models.CharField(max_length=64)
# image = models.ImageField(upload_to='images/tests/')
#
#
# class Bonus(models.Model):
# user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
# amount = models.IntegerField()
# descr = models.TextField()

@ -0,0 +1,14 @@
from core.repositories import BaseRepository
from .models import Photo, FavouriteOrganization
class PhotoRepository(BaseRepository):
model = Photo
class FavouriteOrganizationRepository(BaseRepository):
model = FavouriteOrganization
@classmethod
def get_filtered(cls, **kwargs):
return cls.model.objects.filter(**kwargs)

@ -0,0 +1,27 @@
from rest_framework import serializers
from organizations.repositories import OrganizationRepository
from .models import Bonus, FavouriteOrganization, Photo
class PhotoSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
class Meta:
model = Photo
fields = ('image', 'user')
class ListPhotoSerializer(serializers.ModelSerializer):
class Meta:
model = Photo
fields = ('image',)
class FavouriteOrganizationSerializer(serializers.ModelSerializer):
organization = serializers.PrimaryKeyRelatedField(queryset=OrganizationRepository.all(), read_only=False)
user = serializers.StringRelatedField()
class Meta:
model = FavouriteOrganization
fields = ('organization', 'user')

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,9 @@
from django.urls import path
from .views import PhotoListCreateAPIView, FavouriteOrganizationAPIView
urlpatterns = [
path('gallery/', PhotoListCreateAPIView.as_view()),
path('wishlist/', FavouriteOrganizationAPIView.as_view())
]

@ -0,0 +1,43 @@
from django.shortcuts import get_object_or_404
from rest_framework.generics import ListAPIView, CreateAPIView, DestroyAPIView
from rest_framework.pagination import PageNumberPagination
from core.permissions import IsAuthorOrReadOnly
from organizations.repositories import OrganizationRepository
from .repositories import PhotoRepository, FavouriteOrganizationRepository
from .serializers import PhotoSerializer, ListPhotoSerializer
# Create your views here.
class PhotoListCreateAPIView(ListAPIView, CreateAPIView):
queryset = PhotoRepository.all()
pagination_class = PageNumberPagination
permission_classes = [IsAuthorOrReadOnly]
def get_serializer_class(self):
if self.request.POST:
return PhotoSerializer
else:
return ListPhotoSerializer
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class FavouriteOrganizationAPIView(ListAPIView, CreateAPIView, DestroyAPIView):
def get_queryset(self):
return FavouriteOrganizationRepository.get_filtered(user=self.request.user)
def get_object(self):
queryset = self.get_queryset()
obj = get_object_or_404(queryset, user=self.request.user, organization__pk=self.kwargs.get('id'))
return obj
def perform_create(self, serializer):
if FavouriteOrganizationRepository.get_filtered(user=self.request.user, organization=OrganizationRepository.get(
self.kwargs.get('id'))):
pass
else:
serializer.save(user=self.request.user, organization=self.kwargs.get('id'))

@ -24,7 +24,8 @@ from core.openapi import schema_view
api_urls = [
path('organizations/', include('organizations.urls')),
path('user/', include('jwtauth.urls'))
path('user/', include('jwtauth.urls')),
path('activity/', include('activities.urls'))
]
urlpatterns = [

Loading…
Cancel
Save