add project location
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from .region import *
|
||||
23
core/apps/shared/admin/region.py
Normal file
23
core/apps/shared/admin/region.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from core.apps.shared.models import Region, District
|
||||
|
||||
|
||||
class DistrictInline(admin.TabularInline):
|
||||
model = District
|
||||
extra = 0
|
||||
show_change_link = True
|
||||
show_full_result_count = True
|
||||
|
||||
|
||||
@admin.register(Region)
|
||||
class ReginAdmin(admin.ModelAdmin):
|
||||
list_display = ['name']
|
||||
search_fields = ['name']
|
||||
inlines = [DistrictInline]
|
||||
|
||||
|
||||
@admin.register(District)
|
||||
class DistrictAdmin(admin.ModelAdmin):
|
||||
list_display = ['name']
|
||||
search_fields = ['name']
|
||||
@@ -4,3 +4,7 @@ from django.apps import AppConfig
|
||||
class SharedConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'core.apps.shared'
|
||||
|
||||
def ready(self):
|
||||
from . import admin
|
||||
|
||||
43
core/apps/shared/migrations/0001_initial.py
Normal file
43
core/apps/shared/migrations/0001_initial.py
Normal file
@@ -0,0 +1,43 @@
|
||||
# Generated by Django 5.2.4 on 2025-08-07 11:39
|
||||
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Region',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Mintaqa',
|
||||
'verbose_name_plural': 'Mintaqalar',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='District',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('region', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='districts', to='shared.region')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Tuman',
|
||||
'verbose_name_plural': 'Tumanlar',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -1 +1,2 @@
|
||||
from .base import BaseModel
|
||||
from .base import BaseModel
|
||||
from .region import *
|
||||
27
core/apps/shared/models/region.py
Normal file
27
core/apps/shared/models/region.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from core.apps.shared.models import BaseModel
|
||||
|
||||
|
||||
class Region(BaseModel):
|
||||
name = models.CharField(max_length=200)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Mintaqa")
|
||||
verbose_name_plural = _("Mintaqalar")
|
||||
|
||||
|
||||
class District(BaseModel):
|
||||
name = models.CharField(max_length=200)
|
||||
region = models.ForeignKey(Region, on_delete=models.CASCADE, related_name='districts')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Tuman")
|
||||
verbose_name_plural = _("Tumanlar")
|
||||
19
core/apps/shared/serializers/region.py
Normal file
19
core/apps/shared/serializers/region.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.shared.models import Region, District
|
||||
|
||||
|
||||
class DistrictListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = District
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class RegionListSerializer(serializers.ModelSerializer):
|
||||
districts = DistrictListSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Region
|
||||
fields = [
|
||||
'id', 'name', 'districts'
|
||||
]
|
||||
@@ -1,5 +1,7 @@
|
||||
from django.urls import path, include
|
||||
|
||||
from core.apps.shared.views import region as region_views
|
||||
|
||||
urlpatterns = [
|
||||
path('region/list/', region_views.RegionListApiView.as_view()),
|
||||
]
|
||||
13
core/apps/shared/views/region.py
Normal file
13
core/apps/shared/views/region.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from rest_framework import generics
|
||||
|
||||
from core.apps.shared.serializers.region import RegionListSerializer
|
||||
from core.apps.shared.models import Region
|
||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||
|
||||
|
||||
|
||||
class RegionListApiView(generics.ListAPIView):
|
||||
permission_classes = [HasRolePermission]
|
||||
queryset = Region.objects.prefetch_related('districts')
|
||||
serializer_class = RegionListSerializer
|
||||
required_permissions = ['project', 'project_folder']
|
||||
Reference in New Issue
Block a user