first commit

This commit is contained in:
aminhashemi92 2025-08-10 07:44:23 +03:30
commit b71ea45681
898 changed files with 138202 additions and 0 deletions

0
locations/__init__.py Normal file
View file

35
locations/admin.py Normal file
View file

@ -0,0 +1,35 @@
from django.contrib import admin
from .models import City, County, Affairs, Broker
# Register your models here.
@admin.register(City)
class CityAdmin(admin.ModelAdmin):
list_display = ['name', 'slug']
search_fields = ['name']
readonly_fields = ['deleted_at']
prepopulated_fields = {'slug': ('name',)}
@admin.register(County)
class CountyAdmin(admin.ModelAdmin):
list_display = ['name', 'city', 'slug']
list_filter = ['city']
search_fields = ['name', 'city__name']
readonly_fields = ['deleted_at']
prepopulated_fields = {'slug': ('name',)}
@admin.register(Affairs)
class AffairsAdmin(admin.ModelAdmin):
list_display = ['name', 'county', 'slug']
list_filter = ['county__city', 'county']
search_fields = ['name', 'county__name', 'county__city__name']
readonly_fields = ['deleted_at']
prepopulated_fields = {'slug': ('name',)}
@admin.register(Broker)
class BrokerAdmin(admin.ModelAdmin):
list_display = ['name', 'affairs', 'slug']
list_filter = ['affairs__county__city', 'affairs__county', 'affairs']
search_fields = ['name', 'affairs__name', 'affairs__county__name']
readonly_fields = ['deleted_at']
prepopulated_fields = {'slug': ('name',)}

7
locations/apps.py Normal file
View file

@ -0,0 +1,7 @@
from django.apps import AppConfig
class LocationsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'locations'
verbose_name = "مکان‌ها"

View file

@ -0,0 +1,90 @@
# Generated by Django 5.2.4 on 2025-08-07 09:08
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Affairs',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ایجاد')),
('updated', models.DateTimeField(auto_now=True, verbose_name='تاریخ بروزرسانی')),
('is_active', models.BooleanField(default=True, verbose_name='فعال')),
('is_deleted', models.BooleanField(default=False, verbose_name='حذف شده')),
('deleted_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ حذف')),
('slug', models.SlugField(max_length=100, unique=True, verbose_name='اسلاگ')),
('name', models.CharField(max_length=100, verbose_name='نام')),
],
options={
'verbose_name': 'امور',
'verbose_name_plural': 'امورها',
},
),
migrations.CreateModel(
name='City',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ایجاد')),
('updated', models.DateTimeField(auto_now=True, verbose_name='تاریخ بروزرسانی')),
('is_active', models.BooleanField(default=True, verbose_name='فعال')),
('is_deleted', models.BooleanField(default=False, verbose_name='حذف شده')),
('deleted_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ حذف')),
('slug', models.SlugField(max_length=100, unique=True, verbose_name='اسلاگ')),
('name', models.CharField(max_length=100, verbose_name='نام')),
],
options={
'verbose_name': 'شهر',
'verbose_name_plural': 'شهرها',
},
),
migrations.CreateModel(
name='Broker',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ایجاد')),
('updated', models.DateTimeField(auto_now=True, verbose_name='تاریخ بروزرسانی')),
('is_active', models.BooleanField(default=True, verbose_name='فعال')),
('is_deleted', models.BooleanField(default=False, verbose_name='حذف شده')),
('deleted_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ حذف')),
('slug', models.SlugField(max_length=100, unique=True, verbose_name='اسلاگ')),
('name', models.CharField(max_length=100, verbose_name='نام')),
('affairs', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='locations.affairs', verbose_name='امور')),
],
options={
'verbose_name': 'کارگزار',
'verbose_name_plural': 'کارگزارها',
},
),
migrations.CreateModel(
name='County',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ایجاد')),
('updated', models.DateTimeField(auto_now=True, verbose_name='تاریخ بروزرسانی')),
('is_active', models.BooleanField(default=True, verbose_name='فعال')),
('is_deleted', models.BooleanField(default=False, verbose_name='حذف شده')),
('deleted_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ حذف')),
('slug', models.SlugField(max_length=100, unique=True, verbose_name='اسلاگ')),
('name', models.CharField(max_length=100, verbose_name='نام')),
('city', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='locations.city', verbose_name='شهرستان')),
],
options={
'verbose_name': 'شهرستان',
'verbose_name_plural': 'شهرستان\u200cها',
},
),
migrations.AddField(
model_name='affairs',
name='county',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='locations.county', verbose_name='شهرستان'),
),
]

View file

41
locations/models.py Normal file
View file

@ -0,0 +1,41 @@
from django.db import models
from common.models import NameSlugModel
# Create your models here.
class City(NameSlugModel):
class Meta:
verbose_name = "شهر"
verbose_name_plural = "شهرها"
def __str__(self):
return self.name
class County(NameSlugModel):
city = models.ForeignKey(City, on_delete=models.CASCADE, verbose_name="شهرستان")
class Meta:
verbose_name = "شهرستان"
verbose_name_plural = "شهرستان‌ها"
def __str__(self):
return self.name
class Affairs(NameSlugModel):
county = models.ForeignKey(County, on_delete=models.CASCADE, verbose_name="شهرستان")
class Meta:
verbose_name = "امور"
verbose_name_plural = "امورها"
def __str__(self):
return self.name
class Broker(NameSlugModel):
affairs = models.ForeignKey(Affairs, on_delete=models.CASCADE, verbose_name="امور")
class Meta:
verbose_name = "کارگزار"
verbose_name_plural = "کارگزارها"
def __str__(self):
return self.name

3
locations/tests.py Normal file
View file

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

3
locations/views.py Normal file
View file

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.