first commit
This commit is contained in:
0
rog/__init__.py
Normal file
0
rog/__init__.py
Normal file
23
rog/admin.py
Normal file
23
rog/admin.py
Normal 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
6
rog/apps.py
Normal file
@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class RogConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'rog'
|
||||
33
rog/migrations/0001_initial.py
Normal file
33
rog/migrations/0001_initial.py
Normal 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)),
|
||||
],
|
||||
),
|
||||
]
|
||||
17
rog/migrations/0002_rename_shops_shop.py
Normal file
17
rog/migrations/0002_rename_shops_shop.py
Normal 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',
|
||||
),
|
||||
]
|
||||
24
rog/migrations/0003_eventroute.py
Normal file
24
rog/migrations/0003_eventroute.py
Normal 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')),
|
||||
],
|
||||
),
|
||||
]
|
||||
24
rog/migrations/0004_shoproute.py
Normal file
24
rog/migrations/0004_shoproute.py
Normal 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')),
|
||||
],
|
||||
),
|
||||
]
|
||||
0
rog/migrations/__init__.py
Normal file
0
rog/migrations/__init__.py
Normal file
37
rog/models.py
Normal file
37
rog/models.py
Normal 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
32
rog/serializers.py
Normal 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
3
rog/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
14
rog/urls.py
Normal file
14
rog/urls.py
Normal 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
31
rog/views.py
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user