From 8112779edab3f7cd189b4cde8dde9cf98de13b6b Mon Sep 17 00:00:00 2001 From: Mohamed Nouffer Date: Mon, 13 Jun 2022 01:55:45 +0530 Subject: [PATCH] update --- rog/admin.py | 3 ++- .../0010_useractions_checkinimage.py | 18 +++++++++++++ rog/migrations/0011_usertracks.py | 25 +++++++++++++++++++ rog/models.py | 8 +++++- rog/serializers.py | 16 ++++++++++-- rog/urls.py | 3 ++- rog/views.py | 9 +++++-- 7 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 rog/migrations/0010_useractions_checkinimage.py create mode 100644 rog/migrations/0011_usertracks.py diff --git a/rog/admin.py b/rog/admin.py index 6f201c9..2799aac 100644 --- a/rog/admin.py +++ b/rog/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin 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 +from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, CustomUser, GifuAreas, UserTracks from django.contrib.auth.admin import UserAdmin class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): @@ -45,6 +45,7 @@ admin.site.register(Event, admin.ModelAdmin) admin.site.register(Location_line, LeafletGeoAdmin) admin.site.register(Location_polygon, LeafletGeoAdmin) admin.site.register(JpnAdminMainPerf, LeafletGeoAdmin) +admin.site.register(UserTracks, LeafletGeoAdmin); #admin.site.register(JpnAdminPerf, LeafletGeoAdmin) admin.site.register(GifuAreas, LeafletGeoAdmin) admin.site.register(JpnSubPerf, LeafletGeoAdmin) diff --git a/rog/migrations/0010_useractions_checkinimage.py b/rog/migrations/0010_useractions_checkinimage.py new file mode 100644 index 0000000..04c785b --- /dev/null +++ b/rog/migrations/0010_useractions_checkinimage.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.9 on 2022-06-10 06:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0009_remove_roguser_email'), + ] + + operations = [ + migrations.AddField( + model_name='useractions', + name='checkinimage', + field=models.FileField(blank=True, null=True, upload_to='%y%m%d'), + ), + ] diff --git a/rog/migrations/0011_usertracks.py b/rog/migrations/0011_usertracks.py new file mode 100644 index 0000000..bfcffe3 --- /dev/null +++ b/rog/migrations/0011_usertracks.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.9 on 2022-06-12 18:11 + +from django.conf import settings +import django.contrib.gis.db.models.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0010_useractions_checkinimage'), + ] + + operations = [ + migrations.CreateModel( + name='UserTracks', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('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 62c745b..d4e02b4 100644 --- a/rog/models.py +++ b/rog/models.py @@ -278,6 +278,12 @@ class Location_polygon(models.Model): return str(self.location_name) +class UserTracks(models.Model): + user=models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING) + geom=models.MultiPointField(srid=4326) + created_at=models.DateTimeField(auto_now_add=True) + + EVENT_STATUS = ( ("PREPARING", _("Preparing")), @@ -385,7 +391,7 @@ class Useractions(models.Model): wanttogo=models.BooleanField(default=False) like=models.BooleanField(default=False) checkin=models.BooleanField(default=False) - # checkinimage=models.FileField(upload_to='%y%m%d', blank=True, null=True) + checkinimage=models.FileField(upload_to='%y%m%d', blank=True, null=True) order =models.IntegerField(default=0) created_at=models.DateTimeField(auto_now_add=True) last_updated_at=models.DateTimeField(auto_now=True) diff --git a/rog/serializers.py b/rog/serializers.py index 62bd426..5317f80 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 +from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks from drf_extra_fields.fields import Base64ImageField #from django.contrib.auth.models import User @@ -117,11 +117,23 @@ class UserDestinationSerializer(serializers.ModelSerializer): fields = ('id', 'user', 'location', 'wanttogo', 'like', 'checkin') class LocationEventNameSerializer(serializers.ModelSerializer): - class Meta: model = Location fields = ('id', 'event_name',) + +class UserTracksSerializer(GeoFeatureModelSerializer): + user_id = serializers.IntegerField() + class Meta: + model=UserTracks + geo_field = 'geom' + fields = ["user_id",] + + def create(self, validated_data): + user_id = validated_data.pop("user_id", None) + user = CustomUser.objects.get(id=user_id) + return UserTracks.objects.create(user=user, **validated_data) + class TestSerialiser(serializers.ModelSerializer): diff --git a/rog/urls.py b/rog/urls.py index 7ec2bfa..d9e12ca 100644 --- a/rog/urls.py +++ b/rog/urls.py @@ -1,6 +1,6 @@ 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 +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 from django.urls import path, include from knox import views as knox_views @@ -14,6 +14,7 @@ router.register(prefix='location_line', viewset=Location_lineViewSet, basename=" router.register(prefix='location_polygon', viewset=Location_polygonViewSet, basename='location_polygon') 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') urlpatterns = router.urls diff --git a/rog/views.py b/rog/views.py index 27ba712..b6bdcb6 100644 --- a/rog/views.py +++ b/rog/views.py @@ -1,7 +1,7 @@ from django.core.serializers import serialize -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser +from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks 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 +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 from knox.models import AuthToken from rest_framework import viewsets, permissions, generics @@ -45,6 +45,11 @@ class Jpn_PerfViewSet(viewsets.ModelViewSet): queryset=JpnAdminPerf.objects.all() serializer_class=JPN_perfSerializer +class UserTracksViewSet(viewsets.ModelViewSet): + queryset = UserTracks.objects.all() + serializer_class = UserTracksSerializer + + def LocationsInPerf(request): perfecture = request.GET.get('perf')