upgrade comments && add UML generator && modified shell files && fix urls
parent
1d07048913
commit
9da2611fbb
|
|
@ -1,3 +1,4 @@
|
||||||
# database
|
# database
|
||||||
|
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
*.png
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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.
Binary file not shown.
|
|
@ -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):
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -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']
|
||||||
|
|
@ -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, )
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
# }
|
||||||
|
|
@ -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)),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue