diff --git a/rog/admin.py b/rog/admin.py index 7030526..4830dd5 100644 --- a/rog/admin.py +++ b/rog/admin.py @@ -4,7 +4,7 @@ from django.shortcuts import render from leaflet.admin import LeafletGeoAdmin from leaflet.admin import LeafletGeoAdminMixin from leaflet_admin_list.admin import LeafletAdminListMixin -from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, CustomUser, GifuAreas, UserTracks, ShapeFileLocations, templocation, UserUpload, UserUploadUser, EventUser +from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, CustomUser, GifuAreas, UserTracks, ShapeFileLocations, templocation, UserUpload, UserUploadUser, EventUser, GoalImages from django.contrib.auth.admin import UserAdmin from django.urls import path from django.shortcuts import render @@ -219,3 +219,4 @@ admin.site.register(EventUser, admin.ModelAdmin) admin.site.register(CustomUser, UserAdminConfig) admin.site.register(templocation, TempLocationAdmin) +admin.site.register(GoalImages, admin.ModelAdmin) diff --git a/rog/migrations/0039_goalimages.py b/rog/migrations/0039_goalimages.py new file mode 100644 index 0000000..2838b8b --- /dev/null +++ b/rog/migrations/0039_goalimages.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.9 on 2022-10-17 11:39 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0038_auto_20221016_1950'), + ] + + operations = [ + migrations.CreateModel( + name='GoalImages', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('goalimage', models.FileField(blank=True, null=True, upload_to='%y%m%d')), + ('goaltime', models.DateTimeField(verbose_name='Goal time')), + ('team_name', models.CharField(max_length=255, verbose_name='Team name')), + ('event_code', models.CharField(max_length=255, verbose_name='event code')), + ('cp_number', models.IntegerField(verbose_name='CP numner')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/rog/models.py b/rog/models.py index e57795d..aac31cd 100644 --- a/rog/models.py +++ b/rog/models.py @@ -201,6 +201,14 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): def __str__(self): return self.email +class GoalImages(models.Model): + user=models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING) + goalimage = models.FileField(upload_to='goals/%y%m%d', blank=True, null=True) + goaltime = models.DateTimeField(_("Goal time"), auto_now=False, auto_now_add=False) + team_name = models.CharField(_("Team name"), max_length=255) + event_code = models.CharField(_("event code"), max_length=255) + cp_number = models.IntegerField(_("CP numner")) + class RogUser(models.Model): user=models.OneToOneField(CustomUser, on_delete=models.CASCADE) diff --git a/rog/serializers.py b/rog/serializers.py index aaae891..383f552 100644 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from rest_framework_gis.serializers import GeoFeatureModelSerializer from sqlalchemy.sql.functions import mode -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks +from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks, GoalImages from drf_extra_fields.fields import Base64ImageField #from django.contrib.auth.models import User @@ -76,6 +76,12 @@ class UserSerializer(serializers.ModelSerializer): model = CustomUser fields = ('id','email', 'is_rogaining' ,'group', 'zekken_number', 'event_code', 'team_name') +class GolaImageSerializer(serializers.ModelSerializer): + goalimage = Base64ImageField(max_length=None, use_url=True) + class Meta: + model = GoalImages + fields="__all__" + class RogUserSerializer(serializers.ModelSerializer): class Meta: diff --git a/rog/urls.py b/rog/urls.py index dc5e7d3..c4690b9 100644 --- a/rog/urls.py +++ b/rog/urls.py @@ -1,6 +1,7 @@ +from sys import prefix from rest_framework import urlpatterns from rest_framework.routers import DefaultRouter -from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView +from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView, GoalImageViewSet from django.urls import path, include from knox import views as knox_views @@ -15,6 +16,7 @@ router.register(prefix='location_polygon', viewset=Location_polygonViewSet, base router.register(prefix='perf_main', viewset=Jpn_Main_PerfViewSet, basename='main_perf') router.register(prefix='perf', viewset=Jpn_PerfViewSet, basename='perf') router.register(prefix='track', viewset=UserTracksViewSet, basename='track') +router.register(prefix='goalimage', viewset=GoalImageViewSet, basename='goalimage') urlpatterns = router.urls @@ -41,5 +43,6 @@ urlpatterns += [ path('delete_destination/', DeleteDestination, name='delete_detination'), path('customareanames/', CustomAreaNames, name='custom_area_name'), path('userdetials/', userDetials, name='user_detials'), - path('change-password/', ChangePasswordView.as_view(), name='change-password'), + path('change-password/', ChangePasswordView.as_view(), name='change-password') + # path('goal-image/', GoalImageViewSet.as_view(), name='goal-image') ] \ No newline at end of file diff --git a/rog/views.py b/rog/views.py index 4cbdb18..b3741e0 100644 --- a/rog/views.py +++ b/rog/views.py @@ -1,11 +1,11 @@ from curses.ascii import NUL from django.core.serializers import serialize -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks +from .models import GoalImages, Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages from rest_framework import viewsets -from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer +from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer from knox.models import AuthToken -from rest_framework import viewsets, permissions, generics, status +from rest_framework import viewsets, generics, status from rest_framework.decorators import action from rest_framework.response import Response from rest_framework.parsers import JSONParser, MultiPartParser @@ -20,6 +20,13 @@ from django.db.models import F from django.contrib.gis import geos from django.db.models import Q +from rest_framework import permissions +from rest_framework.views import APIView +from rest_framework.decorators import api_view +from rest_framework.decorators import api_view, permission_classes +from rest_framework.parsers import JSONParser, MultiPartParser +from django.views.decorators.csrf import csrf_exempt + class LocationViewSet(viewsets.ModelViewSet): @@ -267,12 +274,44 @@ class LoginAPI(generics.GenericAPIView): }) class UserAPI(generics.RetrieveAPIView): - permission_classes = [permissions.IsAuthenticated, ] + permission_classes = [permissions.IsAuthenticated,] serializer_class = UserSerializer def get_object(self): return self.request.user +# @api_view(['POST',]) +# @permission_classes((IsAuthenticated,)) +# @csrf_exempt +class GoalImageViewSet(APIView): + permissions_classes = [permissions.IsAuthenticated,] + # parser_classes = [MultiPartParser, JSONParser] + + def post(self, request, format=None): + # print(request.data) + serializer = GolaImageSerializer(data=request.data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HttP_200_OK) + else: + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + return Response({"ok":"ok"}) + +class GoalImageViewSet(viewsets.ModelViewSet): + queryset=GoalImages.objects.all() + serializer_class=GolaImageSerializer + # parser_classes = (MultiPartParser, JSONParser) + + def get_queryset(self): + queryset = GoalImages.objects.all() + # dist = self.request.GET.get('dist') + # if dist != None : + # queryset = Incident.objects.filter(entity=dist, is_approved=True) + # else: + # queryset = Incident.objects.filter(is_approved=True) + return queryset + def userDetials(request): user_id = request.GET.get('user_id')