From 95e2847b9447efb5a61be76213c8b06c36c519d4 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 25 Jan 2026 07:46:55 +0000 Subject: [PATCH] changes in cities --- core/__pycache__/forms.cpython-311.pyc | Bin 6433 -> 11122 bytes core/__pycache__/urls.cpython-311.pyc | Bin 1361 -> 1562 bytes core/__pycache__/views.cpython-311.pyc | Bin 6605 -> 7761 bytes core/forms.py | 64 +++++++++++++++++++++- core/templates/core/register.html | 51 ++++++++++++++++- core/templates/core/shipment_request.html | 56 ++++++++++++++++++- core/urls.py | 6 +- core/views.py | 15 ++++- 8 files changed, 181 insertions(+), 11 deletions(-) diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc index bed47d4cd5699e2a93e30d915990954f51521c1a..64e66ae35548aba2abc94e8cb12199e8d2935115 100644 GIT binary patch literal 11122 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 PFPaY^e)yl{(FT72;JMf4 diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 0676643c3068dcc4996983129921504e917843b2..125f3bdf00d23d7efdcaf7f56836a55f77f04358 100644 GIT binary patch delta 291 zcmcb}HH$}MIWI340}ybWD$U%(%)sy%#DM{RDC091(?*RwjFSx*S^1?>nX?373R0ve zD=>;`$^gX#;bO9D*p>lJS`EYykj@Ht0^RSpPI;=lkel=1lx<3^1=j9lrQQ35Ga!3>(xo6VS9 s7@7Sv1t%Y5ZkX)N;>#rqRLcm&#kQLlv6wOP3v=-^HE@Gqku*>k08J1S3IG5A diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index ee86b231aa8c19b3646b34240decd8cb3cad78b8..a02e5b311c4f1f9061891997472eddc16a70e9b7 100644 GIT binary patch delta 2198 zcmd5-U1$_n6rP!#og_Ouo1OhJyPMdoX`&fTV-uU$U}BK2)#87A(z!Sj85Eee6s7CWV&WbRl6Nv{3pk2vYh`dd{8v5Pk8n!_3FI z=bX9sobR4VV&s=5r)(SZ>Qa zDJ__m;kHbdDn*A}b=zi3R}50jIfg4vo6c4G4L=pucsF>$E)`E1cDYovjoR=0C7$n~ z@AxL=4hWef5mNLE-?YC6M7g%^>k}juwY{`e>KjO-xEH_`E4D#wABgF6n(RSUD=`*L z+c5|^0K?AOS?M=H-H(Ev}#lM#eb09yipb>U%4lRmT{?5!;ZM4lh0S+XrigQz}8|5El#%%hjaL+7d( zzZM}18Zi)Z7y$z%Zz9AHQV87$BEmj|2tqGHKZ1sE5CHP4{fOA;-W0gR&)_{u|Ng+wFfy12E1D^s*eQO@<%w z{2+azj;buJAuwrzE0{VNriUYkt1p`s210@ehY*GlSXNUYZKU9~m06KxVfO88uu`7S zL&*UNWhYyf*$-qEd`{56BR_1%9gokM$YUCh1S{WRg{;QYq_DVp-eCITf3n1oMaVY5X=nKtJ8J za6S!Vn+Mn^5MK|5XREB4Ob4`DBF8_5UYy#Swm7GQ~6Qxms3Z+GA9 zUhZnBgH3ht!qSO#HPuvmR#k09)gEQ)s@71an(EZ5I=iCIJ{BJ@G}O~g^)xuj9bb!I zW*Uk9W}^Ror7i>WBTadvE{^WS!%HXE z74@_8t4exBN#CEa>Poty9BC>?R+Zx`%JCoHc)Y8j%r}+!r5TUvGhYSo1n-a3<)MZ= z)Rc$n;t(TxPV1v%9e1iE1PghUgK4<_g%T;)gxwQ(M!E_8qg-*ZG+1#=%N}${u4r31 z$1D{Ib`a}VH?-lCFTsUnUSOxLD{m+-I!@W61MeYrpLl2dF&Iv>lZACLYfV;cjD-gr zi<8|6|Fn)5N_xdIjuI?HY##eA;1eIu^J}z}NYPIcv;7lw?xkM(XJS0E#`V^BzO*~J VJRte_(I?y%1bqB34xa}W+kbS=?q&c0 delta 1235 zcma)5O-vI}5Z<@6Tj|%Z)Rt{nKy5H^3#~M z>GOFde9G^tg}2&<)-L~)HU=-RGRbfoo}#}L$OKBkOc38Cqq!I=g)?o!ZYf4e(M%L= z@0yf3V5o@grfRgVNl!7~b4n_nObl7yKDGl{Z6Di-tRLA<{Pd3$aU+1~yNuu!Ne}S} zb~_|H%3KceX3_D?L3y!IH2Dsju8qjcjD`8brju$IQ$U0u%6~M?xVzEx){?G%S<#41 z@M}u{aGcCu1jkjiOt6~JOe7M}MN~7GO9jg|0S553qqeDhmV<}Lm8?3!jEm;{NI?2bhAw@(acwU=dCH;B`eB>k{Fh)Q^;V40nAWA@U1s6ddfuA5j zaFC#%Ac=teRr7h%vY?G98j9`)F{=q8juTK-G2ju)jb=l<6QJpo%oRHe=B=t}*>C~_ z()hO&#xI6-&i&u9B|Gqeu^~PcN(V(ZBN(B}j$AMx#n(gQtN+^!)rVGs!vrY;(aa=T zd&-@biddK|W^Xh>3-Y&oUk-b(*x8CIK7bjFInU3AUn_%XA!(KTpj5(gpXEuz}_$4E!Ap;4R;32mH??y3*_G_euxkH%tRA$`?~ft!`J z?3`V-U>4oi`KjmwHpst47iZ~!EQYYRzgiCLLcVBb4b#pQif{p43lu|l

