From c99a83fc67a01ad137aaeb7bdd7e710cec6e56fd Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 2 Feb 2026 04:08:48 +0000 Subject: [PATCH] editing login screen --- core/__pycache__/forms.cpython-311.pyc | Bin 34098 -> 34902 bytes core/__pycache__/views.cpython-311.pyc | Bin 66068 -> 66136 bytes core/forms.py | 9 ++- core/templates/core/login.html | 73 ++++++++++++++++++++++--- core/views.py | 3 +- 5 files changed, 75 insertions(+), 10 deletions(-) diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc index 7baa1a32a4b0811d9d84fdb121c82cde1163413f..eb6fa695754f1ee9caeca84f7b92694bff35a21e 100644 GIT binary patch delta 5308 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 TW6?h+E4b1R9Xh7i;p%??)y=#d delta 4556 zcmb7{e{fV+702`TXMQKpBy4_>ABB{qNq{87&=inR36#Q?HXs&Lm(A`=vSG7tx$i9@ zOX-H6b}F^NZP7Zlw$-8CDR!VwozcOu9cQeLl>#c-SF2zdv7J#+{KKJt;Q5}nNgz-= z?!YJKp8NaUbI!f*+(E}1PdbWUDJsg(q2IiUv8a3Fp<=1#K`pM<2a>~ms_;8R6}t1v zTOrlTcZ-_}7ELH?4wsY_+>7F3*2%h(x0F_Sp=7pFE4`(Q=3Acrs2Ypt!cX;c@l{B>3A&qrEztU*dy0^%qUBe49zyjVd1ka;jx`J@?dIPazU90V ztMx0EE2-0YP+Y`RdoY-tO)LiGtFs4`s4Q*rrFq6&RBa*9v8YB+6Tz@h>41eq1ux}> z-q1Y*JPRBFz7Bi?@DQwAoKZ3~p!z-bz7C=4FaQrA2jk%*Vs|+eb@agw$G7;LJlQl; z={4VPI-w}-@~Jtsb#u_IXdNY#5luwyk0+7_$3*sQ&*+ zObr`ZgUUvKQ=dlTumg$$Nboq@_XZ&a0QiS^0)VN-a|Ej>>r!Dg77GR`BKTwwKFjP= zS%{`Uk@qH-M2*{f;)vmdw4CZP zF57%NNfwU-JgfC-smtL=e)TT63B~mf}wkz)JEc}5XaE< zb%H*1>sH$=H)(Nejwotz=8iuvS_tEeNzz+e6p2ZX9WJ^xY#uv`#&}tbWHT?^!i1v@x zhX*M%RlR;&G$gvrE1gS~wQL#$x#bOIXP*-79NEuftSNhR*|Ef7#1Zto+_AW0*#l_G zt_%+s-{Gbp+F{A2s5f`IT~g&*jpa<3e-Pl&aHmY*S-;)b3w{08_f@H^lfAyv|22vs%aEl);ck!XAX z`5{OA9{2!ki8FM8{ZzJd^jxUF2mB0J3$y_opB<0_z$wC2v*yvG z*<%QBlDM$>U~&0vvx3~OJ@P-Z!8L6zy)$Mf=A@@&0=6>jA}#`x_70&qkq#zp=5M$m zG2AZdhtZMEal6P*b1vcdUp_JGL=q4`hwlGM0uydxIVhHSCw#td(?~j^XgsLxx0jP1 z3NoAH}hmr^%<8n*JIce{LN^l7qi zZ>s8{moNxswo@U;FNZyQ22a6A tyAPX%N4|NsYq^VuwMa6iE)@kd2mQ;@YvkYe9dKN6nQ!httnfGAe*r>gF)9E6 diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index f72d1f9ac60ef00a99a1aff1ac227a0025e7e666..3c22c0395df54a4489ea75df9e308915668a1366 100644 GIT binary patch delta 9894 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 aiZ4yWVXx~eP_IY3a-YbEQ*JRsv;P4-#_$*b diff --git a/core/forms.py b/core/forms.py index f971caf..556b2da 100644 --- a/core/forms.py +++ b/core/forms.py @@ -3,6 +3,13 @@ from django.contrib.auth.models import User from django.utils.translation import gettext_lazy as _ from django.utils.translation import get_language from .models import Profile, Parcel, Country, Governate, City, DriverRating, DriverReport, ParcelType +from django.contrib.auth.forms import AuthenticationForm + +class LoginForm(AuthenticationForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for field in self.fields.values(): + field.widget.attrs.update({'class': 'form-control'}) class ContactForm(forms.Form): name = forms.CharField(max_length=100, label=_("Name"), widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('Your Name')})) @@ -412,4 +419,4 @@ class DriverReportForm(forms.ModelForm): labels = { 'reason': _('Reason for Reporting'), 'description': _('Details'), - } \ No newline at end of file + } diff --git a/core/templates/core/login.html b/core/templates/core/login.html index 03b6c07..24ad5c0 100644 --- a/core/templates/core/login.html +++ b/core/templates/core/login.html @@ -22,17 +22,40 @@

{% trans "Please login with your username and password" %}

+ {% if form.non_field_errors %} +
+ + {% for error in form.non_field_errors %} + {{ error }} + {% endfor %} +
+ {% endif %} +
{% csrf_token %} - {% for field in form %} -
- - {{ field }} - {% if field.errors %} -
{{ field.errors }}
- {% endif %} + + +
+ + {{ form.username }} + {% if form.username.errors %} +
{{ form.username.errors }}
+ {% endif %} +
+ + +
+ +
+ {{ form.password }} +
- {% endfor %} + {% if form.password.errors %} +
{{ form.password.errors }}
+ {% endif %} +
@@ -67,6 +90,12 @@ .form-control:focus { border-color: var(--accent-orange); box-shadow: 0 0 0 0.25rem rgba(255, 126, 21, 0.15); + z-index: 3; + } + /* Fix for input-group with rounded corners */ + .input-group > .form-control:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } .btn-masarx-primary { background-color: var(--accent-orange); @@ -86,5 +115,33 @@ .hover-orange:hover { color: var(--accent-orange) !important; } + /* RTL adjustments for password toggle */ + [dir="rtl"] #togglePassword { + border-radius: 8px 0 0 8px !important; + border-right-width: 0 !important; + border-left-width: 1px !important; + } + [dir="rtl"] .input-group > .form-control:not(:last-child) { + border-radius: 0 8px 8px 0 !important; + } + + {% endblock %} diff --git a/core/views.py b/core/views.py index ed99b8a..fc93cfa 100644 --- a/core/views.py +++ b/core/views.py @@ -5,7 +5,7 @@ from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from .models import Parcel, Profile, Country, Governate, City, OTPVerification, PlatformProfile, Testimonial, DriverRating, DriverRejection -from .forms import UserRegistrationForm, ParcelForm, ContactForm, UserProfileForm, DriverRatingForm, ShipperRegistrationForm, DriverRegistrationForm, DriverReportForm +from .forms import LoginForm, UserRegistrationForm, ParcelForm, ContactForm, UserProfileForm, DriverRatingForm, ShipperRegistrationForm, DriverRegistrationForm, DriverReportForm from django.utils.translation import gettext_lazy as _ from django.utils.translation import get_language @@ -1110,6 +1110,7 @@ def cancel_parcel(request, parcel_id): return redirect('dashboard') class CustomLoginView(LoginView): + authentication_form = LoginForm template_name = 'core/login.html' def form_valid(self, form):