Skip to content

Commit

Permalink
Remove DRF code from Main
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrey-Volkovitskiy committed May 23, 2023
1 parent 5aa7b9b commit 7d7a8c4
Show file tree
Hide file tree
Showing 19 changed files with 0 additions and 2,041 deletions.
668 changes: 0 additions & 668 deletions api_schema.yml

This file was deleted.

8 changes: 0 additions & 8 deletions task_manager/labels/serializers.py

This file was deleted.

19 changes: 0 additions & 19 deletions task_manager/labels/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
from task_manager.views import CustomLoginRequiredMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from rest_framework import viewsets, permissions
from rest_framework.response import Response
from .serializers import LabelSerializer


class LabelPermissions(CustomLoginRequiredMixin):
Expand Down Expand Up @@ -66,19 +63,3 @@ def form_valid(self, form):
_("The label cannot be deleted because it is in use"))
return redirect('label-list')
return super().form_valid(form)


class LabelAPIViewSet(viewsets.ModelViewSet):
'''Only authenticateed user can CRUD labels.
A label associated with a task cannot be deleted.'''
queryset = Label.objects.all()
serializer_class = LabelSerializer
permission_classes = [permissions.IsAuthenticated]
http_method_names = ['get', 'post', 'head', 'put', 'delete']

def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.task_set.exists():
message = _("The label cannot be deleted because it is in use")
return Response({'detail': message}, status=405)
return super().destroy(request, *args, **kwargs)
15 changes: 0 additions & 15 deletions task_manager/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,18 +167,3 @@
'code_version': '1.0',
'root': str(BASE_DIR),
}

REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

SPECTACULAR_SETTINGS = {
'TITLE': 'Task manager API',
'DESCRIPTION': '''Training REST-API project (DRF, Swagger UI,
end-to-end testing).
Please create a new user and log in through basicAuth to be able to work
with statuses, labels and tasks.''',
'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False,
# OTHER SETTINGS
}
8 changes: 0 additions & 8 deletions task_manager/statuses/serializers.py

This file was deleted.

19 changes: 0 additions & 19 deletions task_manager/statuses/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
from task_manager.views import CustomLoginRequiredMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from rest_framework import viewsets, permissions
from rest_framework.response import Response
from .serializers import StatusSerializer


class StatusPermissions(CustomLoginRequiredMixin):
Expand Down Expand Up @@ -66,19 +63,3 @@ def form_valid(self, form):
_("The status cannot be deleted because it is in use"))
return redirect('status-list')
return super().form_valid(form)


class StatusAPIViewSet(viewsets.ModelViewSet):
'''Only authenticateed user can CRUD statuses.
A status associated with a task cannot be deleted.'''
queryset = Status.objects.all()
serializer_class = StatusSerializer
permission_classes = [permissions.IsAuthenticated]
http_method_names = ['get', 'post', 'head', 'put', 'delete']

def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.task_set.exists():
message = _("The status cannot be deleted because it is in use")
return Response({'detail': message}, status=405)
return super().destroy(request, *args, **kwargs)
10 changes: 0 additions & 10 deletions task_manager/tasks/permissions.py

This file was deleted.

11 changes: 0 additions & 11 deletions task_manager/tasks/serializers.py

This file was deleted.

19 changes: 0 additions & 19 deletions task_manager/tasks/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
from django.contrib.auth.mixins import UserPassesTestMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from rest_framework import viewsets, permissions
from .serializers import TaskSerializer
from .permissions import DeleteOnlyByAuthor


class TaskPermissionsForCRU(CustomLoginRequiredMixin):
Expand Down Expand Up @@ -98,19 +95,3 @@ class TaskDeleteView(
template_name = "tasks/delete.html"
success_url = reverse_lazy("task-list")
success_message = _("Task successfully deleted")


class TaskAPIViewSet(viewsets.ModelViewSet):
'''Only authenticateed user can CRUD tasks.
A task can only be deleted by its author.'''
queryset = Task.objects.all().order_by('id')
serializer_class = TaskSerializer
permission_classes = [
permissions.IsAuthenticated,
DeleteOnlyByAuthor
]
http_method_names = ['get', 'post', 'head', 'put', 'delete']

def perform_create(self, serializer):
serializer.save(author=self.request.user)
return super().perform_create(serializer)
22 changes: 0 additions & 22 deletions task_manager/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,8 @@
from django.views.generic import TemplateView
from django.conf import settings
from django.conf.urls.static import static
from rest_framework import routers
from .users import views as user_views
from .statuses import views as status_views
from .labels import views as label_views
from .tasks import views as task_views
from drf_spectacular.views import (SpectacularAPIView,
SpectacularSwaggerView)


api_router = routers.DefaultRouter()
api_router.register(r'users', user_views.UserAPIViewSet,
basename='user-api')
api_router.register(r'statuses', status_views.StatusAPIViewSet,
basename='status-api')
api_router.register(r'labels', label_views.LabelAPIViewSet,
basename='label-api')
api_router.register(r'tasks', task_views.TaskAPIViewSet,
basename='task-api')

urlpatterns = [
path('', TemplateView.as_view(
template_name="index.html"), name='home'),
Expand All @@ -51,9 +34,4 @@
path('statuses/', include('task_manager.statuses.urls')),
path('tasks/', include('task_manager.tasks.urls')),
path('labels/', include('task_manager.labels.urls')),
path('api/v1/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/v1/schema/docs/', SpectacularSwaggerView.as_view(
url_name='schema')),
path('api/v1/auth/', include('rest_framework.urls')),
path('api/v1/', include(api_router.urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
46 changes: 0 additions & 46 deletions task_manager/users/serializers.py

This file was deleted.

23 changes: 0 additions & 23 deletions task_manager/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@
from task_manager.users.forms import UserForm
from task_manager.tasks.models import Task
from task_manager.views import CustomLoginRequiredMixin
from rest_framework import viewsets
from rest_framework.response import Response
from .serializers import UserSerializer
from .permissions import IsHimselfOrReadOnly


class UserListView(ListView):
Expand Down Expand Up @@ -87,22 +83,3 @@ def form_valid(self, form):
_("The user cannot be deleted because it is in use"))
return redirect('user-list')
return super().form_valid(form)


class UserAPIViewSet(viewsets.ModelViewSet):
'''An anonymous user can create, retrieve and list users.
Only the user himself can change or delete his account.
A user associated with a task cannot be deleted.'''
queryset = User.objects.all().order_by('id')
serializer_class = UserSerializer
permission_classes = [IsHimselfOrReadOnly]
http_method_names = ['get', 'post', 'head', 'put', 'delete']

def destroy(self, request, *args, **kwargs):
instance = self.get_object()
is_author = instance.author_set.exists()
is_executor = instance.executor_set.exists()
if is_author or is_executor:
message = _("The user cannot be deleted because it is in use")
return Response({'detail': message}, status=405)
return super().destroy(request, *args, **kwargs)
Empty file removed tests/drf/__init__.py
Empty file.
39 changes: 0 additions & 39 deletions tests/drf/conftest.py

This file was deleted.

44 changes: 0 additions & 44 deletions tests/drf/factories.py

This file was deleted.

Loading

0 comments on commit 7d7a8c4

Please sign in to comment.