From f399cb2e57ab73e33bd91e06d7c0b58e1d3fc808 Mon Sep 17 00:00:00 2001 From: Mohamed Nouffer Date: Mon, 5 Sep 2022 19:10:39 +0530 Subject: [PATCH] update for user group --- rog/admin.py | 3 +- rog/migrations/0029_auto_20220831_1317.py | 24 +++++++ rog/migrations/0030_auto_20220831_1440.py | 21 ++++++ rog/migrations/0031_auto_20220831_2244.py | 28 ++++++++ rog/models.py | 7 +- rog/serializers.py | 2 +- rog/views.py | 80 ++++++++++++++++++----- 7 files changed, 147 insertions(+), 18 deletions(-) create mode 100644 rog/migrations/0029_auto_20220831_1317.py create mode 100644 rog/migrations/0030_auto_20220831_1440.py create mode 100644 rog/migrations/0031_auto_20220831_2244.py diff --git a/rog/admin.py b/rog/admin.py index cf419fa..958b4f1 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, UserTracks, ShapeFileLocations, templocation, UserUpload, UserUploadUser +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 django.contrib.auth.admin import UserAdmin class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): @@ -162,6 +162,7 @@ admin.site.register(GifuAreas, LeafletGeoAdmin) admin.site.register(JpnSubPerf, LeafletGeoAdmin) admin.site.register(ShapeLayers, admin.ModelAdmin) admin.site.register(UserUpload, admin.ModelAdmin) +admin.site.register(EventUser, admin.ModelAdmin) #admin.site.register(UserUploadUser, admin.ModelAdmin) #admin.site.register(ShapeFileLocations, admin.ModelAdmin) diff --git a/rog/migrations/0029_auto_20220831_1317.py b/rog/migrations/0029_auto_20220831_1317.py new file mode 100644 index 0000000..73172d8 --- /dev/null +++ b/rog/migrations/0029_auto_20220831_1317.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.9 on 2022-08-31 04:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0028_alter_customuser_group'), + ] + + operations = [ + migrations.AddField( + model_name='customuser', + name='area', + field=models.CharField(default='city', max_length=255), + preserve_default=False, + ), + migrations.AddField( + model_name='customuser', + name='cities', + field=models.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/rog/migrations/0030_auto_20220831_1440.py b/rog/migrations/0030_auto_20220831_1440.py new file mode 100644 index 0000000..1a0ce94 --- /dev/null +++ b/rog/migrations/0030_auto_20220831_1440.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.9 on 2022-08-31 05:40 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0029_auto_20220831_1317'), + ] + + operations = [ + migrations.RemoveField( + model_name='customuser', + name='area', + ), + migrations.RemoveField( + model_name='customuser', + name='cities', + ), + ] diff --git a/rog/migrations/0031_auto_20220831_2244.py b/rog/migrations/0031_auto_20220831_2244.py new file mode 100644 index 0000000..703eec4 --- /dev/null +++ b/rog/migrations/0031_auto_20220831_2244.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.9 on 2022-08-31 13:44 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0030_auto_20220831_1440'), + ] + + operations = [ + migrations.CreateModel( + name='EventUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event', to='rog.event')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='event', + name='user', + field=models.ManyToManyField(related_name='even', through='rog.EventUser', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/rog/models.py b/rog/models.py index 3cf51a4..1a116b3 100644 --- a/rog/models.py +++ b/rog/models.py @@ -413,8 +413,8 @@ EVENT_STATUS = ( ) - class Event(models.Model): + user=models.ManyToManyField(CustomUser, through='EventUser', related_name='even') tagname=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) status=models.CharField(max_length=256, choices=EVENT_STATUS) price=models.IntegerField(_('Paid Amount'), default=0) @@ -428,6 +428,11 @@ class Event(models.Model): last_updated_at=models.DateTimeField(auto_now=True) +class EventUser(models.Model): + user=models.ForeignKey(CustomUser,on_delete=models.CASCADE, related_name='user') + event=models.ForeignKey(Event, on_delete=models.CASCADE, related_name='event') + + ROG_STATUS = ( ("REGISTERED", _("Registered")), ("ACCEPTED", _("accepted")), diff --git a/rog/serializers.py b/rog/serializers.py index 31db21f..7129470 100644 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -74,7 +74,7 @@ class CreateUserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer): class Meta: model = CustomUser - fields = ('id','email',) + fields = ('id','email', 'group') class RogUserSerializer(serializers.ModelSerializer): diff --git a/rog/views.py b/rog/views.py index 586d27d..59868df 100644 --- a/rog/views.py +++ b/rog/views.py @@ -55,18 +55,31 @@ def LocationsInPerf(request): perfecture = request.GET.get('perf') is_rog = request.GET.get('rog') cat = request.GET.get('cat') + grp = request.GET.get('grp') perf_geom = JpnAdminMainPerf.objects.get(id=perfecture) if(cat): if is_rog: - locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0) else: - locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0) else: if is_rog: - locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0) else: - locs = Location.objects.filter(geom__within=perf_geom.geom, cp=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp=0) serializer = LocationSerializer(locs, many=True) return JsonResponse(serializer.data, safe=False) @@ -75,16 +88,26 @@ def LocationsInSubPerf(request): subperfecture = request.GET.get('subperf') is_rog = request.GET.get('rog') cat = request.GET.get('cat') + grp = request.GET.get('grp') perf_geom = JpnSubPerf.objects.get(id=subperfecture) if(cat): if is_rog: - locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp__gt=0) else: - locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, cp=0) else: if is_rog: - locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=perf_geom.geom, cp__gt=0) else: locs = Location.objects.filter(geom__within=perf_geom.geom, cp=0) serializer = LocationSerializer(locs, many=True) @@ -101,6 +124,7 @@ def LocationInBound(request): lat4 = float(request.GET.get('la4')) lon4 = float(request.GET.get('ln4')) cat = request.GET.get('cat') + grp = request.GET.get('grp') is_rog = request.GET.get('rog') @@ -108,14 +132,26 @@ def LocationInBound(request): pl = geos.Polygon(((lon1, lat1), (lon2, lat2), (lon3, lat3), (lon4, lat4), (lon1, lat1)), srid=4326) if(cat): if is_rog: - locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp__gt=0) else: - locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp=0) + if grp: + locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp=0, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, cp=0) else: if is_rog: - locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp__gt=0) + if grp: + locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp__gt=0) else: - locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp=0) + if grp: + locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, cp=0) if len(locs) > 50: return JsonResponse({"too_many_points": True}, safe=False, status=500) else: @@ -346,16 +382,30 @@ def CustomAreaLocations(request): cat = request.GET.get('cat') name = request.GET.get('name') is_rog = request.GET.get('rog') + grp = request.GET.get('grp') + if(cat != None): if is_rog: - locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp__gt=0) + if grp: + locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp__gt=0) else: - locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp=0) + if grp: + locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, cp=0) else: if is_rog: - locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp__gt=0) + if grp: + locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp__gt=0, group__contains=grp) + else: + locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp__gt=0) else: - locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp=0) + if grp: + locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp=0, group__contains=grp) + else: + locs = Location.objects.filter(event_name__isnull=False, event_name=name, cp=0) serializer = LocationSerializer(locs, many=True) return JsonResponse(serializer.data, safe=False)