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

3
.gitignore vendored
View File

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

View File

@ -1,2 +1,3 @@
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 djangorestframework
pip install django-filter
pip install django-rest-enumfield
pip install drf_yasg
pip install pyjwt
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
@swagger_auto_schema(
responses={ 200: '{ Token: Authorize }' },
responses={ 200: '{ Token: "Token", user: { AccountGet } }' },
request_body=AccountAuthSerializer
)
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
# 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.messages',
'django.contrib.staticfiles',
'django_extensions',
'rest_framework',
'drf_yasg',
'rest_framework.authtoken',
@ -141,6 +142,8 @@ USE_TZ = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Swagger documentation options
SWAGGER_SETTINGS = {
'JSON_EDITOR': True,
'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 .album.views import AlbumViewSet, TrackViewSet, TrackRowViewSet
from .rating.views import TrackRatingViewSet, AlbumRatingViewSet, CommentRatingViewSet
from .comment.views import UserCommentViewSet, GuestCommentViewSet
schema_view = get_schema_view(
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'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 = [
path('admin/', admin.site.urls),
path('', include(router.urls)),