first commit
This commit is contained in:
		
						commit
						b71ea45681
					
				
					 898 changed files with 138202 additions and 0 deletions
				
			
		
							
								
								
									
										0
									
								
								locations/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								locations/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										35
									
								
								locations/admin.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								locations/admin.py
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										7
									
								
								locations/apps.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
from django.apps import AppConfig
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LocationsConfig(AppConfig):
 | 
			
		||||
    default_auto_field = 'django.db.models.BigAutoField'
 | 
			
		||||
    name = 'locations'
 | 
			
		||||
    verbose_name = "مکانها"
 | 
			
		||||
							
								
								
									
										90
									
								
								locations/migrations/0001_initial.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								locations/migrations/0001_initial.py
									
										
									
									
									
										Normal 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='شهرستان'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
							
								
								
									
										0
									
								
								locations/migrations/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								locations/migrations/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										41
									
								
								locations/models.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								locations/models.py
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										3
									
								
								locations/tests.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
from django.test import TestCase
 | 
			
		||||
 | 
			
		||||
# Create your tests here.
 | 
			
		||||
							
								
								
									
										3
									
								
								locations/views.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								locations/views.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
from django.shortcuts import render
 | 
			
		||||
 | 
			
		||||
# Create your views here.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue