From ed86772f273b6bb4ed6fe4e3962a0933b2fcd605 Mon Sep 17 00:00:00 2001 From: Faheed Date: Mon, 20 Oct 2025 18:32:16 +0300 Subject: [PATCH] meeting update page ui fix --- .../__pycache__/settings.cpython-312.pyc | Bin 8478 -> 8446 bytes NorahUniversity/settings.py | 3 +- .../linkedin_service.cpython-312.pyc | Bin 16217 -> 16316 bytes .../__pycache__/models.cpython-312.pyc | Bin 60414 -> 60434 bytes .../__pycache__/validators.cpython-312.pyc | Bin 1087 -> 1087 bytes recruitment/__pycache__/views.cpython-312.pyc | Bin 87400 -> 87698 bytes recruitment/linkedin_service.py | 3 + recruitment/models.py | 2 +- recruitment/validators.py | 2 +- recruitment/views.py | 8 + templates/meetings/update_meeting.html | 278 +++++++++++++++--- 11 files changed, 243 insertions(+), 53 deletions(-) diff --git a/NorahUniversity/__pycache__/settings.cpython-312.pyc b/NorahUniversity/__pycache__/settings.cpython-312.pyc index 9e1dff922b71352517ba92f971267004060c9fdf..160b1cfceb5f7b32aab0dfe633c253c6fd66dfd9 100644 GIT binary patch delta 353 zcmXYsxk^J(5Qfh=*F=(dD+>uoh((N=eUI7qz!mfgB|{&;RGCdl|7} z%56y%y(&Dag545))4bupqI_OOow9KyvPIpWQQvGt(>vTvu*94Og8zByGj(KKTbm9s>#v=CDG3ZmNvg|t?> zPhc%bDzWq_EJVaV;0)i)z!^B_SGlj)U+s3QB+JN_?qttTo(VfK(>8qYpEGhJ zKpq5XN3aXC=+Kmt7h!Or`Vc{M%*l@!1vCrd6PqNB83mD`5X=-7M3AH?QWO(<`d^RV zv4HO5R+bRQMfQ;|GDs37k)ssyV+n;B6SFvDC`}hmX_P4gg|etn4pqvdMg^!;6qJNZ z8Ff<7pbDD8zls*s1S;B8M~52dQWHID>2Ey4+WN8_V;wy&r)(XqgR3dm#MZCn15+0_ z)HB{?|0?Sn@>-lb97?siH|!sd)SlAnjt1)fur*MPg!5Ro{)o^_aCu}rtZR&I=_c2v V<-@r#mmHsNui#|_yhhmV)g(4 diff --git a/NorahUniversity/settings.py b/NorahUniversity/settings.py index 6be985e..705d22e 100644 --- a/NorahUniversity/settings.py +++ b/NorahUniversity/settings.py @@ -171,14 +171,13 @@ AUTH_PASSWORD_VALIDATORS = [ ] - ACCOUNT_LOGIN_METHODS = ['email'] ACCOUNT_SIGNUP_FIELDS = ['email*', 'password1*', 'password2*'] ACCOUNT_UNIQUE_EMAIL = True ACCOUNT_EMAIL_VERIFICATION = 'none' ACCOUNT_USER_MODEL_USERNAME_FIELD = None -ACCOUNT_EMAIL_REQUIRED = True + ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True diff --git a/recruitment/__pycache__/linkedin_service.cpython-312.pyc b/recruitment/__pycache__/linkedin_service.cpython-312.pyc index 63027e75bd8594d9b48cace38f3be50235d979d0..c18ea68f0ec7dbbc26bacee316824512354f962a 100644 GIT binary patch delta 471 zcmcavx2K->G%qg~0}$ByearZ`k@u(y$2=AWhUp9`jFaO{BsPCiF<~(%Q3a_0ff}aO zj1X3eNOlYZLlH*}Q;Kkks1!qrSQSvBmMMiNOL=mlxbS3KO&&(^&0d-_7{xMoa5FGu zE&&o%9C}coDLna!)?Joc%sHu(4`{DtG~b-3!^*Yl^|jjkkDi>I2x98P1=mjAXr<0LdGbxG zHb(Ew3D$f}jGHIt+eQe?1StVIpa`sE-{kAIp{$0i8lTf98`@2k+7CCz8N_k{5uoTQ dIyCu#odo0Q$v^D^`HNW@`93j#$Ra7A900}ldYJ$K delta 394 zcmdl}f3uGFG%qg~0}#lr`;;+ZBkxfao+1_ohUp9`j44btjFTU7if#U)V#LCd!jq*u zIZ<4Aa;7E^qsZnm%^8eLnnIIRwC_%4(^m8F41!DhOGSSu%gGmU06-W+76!NLYHXL5s;rZ~t2nO_*erY!*}GyoCH zCm*nK5!e7?>ca)sOct?LXPh+I#=4EsWAkBaJ|@OZlP}pu2+RN}0Xd)utYhzFE4xru zJywm+36rPTO*P&JH^v#nasd&b;4C@_BBVfs1dzDJVUwGmQks)$S9EG}jC~+~0V^Zl KCk7A+Rs;auRAz$! diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 7bccb13f7a09ccceadf1c3ea5cea8dc97b933387..53b4e48a8c834ab0ce83e7084611c875c94151c8 100644 GIT binary patch delta 2305 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 LCD@gh;fVAvvN~|i delta 3108 zcmaJ@Yfw~27Um4x5ocr=-adGVmN>}DLqtYJG=dfy5XCalph$sPDIr~4PdAtA;qaDYmNd)qivDDgTPw!N+ZEF+E6Ky-zRAO*bcuX% zX`yF_)lctOx}ZB%>C>tjOz~CR-R}Kr@toI+@{5baS~PtN3d_n1Ud#WHEo4@_1*nz@ z>%wI2x+JZho0`6UT`x0L$`3c*()Kb@sBfvMG5N28v=XqJ!9ik;bZ%~@J@Wg_nc9A) z-qc@scfE;L$xAAow#mTSI4c4XX@G4qyLKqEm9>L|e!`-w0q~tnI1(bis_ms6;-=KQ zYIk^2qkOL}O*_Fvlm1QJRC90(q$dG?0aS33#3_=q4g|}BT`A;}TX*$|I*Tq}?s8bf zuR4VA;CFWobNsS^2RMyU&Hz3E{8di+pz3+^o9Z`eU$C-GSM?d*=8xf|%j+K{KF6t_ z!zv`!a31i>p%{x>bRdl5RR_k>S$Xw93uE2E*yW#Mjwx_m2Fr+Z0oH93%fZeE7~@~y z{&rh#Ms9BAr0o36^!$k#)5Yg-ItN$-p$XPS2zx9jpHn`kD8KOa@{%%f8T=+FuCP^V zV=L15&ETwdd``A zqC2wT>@>P3yPb>GEKG;!Dd*nwq=)j*g%Uouk)NF*AKB2_bJN8*OAibK2-BSx7emx| zWi*TaeWjV~EE;O@g#wVO-))_*(FQs5@1K*uOlV7FyQpnAh0FKbVkuN!Xd9+QvoKrt zZhvUfV%V(Iy|1NdJ$thGUvuQb;9e`Dc-vErWz5?n1 zZjKX!LFORP$$+isi32y!LtP1{0rKEo3&qRkyF(%qK@R~W0c@!a^VyhJQlq{$Z zv>GWi;DH`~KitaMPVJicG<7?=`t^doy+?6Laal3n<3$B!1!61)OP61Em6+X`k~#l- zK*=)wQC5&KhjGA+fQ$&7^20|_zp~V8k237W)oJVt#KoH<@$tZjXA6B1(;2HpEbdig z$wiOrEECWMjA)7=WiuQ9)?XdBk>g2Z>XwZXC{u;`QgrA<$nmco-Nh=*^ely=)NEgJ z(pa_CmqwVgA)KVH`qEl+4s44mwo^16RW)`BvKnC+Nyt}+?9@NPSad#w#>#tP>=wWm zfb;5mJH?Vy_4T8S+@CKNUbsHRmw+i~Ccwfq>hS;hPk)vRZ-C z6cg|g?3V#q45j`&mYh`|Vim7|18jF?`O}OZrdX4@XrmDOvn@Xlvs={VaEc9zhdcq0 z2ypLaDaM%-Ge-k+hJq)a6JTq0Q$R5?%JbRG`sAB?i!W zDp9G?BuJ=+XiCz4$AVf{XEd!h4SR_5dkaIi0IJb^hrwYItsn%#EoI>Nfks>nA+;3G1_LsTsrDc`IHkEW&CHl_+) z4WsG4C%vzBrc<7_lc_S7X9nH&jCzl4@hyhf&Q`V~z@6XmV6p%^lwT%|X4fg1G>HD7 zmSs|$R?phsyAEek1kqa6I)R30dzku@vP`4|>spLC8_v7cxQR3%a32%R-rU}co&xl& zb*-34v%HqC#5(Zi6nJL}JR-#*0G@opcu(McA@GzCcpL~k00hdtK#3P9>jDK`poR++ zWP$Q)lvksI3RFjdy6C=OQGbk!iq9VJBQakU=3000: + message_parts=message_parts[0:2980]+"........" return "\n".join(message_parts) diff --git a/recruitment/models.py b/recruitment/models.py index 0939404..6bfc5e2 100644 --- a/recruitment/models.py +++ b/recruitment/models.py @@ -26,7 +26,7 @@ class Base(models.Model): abstract = True class Profile(models.Model): - profile_image = models.ImageField(null=True, blank=True, upload_to="profile_pic/") + profile_image = models.ImageField(null=True, blank=True, upload_to="profile_pic/",validators=[validate_image_size]) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile") def __str__(self): diff --git a/recruitment/validators.py b/recruitment/validators.py index 6277b64..8648da6 100644 --- a/recruitment/validators.py +++ b/recruitment/validators.py @@ -1,7 +1,7 @@ from django.core.exceptions import ValidationError def validate_image_size(image): - max_size_mb = 1 + max_size_mb = 2 if image.size > max_size_mb * 1024 * 1024: raise ValidationError(f"Image size should not exceed {max_size_mb}MB.") diff --git a/recruitment/views.py b/recruitment/views.py index dbede05..c4dbc36 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -762,6 +762,14 @@ def form_wizard_view(request, template_id): 'Application limit reached: This job is no longer accepting new applications. Please explore other available positions.' ) return redirect('job_detail_candidate',slug=job.slug) + + if job.is_expired: + messages.error( + request, + 'Application deadline passed: This job is no longer accepting new applications. Please explore other available positions.' + ) + return redirect('job_detail_candidate',slug=job.slug) + return render( request, diff --git a/templates/meetings/update_meeting.html b/templates/meetings/update_meeting.html index 2515b09..2e614c4 100644 --- a/templates/meetings/update_meeting.html +++ b/templates/meetings/update_meeting.html @@ -1,62 +1,242 @@ {% extends "base.html" %} {% load static i18n %} + {% block title %}{% trans "Update Zoom Meeting" %} - {{ block.super }}{% endblock %} {% block customCSS %} - + {% endblock %} {% block content %} -
-
-

{% trans "Update Zoom Meeting" %}

-

{% trans "Modify the details of your scheduled meeting" %}

-
- - {# Apply KAAT-S theme styles to Django messages #} - {% if messages %} -
- {% for message in messages %} - {# Use message tags to map to alert classes: success, danger, info #} -
+
+ {# Display Django messages outside the card. Using safe if/else for tag mapping. #} + {% if messages %} +
+ {% for message in messages %} + {% if 'error' in message.tags %} +
+ {% elif 'success' in message.tags %} +
+ {% elif 'warning' in message.tags %} +
+ {% else %} +
+ {% endif %} {{ message }}
- {% endfor %} -
- {% endif %} - -
-

{% trans "Meeting Information" %}

- -
- {% csrf_token %} - -
- - {{ form.topic }} -
-
- - {{ form.start_time }} -
-
- - {{ form.duration }} -
- -
- - {# Using custom secondary button for 'Cancel' link #} - - {% trans "Cancel" %} - -
-
+ {% endfor %}
+ {% endif %} +
+ +
+
+
+

+ + {# Using a generic edit/pencil icon for update #} + + + {% trans "Update Zoom Meeting" %} +

+

{% trans "Modify the details of your scheduled meeting" %}

+
+ + {# BUTTON 1: Back to Details (matching the visual style of the create page's "Back to Meetings") #} + + + {# Arrow left icon #} + + + {% trans "Back to Details" %} +
+ +
+ {% csrf_token %} + +
+ + {{ form.topic }} +
+
+ + {{ form.start_time }} +
+
+ + {{ form.duration }} +
+ + {# BUTTONS 2 & 3: Action Buttons at the bottom #} +
+ + + + {% trans "Cancel" %} + +
+
+
{% endblock %} \ No newline at end of file