diff --git a/NorahUniversity/__pycache__/settings.cpython-312.pyc b/NorahUniversity/__pycache__/settings.cpython-312.pyc index 9e1dff9..160b1cf 100644 Binary files a/NorahUniversity/__pycache__/settings.cpython-312.pyc and b/NorahUniversity/__pycache__/settings.cpython-312.pyc differ 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 63027e7..c18ea68 100644 Binary files a/recruitment/__pycache__/linkedin_service.cpython-312.pyc and b/recruitment/__pycache__/linkedin_service.cpython-312.pyc differ diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 7bccb13..53b4e48 100644 Binary files a/recruitment/__pycache__/models.cpython-312.pyc and b/recruitment/__pycache__/models.cpython-312.pyc differ diff --git a/recruitment/__pycache__/validators.cpython-312.pyc b/recruitment/__pycache__/validators.cpython-312.pyc index 56c5562..0df3c0e 100644 Binary files a/recruitment/__pycache__/validators.cpython-312.pyc and b/recruitment/__pycache__/validators.cpython-312.pyc differ diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index 4c41dba..4f4ce2a 100644 Binary files a/recruitment/__pycache__/views.cpython-312.pyc and b/recruitment/__pycache__/views.cpython-312.pyc differ diff --git a/recruitment/linkedin_service.py b/recruitment/linkedin_service.py index d4095ae..63da644 100644 --- a/recruitment/linkedin_service.py +++ b/recruitment/linkedin_service.py @@ -252,6 +252,9 @@ class LinkedInService: hashtags.insert(0, dept_hashtag) message_parts.append("\n" + " ".join(hashtags)) + + if len(message_parts)>=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