{% trans "Join masarX" %}

-
+ {% csrf_token %} {% for field in form %}
- + {{ field }} {% if field.help_text %}
{{ field.help_text }}
@@ -37,6 +37,51 @@
+ + -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/core/templates/core/shipment_request.html b/core/templates/core/shipment_request.html index 0970ab4..5afb913 100644 --- a/core/templates/core/shipment_request.html +++ b/core/templates/core/shipment_request.html @@ -13,7 +13,7 @@
{% for field in form %}
- + {{ field }} {% if field.errors %}
{{ field.errors }}
@@ -29,4 +29,56 @@
-{% endblock %} \ No newline at end of file + + +{% endblock %} diff --git a/core/urls.py b/core/urls.py index 9d0cf81..3b347d2 100644 --- a/core/urls.py +++ b/core/urls.py @@ -12,4 +12,8 @@ urlpatterns = [ path('accept-parcel//', views.accept_parcel, name='accept_parcel'), path('update-status//', views.update_status, name='update_status'), path('article/', views.article_detail, name='article_detail'), -] \ No newline at end of file + + # AJAX for locations + path('ajax/get-governates/', views.get_governates, name='get_governates'), + path('ajax/get-cities/', views.get_cities, name='get_cities'), +] diff --git a/core/views.py b/core/views.py index ccbb40a..09b0517 100644 --- a/core/views.py +++ b/core/views.py @@ -2,10 +2,11 @@ from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth import login, authenticate, logout from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.decorators import login_required -from .models import Parcel, Profile +from .models import Parcel, Profile, Country, Governate, City from .forms import UserRegistrationForm, ParcelForm from django.utils.translation import gettext_lazy as _ from django.contrib import messages +from django.http import JsonResponse def index(request): tracking_id = request.GET.get('tracking_id') @@ -96,4 +97,14 @@ def update_status(request, parcel_id): return redirect('dashboard') def article_detail(request): - return render(request, 'core/article_detail.html') \ No newline at end of file + return render(request, 'core/article_detail.html') + +def get_governates(request): + country_id = request.GET.get('country_id') + governates = Governate.objects.filter(country_id=country_id).values('id', 'name') + return JsonResponse(list(governates), safe=False) + +def get_cities(request): + governate_id = request.GET.get('governate_id') + cities = City.objects.filter(governate_id=governate_id).values('id', 'name') + return JsonResponse(list(cities), safe=False)