upgrade comments && add UML generator && modified shell files && fix urls

develop
TBS093A 2020-07-24 11:15:06 +02:00
parent 1d07048913
commit 9da2611fbb
13 changed files with 88 additions and 4 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
# database # database
*.sqlite3 *.sqlite3
*.png

View File

@ -1,2 +1,3 @@
python manage.py makemigrations python manage.py makemigrations
python manage.py migrate python manage.py migrate
python manage.py graph_models -a -g -o class_diagram.png

View File

@ -1,7 +1,15 @@
pip install django pip install django
pip install djangorestframework pip install djangorestframework
pip install django-filter pip install django-filter
pip install django-rest-enumfield pip install django-rest-enumfield
pip install drf_yasg pip install drf_yasg
pip install pyjwt pip install pyjwt
pip install markdown pip install markdown
pip install django_extensions
pip install pydotplus
# for runing generate UML:
# apt-get install graphviz

Binary file not shown.

Binary file not shown.

View File

@ -59,7 +59,7 @@ class AccountAuth(ObtainAuthToken):
serializer_class = AccountAuthSerializer serializer_class = AccountAuthSerializer
@swagger_auto_schema( @swagger_auto_schema(
responses={ 200: '{ Token: Authorize }' }, responses={ 200: '{ Token: "Token", user: { AccountGet } }' },
request_body=AccountAuthSerializer request_body=AccountAuthSerializer
) )
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):

View File

@ -0,0 +1,21 @@
from rest_framework import serializers
from .models import UserComment, GuestComment
class UserCommentSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only=True)
user_id = serializers.IntegerField()
text = serializers.CharField()
class Meta:
model = UserComment
fields = [ 'id', 'user_id', 'text']
class GuestCommentSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only=True)
guest_id = serializers.IntegerField()
text = serializers.CharField()
class Meta:
model = GuestComment
fields = [ 'id', 'guest_id', 'text']

View File

@ -1,3 +1,42 @@
from django.shortcuts import render from django.shortcuts import render
# Create your views here. from rest_framework import viewsets, mixins
from rest_framework import permissions
from .models import UserComment, GuestComment
from .serializers import UserCommentSerializer, GuestCommentSerializer
class AnonAndUserPermissions(permissions.BasePermission):
"""
Anonymous user always can create && User can modify self records only
this is override of permissions in settings
"""
def has_object_permission(self, request, view, obj):
if request.method == 'POST':
return True
return "AnonymousUser" != str(request.user)
class UserCommentViewSet(
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet
):
queryset = UserComment.objects.all()
serializer_class = UserCommentSerializer
class GuestCommentViewSet(
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet
):
queryset = GuestComment.objects.all()
serializer_class = GuestCommentSerializer
permission_classes = (AnonAndUserPermissions, )

View File

@ -37,6 +37,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django_extensions',
'rest_framework', 'rest_framework',
'drf_yasg', 'drf_yasg',
'rest_framework.authtoken', 'rest_framework.authtoken',
@ -141,6 +142,8 @@ USE_TZ = True
STATIC_URL = '/static/' STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Swagger documentation options
SWAGGER_SETTINGS = { SWAGGER_SETTINGS = {
'JSON_EDITOR': True, 'JSON_EDITOR': True,
'SECURITY_DEFINITIONS': { 'SECURITY_DEFINITIONS': {
@ -151,3 +154,10 @@ SWAGGER_SETTINGS = {
} }
} }
} }
# UML options
# GRAPH_MODELS = {
# 'all_applications': True,
# 'group_models': True,
# }

View File

@ -25,6 +25,7 @@ from portfolio import settings
from .account.views import GuestViewSet, AccountViewSet, AccountAuth from .account.views import GuestViewSet, AccountViewSet, AccountAuth
from .album.views import AlbumViewSet, TrackViewSet, TrackRowViewSet from .album.views import AlbumViewSet, TrackViewSet, TrackRowViewSet
from .rating.views import TrackRatingViewSet, AlbumRatingViewSet, CommentRatingViewSet from .rating.views import TrackRatingViewSet, AlbumRatingViewSet, CommentRatingViewSet
from .comment.views import UserCommentViewSet, GuestCommentViewSet
schema_view = get_schema_view( schema_view = get_schema_view(
openapi.Info( openapi.Info(
@ -51,6 +52,9 @@ router.register(r'track/(?P<track_id>\w+)/rating', TrackRatingViewSet, basename=
router.register(r'album/(?P<album_id>\w+)/rating', AlbumRatingViewSet, basename='album rating') router.register(r'album/(?P<album_id>\w+)/rating', AlbumRatingViewSet, basename='album rating')
router.register(r'comment/(?P<comment_id>\w+)/rating', CommentRatingViewSet, basename='comment rating') router.register(r'comment/(?P<comment_id>\w+)/rating', CommentRatingViewSet, basename='comment rating')
router.register(r'comment/user', UserCommentViewSet, basename='user-comment')
router.register(r'comment/guest', GuestCommentViewSet, basename='guest-comment')
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('', include(router.urls)), path('', include(router.urls)),