first commit

This commit is contained in:
2022-02-08 16:44:09 +05:30
commit d366be57a1
25 changed files with 909 additions and 0 deletions

0
rog/__init__.py Normal file
View File

23
rog/admin.py Normal file
View File

@ -0,0 +1,23 @@
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 RogEvent, Shop, EventRoute, ShopRoute
class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['title', 'venue', 'at_date',]
class ShopAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['name',]
class EventRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['name',]
class ShopRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['name',]
admin.site.register(RogEvent, RogAdmin)
admin.site.register(Shop, ShopAdmin)
admin.site.register(EventRoute, EventRouteAdmin)
admin.site.register(ShopRoute, ShopRouteAdmin)

6
rog/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class RogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'rog'

View File

@ -0,0 +1,33 @@
# Generated by Django 3.2.9 on 2022-02-04 06:00
import django.contrib.gis.db.models.fields
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='RogEvent',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='Title')),
('venue', models.CharField(max_length=255, verbose_name='Venue')),
('at_date', models.DateTimeField(auto_now_add=True, verbose_name='At Date')),
('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)),
],
),
migrations.CreateModel(
name='Shops',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Shop name')),
('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)),
],
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 3.2.9 on 2022-02-04 11:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('rog', '0001_initial'),
]
operations = [
migrations.RenameModel(
old_name='Shops',
new_name='Shop',
),
]

View File

@ -0,0 +1,24 @@
# Generated by Django 3.2.9 on 2022-02-04 17:17
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0002_rename_shops_shop'),
]
operations = [
migrations.CreateModel(
name='EventRoute',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Name')),
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326)),
('event', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='rog.rogevent')),
],
),
]

View File

@ -0,0 +1,24 @@
# Generated by Django 3.2.9 on 2022-02-04 17:23
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0003_eventroute'),
]
operations = [
migrations.CreateModel(
name='ShopRoute',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Name')),
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326)),
('shop', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='rog.shop')),
],
),
]

View File

37
rog/models.py Normal file
View File

@ -0,0 +1,37 @@
from django.contrib.gis.db import models
from django.utils.translation import gettext_lazy as _
class RogEvent(models.Model):
title=models.CharField(_('Title'), max_length=255)
venue=models.CharField(_('Venue'), max_length=255)
at_date=models.DateTimeField(_('At Date'), auto_now_add=True)
geom=models.MultiPointField(srid=4326)
def __str__(self):
return self.title
class EventRoute(models.Model):
name = models.CharField(_("Name"), max_length=255)
event = models.OneToOneField(RogEvent, on_delete=models.CASCADE)
geom = models.MultiLineStringField(srid=4326)
def __str__(self):
return self.name
class Shop(models.Model):
name=models.CharField(_('Shop name'), max_length=255)
geom=models.MultiPointField(srid=4326)
def __str__(self):
return self.name
class ShopRoute(models.Model):
name = models.CharField(_("Name"), max_length=255)
shop = models.OneToOneField(Shop, on_delete=models.CASCADE)
geom = models.MultiLineStringField(srid=4326)
def __str__(self):
return self.name

32
rog/serializers.py Normal file
View File

@ -0,0 +1,32 @@
from rest_framework_gis.serializers import GeoFeatureModelSerializer
from sqlalchemy.sql.functions import mode
from .models import RogEvent, Shop, EventRoute, ShopRoute
from drf_extra_fields.fields import Base64ImageField
class RogEventSerializer(GeoFeatureModelSerializer):
class Meta:
model=RogEvent
geo_field="geom"
fields="__all__"
class ShopSerializer(GeoFeatureModelSerializer):
class Meta:
model=Shop
geo_field="geom"
fields="__all__"
class EventRouteSerializer(GeoFeatureModelSerializer):
class Meta:
model=EventRoute
geo_field="geom"
fields="__all__"
class ShopRouteSerializer(GeoFeatureModelSerializer):
class Meta:
model=ShopRoute
geo_field="geom"
fields="__all__"

3
rog/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

14
rog/urls.py Normal file
View File

@ -0,0 +1,14 @@
from rest_framework import urlpatterns
from rest_framework.routers import DefaultRouter
from .views import RogEventViewSet, EventRouteViewSet, ShopViewSet, ShopRouteViewSet
from django.urls import path, include
router = DefaultRouter()
router.register(prefix='v1/rog', viewset=RogEventViewSet, basename='rog')
router.register(prefix='v1/eventroute', viewset=EventRouteViewSet, basename='eventroute')
router.register(prefix='v1/shop', viewset=ShopViewSet, basename='shop')
router.register(prefix='v1/shoproute', viewset=ShopRouteViewSet, basename='shoproute')
urlpatterns = router.urls

31
rog/views.py Normal file
View File

@ -0,0 +1,31 @@
from django.core.serializers import serialize
from .models import RogEvent, ShopRoute, EventRoute, Shop
from rest_framework import viewsets
from .serializers import RogEventSerializer, EventRouteSerializer, ShopSerializer, ShopRouteSerializer
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.parsers import JSONParser, MultiPartParser
class RogEventViewSet(viewsets.ModelViewSet):
queryset=RogEvent.objects.all()
serializer_class=RogEventSerializer
class EventRouteViewSet(viewsets.ModelViewSet):
queryset=EventRoute.objects.all()
serializer_class=EventRouteSerializer
class ShopViewSet(viewsets.ModelViewSet):
queryset=Shop.objects.all()
serializer_class=ShopSerializer
class ShopRouteViewSet(viewsets.ModelViewSet):
queryset=ShopRoute.objects.all()
serializer_class=ShopRouteSerializer