Добавлен базовый фронтенд

This commit is contained in:
2022-09-10 07:29:29 +03:00
parent 0b1c16b24f
commit c58061a63b
23 changed files with 20276 additions and 25 deletions

View File

@@ -1,13 +1,12 @@
from django.contrib.gis.db import models
from django.forms.widgets import Textarea
from django.contrib import admin
from facilities.models import Facility
from facilities.forms import FacilityLocationForm
class FacilityAdmin(admin.ModelAdmin):
formfield_overrides = {models.PointField: {"widget": Textarea}}
form = FacilityLocationForm
admin.site.register(Facility, FacilityAdmin)

View File

@@ -5,4 +5,4 @@ from django.utils.translation import gettext_lazy as _
class FacilitiesConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "facilities"
verbose_name = _("Facilities")
verbose_name = _("facilities")

View File

@@ -0,0 +1,40 @@
from django import forms
from django.contrib.gis.geos import Point
from facilities.models import Facility
class FacilityLocationForm(forms.ModelForm):
latitude = forms.FloatField(
min_value=-90,
max_value=90,
required=True,
)
longitude = forms.FloatField(
min_value=-180,
max_value=180,
required=True,
)
class Meta(object):
model = Facility
exclude = []
widgets = {"location": forms.HiddenInput()}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
coordinates = self.initial.get("location", None)
if coordinates:
(
self.initial["longitude"],
self.initial["latitude"],
) = coordinates.tuple
def clean(self):
data = super().clean()
longitude = data.get("longitude")
latitude = data.get("latitude")
if latitude and longitude:
data["location"] = Point(longitude, latitude)
return data

View File

@@ -4,12 +4,11 @@ from django.db import models
class Facility(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
name = models.CharField(max_length=200, verbose_name=_("name"))
address = models.CharField(max_length=100, verbose_name=_("address"))
city = models.CharField(max_length=50, verbose_name=_("city"))
location = gis_models.PointField(
null=True,
blank=True,
null=True, blank=True, verbose_name=_("location")
)
class Meta:

View File

@@ -1,10 +1,10 @@
from rest_framework_gis import serializers
from rest_framework.serializers import ModelSerializer
from facilities.models import Facility
class FacilitySerializer(serializers.GeoFeatureModelSerializer):
class FacilitySerializer(ModelSerializer):
class Meta:
model = Facility
fields = ("id", "name", "address", "city")
geo_field = "location"
fields = ("id", "name", "address", "city")

View File

@@ -6,6 +6,6 @@ app_name = "facilities"
router = routers.DefaultRouter()
router.register("facilities", FacilityViewSet, "facilities")
router.register("", FacilityViewSet, "facilities")
urlpatterns = router.urls