From 97d9e034cdbeeb2a78ff2124aad19b4c858a6139 Mon Sep 17 00:00:00 2001 From: Faheed Date: Mon, 13 Oct 2025 17:07:21 +0300 Subject: [PATCH] update --- db.sqlite3 | Bin 675840 -> 684032 bytes .../__pycache__/models.cpython-312.pyc | Bin 45611 -> 45553 bytes recruitment/__pycache__/views.cpython-312.pyc | Bin 45894 -> 45935 bytes recruitment/models.py | 2 +- recruitment/views.py | 2 + templates/forms/form_builder.html | 18 + templates/jobs/job_detail.html | 2 +- templates/jobs/job_list.html | 368 ++++++++++-------- 8 files changed, 224 insertions(+), 168 deletions(-) diff --git a/db.sqlite3 b/db.sqlite3 index d093f67b822d09feb97a1c10d2545ebf0c99761a..0890a9dc46058e30c0945dd89d292f85875dc6c4 100644 GIT binary patch delta 4038 zcmai1YitzP72dfs>$MGY&k~+~;q`z418dKFW>K54_QKi=et?ZJBnZ}C?6twKHEYL? z)G=vVs;E_rP-|7HD#Q;!s?>_O>Q-qb_|dd#NneqYQY6w;MYTdJg+wG#1+9AT#RC{- z<15WseRFocx%Zy?opWaTe9iQSH8W-Y>pq|F(%H}p-1RHRE>^A!bMO)T34Q?=a0oJR z8a6>Q1jX>&`Vffz^_6^-o4s;FDCN+(=J1gMzM_tQftyX<5=uDp-0#Bg3-}XX>DlO- zb8ppJ0=(g?JR2?hda&+Hu#O`a$_4BAd)JD2_|yjv;0yS4ZpFxLzyj~%cxn*O`-(11 zhu)l77Mxo){aNLkGeYo^a7;MnnD{Dv=0*4%4!~V#g*(s$x1j-!;j8cgd=+kh1@D3a z@4z<1~d3$cpZNPui<~d*YGWP8UF<` z_|I?>Ux!}&Hrbaa$6RRSD|q(U9|gZ-`gx8kGpH@qsV&i{U8hpJR-tx{OzrAAYFE`# zyE07ebK9w1v5nf`R%)S!TD*l?aWl2cH&MH+n%d%x)D~@^wosxrP*p*H{2^+EN^1G_ z)S?Q3FXGB`WQym5*iYup!F{@dOK^W~#rcoH@m-XQ2{y$BpEw}?4Sx&&mV|f?7eKN2 zZ}DxM#Q()BahPn!MYxIMty#dl$&I3YIR4*V1RKI{>H2y5Ya{7d*Y z9)d1#U|u{Tz6RIC|A=k)yYPGQM{p00;|t=?=^W^oYYP2lxwD+F;0||K6Mem@ag&1K zDJ!1n?3^?x7?|uHj&{Wl>J-R{fkZ;r_Gs*xnA|kdG})t4aAI8TIFw203IzwU*-ZU# zrd_6>NA7R!=-3^vqu|t@mhPUe(Z*T|Cgqs2EAC`tVT$S-`wkpTo0;ttw9BJY*^bf9 zZ4}6D+W0_2B)XM?=!tYsS9;%Q4F!Y4EpksXlh{Im)e*I)8WTgCDcIGd#ZT_-Ikbs_ z7Q;-8^_=RcrXap6rbZ^)M>kT?u4&GAbMszp14W7S#NhDWrcQ~1!|CBzcF$x}6$P=b z$waEH*$7dP?#?vsnL5x~NkMyK$HAe7#`^UX$P-2^-EAGHpkTyqj`u~fMmYr&eIt?7 z=>9|*1<9fD$;iHe(NYR>*ZwEOI3hqIrhmbEaFqz~3e3I-{?#0xBR_S)LIk{z1e7PP zFR(L(iha>&MYOucSES0S5mw}|qJ069aU&*f#Keu5 zxDgXKV&Xn2d zIpjlExa%Y{M??4U>D_zCP@+VWb@wvk)BQWo&1^kqXBXi=H`zUmD~-8Bzefb%d>$G1#4@- zF8F7`cM5F(yg%h%E&NJ&MNs*_^KbCG(LHnl9pY|tGhEd7iSIJmhMi7aE~2~O6FJUv zv4*W{YCeyyxVdEwYN=yHWqFBAHDW$PqkO&6Dzrb$=r$~-a~{i-a1lLv37B|n<6(Nt#-vp5*ciFU99N>T?TqyJ zV$#Q)dL*KGa}tkk);AVD%(Bvpv$yUD<<9O*a`5=XaOT9=OVSbPITYW<`13|bx5)6E zGx6A#o3~e>wylh)GVeqUL$g)KYxTNe=(d~mrH3z5q#$amS%Om2bnp1+nr0Yo<#@yh zDDG@oV!4WHd23QvR9koJ4@Pa9zkF_5M6o^M;*i5gToJ=9UJ?m2jkP4A)=iAEBHs>b zmaHhAp&%Yrb}Jw|j^yktNAc=s7E4a!6LmwQ`NNx0kI1rHMwg-Z#%Guo6RD=<9SKb} zBeGk9i;>g1;ma4PM(jKRAfAX!>NhLj5|sy8WD#nX7-3!!tEO#59<6av0w%7A{ip|^ zSwSj9r+rn7(8(7DRWoJpFc6QbxNU^gOVh&B!+H9~vsenC*3c50B-4cHB_(oGm)+(? zdRP}EKWeXJgw>*xCkZQN#PseUh{uk&9gy_6=12lMxSp|w^X-(PSx>hm&O*ncXtpA| zt(3I5<&b#PR>7F_CKE-`bZ?mwk72rPnY2(hC4}~tGsbv{Sma%XWIJCXB_2a@n>&e? zV+rNHIWJ5VuA+6Z0GIh72Ys*>{{epkmyv23z)sp^@AI|h*>FqIHSZ7-k1o6Y`I0rg z0L6`mZ(0-u=LwaY5t4E|PYdzrw%h%ep}6kB^dyl*%Aq%rrJAby0+eE!C!> zklN~XfQg4Bl7-KXg-Tt5TGS=@G+9}cZPSl>V^aB5^YFr_3oWfAYpg?YWr?NImfCxQ MvZ31U*Uwt?e*`Ucp#T5? delta 449 zcmW-cO=uHQ6oucL+?PqF^quFzzlNGYMChW91tBQXCaVe(%uW%cqu8#xCL3AMlHg2lKkv^zGvl2A^;i42l5fqAc6Ct{gRD8NPaJlE+`<)wn9t!Ra)iPq4 zF?N5^9plSQe<{1C$ng#D@D!1BF^elWh$58y5$|)+UoW|Cy*PX>X$^XbF&>`(NPBsv z{&IMoaFY!z7IxKF59P#QHc?22%?%p3s=TW5xRIrmm*}<{q=bqo=w%<*`c&K({4@or z2KnS4%fM&o;TJmij<4|X2^)BiS9p#VR`CQ6@c_JEC2x_cQXm=>BwHzqx0%)CZ4-Nq>vq9D VDm5Jzo2YJ0*hVS6HId%g`3uxkiZK8H diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 44e9fbd62c82f3b667055dab4cb4d65029c9daac..bf449775291dd3715fc043e4fccd91339dc40c14 100644 GIT binary patch delta 81 zcmZ4egz4jBCf?J$yj%=G;PUQG2HQs7%aV*zlOIa%nd~nmHCftOc(R@pH!EY2U<%`8 lLkrQ#ywW_ZOu-DA%#-D$l_vX3uVT!b{7c$%bAZh4sQ?iA7|s9y delta 113 zcmV-%0FM9h;{vPX0u9Rz4GI7N006G3>u58v4bvF`IFsQSya6hcZ+jL5WC3e8ll~bU zleZco0RofHI2M!e8VdyjQvfLhk{coqdJR=>X>?^|AX9W T*Cjg9B|5lo(j`r^7987^qmn17 diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index 70cde358976f062503018c55930a80a080eace17..584200ddbeb13f60efc083d928a50a7a527ce1e2 100644 GIT binary patch delta 633 zcmZ9GJ!n%=6vywmmzOrF$xD+oeQopoK~u~i)TC-iBw%sMhg645E^n|wBxzsCE2LI% z5Wz+7WRorqinJZ%;w;!SrAR)C4jpuG>81wFP@KFk;X&~Z_x}Fp+;jf_<|+Plip`(Q zW)tG)lHtd_!aMW&GPu~2h`PsP&Qb_?-Ac&N>{x^hH0vn=oMc2gy{qD3UXR2ZiZDV~qpaPOD8{$Lp!RYX< zfWGaVuS<4UNin5uxap}AeR>J~=NROU=h7-^-MuR6GlTqop8tM13}N=7{1WiWPa0XR zfuA;3kEjxL(7N&pj_LKar*MlMttA1b*+?Y`Q5%wcU0>|;WV~yQ_kGCfI+5Jn$nE0` zcTViizCf&|9wJ85S-%Xlu1d6~PQhjRUJaAKeFI%oz2vNKq2JWV<`$3k(UuP6yl6jW z<9A~;J(3CG196^l$dB7;ws-oeLRIQ$mh-NQcaD(eWDdW26(2@&?jHz`1J>@?-S*>?HfJ zp2qN%LG>+x9^2V$5HPXQ<2@0g%tK#0;0rr=(-a`jp6xvn#_s}{{t$#MJ*?sH8`RC_ F{sE}?q&)xt delta 563 zcmaF=jOo}jCf?J$yj%=GkZ|`+hR{ad%1lPK&Fz^gjEomIugNN8<+TP$fStw`3E*u#ve;fFa4 z><|T@Lz)Uz8C5o~D4fYS*{yg6qr&9-#V04PE!oI;XmWgMC!_!7m!-Chj1rsG%R$uS zR~7PdU&I&$WNt{vUeE}+$P;=)SnLZcvjEoz24+sKA764O_g5G(8caS^q00RGi^yc2 zN{#vjK>H5~IV$;!FdQ}&0+L5K9NB%1n2z!r13AZ-K|;sG9GU%in2t*_0XfHITy_1_ z7|wD^06Axkg#9>K&#^KC+2=SIL2OPin@8ABnf07Jn61PJVk?8$YMlOp%;)qa{CSwq zv$Oh(s4$%8VFe1E7X(S47vT(GU_LJ^;cv}+-jor~W@cdG`@jTZesY-X HwpkMZXg!t+ diff --git a/recruitment/models.py b/recruitment/models.py index 1852081..f4e6780 100644 --- a/recruitment/models.py +++ b/recruitment/models.py @@ -229,7 +229,7 @@ class JobPosting(Base): parts.append(self.location_city) if self.location_state: parts.append(self.location_state) - if self.location_country and self.location_country != "United States": + if self.location_country: parts.append(self.location_country) return ", ".join(parts) if parts else "Not specified" diff --git a/recruitment/views.py b/recruitment/views.py index 3fb5839..cb49cd2 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -963,6 +963,8 @@ def submit_form(request, template_id): resume=resume.get_file if resume.is_file else None, job=submission.template.job, ) + return redirect('application_success') + except Exception as e: logger.error(f"Candidate creation failed,{e}") pass diff --git a/templates/forms/form_builder.html b/templates/forms/form_builder.html index 328e686..5caea5d 100644 --- a/templates/forms/form_builder.html +++ b/templates/forms/form_builder.html @@ -5,7 +5,9 @@ ATS Form Builder - Vanilla JS + + {% endblock %} @@ -114,10 +169,10 @@

- Job Postings + {% trans "Job Postings" %}

- Create New Job + {% trans "Create New Job" %}
@@ -125,7 +180,7 @@
- +
{% include 'includes/search_form.html' %} @@ -133,117 +188,123 @@
- {% url 'job_list' as job_list_url %} - - - -
- - -
- -
-
- -
-
- - +
+
+ + +
+
+
+ + + {% trans "Clear" %} + +
+
+
-
- {% if page_obj %} -
- {# View Switcher #} - {% include "includes/_list_view_switcher.html" with list_id="job-list" %} + {% comment %} --- START OF TABLE VIEW (Data relied upon context variable 'jobs') --- {% endcomment %} +
+ {% comment %} Placeholder for View Switcher {% endcomment %} + {% include "includes/_list_view_switcher.html" with list_id="job-list" %} - {# Card View (Default) #} -
- {% for job in page_obj %} -
-
-
-
-
{{ job.title }}
- - {{ job.get_status_display }} - -
- -

- {{ job.department|default:"No Department" }}
- {{ job.get_location_display }}
- {{ job.get_job_type_display }}
- {{ job.get_source }} -

- -
- {% if job.posted_to_linkedin %} - - Posted to LinkedIn - - {% endif %} - - -
-
-
-
- {% endfor %} -
- - {# Table View #} -
-
- +
+
+
+
- - - - - + + {% comment %} + {% endcomment %} - + + + + - {% for job in page_obj %} + {% comment %} This loop relies on the 'jobs' variable passed from the Django view {% endcomment %} + {% for job in jobs %} - - - - - + + {% comment %} + {% endcomment %} - + + + {# CANDIDATE MANAGEMENT DATA - 7 SEPARATE COLUMNS CORRESPONDING TO THE HEADER #} + + + + + + + {% endfor %} @@ -251,45 +312,20 @@ - - {% if page_obj.has_other_pages %} - - {% endif %} - {% else %} + + + {% comment %} Fallback/Empty State {% endcomment %} + {% if not jobs and not job_list_data and not page_obj %}
-

No job postings found

-

Create your first job posting to get started or adjust your filters.

+

{% trans "No job postings found" %}

+

{% trans "Create your first job posting to get started or adjust your filters." %}

- Create Job + {% trans "Create Job" %}
{% endif %} -{% endblock %} +{% endblock %} \ No newline at end of file
{% trans "Job Title" %}{% trans "Department" %}{% trans "Location" %}{% trans "Job Type" %}{% trans "Status" %}{% trans "Job ID" %}{% trans "Job Title" %}{% trans "Status" %}{% trans "Source" %}{% trans "Actions" %}{% trans "Actions" %}{% trans "Manage Forms" %} + {% trans "Applicants Metrics" %} + + + + + + + + + + + + +
{% trans "Applied" %}{% trans "Screened" %}{% trans "Exam" %} + + + + + +
PF
+
{% trans "Interview" %} + + + + + +
PF
+
{% trans "Offer" %}
+
{{ job.title }}{{ job.department|default:"N/A" }}{{ job.get_location_display }}{{ job.get_job_type_display }}{{ job.get_status_display }}{{ job }}{{ job.title }}{{ job.status }}{{ job.get_source }} + + + {% if job.metrics.applied %}{{ job.metrics.applied }}{% else %}-{% endif %}{% if job.metrics.screening %}{{ job.metrics.screening }}{% else %}-{% endif %}{% if job.metrics.exam_p %}{{ job.metrics.exam_p }}{% else %}-{% endif %}{% if job.metrics.exam_f %}{{ job.metrics.exam_f }}{% else %}-{% endif %}{% if job.metrics.interview_p %}{{ job.metrics.interview_p }}{% else %}-{% endif %}{% if job.metrics.interview_f %}{{ job.metrics.interview_f }}{% else %}-{% endif %}{% if job.metrics.offer %}{{ job.metrics.offer }}{% else %}-{% endif %}