first commit
This commit is contained in:
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
BIN
app/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
app/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
app/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
app/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/__init__.cpython-39.pyc
Normal file
BIN
app/__pycache__/__init__.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/admin.cpython-310.pyc
Normal file
BIN
app/__pycache__/admin.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/admin.cpython-311.pyc
Normal file
BIN
app/__pycache__/admin.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/admin.cpython-312.pyc
Normal file
BIN
app/__pycache__/admin.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/admin.cpython-39.pyc
Normal file
BIN
app/__pycache__/admin.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/apps.cpython-310.pyc
Normal file
BIN
app/__pycache__/apps.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/apps.cpython-311.pyc
Normal file
BIN
app/__pycache__/apps.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/apps.cpython-312.pyc
Normal file
BIN
app/__pycache__/apps.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/apps.cpython-39.pyc
Normal file
BIN
app/__pycache__/apps.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/cityandprovince.cpython-311.pyc
Normal file
BIN
app/__pycache__/cityandprovince.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/cityandprovince.cpython-312.pyc
Normal file
BIN
app/__pycache__/cityandprovince.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/cityandprovince.cpython-39.pyc
Normal file
BIN
app/__pycache__/cityandprovince.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/excel_processing.cpython-311.pyc
Normal file
BIN
app/__pycache__/excel_processing.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/excel_processing.cpython-312.pyc
Normal file
BIN
app/__pycache__/excel_processing.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/excel_processing.cpython-39.pyc
Normal file
BIN
app/__pycache__/excel_processing.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/filtersets.cpython-310.pyc
Normal file
BIN
app/__pycache__/filtersets.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/filtersets.cpython-311.pyc
Normal file
BIN
app/__pycache__/filtersets.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/filtersets.cpython-312.pyc
Normal file
BIN
app/__pycache__/filtersets.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/filtersets.cpython-39.pyc
Normal file
BIN
app/__pycache__/filtersets.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper.cpython-311.pyc
Normal file
BIN
app/__pycache__/helper.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper.cpython-312.pyc
Normal file
BIN
app/__pycache__/helper.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper.cpython-39.pyc
Normal file
BIN
app/__pycache__/helper.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper_excel.cpython-311.pyc
Normal file
BIN
app/__pycache__/helper_excel.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper_excel.cpython-312.pyc
Normal file
BIN
app/__pycache__/helper_excel.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/helper_excel.cpython-39.pyc
Normal file
BIN
app/__pycache__/helper_excel.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/models.cpython-310.pyc
Normal file
BIN
app/__pycache__/models.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/models.cpython-311.pyc
Normal file
BIN
app/__pycache__/models.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/models.cpython-312.pyc
Normal file
BIN
app/__pycache__/models.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/models.cpython-39.pyc
Normal file
BIN
app/__pycache__/models.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/scripts.cpython-310.pyc
Normal file
BIN
app/__pycache__/scripts.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/scripts.cpython-311.pyc
Normal file
BIN
app/__pycache__/scripts.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/scripts.cpython-312.pyc
Normal file
BIN
app/__pycache__/scripts.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/scripts.cpython-39.pyc
Normal file
BIN
app/__pycache__/scripts.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/serializers.cpython-310.pyc
Normal file
BIN
app/__pycache__/serializers.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/serializers.cpython-311.pyc
Normal file
BIN
app/__pycache__/serializers.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/serializers.cpython-312.pyc
Normal file
BIN
app/__pycache__/serializers.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/serializers.cpython-39.pyc
Normal file
BIN
app/__pycache__/serializers.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/urls.cpython-310.pyc
Normal file
BIN
app/__pycache__/urls.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/urls.cpython-311.pyc
Normal file
BIN
app/__pycache__/urls.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/urls.cpython-312.pyc
Normal file
BIN
app/__pycache__/urls.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/urls.cpython-39.pyc
Normal file
BIN
app/__pycache__/urls.cpython-39.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/views.cpython-310.pyc
Normal file
BIN
app/__pycache__/views.cpython-310.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/views.cpython-311.pyc
Normal file
BIN
app/__pycache__/views.cpython-311.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/views.cpython-312.pyc
Normal file
BIN
app/__pycache__/views.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/views.cpython-39.pyc
Normal file
BIN
app/__pycache__/views.cpython-39.pyc
Normal file
Binary file not shown.
3
app/admin.py
Normal file
3
app/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
6
app/apps.py
Normal file
6
app/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class AppConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'app'
|
||||
663
app/cityandprovince.py
Normal file
663
app/cityandprovince.py
Normal file
@@ -0,0 +1,663 @@
|
||||
search_city_list = ["آغاجری"
|
||||
"سلسله", "معمولان", "کوهدشت", "آمل", "بابل", "بابلسر", "بهشهر",
|
||||
"تنکابن", "جویبار", "چالوس", "رامسر", "ساری", "سواد کوه",
|
||||
"سوادکوه شمالی", "سیمرغ", "عباس آباد", "فریدونکنار", "قائم شهر",
|
||||
"گلوگاه", "محمود آباد", "میاندورود", "نکا", "نور", "نوشهر",
|
||||
"کلاردشت", "آشتیان", "اراک", "تفرش", "خمین", "خنداب", "دلیجان",
|
||||
"زرندیه", "ساوه", "شازند", "فراهان", "کمیجان", "محلات", "ابوموسی",
|
||||
"بستک", "بشاگرد", "بندرعباس", "بندرلنگه", "پارسیان", "جاسک",
|
||||
"حاجی آباد", "خمیر", "رودان", "سیریک", "قشم", "میناب", "اسدآباد",
|
||||
"بهار", "تویسرکان", "درگزین", "رزن", "فامنین", "کبودرآهنگ", "ملایر",
|
||||
"نهاوند", "همدان", "ابرکوه", "اردکان", "بافق", "بهاباد", "تفت",
|
||||
"خاتم", "صدوق", "مروست", "زارچ", "مهریز", "میبد", "یزد",
|
||||
"ثلاث باباجانی", "جوانرود", "دالاهو", "روانسر", "سر پل ذهاب",
|
||||
"سنقر", "صحنه", "قصر شیرین", "گیلانغرب", "ماهیدشت", "هرسین",
|
||||
"کرمانشاه", "کنگاور", "باشت", "بهمئی", "بویراحمد", "چرام", "دنا",
|
||||
"گچساران", "لنده", "مارگون", "کهگیلویه", "آزاد شهر", "آق قلا",
|
||||
"بندر گز", "ترکمن", "رامیان", "علی آباد", "گالیکش", "گرگان",
|
||||
"گمیشان", "گنبد کاووس", "مراوه تپه", "مینودشت", "کردکوی",
|
||||
"کلاله", "آستارا", "آستانه اشرفیه", "املش", "بندر انزلی",
|
||||
"تالش", "خمام", "رشت", "رضوانشهر", "رودبار", "رودسر", "سیاهکل",
|
||||
"شفت", "صومعه سرا", "طوالش", "فومن", "لاهیجان", "لنگرود", "ماسال",
|
||||
"ازنا", "الیگودرز", "بروجرد", "پلدختر", "چگنی", "خرم آباد",
|
||||
"دلفان", "دورود", "رومشکان", "زاهدان", "زرآباد", "زهک", "سراوان",
|
||||
"سرباز", "سیب سوران", "فنوج", "قصرقند", "گلشن", "لاشار",
|
||||
"مهرستان", "میرجاوه", "نیمروز", "نیک شهر", "هامون", "هیرمند",
|
||||
"کنارک", "آباده", "ارسنجان", "استهبان", "اقلید", "اوز", "بختگان",
|
||||
"بوانات", "بیضا", "پاسارگاد", "جهرم", "جویم", "خرامه", "خرم بید",
|
||||
"خفر", "خنج", "داراب", "رستم", "زرقان", "زرین دشت", "سپیدان",
|
||||
"سرچهان", "سروستان", "شیراز", "فراشبند", "فسا", "فیروز آباد",
|
||||
"قیر و کارزین", "گراش", "لارستان", "لامرد", "مرودشت", "ممسنی",
|
||||
"مهر", "نی ریز", "کازرون", "کوار", "کوه چنار", "آبیک", "آوج",
|
||||
"البرز", "بوئین زهرا", "تاکستان", "قزوین", "جعفریه", "خلجستان",
|
||||
"سلفچگان", "قم", "کهک", "بانه", "بیجار", "دهگلان", "دیواندره"
|
||||
"سرو آباد", "سقز", "سنندج", "قروه", "مریوان",
|
||||
"کامیاران",
|
||||
"ارزوئیه", "انار", "بافت", "بردسیر", "بم", "رابر", "راور",
|
||||
"رفسنجان", "ریگان", "زرند", "سیرجان", "شهربابک", "فهرج",
|
||||
"گنبکی", "نرماشیر", "کرمان", "کوهبنان", "اسلام آباد غرب",
|
||||
"پاوه", "رشتخوار", "زاوه", "زبرخان", "سبزوار", "سرخس",
|
||||
"ششتمد", "صالح آباد", "طرقبه", "فریمان", "فیروزه", "قوچان",
|
||||
"گلبهار", "گناباد", "مشهد", "مه ولات", "نیشابور", "کاشمر",
|
||||
"کلات", "کوهسرخ", "اسفراین", "بام و صفی آباد", "بجنورد",
|
||||
"جاجرم", "راز و جرگلان", "سملقان", "شیروان", "فاروج", "گرمه",
|
||||
"مانه", "آبادان"
|
||||
, "امیدیه", "اندیمشک", "اندیکا", "اهواز", "ایذه", "باغ ملک", "باوی", "بندر ماهشهر",
|
||||
"بهبهان", "حمیدیه", "خرمشهر", "دزپارت", "دزفول", "دشت آزادگان", "رامشیر", "رامهرمز", "شادگان",
|
||||
"شوش", "شوشتر", "صیدون", "گتوند", "لالی", "مسجد سلیمان", "هفتگل", "هندیجان", "هویزه", "کارون",
|
||||
"کرخه", "ابهر", "ایجرود", "خدابنده", "خرمدره", "زنجان", "سلطانیه", "طارم", "ماهنشان", "آرادان",
|
||||
"دامغان", "سرخه", "سمنان", "شاهرود", "گرمسار", "مهدی شهر", "میامی", "ایرانشهر", "بمپور", "تفتان",
|
||||
"چاه بهار", "خاش", "دشتیاری", "دلگان", "راسک", "زابل", "آذرشهر", "اسکو", "اهر", "بستان آباد",
|
||||
"بناب", "تبریز", "جلفا", "چاراویماق", "خدا آفرین", "سراب", "شبستر", "عجب شیر", "مراغه", "مرند",
|
||||
"ملکان", "میانه", "هریس", "هشترود", "هوراند", "ورزقان", "کلیبر", "ارومیه", "اشنویه", "بوکان",
|
||||
"پلدشت", "پیرانشهر", "تکاب", "چاربرج", "چالدران", "چایپاره", "خوی", "سر دشت", "سلماس", "شاهین دژ",
|
||||
"شوط", "ماکو", "مهاباد", "میاندوآب", "نقده", "اردبیل", "اصلاندوز", "انگوت", "بیله سوار",
|
||||
"پارس آباد", "خلخال", "سرعین", "گرمی", "مشگین شهر", "نمین", "نیر", "کوثر", "آران و بیدگل",
|
||||
"اردستان", "اصفهان", "برخوار", "بوئین و میاندشت", "تیران و کرون", "جرقویه", "چادگان", "خمینی شهر",
|
||||
"خوانسار", "خور و بیابانک", "دهاقان", "زرین شهر", "سمیرم", "شاهین شهر", "شهرضا", "فریدن",
|
||||
"فریدونشهر", "فلاورجان", "گلپایگان", "مبارکه", "میمه", "نائین", "نجف آباد", "نطنز", "هرند", "ورزنه",
|
||||
"کاشان", "کوهپایه", "اشتهارد", "چهار باغ", "ساوجبلاغ", "طالقان", "فردیس", "نظر آباد", "کرج",
|
||||
"آبدانان", "ایلام", "ایوان", "بدره", "چرداول", "چوار", "درهشهر", "دهلران", "سیروان", "ملکشاهی",
|
||||
"مهران", "هلیلان", "بوشهر", "تنگستان", "جم", "دشتستان", "دشتی", "دیر", "دیلم", "عسلویه", "گناوه",
|
||||
"کنگان", "اسلامشهر", "بهارستان", "پاکدشت", "پردیس", "پیشوا", "تهران", "دماوند", "رباط کریم", "ری",
|
||||
"شمیرانات", "شهریار", "فیروز کوه", "قدس", "قرچک", "ملارد", "ورامین", "اردل", "بروجن", "بن",
|
||||
"خانمیرزا", "سامان", "شهر کرد", "فارسان", "فرخ شهر", "فلارد", "لردگان", "کوهرنگ", "کیار", "بشرویه",
|
||||
"بیرجند", "خوسف", "درمیان", "زیرکوه", "سرایان", "سربیشه", "طبس", "فردوس", "قائنات", "نهبندان",
|
||||
"باخرز", "بجستان", "بردسکن", "تایباد", "تربت جام", "تربت حیدریه", "جغتای", "جوین", "چناران",
|
||||
"خلیل آباد", "خواف", "خوشاب", "داورزن", "درگز"]
|
||||
search_province_list = [
|
||||
"همدان", "مرکزی", "بوشهر", "آذربایجان شرقی", "آذربایجان غربی", "اردبیل",
|
||||
"اصفهان", "البرز", "ایلام", "تهران", "چهار محال و بختیاری", "خراسان جنوبی",
|
||||
"خراسان رضوی", "خراسان شمالی", "خوزستان", "زنجان", "سمنان", "سیستان و بلوچستان",
|
||||
"فارس", "قزوین", "قم", "کردستان", "کرمان", "کرمانشاه", "کهکیلویه و بویراحمد",
|
||||
"گلستان", "گیلان", "لرستان", "مازندران", "هرمزگان", "یزد"
|
||||
]
|
||||
|
||||
irancity = [
|
||||
{"name": "سلسله", "id": "65885", "province_id": "65546"},
|
||||
{"name": "معمولان", "id": "66903", "province_id": "65546"},
|
||||
{"name": "کوهدشت", "id": "65886", "province_id": "65546"},
|
||||
{"name": "آمل", "id": "65887", "province_id": "65547"},
|
||||
{"name": "بابل", "id": "65888", "province_id": "65547"},
|
||||
{"name": "بابلسر", "id": "65889", "province_id": "65547"},
|
||||
{"name": "بهشهر", "id": "65890", "province_id": "65547"},
|
||||
{"name": "تنکابن", "id": "65891", "province_id": "65547"},
|
||||
{"name": "جویبار", "id": "65892", "province_id": "65547"},
|
||||
{"name": "چالوس", "id": "65893", "province_id": "65547"},
|
||||
{"name": "رامسر", "id": "65894", "province_id": "65547"},
|
||||
{"name": "ساری", "id": "65895", "province_id": "65547"},
|
||||
{"name": "سواد کوه", "id": "65896", "province_id": "65547"},
|
||||
{"name": "سوادکوه شمالی", "id": "66870", "province_id": "65547"},
|
||||
{"name": "سیمرغ", "id": "66871", "province_id": "65547"},
|
||||
{"name": "عباس آباد", "id": "65897", "province_id": "65547"},
|
||||
{"name": "فریدونکنار", "id": "65898", "province_id": "65547"},
|
||||
{"name": "قائم شهر", "id": "65899", "province_id": "65547"},
|
||||
{"name": "گلوگاه", "id": "65900", "province_id": "65547"},
|
||||
{"name": "محمود آباد", "id": "65901", "province_id": "65547"},
|
||||
{"name": "میاندورود", "id": "65902", "province_id": "65547"},
|
||||
{"name": "نکا", "id": "65903", "province_id": "65547"},
|
||||
{"name": "نور", "id": "65904", "province_id": "65547"},
|
||||
{"name": "نوشهر", "id": "65905", "province_id": "65547"},
|
||||
{"name": "کلاردشت", "id": "66869", "province_id": "65547"},
|
||||
{"name": "آشتیان", "id": "65906", "province_id": "65548"},
|
||||
{"name": "اراک", "id": "65907", "province_id": "65548"},
|
||||
{"name": "تفرش", "id": "65908", "province_id": "65548"},
|
||||
{"name": "خمین", "id": "65909", "province_id": "65548"},
|
||||
{"name": "خنداب", "id": "65910", "province_id": "65548"},
|
||||
{"name": "دلیجان", "id": "65911", "province_id": "65548"},
|
||||
{"name": "زرندیه", "id": "65912", "province_id": "65548"},
|
||||
{"name": "ساوه", "id": "65913", "province_id": "65548"},
|
||||
{"name": "شازند", "id": "65914", "province_id": "65548"},
|
||||
{"name": "فراهان", "id": "65915", "province_id": "65548"},
|
||||
{"name": "کمیجان", "id": "65916", "province_id": "65548"},
|
||||
{"name": "محلات", "id": "65917", "province_id": "65548"},
|
||||
{"name": "ابوموسی", "id": "65918", "province_id": "65549"},
|
||||
{"name": "بستک", "id": "65919", "province_id": "65549"},
|
||||
{"name": "بشاگرد", "id": "65920", "province_id": "65549"},
|
||||
{"name": "بندرعباس", "id": "65921", "province_id": "65549"},
|
||||
{"name": "بندرلنگه", "id": "65922", "province_id": "65549"},
|
||||
{"name": "پارسیان", "id": "65923", "province_id": "65549"},
|
||||
{"name": "جاسک", "id": "65924", "province_id": "65549"},
|
||||
{"name": "حاجی آباد", "id": "65925", "province_id": "65549"},
|
||||
{"name": "خمیر", "id": "65926", "province_id": "65549"},
|
||||
{"name": "رودان", "id": "65927", "province_id": "65549"},
|
||||
{"name": "سیریک", "id": "65928", "province_id": "65549"},
|
||||
{"name": "قشم", "id": "65929", "province_id": "65549"},
|
||||
{"name": "میناب", "id": "65930", "province_id": "65549"},
|
||||
{"name": "اسدآباد", "id": "65931", "province_id": "65550"},
|
||||
{"name": "بهار", "id": "65932", "province_id": "65550"},
|
||||
{"name": "تویسرکان", "id": "65933", "province_id": "65550"},
|
||||
{"name": "درگزین", "id": "66884", "province_id": "65550"},
|
||||
{"name": "رزن", "id": "65934", "province_id": "65550"},
|
||||
{"name": "فامنین", "id": "66853", "province_id": "65550"},
|
||||
{"name": "کبودرآهنگ", "id": "65936", "province_id": "65550"},
|
||||
{"name": "ملایر", "id": "65937", "province_id": "65550"},
|
||||
{"name": "نهاوند", "id": "65938", "province_id": "65550"},
|
||||
{"name": "همدان", "id": "65939", "province_id": "65550"},
|
||||
{"name": "ابرکوه", "id": "65940", "province_id": "65551"},
|
||||
{"name": "اردکان", "id": "65941", "province_id": "65551"},
|
||||
{"name": "بافق", "id": "65942", "province_id": "65551"},
|
||||
{"name": "بهاباد", "id": "65943", "province_id": "65551"},
|
||||
{"name": "تفت", "id": "65944", "province_id": "65551"},
|
||||
{"name": "خاتم", "id": "65945", "province_id": "65551"},
|
||||
{"name": "صدوق", "id": "65946", "province_id": "65551"},
|
||||
{"name": "مروست", "id": "66812", "province_id": "65551"},
|
||||
{"name": "زارچ", "id": "66899", "province_id": "65551"},
|
||||
{"name": "مهریز", "id": "65948", "province_id": "65551"},
|
||||
{"name": "میبد", "id": "65949", "province_id": "65551"},
|
||||
{"name": "یزد", "id": "65950", "province_id": "65551"},
|
||||
{"name": "ثلاث باباجانی", "id": "65828", "province_id": "65542"},
|
||||
{"name": "جوانرود", "id": "65829", "province_id": "65542"},
|
||||
{"name": "دالاهو", "id": "65830", "province_id": "65542"},
|
||||
{"name": "روانسر", "id": "65831", "province_id": "65542"},
|
||||
{"name": "سر پل ذهاب", "id": "65832", "province_id": "65542"},
|
||||
{"name": "سنقر", "id": "65833", "province_id": "65542"},
|
||||
{"name": "صحنه", "id": "65834", "province_id": "65542"},
|
||||
{"name": "قصر شیرین", "id": "65835", "province_id": "65542"},
|
||||
{"name": "گیلانغرب", "id": "65838", "province_id": "65542"},
|
||||
{"name": "ماهیدشت", "id": "66823", "province_id": "65542"},
|
||||
{"name": "هرسین", "id": "65839", "province_id": "65542"},
|
||||
{"name": "کرمانشاه", "id": "65836", "province_id": "65542"},
|
||||
{"name": "کنگاور", "id": "65837", "province_id": "65542"},
|
||||
{"name": "باشت", "id": "65840", "province_id": "65543"},
|
||||
{"name": "بهمئی", "id": "65841", "province_id": "65543"},
|
||||
{"name": "بویراحمد", "id": "65842", "province_id": "65543"},
|
||||
{"name": "چرام", "id": "65843", "province_id": "65543"},
|
||||
{"name": "دنا", "id": "65844", "province_id": "65543"},
|
||||
{"name": "گچساران", "id": "65846", "province_id": "65543"},
|
||||
{"name": "لنده", "id": "66594", "province_id": "65543"},
|
||||
{"name": "مارگون", "id": "66587", "province_id": "65543"},
|
||||
{"name": "کهگیلویه", "id": "65845", "province_id": "65543"},
|
||||
{"name": "آزاد شهر", "id": "65847", "province_id": "65544"},
|
||||
{"name": "آق قلا", "id": "65848", "province_id": "65544"},
|
||||
{"name": "بندر گز", "id": "65849", "province_id": "65544"},
|
||||
{"name": "ترکمن", "id": "65850", "province_id": "65544"},
|
||||
{"name": "رامیان", "id": "65851", "province_id": "65544"},
|
||||
{"name": "علی آباد", "id": "65852", "province_id": "65544"},
|
||||
{"name": "گالیکش", "id": "65855", "province_id": "65544"},
|
||||
{"name": "گرگان", "id": "65856", "province_id": "65544"},
|
||||
{"name": "گمیشان", "id": "65857", "province_id": "65544"},
|
||||
{"name": "گنبد کاووس", "id": "65858", "province_id": "65544"},
|
||||
{"name": "مراوه تپه", "id": "65859", "province_id": "65544"},
|
||||
{"name": "مینودشت", "id": "65860", "province_id": "65544"},
|
||||
{"name": "کردکوی", "id": "65853", "province_id": "65544"},
|
||||
{"name": "کلاله", "id": "65854", "province_id": "65544"},
|
||||
{"name": "آستارا", "id": "65861", "province_id": "65545"},
|
||||
{"name": "آستانه اشرفیه", "id": "65862", "province_id": "65545"},
|
||||
{"name": "املش", "id": "65863", "province_id": "65545"},
|
||||
{"name": "بندر انزلی", "id": "65864", "province_id": "65545"},
|
||||
{"name": "تالش", "id": "66851", "province_id": "65545"},
|
||||
{"name": "خمام", "id": "66627", "province_id": "65545"},
|
||||
{"name": "خمام", "id": "66904", "province_id": "65545"},
|
||||
{"name": "رشت", "id": "65865", "province_id": "65545"},
|
||||
{"name": "رضوانشهر", "id": "65866", "province_id": "65545"},
|
||||
{"name": "رودبار", "id": "65867", "province_id": "65545"},
|
||||
{"name": "رودسر", "id": "65868", "province_id": "65545"},
|
||||
{"name": "سیاهکل", "id": "65869", "province_id": "65545"},
|
||||
{"name": "شفت", "id": "65870", "province_id": "65545"},
|
||||
{"name": "صومعه سرا", "id": "65871", "province_id": "65545"},
|
||||
{"name": "طوالش", "id": "65872", "province_id": "65545"},
|
||||
{"name": "فومن", "id": "65873", "province_id": "65545"},
|
||||
{"name": "لاهیجان", "id": "65874", "province_id": "65545"},
|
||||
{"name": "لنگرود", "id": "65875", "province_id": "65545"},
|
||||
{"name": "ماسال", "id": "65876", "province_id": "65545"},
|
||||
{"name": "ازنا", "id": "65877", "province_id": "65546"},
|
||||
{"name": "الیگودرز", "id": "65878", "province_id": "65546"},
|
||||
{"name": "بروجرد", "id": "65879", "province_id": "65546"},
|
||||
{"name": "پلدختر", "id": "65880", "province_id": "65546"},
|
||||
{"name": "چگنی", "id": "65883", "province_id": "65546"},
|
||||
{"name": "خرم آباد", "id": "65881", "province_id": "65546"},
|
||||
{"name": "دلفان", "id": "65882", "province_id": "65546"},
|
||||
{"name": "دورود", "id": "65884", "province_id": "65546"},
|
||||
{"name": "رومشکان", "id": "66865", "province_id": "65546"},
|
||||
{"name": "زاهدان", "id": "65749", "province_id": "65536"},
|
||||
{"name": "زرآباد", "id": "66384", "province_id": "65536"},
|
||||
{"name": "زهک", "id": "65750", "province_id": "65536"},
|
||||
{"name": "سراوان", "id": "65751", "province_id": "65536"},
|
||||
{"name": "سرباز", "id": "65752", "province_id": "65536"},
|
||||
{"name": "سیب سوران", "id": "65753", "province_id": "65536"},
|
||||
{"name": "فنوج", "id": "66860", "province_id": "65536"},
|
||||
{"name": "قصرقند", "id": "66861", "province_id": "65536"},
|
||||
{"name": "گلشن", "id": "66896", "province_id": "65536"},
|
||||
{"name": "لاشار", "id": "66390", "province_id": "65536"},
|
||||
{"name": "مهرستان", "id": "65755", "province_id": "65536"},
|
||||
{"name": "میرجاوه", "id": "66862", "province_id": "65536"},
|
||||
{"name": "نیمروز", "id": "66859", "province_id": "65536"},
|
||||
{"name": "نیک شهر", "id": "65756", "province_id": "65536"},
|
||||
{"name": "هامون", "id": "66858", "province_id": "65536"},
|
||||
{"name": "هیرمند", "id": "65757", "province_id": "65536"},
|
||||
{"name": "کنارک", "id": "65754", "province_id": "65536"},
|
||||
{"name": "آباده", "id": "65758", "province_id": "65537"},
|
||||
{"name": "ارسنجان", "id": "65759", "province_id": "65537"},
|
||||
{"name": "استهبان", "id": "65760", "province_id": "65537"},
|
||||
{"name": "اقلید", "id": "65761", "province_id": "65537"},
|
||||
{"name": "اوز", "id": "66442", "province_id": "65537"},
|
||||
{"name": "بختگان", "id": "66880", "province_id": "65537"},
|
||||
{"name": "بوانات", "id": "65762", "province_id": "65537"},
|
||||
{"name": "بیضا", "id": "66416", "province_id": "65537"},
|
||||
{"name": "پاسارگاد", "id": "65763", "province_id": "65537"},
|
||||
{"name": "جهرم", "id": "65764", "province_id": "65537"},
|
||||
{"name": "جویم", "id": "66445", "province_id": "65537"},
|
||||
{"name": "خرامه", "id": "65765", "province_id": "65537"},
|
||||
{"name": "خرم بید", "id": "65766", "province_id": "65537"},
|
||||
{"name": "خفر", "id": "66848", "province_id": "65537"},
|
||||
{"name": "خنج", "id": "65767", "province_id": "65537"},
|
||||
{"name": "داراب", "id": "65768", "province_id": "65537"},
|
||||
{"name": "رستم", "id": "65769", "province_id": "65537"},
|
||||
{"name": "زرقان", "id": "66422", "province_id": "65537"},
|
||||
{"name": "زرین دشت", "id": "65770", "province_id": "65537"},
|
||||
{"name": "سپیدان", "id": "65771", "province_id": "65537"},
|
||||
{"name": "سرچهان", "id": "66843", "province_id": "65537"},
|
||||
{"name": "سروستان", "id": "65772", "province_id": "65537"},
|
||||
{"name": "شیراز", "id": "65773", "province_id": "65537"},
|
||||
{"name": "فراشبند", "id": "65774", "province_id": "65537"},
|
||||
{"name": "فسا", "id": "65775", "province_id": "65537"},
|
||||
{"name": "فیروز آباد", "id": "65776", "province_id": "65537"},
|
||||
{"name": "قیر و کارزین", "id": "66842", "province_id": "65537"},
|
||||
{"name": "گراش", "id": "65780", "province_id": "65537"},
|
||||
{"name": "لارستان", "id": "65781", "province_id": "65537"},
|
||||
{"name": "لامرد", "id": "65782", "province_id": "65537"},
|
||||
{"name": "مرودشت", "id": "65783", "province_id": "65537"},
|
||||
{"name": "ممسنی", "id": "65784", "province_id": "65537"},
|
||||
{"name": "مهر", "id": "65785", "province_id": "65537"},
|
||||
{"name": "نی ریز", "id": "65786", "province_id": "65537"},
|
||||
{"name": "کازرون", "id": "65778", "province_id": "65537"},
|
||||
{"name": "کوار", "id": "65779", "province_id": "65537"},
|
||||
{"name": "کوه چنار", "id": "66881", "province_id": "65537"},
|
||||
{"name": "آبیک", "id": "65787", "province_id": "65538"},
|
||||
{"name": "آوج", "id": "66849", "province_id": "65538"},
|
||||
{"name": "البرز", "id": "65788", "province_id": "65538"},
|
||||
{"name": "بوئین زهرا", "id": "65789", "province_id": "65538"},
|
||||
{"name": "تاکستان", "id": "65790", "province_id": "65538"},
|
||||
{"name": "قزوین", "id": "65791", "province_id": "65538"},
|
||||
{"name": "جعفریه", "id": "66483", "province_id": "65539"},
|
||||
{"name": "خلجستان", "id": "66484", "province_id": "65539"},
|
||||
{"name": "سلفچگان", "id": "66485", "province_id": "65539"},
|
||||
{"name": "قم", "id": "65792", "province_id": "65539"},
|
||||
{"name": "کهک", "id": "66487", "province_id": "65539"},
|
||||
{"name": "بانه", "id": "65793", "province_id": "65540"},
|
||||
{"name": "بیجار", "id": "65794", "province_id": "65540"},
|
||||
{"name": "دهگلان", "id": "65795", "province_id": "65540"},
|
||||
{"name": "دیواندره", "id": "65796", "province_id": "65540"},
|
||||
{"name": "سرو آباد", "id": "65797", "province_id": "65540"},
|
||||
{"name": "سقز", "id": "65798", "province_id": "65540"},
|
||||
{"name": "سنندج", "id": "65799", "province_id": "65540"},
|
||||
{"name": "قروه", "id": "65800", "province_id": "65540"},
|
||||
{"name": "مریوان", "id": "65802", "province_id": "65540"},
|
||||
{"name": "کامیاران", "id": "65801", "province_id": "65540"},
|
||||
{"name": "ارزوئیه", "id": "65803", "province_id": "65541"},
|
||||
{"name": "انار", "id": "65804", "province_id": "65541"},
|
||||
{"name": "بافت", "id": "65805", "province_id": "65541"},
|
||||
{"name": "بردسیر", "id": "65806", "province_id": "65541"},
|
||||
{"name": "بم", "id": "65807", "province_id": "65541"},
|
||||
{"name": "رابر", "id": "65809", "province_id": "65541"},
|
||||
{"name": "راور", "id": "65810", "province_id": "65541"},
|
||||
{"name": "رفسنجان", "id": "65811", "province_id": "65541"},
|
||||
{"name": "ریگان", "id": "65813", "province_id": "65541"},
|
||||
{"name": "زرند", "id": "65814", "province_id": "65541"},
|
||||
{"name": "سیرجان", "id": "65815", "province_id": "65541"},
|
||||
{"name": "شهربابک", "id": "66825", "province_id": "65541"},
|
||||
{"name": "فهرج", "id": "65819", "province_id": "65541"},
|
||||
{"name": "گنبکی", "id": "66900", "province_id": "65541"},
|
||||
{"name": "نرماشیر", "id": "65825", "province_id": "65541"},
|
||||
{"name": "کرمان", "id": "65821", "province_id": "65541"},
|
||||
{"name": "کوهبنان", "id": "65823", "province_id": "65541"},
|
||||
{"name": "اسلام آباد غرب", "id": "65826", "province_id": "65542"},
|
||||
{"name": "پاوه", "id": "65827", "province_id": "65542"},
|
||||
{"name": "رشتخوار", "id": "65687", "province_id": "65531"},
|
||||
{"name": "زاوه", "id": "65688", "province_id": "65531"},
|
||||
{"name": "زبرخان", "id": "66265", "province_id": "65531"},
|
||||
{"name": "سبزوار", "id": "65689", "province_id": "65531"},
|
||||
{"name": "سرخس", "id": "65690", "province_id": "65531"},
|
||||
{"name": "ششتمد", "id": "66246", "province_id": "65531"},
|
||||
{"name": "صالح آباد", "id": "66838", "province_id": "65531"},
|
||||
{"name": "طرقبه", "id": "66837", "province_id": "65531"},
|
||||
{"name": "فریمان", "id": "65691", "province_id": "65531"},
|
||||
{"name": "فیروزه", "id": "66836", "province_id": "65531"},
|
||||
{"name": "قوچان", "id": "65692", "province_id": "65531"},
|
||||
{"name": "گلبهار", "id": "66228", "province_id": "65531"},
|
||||
{"name": "گناباد", "id": "65695", "province_id": "65531"},
|
||||
{"name": "مشهد", "id": "65696", "province_id": "65531"},
|
||||
{"name": "مه ولات", "id": "65697", "province_id": "65531"},
|
||||
{"name": "نیشابور", "id": "65698", "province_id": "65531"},
|
||||
{"name": "کاشمر", "id": "65693", "province_id": "65531"},
|
||||
{"name": "کلات", "id": "65694", "province_id": "65531"},
|
||||
{"name": "کوهسرخ", "id": "66254", "province_id": "65531"},
|
||||
{"name": "اسفراین", "id": "65699", "province_id": "65532"},
|
||||
{"name": "بام و صفی آباد", "id": "66897", "province_id": "65532"},
|
||||
{"name": "بجنورد", "id": "65700", "province_id": "65532"},
|
||||
{"name": "جاجرم", "id": "65701", "province_id": "65532"},
|
||||
{"name": "راز و جرگلان", "id": "66271", "province_id": "65532"},
|
||||
{"name": "سملقان", "id": "65705", "province_id": "65532"},
|
||||
{"name": "شیروان", "id": "65702", "province_id": "65532"},
|
||||
{"name": "فاروج", "id": "65703", "province_id": "65532"},
|
||||
{"name": "گرمه", "id": "65704", "province_id": "65532"},
|
||||
{"name": "مانه", "id": "66898", "province_id": "65532"},
|
||||
{"name": "آبادان", "id": "65706", "province_id": "65533"},
|
||||
{"name": "آغاجری", "id": "66878", "province_id": "65533"},
|
||||
{"name": "امیدیه", "id": "65707", "province_id": "65533"},
|
||||
{"name": "اندیمشک", "id": "65708", "province_id": "65533"},
|
||||
{"name": "اندیکا", "id": "65709", "province_id": "65533"},
|
||||
{"name": "اهواز", "id": "65710", "province_id": "65533"},
|
||||
{"name": "ایذه", "id": "65711", "province_id": "65533"},
|
||||
{"name": "باغ ملک", "id": "65712", "province_id": "65533"},
|
||||
{"name": "باوی", "id": "65713", "province_id": "65533"},
|
||||
{"name": "بندر ماهشهر", "id": "65714", "province_id": "65533"},
|
||||
{"name": "بهبهان", "id": "65715", "province_id": "65533"},
|
||||
{"name": "حمیدیه", "id": "66873", "province_id": "65533"},
|
||||
{"name": "خرمشهر", "id": "65716", "province_id": "65533"},
|
||||
{"name": "دزپارت", "id": "66893", "province_id": "65533"},
|
||||
{"name": "دزفول", "id": "65717", "province_id": "65533"},
|
||||
{"name": "دشت آزادگان", "id": "65718", "province_id": "65533"},
|
||||
{"name": "رامشیر", "id": "65719", "province_id": "65533"},
|
||||
{"name": "رامهرمز", "id": "65720", "province_id": "65533"},
|
||||
{"name": "شادگان", "id": "65721", "province_id": "65533"},
|
||||
{"name": "شوش", "id": "65722", "province_id": "65533"},
|
||||
{"name": "شوشتر", "id": "65723", "province_id": "65533"},
|
||||
{"name": "صیدون", "id": "66902", "province_id": "65533"},
|
||||
{"name": "گتوند", "id": "65724", "province_id": "65533"},
|
||||
{"name": "لالی", "id": "65725", "province_id": "65533"},
|
||||
{"name": "مسجد سلیمان", "id": "65726", "province_id": "65533"},
|
||||
{"name": "هفتگل", "id": "65727", "province_id": "65533"},
|
||||
{"name": "هندیجان", "id": "65728", "province_id": "65533"},
|
||||
{"name": "هویزه", "id": "65729", "province_id": "65533"},
|
||||
{"name": "کارون", "id": "66874", "province_id": "65533"},
|
||||
{"name": "کرخه", "id": "66886", "province_id": "65533"},
|
||||
{"name": "ابهر", "id": "65730", "province_id": "65534"},
|
||||
{"name": "ایجرود", "id": "65731", "province_id": "65534"},
|
||||
{"name": "خدابنده", "id": "65732", "province_id": "65534"},
|
||||
{"name": "خرمدره", "id": "65733", "province_id": "65534"},
|
||||
{"name": "زنجان", "id": "65734", "province_id": "65534"},
|
||||
{"name": "سلطانیه ", "id": "66868", "province_id": "65534"},
|
||||
{"name": "طارم", "id": "65735", "province_id": "65534"},
|
||||
{"name": "ماهنشان", "id": "65736", "province_id": "65534"},
|
||||
{"name": "آرادان", "id": "65737", "province_id": "65535"},
|
||||
{"name": "دامغان", "id": "65738", "province_id": "65535"},
|
||||
{"name": "سرخه", "id": "66840", "province_id": "65535"},
|
||||
{"name": "سمنان", "id": "65739", "province_id": "65535"},
|
||||
{"name": "شاهرود", "id": "65740", "province_id": "65535"},
|
||||
{"name": "گرمسار", "id": "65741", "province_id": "65535"},
|
||||
{"name": "مهدی شهر", "id": "65742", "province_id": "65535"},
|
||||
{"name": "میامی", "id": "65743", "province_id": "65535"},
|
||||
{"name": "ایرانشهر", "id": "65744", "province_id": "65536"},
|
||||
{"name": "بمپور", "id": "66362", "province_id": "65536"},
|
||||
{"name": "تفتان", "id": "66882", "province_id": "65536"},
|
||||
{"name": "چاه بهار", "id": "65745", "province_id": "65536"},
|
||||
{"name": "خاش", "id": "65746", "province_id": "65536"},
|
||||
{"name": "دشتیاری", "id": "66364", "province_id": "65536"},
|
||||
{"name": "دلگان", "id": "65747", "province_id": "65536"},
|
||||
{"name": "راسک", "id": "66883", "province_id": "65536"},
|
||||
{"name": "زابل", "id": "65748", "province_id": "65536"},
|
||||
{"name": "آذرشهر", "id": "65552", "province_id": "65521"},
|
||||
{"name": "اسکو", "id": "65553", "province_id": "65521"},
|
||||
{"name": "اهر", "id": "65554", "province_id": "65521"},
|
||||
{"name": "بستان آباد", "id": "65555", "province_id": "65521"},
|
||||
{"name": "بناب", "id": "65556", "province_id": "65521"},
|
||||
{"name": "تبریز", "id": "65557", "province_id": "65521"},
|
||||
{"name": "جلفا", "id": "65558", "province_id": "65521"},
|
||||
{"name": "چاراویماق", "id": "65559", "province_id": "65521"},
|
||||
{"name": "خدا آفرین", "id": "65560", "province_id": "65521"},
|
||||
{"name": "سراب", "id": "65561", "province_id": "65521"},
|
||||
{"name": "شبستر", "id": "65562", "province_id": "65521"},
|
||||
{"name": "عجب شیر", "id": "65563", "province_id": "65521"},
|
||||
{"name": "مراغه", "id": "65565", "province_id": "65521"},
|
||||
{"name": "مرند", "id": "65566", "province_id": "65521"},
|
||||
{"name": "ملکان", "id": "65567", "province_id": "65521"},
|
||||
{"name": "میانه", "id": "65568", "province_id": "65521"},
|
||||
{"name": "هریس", "id": "65569", "province_id": "65521"},
|
||||
{"name": "هشترود", "id": "65570", "province_id": "65521"},
|
||||
{"name": "هوراند", "id": "65957", "province_id": "65521"},
|
||||
{"name": "ورزقان", "id": "65571", "province_id": "65521"},
|
||||
{"name": "کلیبر", "id": "65564", "province_id": "65521"},
|
||||
{"name": "ارومیه", "id": "65572", "province_id": "65522"},
|
||||
{"name": "اشنویه", "id": "65573", "province_id": "65522"},
|
||||
{"name": "بوکان", "id": "65574", "province_id": "65522"},
|
||||
{"name": "پلدشت", "id": "65575", "province_id": "65522"},
|
||||
{"name": "پیرانشهر", "id": "65576", "province_id": "65522"},
|
||||
{"name": "تکاب", "id": "65577", "province_id": "65522"},
|
||||
{"name": "چاربرج", "id": "66905", "province_id": "65522"},
|
||||
{"name": "چالدران", "id": "65578", "province_id": "65522"},
|
||||
{"name": "چایپاره", "id": "65579", "province_id": "65522"},
|
||||
{"name": "خوی", "id": "65580", "province_id": "65522"},
|
||||
{"name": "سر دشت", "id": "65581", "province_id": "65522"},
|
||||
{"name": "سلماس", "id": "65582", "province_id": "65522"},
|
||||
{"name": "شاهین دژ", "id": "65583", "province_id": "65522"},
|
||||
{"name": "شوط", "id": "65584", "province_id": "65522"},
|
||||
{"name": "ماکو", "id": "65585", "province_id": "65522"},
|
||||
{"name": "مهاباد", "id": "65586", "province_id": "65522"},
|
||||
{"name": "میاندوآب", "id": "65587", "province_id": "65522"},
|
||||
{"name": "نقده", "id": "65588", "province_id": "65522"},
|
||||
{"name": "اردبیل", "id": "65589", "province_id": "65523"},
|
||||
{"name": "اصلاندوز", "id": "66032", "province_id": "65523"},
|
||||
{"name": "انگوت", "id": "66040", "province_id": "65523"},
|
||||
{"name": "بیله سوار", "id": "65590", "province_id": "65523"},
|
||||
{"name": "پارس آباد", "id": "65591", "province_id": "65523"},
|
||||
{"name": "خلخال", "id": "65592", "province_id": "65523"},
|
||||
{"name": "سرعین", "id": "65593", "province_id": "65523"},
|
||||
{"name": "گرمی", "id": "65595", "province_id": "65523"},
|
||||
{"name": "مشگین شهر", "id": "65596", "province_id": "65523"},
|
||||
{"name": "نمین", "id": "65597", "province_id": "65523"},
|
||||
{"name": "نیر", "id": "65598", "province_id": "65523"},
|
||||
{"name": "کوثر", "id": "65594", "province_id": "65523"},
|
||||
{"name": "آران و بیدگل", "id": "65599", "province_id": "65524"},
|
||||
{"name": "اردستان", "id": "65600", "province_id": "65524"},
|
||||
{"name": "اصفهان", "id": "65601", "province_id": "65524"},
|
||||
{"name": "برخوار", "id": "65602", "province_id": "65524"},
|
||||
{"name": "بوئین و میاندشت", "id": "66075", "province_id": "65524"},
|
||||
{"name": "تیران و کرون", "id": "65603", "province_id": "65524"},
|
||||
{"name": "جرقویه", "id": "66887", "province_id": "65524"},
|
||||
{"name": "چادگان", "id": "65604", "province_id": "65524"},
|
||||
{"name": "خمینی شهر", "id": "65605", "province_id": "65524"},
|
||||
{"name": "خوانسار", "id": "65606", "province_id": "65524"},
|
||||
{"name": "خور و بیابانک", "id": "65607", "province_id": "65524"},
|
||||
{"name": "دهاقان", "id": "65608", "province_id": "65524"},
|
||||
{"name": "زرین شهر", "id": "66828", "province_id": "65524"},
|
||||
{"name": "سمیرم", "id": "65609", "province_id": "65524"},
|
||||
{"name": "شاهین شهر", "id": "65610", "province_id": "65524"},
|
||||
{"name": "شهرضا", "id": "65611", "province_id": "65524"},
|
||||
{"name": "فریدن", "id": "65612", "province_id": "65524"},
|
||||
{"name": "فریدونشهر", "id": "65613", "province_id": "65524"},
|
||||
{"name": "فلاورجان", "id": "65614", "province_id": "65524"},
|
||||
{"name": "گلپایگان", "id": "65616", "province_id": "65524"},
|
||||
{"name": "مبارکه", "id": "65618", "province_id": "65524"},
|
||||
{"name": "میمه", "id": "66906", "province_id": "65524"},
|
||||
{"name": "نائین", "id": "65619", "province_id": "65524"},
|
||||
{"name": "نجف آباد", "id": "65620", "province_id": "65524"},
|
||||
{"name": "نطنز", "id": "65621", "province_id": "65524"},
|
||||
{"name": "هرند", "id": "66888", "province_id": "65524"},
|
||||
{"name": "ورزنه", "id": "66889", "province_id": "65524"},
|
||||
{"name": "کاشان", "id": "65615", "province_id": "65524"},
|
||||
{"name": "کوهپایه", "id": "66059", "province_id": "65524"},
|
||||
{"name": "اشتهارد", "id": "66855", "province_id": "65525"},
|
||||
{"name": "چهار باغ", "id": "66096", "province_id": "65525"},
|
||||
{"name": "ساوجبلاغ", "id": "65622", "province_id": "65525"},
|
||||
{"name": "طالقان", "id": "65623", "province_id": "65525"},
|
||||
{"name": "فردیس", "id": "66877", "province_id": "65525"},
|
||||
{"name": "نظر آباد", "id": "65625", "province_id": "65525"},
|
||||
{"name": "کرج", "id": "65624", "province_id": "65525"},
|
||||
{"name": "آبدانان", "id": "65626", "province_id": "65526"},
|
||||
{"name": "ایلام", "id": "65627", "province_id": "65526"},
|
||||
{"name": "ایوان", "id": "65628", "province_id": "65526"},
|
||||
{"name": "بدره", "id": "66830", "province_id": "65526"},
|
||||
{"name": "چرداول", "id": "66829", "province_id": "65526"},
|
||||
{"name": "چوار", "id": "66107", "province_id": "65526"},
|
||||
{"name": "درهشهر", "id": "66831", "province_id": "65526"},
|
||||
{"name": "دهلران", "id": "65630", "province_id": "65526"},
|
||||
{"name": "سیروان", "id": "66832", "province_id": "65526"},
|
||||
{"name": "ملکشاهی", "id": "65632", "province_id": "65526"},
|
||||
{"name": "مهران", "id": "65633", "province_id": "65526"},
|
||||
{"name": "هلیلان", "id": "66118", "province_id": "65526"},
|
||||
{"name": "بوشهر", "id": "65634", "province_id": "65527"},
|
||||
{"name": "تنگستان", "id": "65635", "province_id": "65527"},
|
||||
{"name": "جم", "id": "65636", "province_id": "65527"},
|
||||
{"name": "دشتستان", "id": "65637", "province_id": "65527"},
|
||||
{"name": "دشتی", "id": "65638", "province_id": "65527"},
|
||||
{"name": "دیر", "id": "65639", "province_id": "65527"},
|
||||
{"name": "دیلم", "id": "65640", "province_id": "65527"},
|
||||
{"name": "عسلویه", "id": "66142", "province_id": "65527"},
|
||||
{"name": "گناوه", "id": "65642", "province_id": "65527"},
|
||||
{"name": "کنگان", "id": "65641", "province_id": "65527"},
|
||||
{"name": "اسلامشهر", "id": "65643", "province_id": "65528"},
|
||||
{"name": "بهارستان", "id": "65644", "province_id": "65528"},
|
||||
{"name": "پاکدشت", "id": "65645", "province_id": "65528"},
|
||||
{"name": "پردیس", "id": "66867", "province_id": "65528"},
|
||||
{"name": "پیشوا", "id": "65646", "province_id": "65528"},
|
||||
{"name": "تهران", "id": "65647", "province_id": "65528"},
|
||||
{"name": "دماوند", "id": "65648", "province_id": "65528"},
|
||||
{"name": "رباط کریم", "id": "65649", "province_id": "65528"},
|
||||
{"name": "ری", "id": "65650", "province_id": "65528"},
|
||||
{"name": "شمیرانات", "id": "65651", "province_id": "65528"},
|
||||
{"name": "شهریار", "id": "65652", "province_id": "65528"},
|
||||
{"name": "فیروز کوه", "id": "65653", "province_id": "65528"},
|
||||
{"name": "قدس", "id": "65654", "province_id": "65528"},
|
||||
{"name": "قرچک", "id": "66866", "province_id": "65528"},
|
||||
{"name": "ملارد", "id": "65655", "province_id": "65528"},
|
||||
{"name": "ورامین", "id": "65656", "province_id": "65528"},
|
||||
{"name": "اردل", "id": "65657", "province_id": "65529"},
|
||||
{"name": "بروجن", "id": "65658", "province_id": "65529"},
|
||||
{"name": "بن", "id": "66875", "province_id": "65529"},
|
||||
{"name": "خانمیرزا", "id": "66183", "province_id": "65529"},
|
||||
{"name": "سامان", "id": "66876", "province_id": "65529"},
|
||||
{"name": "شهر کرد", "id": "65659", "province_id": "65529"},
|
||||
{"name": "فارسان", "id": "65660", "province_id": "65529"},
|
||||
{"name": "فرخ شهر", "id": "66907", "province_id": "65529"},
|
||||
{"name": "فلارد", "id": "66184", "province_id": "65529"},
|
||||
{"name": "لردگان", "id": "65663", "province_id": "65529"},
|
||||
{"name": "کوهرنگ", "id": "65661", "province_id": "65529"},
|
||||
{"name": "کیار", "id": "65662", "province_id": "65529"},
|
||||
{"name": "بشرویه", "id": "65664", "province_id": "65530"},
|
||||
{"name": "بیرجند", "id": "65665", "province_id": "65530"},
|
||||
{"name": "خوسف", "id": "66834", "province_id": "65530"},
|
||||
{"name": "درمیان", "id": "65666", "province_id": "65530"},
|
||||
{"name": "زیرکوه", "id": "66863", "province_id": "65530"},
|
||||
{"name": "سرایان", "id": "65667", "province_id": "65530"},
|
||||
{"name": "سربیشه", "id": "65668", "province_id": "65530"},
|
||||
{"name": "طبس", "id": "66864", "province_id": "65530"},
|
||||
{"name": "فردوس", "id": "65669", "province_id": "65530"},
|
||||
{"name": "قائنات", "id": "65670", "province_id": "65530"},
|
||||
{"name": "نهبندان", "id": "65671", "province_id": "65530"},
|
||||
{"name": "باخرز", "id": "65672", "province_id": "65531"},
|
||||
{"name": "بجستان", "id": "65673", "province_id": "65531"},
|
||||
{"name": "بردسکن", "id": "65674", "province_id": "65531"},
|
||||
{"name": "تایباد", "id": "65676", "province_id": "65531"},
|
||||
{"name": "تربت جام", "id": "65678", "province_id": "65531"},
|
||||
{"name": "تربت حیدریه", "id": "65679", "province_id": "65531"},
|
||||
{"name": "جغتای", "id": "65680", "province_id": "65531"},
|
||||
{"name": "جوین", "id": "65681", "province_id": "65531"},
|
||||
{"name": "چناران", "id": "65682", "province_id": "65531"},
|
||||
{"name": "خلیل آباد", "id": "65683", "province_id": "65531"},
|
||||
{"name": "خواف", "id": "65684", "province_id": "65531"},
|
||||
{"name": "خوشاب", "id": "65685", "province_id": "65531"},
|
||||
{"name": "داورزن", "id": "66835", "province_id": "65531"},
|
||||
{"name": "درگز", "id": "65686", "province_id": "65531"}
|
||||
]
|
||||
iranprovince = [
|
||||
{"name": "همدان", "id": "65550", "address": "https://habackend.rasadyaar.ir/"},
|
||||
{"name": "مرکزی", "id": "65548", "address": "https://mabackend.rasadyaar.ir/"},
|
||||
{"name": "بوشهر", "id": "65527", "address": "https://bubackend.rasadyaar.ir/"},
|
||||
{"name": "آذربایجان شرقی", "id": "65521"},
|
||||
{"name": "آذربایجان غربی", "id": "65522"},
|
||||
{"name": "اردبیل", "id": "65523"},
|
||||
{"name": "اصفهان", "id": "65524"},
|
||||
{"name": "البرز", "id": "65525"},
|
||||
{"name": "ایلام", "id": "65526"},
|
||||
{"name": "تهران", "id": "65528"},
|
||||
{"name": "چهار محال و بختیاری", "id": "65529"},
|
||||
{"name": "خراسان جنوبی", "id": "65530"},
|
||||
{"name": "خراسان رضوی", "id": "65531"},
|
||||
{"name": "خراسان شمالی", "id": "65532"},
|
||||
{"name": "خوزستان", "id": "65533"},
|
||||
{"name": "زنجان", "id": "65534"},
|
||||
{"name": "سمنان", "id": "65535"},
|
||||
{"name": "سیستان و بلوچستان", "id": "65536"},
|
||||
{"name": "فارس", "id": "65537"},
|
||||
{"name": "قزوین", "id": "65538"},
|
||||
{"name": "قم", "id": "65539"},
|
||||
{"name": "کردستان", "id": "65540"},
|
||||
{"name": "کرمان", "id": "65541"},
|
||||
{"name": "کرمانشاه", "id": "65542"},
|
||||
{"name": "کهکیلویه و بویراحمد", "id": "65543"},
|
||||
{"name": "گلستان", "id": "65544"},
|
||||
{"name": "گیلان", "id": "65545"},
|
||||
{"name": "لرستان", "id": "65546"},
|
||||
{"name": "مازندران", "id": "65547"},
|
||||
{"name": "هرمزگان", "id": "65549"},
|
||||
{"name": "یزد", "id": "65551"},
|
||||
]
|
||||
|
||||
from fuzzywuzzy import fuzz
|
||||
import re
|
||||
|
||||
|
||||
def normalize_text(text):
|
||||
if not text:
|
||||
return ""
|
||||
text = re.sub(r'[^\w\s]', '', text)
|
||||
text = re.sub(r'\s+', ' ', text).strip()
|
||||
return text
|
||||
|
||||
|
||||
def find_best_match_for_province(input_text):
|
||||
input_norm = normalize_text(input_text)
|
||||
best_match = None
|
||||
highest_score = 0
|
||||
|
||||
for item in iranprovince:
|
||||
score = fuzz.ratio(input_norm, normalize_text(item['name']))
|
||||
if score > highest_score and score > 70:
|
||||
highest_score = score
|
||||
best_match = item['name']
|
||||
|
||||
return best_match if highest_score > 0 else None
|
||||
|
||||
|
||||
def get_province_id(province_name):
|
||||
for i in iranprovince:
|
||||
if i['name'] == province_name:
|
||||
return i['id']
|
||||
return 0
|
||||
|
||||
|
||||
def find_best_match_for_city(input_text, province_name):
|
||||
input_norm = normalize_text(input_text)
|
||||
best_match = None
|
||||
highest_score = 0
|
||||
province_id = get_province_id(province_name)
|
||||
|
||||
city = [city for city in irancity if int(city['province_id']) == int(province_id)]
|
||||
|
||||
for item in city:
|
||||
score = fuzz.ratio(input_norm, normalize_text(item['name']))
|
||||
if score > highest_score and score > 70:
|
||||
highest_score = score
|
||||
best_match = item['name']
|
||||
|
||||
return best_match if highest_score > 0 else None
|
||||
|
||||
|
||||
def correct_province(input_text):
|
||||
province_match = find_best_match_for_province(input_text)
|
||||
if province_match:
|
||||
return province_match
|
||||
|
||||
return input_text
|
||||
|
||||
|
||||
def correct_city(input_text, province_name):
|
||||
province_match = find_best_match_for_city(input_text, province_name)
|
||||
if province_match:
|
||||
return province_match
|
||||
|
||||
return input_text
|
||||
|
||||
# امل درمیان خرمبید دشتستان قائنات گناوه اسلام آباد
|
||||
# corrupted_text = "کهگیلویه و بویراحمد"
|
||||
# corrected = correct_province(corrupted_text)
|
||||
# print(f"ورودی: {corrupted_text} -> خروجی: {corrected}")
|
||||
|
||||
|
||||
# #تست شهر
|
||||
# province_name = "کهگیلویه و بویراحمد"
|
||||
# corrupted_text = "دنا"
|
||||
# corrected = correct_city(corrupted_text,province_name)
|
||||
# print(f"ورودی: {corrupted_text} -> خروجی: {corrected}")
|
||||
2574
app/excel_processing.py
Normal file
2574
app/excel_processing.py
Normal file
File diff suppressed because it is too large
Load Diff
332
app/filtersets.py
Normal file
332
app/filtersets.py
Normal file
@@ -0,0 +1,332 @@
|
||||
import datetime
|
||||
|
||||
from django_filters import rest_framework as filters
|
||||
|
||||
from app.models import Poultry, PoultryHatching, TransportingChickenDetail, Hatching, TransportingDetail, KillHouse, \
|
||||
TransportCarcassDetail, Driver, Guilds, AllProductsTransport
|
||||
|
||||
|
||||
class PoultryFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Poultry
|
||||
fields = [
|
||||
'UserName',
|
||||
'FirstName',
|
||||
'LastName',
|
||||
'UnitName',
|
||||
'PartIdCode',
|
||||
'UnitId',
|
||||
'LocationIdProvince',
|
||||
'LocationIdCity'
|
||||
]
|
||||
|
||||
|
||||
class PoultryHatchingFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
'DesCertId',
|
||||
'RequestCode',
|
||||
'Mobile',
|
||||
'PartIdCode',
|
||||
'EpidemiologicCode',
|
||||
'LocationNameProvince',
|
||||
'LocationNameCity',
|
||||
'poultry__UserName',
|
||||
'poultry__FirstName',
|
||||
'poultry__LastName',
|
||||
'poultry__UnitName',
|
||||
'poultry__PartIdCode',
|
||||
'poultry__UnitId',
|
||||
'LocationIdProvince',
|
||||
'LocationIdCity',
|
||||
'LocationNameCity',
|
||||
]
|
||||
|
||||
|
||||
class HatchingsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Hatching
|
||||
fields = [
|
||||
'UnitName',
|
||||
'ProvinceName',
|
||||
'CityName',
|
||||
'PartIdCode',
|
||||
'RequestCode',
|
||||
'poultry__UserName',
|
||||
'poultry__FirstName',
|
||||
'poultry__LastName',
|
||||
'poultry__UnitName',
|
||||
'poultry__PartIdCode',
|
||||
'poultry__UnitId',
|
||||
]
|
||||
|
||||
|
||||
class TransportingChickenDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportingChickenDetail
|
||||
fields = [
|
||||
'DesUnitName',
|
||||
'DesPartIdCode',
|
||||
'SourceUnitPartIdCode',
|
||||
'SourceUnitName',
|
||||
'SourceCertId',
|
||||
'hatching__DesCertId',
|
||||
'hatching__LocationNameProvince',
|
||||
'hatching__LocationNameCity',
|
||||
'hatching__poultry__UserName',
|
||||
'hatching__poultry__FirstName',
|
||||
'hatching__poultry__LastName',
|
||||
'hatching__poultry__UnitName',
|
||||
'hatching__poultry__PartIdCode',
|
||||
'hatching__poultry__UnitId',
|
||||
'hatching__poultry__LocationIdProvince',
|
||||
'hatching__poultry__LocationIdCity'
|
||||
]
|
||||
|
||||
|
||||
class HatchingFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
'LocationNameCity',
|
||||
'LocationNameProvince',
|
||||
'HatchingAge',
|
||||
]
|
||||
|
||||
|
||||
class PoultryInfoFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Poultry
|
||||
fields = [
|
||||
'LocationNameProvince',
|
||||
'Province',
|
||||
'LocationNameCity',
|
||||
'City',
|
||||
'FirstName',
|
||||
'LastName',
|
||||
'Mobile',
|
||||
'SystemCode',
|
||||
'EpidemiologicCode',
|
||||
'PartIdCode',
|
||||
'UnitName',
|
||||
]
|
||||
|
||||
|
||||
class HatchingCalculationsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
|
||||
'LocationNameProvince',
|
||||
'LocationNameCity',
|
||||
]
|
||||
|
||||
|
||||
class TransportingDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportingDetail
|
||||
fields = [
|
||||
|
||||
'TrackingCode',
|
||||
'Province',
|
||||
'City',
|
||||
'DesPartIdCode',
|
||||
'Age',
|
||||
'hatching__poultry__FirstName',
|
||||
'hatching__poultry__PartIdCode',
|
||||
'hatching__RequestCode',
|
||||
'hatching__CityName',
|
||||
'hatching__ProvinceName',
|
||||
]
|
||||
|
||||
|
||||
class KillHouseFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = KillHouse
|
||||
fields = [
|
||||
'PartIdCode',
|
||||
'UnitName',
|
||||
'Province',
|
||||
'City',
|
||||
'ProvinceId'
|
||||
]
|
||||
|
||||
|
||||
class CustomHatchingsFilterSet(filters.FilterSet):
|
||||
city = filters.CharFilter(field_name='CityName', lookup_expr='icontains')
|
||||
province = filters.CharFilter(field_name='ProvinceName', lookup_expr='icontains')
|
||||
system_code = filters.CharFilter(field_name='SystemCode', lookup_expr='exact')
|
||||
|
||||
age = filters.NumberFilter(field_name='Age', lookup_expr='exact')
|
||||
age__gt = filters.NumberFilter(field_name='Age', lookup_expr='gt')
|
||||
age__gte = filters.NumberFilter(field_name='Age', lookup_expr='gte')
|
||||
age__lt = filters.NumberFilter(field_name='Age', lookup_expr='lt')
|
||||
age__lte = filters.NumberFilter(field_name='Age', lookup_expr='lte')
|
||||
|
||||
killing_age = filters.NumberFilter(field_name='KillingAve', lookup_expr='exact')
|
||||
killing_age__gt = filters.NumberFilter(field_name='KillingAve', lookup_expr='gt')
|
||||
killing_age__gte = filters.NumberFilter(field_name='KillingAve', lookup_expr='gte')
|
||||
killing_age__lt = filters.NumberFilter(field_name='KillingAve', lookup_expr='lt')
|
||||
killing_age__lte = filters.NumberFilter(field_name='KillingAve', lookup_expr='lte')
|
||||
|
||||
leftover__gt = filters.NumberFilter(field_name='LeftOver', lookup_expr='gt')
|
||||
leftover__gte = filters.NumberFilter(field_name='LeftOver', lookup_expr='gte')
|
||||
leftover__lt = filters.NumberFilter(field_name='LeftOver', lookup_expr='lt')
|
||||
leftover__lte = filters.NumberFilter(field_name='LeftOver', lookup_expr='lte')
|
||||
leftover__exact = filters.NumberFilter(field_name='LeftOver', lookup_expr='exact')
|
||||
|
||||
date1__date__gte = filters.DateFilter(method='filter_date_range')
|
||||
date2__date__lte = filters.DateFilter(method='filter_date_range')
|
||||
state = filters.CharFilter(method='filter_state')
|
||||
|
||||
class Meta:
|
||||
model = Hatching
|
||||
fields = [
|
||||
'city', 'province', 'system_code',
|
||||
'age', 'age__gt', 'age__gte', 'age__lt', 'age__lte',
|
||||
'killing_age', 'killing_age__gt', 'killing_age__gte', 'killing_age__lt', 'killing_age__lte',
|
||||
'leftover__gt', 'leftover__gte', 'leftover__lt', 'leftover__lte', 'leftover__exact',
|
||||
'date1__date__gte', 'date2__date__lte', 'state'
|
||||
]
|
||||
|
||||
def filter_date_range(self, queryset, name, value):
|
||||
date1 = self.data.get('date1__date__gte')
|
||||
date2 = self.data.get('date2__date__lte')
|
||||
if date1 and date2:
|
||||
try:
|
||||
date1 = datetime.datetime.strptime(str(date1), '%Y-%m-%d').date()
|
||||
date2 = datetime.datetime.strptime(str(date2), '%Y-%m-%d').date()
|
||||
return queryset.filter(Date__date__gte=date1, Date__date__lte=date2)
|
||||
except ValueError:
|
||||
return queryset
|
||||
return queryset
|
||||
|
||||
def filter_state(self, queryset, name, value):
|
||||
state = self.data.get('state')
|
||||
if state:
|
||||
if state == 'pending':
|
||||
queryset = queryset.filter(Age__lte=70)
|
||||
else:
|
||||
queryset = queryset.filter(Age__gt=70)
|
||||
return queryset
|
||||
|
||||
|
||||
class TransportingDetailCustomFilterSet(filters.FilterSet):
|
||||
unitname = filters.CharFilter(field_name='DesUnitName', lookup_expr='icontains')
|
||||
province = filters.CharFilter(field_name='Province', lookup_expr='icontains')
|
||||
city = filters.CharFilter(field_name='City', lookup_expr='icontains')
|
||||
|
||||
code = filters.CharFilter(field_name='DesPartIdCode', lookup_expr='exact')
|
||||
trackingstatus = filters.CharFilter(field_name='TrackingStatusDescription', lookup_expr='exact')
|
||||
|
||||
quantity__gt = filters.NumberFilter(field_name='GoodAmount', lookup_expr='gt')
|
||||
quantity__gte = filters.NumberFilter(field_name='GoodAmount', lookup_expr='gte')
|
||||
quantity__lt = filters.NumberFilter(field_name='GoodAmount', lookup_expr='lt')
|
||||
quantity__lte = filters.NumberFilter(field_name='GoodAmount', lookup_expr='lte')
|
||||
|
||||
age = filters.NumberFilter(field_name='Age', lookup_expr='exact')
|
||||
age__gt = filters.NumberFilter(field_name='Age', lookup_expr='gt')
|
||||
age__gte = filters.NumberFilter(field_name='Age', lookup_expr='gte')
|
||||
age__lt = filters.NumberFilter(field_name='Age', lookup_expr='lt')
|
||||
age__lte = filters.NumberFilter(field_name='Age', lookup_expr='lte')
|
||||
|
||||
date1__date__gte = filters.DateFilter(method='filter_date_range')
|
||||
date2__date__lte = filters.DateFilter(method='filter_date_range')
|
||||
poultry_unitname = filters.DateFilter(method='filter_poultry_unit_name')
|
||||
|
||||
class Meta:
|
||||
model = TransportingDetail
|
||||
fields = [
|
||||
'unitname',
|
||||
'province',
|
||||
'city',
|
||||
'code',
|
||||
'trackingstatus',
|
||||
'quantity__gt',
|
||||
'quantity__gte',
|
||||
'quantity__lt',
|
||||
'quantity__lte',
|
||||
'age',
|
||||
'age__gt',
|
||||
'age__gte',
|
||||
'age__lt',
|
||||
'age__lte',
|
||||
'date1__date__gte',
|
||||
'date2__date__lte',
|
||||
'poultry_unitname',
|
||||
]
|
||||
|
||||
def filter_date_range(self, queryset, name, value):
|
||||
date1 = self.data.get('date1__date__gte')
|
||||
date2 = self.data.get('date2__date__lte')
|
||||
if date1 and date2:
|
||||
try:
|
||||
date1 = datetime.datetime.strptime(str(date1), '%Y-%m-%d').date()
|
||||
date2 = datetime.datetime.strptime(str(date2), '%Y-%m-%d').date()
|
||||
return queryset.filter(Date__date__gte=date1, Date__date__lte=date2)
|
||||
except ValueError:
|
||||
return queryset
|
||||
return queryset
|
||||
|
||||
def filter_poultry_unit_name(self, queryset, name, value):
|
||||
return queryset.filter(poultry__UnitName__icontains=value)
|
||||
|
||||
|
||||
class TransportCarcassDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportCarcassDetail
|
||||
fields = [
|
||||
'tracking',
|
||||
'origin_province',
|
||||
'origin_city',
|
||||
'destination_province',
|
||||
'destination_city',
|
||||
'product',
|
||||
'owner']
|
||||
|
||||
|
||||
class DriverFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Driver
|
||||
fields = [
|
||||
'owner_name',
|
||||
'driver_name',
|
||||
'city',
|
||||
'province',
|
||||
]
|
||||
|
||||
|
||||
class GuildsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Guilds
|
||||
fields = [
|
||||
'name',
|
||||
'province',
|
||||
'city',
|
||||
'jihadi_code'
|
||||
]
|
||||
|
||||
|
||||
class AllProductsTransportFilterSet(filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = AllProductsTransport
|
||||
fields = [
|
||||
'record_id',
|
||||
'tracking',
|
||||
'product',
|
||||
'items',
|
||||
'origin_province',
|
||||
'origin_city',
|
||||
'destination_province',
|
||||
'destination_city',
|
||||
'owner',
|
||||
'driver_name',
|
||||
'car_tracking_code',
|
||||
'out',
|
||||
'quantity',
|
||||
'jihadi_destination',
|
||||
'jihadi_origin',
|
||||
|
||||
]
|
||||
157
app/helper.py
Normal file
157
app/helper.py
Normal file
@@ -0,0 +1,157 @@
|
||||
import re
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
|
||||
|
||||
from django.db.models import Q
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from rest_framework import status
|
||||
from rest_framework.decorators import api_view, permission_classes
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.response import Response
|
||||
|
||||
from app.cityandprovince import correct_province, correct_city, search_city_list, \
|
||||
search_province_list
|
||||
from app.models import TransportingDetail, Guilds, AllProductsTransport
|
||||
from app.serializers import TransportingDetailForUpdateSerializer, AllProductsTransportSerializer
|
||||
|
||||
|
||||
@api_view(["POST"])
|
||||
@permission_classes([AllowAny])
|
||||
@csrf_exempt
|
||||
def get_bar_info(request):
|
||||
kill_houses = request.data
|
||||
kill_houses = dict(kill_houses)['kill_house']
|
||||
bars = AllProductsTransport.objects.filter(trash=False, out=True, jihadi_destination__in=kill_houses,
|
||||
unloading='تخلیه شده.',product='مرغ زنده -جهت كشتار',hatching__isnull=False,
|
||||
date__gte='2025-12-25').order_by('-date')
|
||||
ser_data = AllProductsTransportSerializer(bars, many=True).data
|
||||
return Response(ser_data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@permission_classes([AllowAny])
|
||||
@csrf_exempt
|
||||
def test_city(request):
|
||||
excluded_provinces = search_province_list
|
||||
excluded_city = search_city_list
|
||||
# hatchings = Hatching.objects.filter(
|
||||
# ~Q(ProvinceName__in=excluded_provinces) | ~Q(CityName__in=excluded_city)
|
||||
# )
|
||||
transport = TransportingDetail.objects.filter(
|
||||
~Q(Province__in=excluded_provinces) | ~Q(City__in=excluded_city)).only('Province', 'City')
|
||||
# hatchings = Hatching.objects.filter(
|
||||
# Q(ProvinceName__contains='<27>') | Q( CityName__contains='<27>')
|
||||
# )
|
||||
l = 1
|
||||
for t in transport:
|
||||
print(l)
|
||||
if t.Province not in excluded_provinces:
|
||||
t.Province = correct_province(t.Province)
|
||||
t.save()
|
||||
if t.City not in excluded_city:
|
||||
t.CityName = correct_city(t.City, t.Province)
|
||||
t.save()
|
||||
l += 1
|
||||
# if hatching:
|
||||
|
||||
return Response('lo')
|
||||
|
||||
|
||||
class SSLAdapter(HTTPAdapter):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.context = create_urllib3_context()
|
||||
self.context.options |= 0x4 # OP_LEGACY_SERVER_CONNECT
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def init_poolmanager(self, *args, **kwargs):
|
||||
kwargs['ssl_context'] = self.context
|
||||
return super().init_poolmanager(*args, **kwargs)
|
||||
|
||||
def build_response(self, req, resp):
|
||||
resp = super().build_response(req, resp)
|
||||
return resp
|
||||
|
||||
|
||||
def check_quarantine_code(lst):
|
||||
result_code = []
|
||||
for code in lst:
|
||||
session = requests.Session()
|
||||
session.mount('https://', SSLAdapter())
|
||||
data = {'gid': str(code)}
|
||||
m = session.post('https://e.ivo.ir/Rahgiri/Gidprnt.aspx', data=data, verify=False,
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
|
||||
' (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'})
|
||||
context = BeautifulSoup(m.text, 'html.parser')
|
||||
table = context.find_all('table')
|
||||
if table[5:6]:
|
||||
row = context.find('div', align="right")
|
||||
if row:
|
||||
content = row.get_text(separator=" ", strip=True)
|
||||
date_match = re.search(r'تاريخ:(\d{4}/\d{2}/\d{2})', content)
|
||||
if date_match:
|
||||
for i in table[5:6]:
|
||||
row = i.find_all('tr')
|
||||
for r in row[1:2]:
|
||||
quantity = r.find('td')
|
||||
match = re.search(r'\d+', quantity.text)
|
||||
if match:
|
||||
result_code.append(code)
|
||||
return result_code
|
||||
|
||||
|
||||
def get_hatching_permit_code(code):
|
||||
result = {}
|
||||
|
||||
session = requests.Session()
|
||||
session.mount('https://', SSLAdapter())
|
||||
data = {'gid': str(code)}
|
||||
m = session.post(
|
||||
'https://e.ivo.ir/Rahgiri/Gidprnt.aspx',
|
||||
data=data,
|
||||
verify=False,
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
|
||||
' (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
|
||||
},
|
||||
timeout=20,
|
||||
)
|
||||
text = m.text
|
||||
permit = None
|
||||
match = re.search(r'کد\s*مجوز\s*جوجه\s*ریزی\s*[::]\s*([0-9۰-۹]+)', text)
|
||||
if match:
|
||||
raw_permit = match.group(1)
|
||||
trans = str.maketrans('۰۱۲۳۴۵۶۷۸۹', '0123456789')
|
||||
permit = raw_permit.translate(trans)
|
||||
if permit:
|
||||
result[str(code)] = permit
|
||||
return result
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@permission_classes([AllowAny])
|
||||
@csrf_exempt
|
||||
def api_get_hatching_permit_code(request):
|
||||
code = request.GET.get('code')
|
||||
if not code:
|
||||
return Response({'detail': 'code query param is required'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
data = get_hatching_permit_code(code)
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
return Response({'detail': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
|
||||
def create_guild(**info):
|
||||
|
||||
Guilds(
|
||||
)
|
||||
|
||||
|
||||
class SSLAdapter(HTTPAdapter):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.context = create_urllib3_context()
|
||||
self.context.options |= 0x4 # OP_LEGACY_SERVER_CONNECT
|
||||
super().__init__(*args, **kwargs)
|
||||
327
app/helper_excel.py
Normal file
327
app/helper_excel.py
Normal file
@@ -0,0 +1,327 @@
|
||||
from io import BytesIO
|
||||
|
||||
import jdatetime
|
||||
import openpyxl
|
||||
from django.http import HttpResponse
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.chart import LineChart, Reference, BarChart
|
||||
from openpyxl.styles import PatternFill, Alignment, Font
|
||||
from openpyxl.utils import get_column_letter
|
||||
|
||||
correction_dict = {
|
||||
'<EFBFBD><EFBFBD>ربراکرز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آ<EFBFBD><EFBFBD>براکرز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آر<EFBFBD><EFBFBD>راکرز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آرب<EFBFBD><EFBFBD>اکرز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربر<EFBFBD><EFBFBD>کرز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربرا<EFBFBD><EFBFBD>رز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراک<EFBFBD><EFBFBD>ز (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکر<EFBFBD><EFBFBD> (آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز<EFBFBD><EFBFBD> آپلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (<28><>پلاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (آ<><D8A2>لاس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (آپ<D8A2><D9BE>اس)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (آپل<D9BE><D984>س)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (آپلا<D984><D8A7>)': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز (آپلاس<D8A7><D8B3>': 'آربراکرز (آپلاس)',
|
||||
'آربراکرز<EFBFBD><EFBFBD>(آپلاس)': 'آربراکرز (آپلاس)',
|
||||
|
||||
'<EFBFBD><EFBFBD>اس': 'راس',
|
||||
'ر<EFBFBD><EFBFBD>س': 'راس',
|
||||
'را<EFBFBD><EFBFBD>': 'راس',
|
||||
|
||||
'<EFBFBD><EFBFBD>رین': 'آرین',
|
||||
'آ<EFBFBD><EFBFBD>ین': 'آرین',
|
||||
'آر<EFBFBD><EFBFBD>ن': 'آرین',
|
||||
'آری<EFBFBD><EFBFBD>': 'آرین',
|
||||
|
||||
'<EFBFBD><EFBFBD>ندین ریور': 'ایندین ریور',
|
||||
'ای<EFBFBD><EFBFBD>دین ریور': 'ایندین ریور',
|
||||
'این<EFBFBD><EFBFBD>ین ریور': 'ایندین ریور',
|
||||
'ایند<EFBFBD><EFBFBD>ن ریور': 'ایندین ریور',
|
||||
'ایندی<EFBFBD><EFBFBD> ریور': 'ایندین ریور',
|
||||
'ایندین<EFBFBD><EFBFBD>ریور': 'ایندین ریور',
|
||||
'ایندین <20><>یور': 'ایندین ریور',
|
||||
'ایندین ر<><D8B1>ور': 'ایندین ریور',
|
||||
'ایندین ری<D8B1><DB8C>ر': 'ایندین ریور',
|
||||
'ایندین ریو<DB8C><D988>': 'ایندین ریور',
|
||||
|
||||
'<EFBFBD><EFBFBD>اب': 'کاب',
|
||||
'ک<EFBFBD><EFBFBD>ب': 'کاب',
|
||||
'کا<EFBFBD><EFBFBD>': 'کاب'
|
||||
}
|
||||
|
||||
blue_fill = PatternFill(start_color="277358", fill_type="solid")
|
||||
Alignment_CELL = Alignment(horizontal='center', vertical='center', wrap_text=True)
|
||||
red_font = Font(color="C00000", bold=True)
|
||||
GREEN_CELL = PatternFill(start_color="00B050", fill_type="solid")
|
||||
RED_CELL = PatternFill(start_color="FCDFDC", fill_type="solid")
|
||||
YELLOW_CELL = PatternFill(start_color="FFFF00", fill_type="solid")
|
||||
ORANGE_CELL = PatternFill(start_color="FFC000", fill_type="solid")
|
||||
BLUE_CELL = PatternFill(start_color="538DD5", fill_type="solid")
|
||||
LIGHT_GREEN_CELL = PatternFill(start_color="92D050", fill_type="solid")
|
||||
VERY_LIGHT_GREEN_CELL = PatternFill(start_color="5AFC56", fill_type="solid")
|
||||
|
||||
|
||||
|
||||
|
||||
def shamsi_date(date,in_value=None):
|
||||
if in_value:
|
||||
sh_date=jdatetime.date.fromgregorian(
|
||||
year=date.year,
|
||||
month=date.month,
|
||||
day=date.day
|
||||
)
|
||||
else:
|
||||
gh_date = jdatetime.date.fromgregorian(
|
||||
year=date.year,
|
||||
month=date.month,
|
||||
day=date.day
|
||||
).strftime('%Y-%m-%d')
|
||||
reversed_date = reversed(gh_date.split("-"))
|
||||
separate = "-"
|
||||
sh_date = separate.join(reversed_date)
|
||||
return sh_date
|
||||
|
||||
|
||||
def create_header(worksheet, list, num, row, height=None, width=None,color=None,text_color=None,border_style=None):
|
||||
for col_num, option in enumerate(list, num):
|
||||
cell = worksheet.cell(row=row, column=col_num, value=option)
|
||||
col_letter = get_column_letter(col_num)
|
||||
cell.alignment = Alignment_CELL
|
||||
if color is not None:
|
||||
if color == 'green':
|
||||
cell.fill=GREEN_CELL
|
||||
elif color == 'orange':
|
||||
cell.fill=ORANGE_CELL
|
||||
elif color == 'blue':
|
||||
cell.fill=BLUE_CELL
|
||||
else:
|
||||
cell.fill = PatternFill(start_color=color, fill_type="solid")
|
||||
else:
|
||||
cell.fill = blue_fill
|
||||
if text_color is not None:
|
||||
cell.font = Font(size=9, bold=True, color=text_color)
|
||||
else:
|
||||
cell.font = Font(size=9, bold=True, color='D9FFFFFF')
|
||||
if height is not None:
|
||||
worksheet.row_dimensions[row].height = height
|
||||
if width is not None:
|
||||
worksheet.column_dimensions[col_letter].width = width
|
||||
if border_style is not None:
|
||||
cell.border = openpyxl.styles.Border(
|
||||
left=openpyxl.styles.Side(style=border_style),
|
||||
right=openpyxl.styles.Side(style=border_style),
|
||||
top=openpyxl.styles.Side(style=border_style),
|
||||
bottom=openpyxl.styles.Side(style=border_style)
|
||||
)
|
||||
|
||||
|
||||
def create_header_freez(worksheet, list, num, row, header_row, height=None, width=None,len_with=None,different_cell=None):
|
||||
for col_num, option in enumerate(list, num):
|
||||
col_letter = get_column_letter(col_num)
|
||||
cell = worksheet.cell(row=row, column=col_num, value=option)
|
||||
cell.alignment = Alignment_CELL
|
||||
cell.fill = blue_fill
|
||||
cell.font = Font(size=10, bold=True, color='D9FFFFFF')
|
||||
|
||||
if height is not None:
|
||||
worksheet.row_dimensions[row].height = height
|
||||
if len(option) > worksheet.column_dimensions[col_letter].width:
|
||||
worksheet.column_dimensions[col_letter].width = len(option) + 2
|
||||
if width is not None:
|
||||
worksheet.column_dimensions[col_letter].width = width
|
||||
if len_with is not None:
|
||||
if len(option) > worksheet.column_dimensions[col_letter].width:
|
||||
worksheet.column_dimensions[col_letter].width = len(option) + 3
|
||||
if different_cell is not None:
|
||||
if option == different_cell:
|
||||
cell.fill = PatternFill(start_color="C00000", fill_type="solid")
|
||||
worksheet.freeze_panes = worksheet[f'A{header_row}']
|
||||
max_col = worksheet.max_column
|
||||
range_str = f'A{header_row - 1}:{get_column_letter(max_col)}{worksheet.max_row}'
|
||||
worksheet.auto_filter.ref = range_str
|
||||
|
||||
|
||||
def excel_description(worksheet, row1, description, size=None, color=None,my_color=None, row2=None):
|
||||
worksheet[row1] = description
|
||||
worksheet[row1].alignment = Alignment_CELL
|
||||
if size is not None:
|
||||
worksheet[row1].font = Font(size=size)
|
||||
if color is not None:
|
||||
worksheet[row1].font = red_font
|
||||
if my_color is not None:
|
||||
worksheet[row1].font = PatternFill(start_color=my_color, fill_type="solid")
|
||||
|
||||
if row2 is not None:
|
||||
merge_range = f'{row1}:{row2}'
|
||||
worksheet.merge_cells(merge_range)
|
||||
|
||||
|
||||
def create_value(worksheet, list, l, num, border_style=None, m=None, height=None, color=None, width=None,
|
||||
different_cell=None, different_value=None, item_num=None, item_color=None):
|
||||
|
||||
color_dict = {
|
||||
'green': GREEN_CELL,
|
||||
'yellow': YELLOW_CELL,
|
||||
'blue': BLUE_CELL,
|
||||
'red': RED_CELL,
|
||||
'light_green': LIGHT_GREEN_CELL,
|
||||
'very_light_green': VERY_LIGHT_GREEN_CELL
|
||||
}
|
||||
|
||||
for item in range(len(list)):
|
||||
cell = worksheet.cell(row=l, column=item + num, value=list[item])
|
||||
cell.alignment = Alignment_CELL
|
||||
|
||||
if border_style:
|
||||
cell.border = openpyxl.styles.Border(
|
||||
left=openpyxl.styles.Side(style=border_style),
|
||||
right=openpyxl.styles.Side(style=border_style),
|
||||
top=openpyxl.styles.Side(style=border_style),
|
||||
bottom=openpyxl.styles.Side(style=border_style)
|
||||
)
|
||||
|
||||
value = list[item]
|
||||
if isinstance(value, (int, float)) and value != 0:
|
||||
cell.number_format = '#,###'
|
||||
else:
|
||||
cell.value = value
|
||||
|
||||
cell.font = Font(size=10, bold=True)
|
||||
|
||||
if m is not None and m % 2 != 0:
|
||||
cell.fill = PatternFill(start_color="D6F6FE", fill_type="solid")
|
||||
|
||||
if height is not None:
|
||||
worksheet.row_dimensions[l + 1].height = height
|
||||
|
||||
if item_num is not None and item == item_num:
|
||||
if item_color:
|
||||
cell.fill = item_color
|
||||
elif color in color_dict:
|
||||
cell.fill = color_dict[color]
|
||||
|
||||
if different_cell is not None and list[different_cell] == different_value:
|
||||
cell.fill = RED_CELL
|
||||
|
||||
if width is not None:
|
||||
worksheet.column_dimensions[openpyxl.utils.get_column_letter(item + num)].width = width
|
||||
|
||||
def merge_cells(worksheet, l, s, cell1=None, cell2=None, lst=None):
|
||||
if lst is not None:
|
||||
for col in lst:
|
||||
rng = f'{col}{l}:{col}{l + s}'
|
||||
worksheet.merge_cells(rng)
|
||||
worksheet[col + f'{l}'].alignment = Alignment_CELL
|
||||
else:
|
||||
for col in range(ord(f'{cell1}'), ord(f'{cell2}') + 1):
|
||||
rng = f'{chr(col)}{l}:{chr(col)}{l + s}'
|
||||
worksheet.merge_cells(rng)
|
||||
worksheet[chr(col) + f'{l}'].alignment = Alignment_CELL
|
||||
|
||||
def add_header(worksheet):
|
||||
worksheet.oddHeader.center.text = "سامانه رصدیار"
|
||||
worksheet.oddHeader.center.size = 14 # تنظیم اندازه فونت
|
||||
worksheet.oddHeader.center.font = "Arial,Bold" # تنظیم فونت و ضخامت
|
||||
|
||||
# همچنین میتوانید از هدرهای چپ و راست هم استفاده کنید
|
||||
# worksheet.oddHeader.right.text = f"تاریخ: {shamsi_now_date}"
|
||||
|
||||
def cell_color_changer(worksheet, row, start_index, end_index, custom_color):
|
||||
for item in range(start_index, end_index):
|
||||
cell = worksheet.cell(row=row, column=item)
|
||||
cell.fill = PatternFill(start_color=custom_color, fill_type="solid")
|
||||
|
||||
|
||||
def start_excel():
|
||||
output = BytesIO()
|
||||
workbook = Workbook()
|
||||
worksheet = workbook.active
|
||||
worksheet.sheet_view.rightToLeft = True
|
||||
worksheet.insert_rows(1)
|
||||
return workbook,worksheet,output
|
||||
|
||||
def close_excel(name):
|
||||
workbook,worksheet,output=start_excel()
|
||||
workbook.save(output)
|
||||
output.seek(0)
|
||||
|
||||
response = HttpResponse(
|
||||
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
|
||||
response[
|
||||
'Content-Disposition'] = f'attachment; filename="{name}.xlsx"'.encode(
|
||||
'utf-8')
|
||||
response.write(output.getvalue())
|
||||
return response
|
||||
|
||||
|
||||
|
||||
def add_chart(
|
||||
worksheet,
|
||||
chart_type,
|
||||
data_columns,
|
||||
category_column,
|
||||
start_row,
|
||||
end_row,
|
||||
chart_position,
|
||||
chart_title,
|
||||
x_axis_title,
|
||||
y_axis_title,
|
||||
chart_width=25, # عرض نمودار پیشفرض (واحد: cm)
|
||||
chart_height=15
|
||||
):
|
||||
"""
|
||||
افزودن نمودار به صفحه اکسل.
|
||||
|
||||
ورودی:
|
||||
worksheet (openpyxl.Worksheet): صفحه اکسل.
|
||||
chart_type (str): نوع نمودار ("line" یا "bar").
|
||||
data_columns (list): لیستی از ستونهای داده.
|
||||
category_column (int): ستون دستهبندیها.
|
||||
start_row (int): ردیف شروع دادهها.
|
||||
end_row (int): ردیف پایان دادهها.
|
||||
chart_position (str): محل قرار گرفتن نمودار.
|
||||
chart_title (str): عنوان نمودار.
|
||||
x_axis_title (str): عنوان محور X.
|
||||
y_axis_title (str): عنوان محور Y.
|
||||
chart_width (float): عرض نمودار (واحد: cm).
|
||||
chart_height (float): ارتفاع نمودار (واحد: cm).
|
||||
"""
|
||||
|
||||
if chart_type == 'line':
|
||||
chart = LineChart()
|
||||
chart.style = 20
|
||||
elif chart_type == 'bar':
|
||||
chart = BarChart()
|
||||
else:
|
||||
raise ValueError("chart_type باید 'line' یا 'bar' باشد.")
|
||||
|
||||
chart.title = chart_title
|
||||
chart.y_axis.title = y_axis_title
|
||||
chart.x_axis.title = x_axis_title
|
||||
chart.width = chart_width
|
||||
chart.height = chart_height
|
||||
|
||||
categories = Reference(worksheet, min_col=category_column, min_row=start_row, max_row=end_row)
|
||||
data = Reference(worksheet, min_col=data_columns, min_row=start_row - 1, max_row=end_row)
|
||||
chart.add_data(data, titles_from_data=True)
|
||||
chart.set_categories(categories)
|
||||
for series in chart.series:
|
||||
series.graphicalProperties.line.solidFill = "277358"
|
||||
series.graphicalProperties.line.width = 30000
|
||||
|
||||
worksheet.add_chart(chart, chart_position)
|
||||
#example
|
||||
# add_chart(
|
||||
# worksheet=worksheet,
|
||||
# chart_type='line',
|
||||
# data_columns=7, # ستون وزن وارد شده
|
||||
# category_column=2, # ستون نام سردخانهها
|
||||
# start_row=7,
|
||||
# end_row=l + 1,
|
||||
# chart_position="A12",
|
||||
# chart_title="نمودار تغییرات وزن در سردخانهها",
|
||||
# x_axis_title="سردخانهها",
|
||||
# y_axis_title="وزن (کیلوگرم)"
|
||||
# )
|
||||
138
app/migrations/0001_initial.py
Normal file
138
app/migrations/0001_initial.py
Normal file
@@ -0,0 +1,138 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-26 11:13
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Poultry',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('UserName', models.CharField(max_length=200, null=True)),
|
||||
('Password', models.CharField(max_length=200, null=True)),
|
||||
('FirstName', models.CharField(max_length=200, null=True)),
|
||||
('LastName', models.CharField(max_length=200, null=True)),
|
||||
('UserGroupName', models.CharField(max_length=200, null=True)),
|
||||
('UserRoleName', models.CharField(max_length=200, null=True)),
|
||||
('UserGroupId', models.CharField(max_length=200, null=True)),
|
||||
('UserRoleId', models.CharField(max_length=200, null=True)),
|
||||
('Mobile', models.CharField(max_length=200, null=True)),
|
||||
('Email', models.CharField(max_length=200, null=True)),
|
||||
('UserIsActive', models.BooleanField(null=True)),
|
||||
('UserIsActiveDescription', models.CharField(max_length=200, null=True)),
|
||||
('RegDate', models.CharField(max_length=200, null=True)),
|
||||
('RegDateShamsi', models.CharField(max_length=200, null=True)),
|
||||
('RegDateShamsiWithTime', models.CharField(max_length=200, null=True)),
|
||||
('RegDateShamsiOnlyTime', models.CharField(max_length=200, null=True)),
|
||||
('StringId', models.CharField(max_length=200, null=True)),
|
||||
('IsPersisted', models.CharField(max_length=200, null=True)),
|
||||
('AllowInsert', models.CharField(max_length=200, null=True)),
|
||||
('AllowUpdate', models.CharField(max_length=200, null=True)),
|
||||
('ModalCss', models.CharField(max_length=200, null=True)),
|
||||
('GridContainerParametersModel', models.CharField(max_length=200, null=True)),
|
||||
('MenuUserAccess', models.CharField(max_length=200, null=True)),
|
||||
('MenuUserAccessId', models.CharField(max_length=200, null=True)),
|
||||
('LogTableName', models.CharField(max_length=200, null=True)),
|
||||
('LogTableAlias', models.CharField(max_length=200, null=True)),
|
||||
('PageTitle', models.CharField(max_length=200, null=True)),
|
||||
('UnitName', models.CharField(max_length=200, null=True)),
|
||||
('SystemCode', models.CharField(max_length=200, null=True)),
|
||||
('TrackingCode', models.CharField(max_length=200, null=True)),
|
||||
('EpidemiologicCode', models.CharField(max_length=200, null=True)),
|
||||
('PartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('PostalCode', models.CharField(max_length=200, null=True)),
|
||||
('UnitId', models.CharField(max_length=200, null=True)),
|
||||
('UnitTypeId', models.CharField(max_length=200, null=True)),
|
||||
('UnitTypeName', models.CharField(max_length=200, null=True)),
|
||||
('LocationIdProvince', models.CharField(max_length=200, null=True)),
|
||||
('LocationIdCity', models.CharField(max_length=200, null=True)),
|
||||
('UnitIsActive', models.CharField(max_length=200, null=True)),
|
||||
('UnitIsActiveDescription', models.CharField(max_length=200, null=True)),
|
||||
('PId', models.CharField(max_length=200, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PoultryHatching',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('DesCertId', models.CharField(max_length=200, null=True)),
|
||||
('UnitId', models.CharField(max_length=200, null=True)),
|
||||
('BroilerFlockRequestId', models.CharField(max_length=200, null=True)),
|
||||
('RequestCode', models.CharField(max_length=200, null=True)),
|
||||
('StartDate', models.CharField(max_length=200, null=True)),
|
||||
('StartDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('EndDate', models.CharField(max_length=200, null=True)),
|
||||
('EndDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('HatchingDate', models.CharField(max_length=200, null=True)),
|
||||
('HatchingDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('MaxHatchingDate', models.CharField(max_length=200, null=True)),
|
||||
('MaxHatchingDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('HatchingCount', models.CharField(max_length=200, null=True)),
|
||||
('HatchingCountInBargiri', models.CharField(max_length=200, null=True)),
|
||||
('HatchingCountInTakhlie', models.CharField(max_length=200, null=True)),
|
||||
('TrackingCount', models.CharField(max_length=200, null=True)),
|
||||
('TrackingBargiriCount', models.CharField(max_length=200, null=True)),
|
||||
('PercentHamlToMojavez', models.CharField(max_length=200, null=True)),
|
||||
('PercentTakhlieToBargiri', models.CharField(max_length=200, null=True)),
|
||||
('FlockAgeDay', models.CharField(max_length=200, null=True)),
|
||||
('PartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('UnitName', models.CharField(max_length=200, null=True)),
|
||||
('PostalCode', models.CharField(max_length=200, null=True)),
|
||||
('EpidemiologicCode', models.CharField(max_length=200, null=True)),
|
||||
('CapacityFemale', models.CharField(max_length=200, null=True)),
|
||||
('PersonFullName', models.CharField(max_length=200, null=True)),
|
||||
('LocationIdProvince', models.CharField(max_length=200, null=True)),
|
||||
('LocationNameProvince', models.CharField(max_length=200, null=True)),
|
||||
('LocationIdCity', models.CharField(max_length=200, null=True)),
|
||||
('LocationNameCity', models.CharField(max_length=200, null=True)),
|
||||
('Mobile', models.CharField(max_length=200, null=True)),
|
||||
('HamlMorghMinDate', models.CharField(max_length=200, null=True)),
|
||||
('HamlMorghTotalCount', models.CharField(max_length=200, null=True)),
|
||||
('HamlMorghTakhlieCount', models.CharField(max_length=200, null=True)),
|
||||
('EvacuationCount', models.CharField(max_length=200, null=True)),
|
||||
('EvacuationCount_1', models.CharField(max_length=200, null=True)),
|
||||
('EvacuationCount_2', models.CharField(max_length=200, null=True)),
|
||||
('EvacuationCount_3', models.CharField(max_length=200, null=True)),
|
||||
('BaseHatchingCount', models.CharField(max_length=200, null=True)),
|
||||
('PercentMorghToJoojeTotal', models.CharField(max_length=200, null=True)),
|
||||
('PercentMorghToJoojeTakhlie', models.CharField(max_length=200, null=True)),
|
||||
('PercentMorghToJoojeTakhlieWithEvacutaion', models.CharField(max_length=200, null=True)),
|
||||
('PercentNotDeliverd', models.CharField(max_length=200, null=True)),
|
||||
('PercentDeliveredForSP', models.CharField(max_length=200, null=True)),
|
||||
('PercentDeliveredForSPNoExclude', models.CharField(max_length=200, null=True)),
|
||||
('PercentDeliveredWithoutEvac', models.CharField(max_length=200, null=True)),
|
||||
('DiffHamlThanTakhlieCount', models.CharField(max_length=200, null=True)),
|
||||
('DiffTakhlieThanHamlCount', models.CharField(max_length=200, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
('poultry', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='hatching_poultry', to='app.poultry')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
29
app/migrations/0002_remove_poultry_allowinsert_and_more.py
Normal file
29
app/migrations/0002_remove_poultry_allowinsert_and_more.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-26 11:46
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='poultry',
|
||||
name='AllowInsert',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultry',
|
||||
name='AllowUpdate',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultry',
|
||||
name='IsPersisted',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultry',
|
||||
name='UnitIsActive',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-26 11:47
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0002_remove_poultry_allowinsert_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='AllowInsert',
|
||||
field=models.BooleanField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='AllowUpdate',
|
||||
field=models.BooleanField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='IsPersisted',
|
||||
field=models.BooleanField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='UnitIsActive',
|
||||
field=models.BooleanField(null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 08:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0003_poultry_allowinsert_poultry_allowupdate_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='Date',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingAge',
|
||||
field=models.IntegerField(default=1),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,117 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 09:04
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0004_poultryhatching_date_poultryhatching_hatchingage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='BaseHatchingCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='BroilerFlockRequestId',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='CapacityFemale',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='DiffHamlThanTakhlieCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='DiffTakhlieThanHamlCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_1',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_2',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_3',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='FlockAgeDay',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='HamlMorghTakhlieCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='HamlMorghTotalCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCountInBargiri',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCountInTakhlie',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredForSP',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredForSPNoExclude',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredWithoutEvac',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentHamlToMojavez',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTakhlie',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTakhlieWithEvacutaion',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTotal',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentNotDeliverd',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentTakhlieToBargiri',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='TrackingBargiriCount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poultryhatching',
|
||||
name='TrackingCount',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,143 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 09:07
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0005_remove_poultryhatching_basehatchingcount_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='BaseHatchingCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='BroilerFlockRequestId',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='CapacityFemale',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='DiffHamlThanTakhlieCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='DiffTakhlieThanHamlCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_1',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_2',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='EvacuationCount_3',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='FlockAgeDay',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HamlMorghTakhlieCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HamlMorghTotalCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCountInBargiri',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='HatchingCountInTakhlie',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredForSP',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredForSPNoExclude',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentDeliveredWithoutEvac',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentHamlToMojavez',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTakhlie',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTakhlieWithEvacutaion',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentMorghToJoojeTotal',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentNotDeliverd',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PercentTakhlieToBargiri',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='TrackingBargiriCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='TrackingCount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
]
|
||||
34
app/migrations/0007_transportingchickendetail.py
Normal file
34
app/migrations/0007_transportingchickendetail.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 11:07
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0006_poultryhatching_basehatchingcount_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TransportingChickenDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('PedigreeName', models.CharField(max_length=200, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('hatching', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transporting_hatching', to='app.poultryhatching')),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
118
app/migrations/0008_transportingchickendetail_certid_and_more.py
Normal file
118
app/migrations/0008_transportingchickendetail_certid_and_more.py
Normal file
@@ -0,0 +1,118 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 11:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0007_transportingchickendetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='CertId',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='DesCertId',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='GoodAmount',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='GoodCode',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='GoodName',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='IssueDate',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='IssueDatePersian',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='ParentPartIdCode',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='ParentUnitName',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='ResideDate',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='ResideDatePersian',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='SourceCertId',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='SourcePartIdCode',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='SourceUnitName',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='TakhlieDate',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='TakhlieDatePersian',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='TrackingCode',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='TrackingStatus',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='TrackingStatusDescription',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='issue_date',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='reside_date',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-27 12:21
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0008_transportingchickendetail_certid_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='BroilerFlockRequestId',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='DesPartIdCode',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='DesUnitName',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='HealthPermitId',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='SourceUnitPartIdCode',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.2.19 on 2025-02-28 10:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("app", "0009_transportingchickendetail_broilerflockrequestid_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="transportingchickendetail",
|
||||
name="Province",
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="transportingchickendetail",
|
||||
name="ProvinceId",
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0011_poultryhatching_pedigreename.py
Normal file
18
app/migrations/0011_poultryhatching_pedigreename.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.19 on 2025-03-01 11:11
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0010_transportingchickendetail_province_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='PedigreeName',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0012_transportingchickendetail_age.py
Normal file
18
app/migrations/0012_transportingchickendetail_age.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-03-03 12:07
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0011_poultryhatching_pedigreename'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportingchickendetail',
|
||||
name='age',
|
||||
field=models.IntegerField(default=1),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0013_poultryhatching_leftover.py
Normal file
18
app/migrations/0013_poultryhatching_leftover.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.19 on 2025-03-09 11:52
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0012_transportingchickendetail_age'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultryhatching',
|
||||
name='LeftOver',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
]
|
||||
23
app/migrations/0014_poultry_locationnamecity_and_more.py
Normal file
23
app/migrations/0014_poultry_locationnamecity_and_more.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.19 on 2025-03-11 12:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0013_poultryhatching_leftover'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='LocationNameCity',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='LocationNameProvince',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
]
|
||||
155
app/migrations/0015_hatching_transportingdetail.py
Normal file
155
app/migrations/0015_hatching_transportingdetail.py
Normal file
@@ -0,0 +1,155 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-05 13:43
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0014_poultry_locationnamecity_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Hatching',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('BroilerFlockRequestId', models.IntegerField(blank=True, null=True)),
|
||||
('InsertDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('LastChangeStatusDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('LastChangeStatusDateShamsi', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('FlockRequestUnitName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PedigreeName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('StatusId', models.IntegerField(blank=True, null=True)),
|
||||
('Status', models.IntegerField(blank=True, null=True)),
|
||||
('StatusName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PedigreeType', models.IntegerField(blank=True, null=True)),
|
||||
('BroilerPedigreeTypeName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('StatusColor', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SystemRevocationDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RemindDays', models.IntegerField(blank=True, null=True)),
|
||||
('PartyCount', models.IntegerField(blank=True, null=True)),
|
||||
('GoodCount', models.IntegerField(blank=True, null=True)),
|
||||
('ShowButtons', models.BooleanField(blank=True, null=True)),
|
||||
('HasSync', models.BooleanField(blank=True, null=True)),
|
||||
('BroilerFlockRequestExpireStatus', models.IntegerField(blank=True, null=True)),
|
||||
('IdWithFormat', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ProvinceName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('CityName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('Address', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('UnitTel', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('UnitPostalCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('UnitName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SystemCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('CapacityFemale', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('EpidemiologicCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RequestCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RequestDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RequestDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RequestCount', models.IntegerField(blank=True, null=True)),
|
||||
('DeliverDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('DeliverDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('UnionName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PersonTypeId', models.IntegerField(blank=True, null=True)),
|
||||
('PersonType', models.IntegerField(blank=True, null=True)),
|
||||
('PersonTypeName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PersonFullName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('NationalCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('InteractType', models.IntegerField(blank=True, null=True)),
|
||||
('InteractTypeName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('UnionTypeId', models.IntegerField(blank=True, null=True)),
|
||||
('UnionTypeName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SendDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SendDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ChickCountSum', models.IntegerField(blank=True, null=True)),
|
||||
('CalculatedDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('CalculatedDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PartIdCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('CertId', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('StartDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('StartDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('EndDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('EndDateFa', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RemainCredit', models.IntegerField(blank=True, null=True)),
|
||||
('StrRemainCredit', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ShowStatus', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ValidStatus', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ValidStatusName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RegDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RegDateShamsi', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RegDateShamsiWithTime', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('RegDateShamsiOnlyTime', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('HatchingId', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('StringId', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('IsPersisted', models.BooleanField(blank=True, null=True)),
|
||||
('AllowInsert', models.BooleanField(blank=True, null=True)),
|
||||
('AllowUpdate', models.BooleanField(blank=True, null=True)),
|
||||
('ModalCss', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('GridContainerParametersModel', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('MenuUserAccess', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('MenuUserAccessId', models.IntegerField(blank=True, null=True)),
|
||||
('LogTableName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('LogTableAlias', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('PageTitle', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('Evacuation', models.IntegerField(default=0)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
('poultry', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='poultry_hatching_poultry', to='app.poultry')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TransportingDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('BroilerFlockRequestId', models.IntegerField(blank=True, null=True)),
|
||||
('TrackingCode', models.CharField(max_length=200, null=True)),
|
||||
('DesCertId', models.CharField(max_length=200, null=True)),
|
||||
('IssueDate', models.CharField(max_length=200, null=True)),
|
||||
('IssueDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('issue_date', models.DateTimeField(null=True)),
|
||||
('GoodCode', models.IntegerField(null=True)),
|
||||
('GoodName', models.CharField(max_length=200, null=True)),
|
||||
('GoodAmount', models.IntegerField(null=True)),
|
||||
('TrackingStatus', models.IntegerField(null=True)),
|
||||
('TrackingStatusDescription', models.CharField(max_length=200, null=True)),
|
||||
('TakhlieDate', models.CharField(max_length=200, null=True)),
|
||||
('TakhlieDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('SourcePartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('SourceUnitPartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('SourceUnitName', models.CharField(max_length=200, null=True)),
|
||||
('SourceCertId', models.CharField(max_length=200, null=True)),
|
||||
('ParentPartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('ParentUnitName', models.CharField(max_length=200, null=True)),
|
||||
('CertId', models.CharField(max_length=200, null=True)),
|
||||
('ResideDate', models.CharField(max_length=200, null=True)),
|
||||
('ResideDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('PedigreeName', models.CharField(max_length=200, null=True)),
|
||||
('DesUnitName', models.CharField(max_length=200, null=True)),
|
||||
('DesPartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('HealthPermitId', models.IntegerField(null=True)),
|
||||
('ProvinceId', models.CharField(max_length=200, null=True)),
|
||||
('Province', models.CharField(max_length=200, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('hatching', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transport_hatching', to='app.hatching')),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,68 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-06 07:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0015_hatching_transportingdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='transportingdetail',
|
||||
name='CertId',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='transportingdetail',
|
||||
name='ParentPartIdCode',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='transportingdetail',
|
||||
name='ParentUnitName',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='transportingdetail',
|
||||
name='ProvinceId',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='transportingdetail',
|
||||
name='issue_date',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='Age',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='Date',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='LeftOver',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='Period',
|
||||
field=models.IntegerField(default=1),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingdetail',
|
||||
name='Age',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingdetail',
|
||||
name='City',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingdetail',
|
||||
name='Date',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0017_hatching_archivedate.py
Normal file
18
app/migrations/0017_hatching_archivedate.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-06 10:43
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0016_remove_transportingdetail_certid_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='ArchiveDate',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
]
|
||||
17
app/migrations/0018_remove_hatching_capacityfemale.py
Normal file
17
app/migrations/0018_remove_hatching_capacityfemale.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-06 11:59
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0017_hatching_archivedate'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='hatching',
|
||||
name='CapacityFemale',
|
||||
),
|
||||
]
|
||||
18
app/migrations/0019_hatching_capacityfemale.py
Normal file
18
app/migrations/0019_hatching_capacityfemale.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-06 11:59
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0018_remove_hatching_capacityfemale'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='CapacityFemale',
|
||||
field=models.IntegerField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
36
app/migrations/0020_killhouse.py
Normal file
36
app/migrations/0020_killhouse.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 3.2.13 on 2025-04-07 05:00
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0019_hatching_capacityfemale'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='KillHouse',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('PartIdCode', models.CharField(blank=True, max_length=250, null=True)),
|
||||
('UnitName', models.CharField(blank=True, max_length=250, null=True)),
|
||||
('Province', models.CharField(blank=True, max_length=250, null=True)),
|
||||
('City', models.CharField(blank=True, max_length=250, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='killhouse_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='killhouse_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-07 06:21
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0020_killhouse'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='KillingAve',
|
||||
field=models.IntegerField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportingdetail',
|
||||
name='Out',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='killhouse',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='killhouse',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0022_alter_hatching_killingave.py
Normal file
18
app/migrations/0022_alter_hatching_killingave.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-07 06:44
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0021_hatching_killingave_transportingdetail_out_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='hatching',
|
||||
name='KillingAve',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
23
app/migrations/0023_killhouse_cityid_killhouse_provinceid.py
Normal file
23
app/migrations/0023_killhouse_cityid_killhouse_provinceid.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-07 08:34
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0022_alter_hatching_killingave'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='killhouse',
|
||||
name='CityId',
|
||||
field=models.CharField(blank=True, max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='killhouse',
|
||||
name='ProvinceId',
|
||||
field=models.CharField(blank=True, max_length=200, null=True),
|
||||
),
|
||||
]
|
||||
23
app/migrations/0024_poultry_city_poultry_province.py
Normal file
23
app/migrations/0024_poultry_city_poultry_province.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.19 on 2025-04-07 09:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0023_killhouse_cityid_killhouse_provinceid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='City',
|
||||
field=models.CharField(blank=True, max_length=500, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poultry',
|
||||
name='Province',
|
||||
field=models.CharField(blank=True, max_length=500, null=True),
|
||||
),
|
||||
]
|
||||
16
app/migrations/0025_delete_transportingdetail.py
Normal file
16
app/migrations/0025_delete_transportingdetail.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# Generated by Django 3.2.13 on 2025-04-29 12:52
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0024_poultry_city_poultry_province'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='TransportingDetail',
|
||||
),
|
||||
]
|
||||
60
app/migrations/0026_transportingdetail.py
Normal file
60
app/migrations/0026_transportingdetail.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# Generated by Django 3.2.13 on 2025-04-29 12:57
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0025_delete_transportingdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TransportingDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('BroilerFlockRequestId', models.IntegerField(blank=True, null=True)),
|
||||
('TrackingCode', models.CharField(max_length=200, null=True)),
|
||||
('DesCertId', models.CharField(max_length=200, null=True)),
|
||||
('IssueDate', models.CharField(max_length=200, null=True)),
|
||||
('IssueDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('GoodCode', models.IntegerField(null=True)),
|
||||
('GoodName', models.CharField(max_length=200, null=True)),
|
||||
('GoodAmount', models.IntegerField(null=True)),
|
||||
('TrackingStatus', models.IntegerField(null=True)),
|
||||
('TrackingStatusDescription', models.CharField(max_length=200, null=True)),
|
||||
('TakhlieDate', models.CharField(max_length=200, null=True)),
|
||||
('TakhlieDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('SourcePartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('SourceUnitPartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('SourceUnitName', models.CharField(max_length=200, null=True)),
|
||||
('SourceCertId', models.CharField(max_length=200, null=True)),
|
||||
('ResideDate', models.CharField(max_length=200, null=True)),
|
||||
('ResideDatePersian', models.CharField(max_length=200, null=True)),
|
||||
('PedigreeName', models.CharField(max_length=200, null=True)),
|
||||
('DesUnitName', models.CharField(max_length=200, null=True)),
|
||||
('DesPartIdCode', models.CharField(max_length=200, null=True)),
|
||||
('HealthPermitId', models.IntegerField(null=True)),
|
||||
('Province', models.CharField(max_length=200, null=True)),
|
||||
('City', models.CharField(max_length=200, null=True)),
|
||||
('Age', models.IntegerField(null=True)),
|
||||
('Date', models.DateTimeField(null=True)),
|
||||
('Out', models.BooleanField(default=False)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportingdetail_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('hatching', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transport_hatching', to='app.hatching')),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportingdetail_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 4.2.19 on 2025-05-06 08:21
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0026_transportingdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='samasat_discharge_percentage',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transportingdetail',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transportingdetail',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0028_hatching_goodsum.py
Normal file
18
app/migrations/0028_hatching_goodsum.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-06-30 12:08
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0027_hatching_samasat_discharge_percentage_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='hatching',
|
||||
name='GoodSum',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
34
app/migrations/0029_apkinfo.py
Normal file
34
app/migrations/0029_apkinfo.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 4.2.19 on 2025-07-20 05:32
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0028_hatching_goodsum'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ApkInfo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('info', models.JSONField(null=True)),
|
||||
('download_link', models.CharField(blank=True, max_length=700, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
52
app/migrations/0030_transportcarcassdetail.py
Normal file
52
app/migrations/0030_transportcarcassdetail.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-21 10:17
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0029_apkinfo'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TransportCarcassDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('id_quarantineh', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_prev', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_changed', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('payment', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('tracking', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('date', models.DateField(blank=True, null=True)),
|
||||
('time', models.TimeField(blank=True, null=True)),
|
||||
('product', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('items', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('quantity', models.FloatField(blank=True, null=True)),
|
||||
('unit', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('origin_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('owner', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('car_tracking_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('driver_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('plate', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('amount', models.DecimalField(blank=True, decimal_places=2, max_digits=20, null=True)),
|
||||
('unloading', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('gross_weight', models.FloatField(blank=True, null=True)),
|
||||
('tare_weight', models.FloatField(blank=True, null=True)),
|
||||
('net_weight', models.FloatField(blank=True, null=True)),
|
||||
('scale_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_receipt', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('unloading_date', models.DateField(blank=True, null=True)),
|
||||
('out', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
]
|
||||
49
app/migrations/0031_auto_20250921_1447.py
Normal file
49
app/migrations/0031_auto_20250921_1447.py
Normal file
@@ -0,0 +1,49 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-21 11:17
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0030_transportcarcassdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='create_date',
|
||||
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportcarcassdetail_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='key',
|
||||
field=models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportcarcassdetail_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='modify_date',
|
||||
field=models.DateTimeField(auto_now=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='trash',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
16
app/migrations/0032_delete_transportcarcassdetail.py
Normal file
16
app/migrations/0032_delete_transportcarcassdetail.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-21 11:18
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0031_auto_20250921_1447'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='TransportCarcassDetail',
|
||||
),
|
||||
]
|
||||
65
app/migrations/0033_transportcarcassdetail.py
Normal file
65
app/migrations/0033_transportcarcassdetail.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-21 11:18
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0032_delete_transportcarcassdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TransportCarcassDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('id_quarantineh', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_prev', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_changed', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('payment', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('tracking', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('date', models.DateField(blank=True, null=True)),
|
||||
('time', models.TimeField(blank=True, null=True)),
|
||||
('product', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('items', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('quantity', models.FloatField(blank=True, null=True)),
|
||||
('unit', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('origin_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('owner', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('car_tracking_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('driver_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('plate', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('amount', models.DecimalField(blank=True, decimal_places=2, max_digits=20, null=True)),
|
||||
('unloading', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('gross_weight', models.FloatField(blank=True, null=True)),
|
||||
('tare_weight', models.FloatField(blank=True, null=True)),
|
||||
('net_weight', models.FloatField(blank=True, null=True)),
|
||||
('scale_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_receipt', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('unloading_date', models.DateField(blank=True, null=True)),
|
||||
('out', models.BooleanField(default=False)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportcarcassdetail_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='transportcarcassdetail_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
36
app/migrations/0034_guilds.py
Normal file
36
app/migrations/0034_guilds.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-22 10:08
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0033_transportcarcassdetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Guilds',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='guilds_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='guilds_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
18
app/migrations/0035_guilds_is_steward.py
Normal file
18
app/migrations/0035_guilds_is_steward.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-22 10:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0034_guilds'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='guilds',
|
||||
name='is_steward',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
43
app/migrations/0036_driver.py
Normal file
43
app/migrations/0036_driver.py
Normal file
@@ -0,0 +1,43 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-22 12:22
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0035_guilds_is_steward'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Driver',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('car_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('driver_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('owner_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('pelak', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('tracking_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('weight', models.IntegerField(blank=True, null=True)),
|
||||
('car_type', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('expire_licence_date', models.DateField(blank=True, null=True)),
|
||||
('health_permit', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='driver_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='driver_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
18
app/migrations/0037_driver_product.py
Normal file
18
app/migrations/0037_driver_product.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-22 12:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0036_driver'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='driver',
|
||||
name='product',
|
||||
field=models.CharField(blank=True, max_length=255, null=True),
|
||||
),
|
||||
]
|
||||
23
app/migrations/0038_auto_20250927_0848.py
Normal file
23
app/migrations/0038_auto_20250927_0848.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-27 05:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0037_driver_product'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='driver',
|
||||
name='kill_house_name',
|
||||
field=models.CharField(blank=True, max_length=255, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='driver',
|
||||
name='part_id_code',
|
||||
field=models.CharField(blank=True, max_length=255, null=True),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0039_alter_transportcarcassdetail_tracking.py
Normal file
18
app/migrations/0039_alter_transportcarcassdetail_tracking.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-27 06:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0038_auto_20250927_0848'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='tracking',
|
||||
field=models.CharField(blank=True, max_length=255, null=True, unique=True),
|
||||
),
|
||||
]
|
||||
18
app/migrations/0040_transportcarcassdetail_product_date.py
Normal file
18
app/migrations/0040_transportcarcassdetail_product_date.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-27 07:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0039_alter_transportcarcassdetail_tracking'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='product_date',
|
||||
field=models.DateField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.13 on 2025-09-28 08:05
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0040_transportcarcassdetail_product_date'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='has_product_date',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,64 @@
|
||||
# Generated by Django 4.2.19 on 2025-11-04 07:13
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0041_transportcarcassdetail_has_product_date'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='driver',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='driver',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='guilds',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='guilds',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transportcarcassdetail',
|
||||
name='modified_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='InquiryCredentials',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('data', models.JSONField(blank=True, null=True)),
|
||||
('numbers', models.JSONField(blank=True, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
62
app/migrations/0043_allproductstransport.py
Normal file
62
app/migrations/0043_allproductstransport.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# Generated by Django 4.2.19 on 2025-11-08 08:21
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0042_alter_driver_created_by_alter_driver_modified_by_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AllProductsTransport',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('record_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_prev', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_changed', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('tracking', models.CharField(blank=True, max_length=255, null=True, unique=True)),
|
||||
('date', models.DateField(blank=True, null=True)),
|
||||
('product', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('items', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('quantity', models.FloatField(blank=True, null=True)),
|
||||
('unit', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('origin_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_province', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination_city', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_origin', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('jihadi_destination', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('owner', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('car_tracking_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('driver_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('gross_weight', models.FloatField(blank=True, null=True)),
|
||||
('tare_weight', models.FloatField(blank=True, null=True)),
|
||||
('net_weight', models.FloatField(blank=True, null=True)),
|
||||
('scale_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('scale_receipt', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('unloading_date', models.DateField(blank=True, null=True)),
|
||||
('unloading', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('out', models.BooleanField(default=False)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('hatching', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='all_products_transports', to='app.hatching')),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
56
app/migrations/0044_evacuationdetail.py
Normal file
56
app/migrations/0044_evacuationdetail.py
Normal file
@@ -0,0 +1,56 @@
|
||||
# Generated by Django 3.2.13 on 2025-11-08 17:33
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0043_allproductstransport'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='EvacuationDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('BroilerFlockRequestId', models.IntegerField(blank=True, null=True)),
|
||||
('TrackingCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('IssueDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('IssueDatePersian', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('issue_date', models.DateTimeField(blank=True, null=True)),
|
||||
('GoodAmount', models.IntegerField(blank=True, null=True)),
|
||||
('GoodCode', models.IntegerField(blank=True, null=True)),
|
||||
('GoodName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('TrackingStatus', models.IntegerField(blank=True, null=True)),
|
||||
('TrackingStatusDescription', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('TakhlieDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('TakhlieDatePersian', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('takhlie_date', models.DateTimeField(blank=True, null=True)),
|
||||
('SourceUnitPartIdCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SourceUnitName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SourceCertId', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('SourcePartIdCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('DesUnitName', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('DesPartIdCode', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('HealthPermitId', models.IntegerField(blank=True, null=True)),
|
||||
('ResideDate', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('ResideDatePersian', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('reside_date', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evacuationdetail_createdby', to=settings.AUTH_USER_MODEL)),
|
||||
('hatching', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evacuation_details', to='app.hatching')),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evacuationdetail_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user