From 64b27ea52c6356ac0196bfb7f4bc299f801ff11c Mon Sep 17 00:00:00 2001 From: Faheed Date: Mon, 15 Dec 2025 17:28:09 +0300 Subject: [PATCH 1/3] interview rersult implementation fixed' --- recruitment/views.py | 6 +-- templates/interviews/interview_detail.html | 25 +++++++++- templates/recruitment/settings_list.html | 55 +--------------------- 3 files changed, 28 insertions(+), 58 deletions(-) diff --git a/recruitment/views.py b/recruitment/views.py index bfa2d13..d133771 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -4290,12 +4290,10 @@ def update_interview_result(request,slug): form = InterviewResultForm(request.POST, instance=interview) if form.is_valid(): - - interview.save(update_fields=['interview_result', 'result_comments']) - + form.save() # Saves form data - messages.success(request, _("Interview cancelled successfully.")) + messages.success(request, _(f"Interview result updated successfully to {interview.interview_result}.")) return redirect("interview_detail", slug=schedule.slug) else: error_list = [ diff --git a/templates/interviews/interview_detail.html b/templates/interviews/interview_detail.html index 00f14dc..7383fb3 100644 --- a/templates/interviews/interview_detail.html +++ b/templates/interviews/interview_detail.html @@ -523,11 +523,34 @@ {% if schedule.status == 'completed' %} - +
+ {% if interview.interview_result %} + {% trans 'Interview Result : ' %} + {% if interview.interview_result == 'passed' %} + + {{ interview.interview_result }} + + {% elif interview.interview_result == 'failed' %} + + {{ interview.interview_result }} + + {% else %} + + {{ interview.interview_result }} + + {% endif %} + {% else %} + + {% trans "No Result Yet" %} + + {% endif %} +
+ {% endif %} diff --git a/templates/recruitment/settings_list.html b/templates/recruitment/settings_list.html index 3eef67a..527daf5 100644 --- a/templates/recruitment/settings_list.html +++ b/templates/recruitment/settings_list.html @@ -109,49 +109,7 @@ - {% if page_obj.has_other_pages %} - - {% endif %} + {% include "includes/paginator.html" %} {% else %}
@@ -169,16 +127,7 @@
{% endif %} -
- - {% if page_obj %} - Showing {{ page_obj.start_index }}-{{ page_obj.end_index }} of {{ page_obj.paginator.count }} settings - {% if search_query %} - (filtered by: "{{ search_query }}") - {% endif %} - {% endif %} - -
+ From e103be01b4e46b9180e7965ba469df95a1f7d7cd Mon Sep 17 00:00:00 2001 From: Faheed Date: Mon, 15 Dec 2025 18:53:19 +0300 Subject: [PATCH 2/3] changes to intergration settings inilialization comman --- recruitment/forms.py | 7 +- recruitment/migrations/0004_settings_name.py | 18 ++ recruitment/models.py | 7 + recruitment/utils.py | 38 ++- templates/recruitment/settings_detail.html | 201 ++++++++----- templates/recruitment/settings_list.html | 282 +++++++++++-------- 6 files changed, 351 insertions(+), 202 deletions(-) create mode 100644 recruitment/migrations/0004_settings_name.py diff --git a/recruitment/forms.py b/recruitment/forms.py index 5702b1f..eda166f 100644 --- a/recruitment/forms.py +++ b/recruitment/forms.py @@ -2015,8 +2015,13 @@ class SettingsForm(forms.ModelForm): class Meta: model = Settings - fields = ['key', 'value'] + fields = ['name','key', 'value'] widgets = { + 'name': forms.TextInput(attrs={ + 'class': 'form-control mb-3', + 'placeholder': 'e.g., Zoom', + 'required': True + }), 'key': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter setting key', diff --git a/recruitment/migrations/0004_settings_name.py b/recruitment/migrations/0004_settings_name.py new file mode 100644 index 0000000..c5c7f1f --- /dev/null +++ b/recruitment/migrations/0004_settings_name.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.7 on 2025-12-15 14:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruitment', '0003_interview_interview_result_interview_result_comments'), + ] + + operations = [ + migrations.AddField( + model_name='settings', + name='name', + field=models.CharField(blank=True, help_text="A human-readable name (e.g., 'Zoom')", max_length=100, null=True, verbose_name='Friendly Name'), + ), + ] diff --git a/recruitment/models.py b/recruitment/models.py index 8564211..0598ef1 100644 --- a/recruitment/models.py +++ b/recruitment/models.py @@ -2593,6 +2593,12 @@ class Document(Base): class Settings(Base): """Model to store key-value pair settings""" + name = models.CharField( + max_length=100, + verbose_name=_("Friendly Name"), + help_text=_("A human-readable name (e.g., 'Zoom')"), + null=True, blank=True + ) key = models.CharField( max_length=100, @@ -2604,6 +2610,7 @@ class Settings(Base): verbose_name=_("Setting Value"), help_text=_("Value for the setting"), ) + class Meta: verbose_name = _("Setting") diff --git a/recruitment/utils.py b/recruitment/utils.py index 43933cc..8acff87 100644 --- a/recruitment/utils.py +++ b/recruitment/utils.py @@ -51,7 +51,7 @@ def get_setting(key, default=None): return default -def set_setting(key, value): +def set_setting(key, value,name): """ Set a setting value in the database @@ -62,8 +62,9 @@ def set_setting(key, value): Returns: Settings: The created or updated setting object """ + print(key,value) setting, created = Settings.objects.update_or_create( - key=key, defaults={"value": str(value)} + key=key, value=value,name=name ) return setting @@ -262,26 +263,35 @@ def initialize_default_settings(): """ # Zoom settings zoom_settings = { - "ZOOM_ACCOUNT_ID": getattr(settings, "ZOOM_ACCOUNT_ID", ""), - "ZOOM_CLIENT_ID": getattr(settings, "ZOOM_CLIENT_ID", ""), - "ZOOM_CLIENT_SECRET": getattr(settings, "ZOOM_CLIENT_SECRET", ""), - "ZOOM_WEBHOOK_API_KEY": getattr(settings, "ZOOM_WEBHOOK_API_KEY", ""), - "SECRET_TOKEN": getattr(settings, "SECRET_TOKEN", ""), + "ZOOM_ACCOUNT_ID": "", + "ZOOM_CLIENT_ID": "", + "ZOOM_CLIENT_SECRET": "", + "ZOOM_WEBHOOK_API_KEY": "", + "SECRET_TOKEN": "", } # LinkedIn settings linkedin_settings = { - "LINKEDIN_CLIENT_ID": getattr(settings, "LINKEDIN_CLIENT_ID", ""), - "LINKEDIN_CLIENT_SECRET": getattr(settings, "LINKEDIN_CLIENT_SECRET", ""), - "LINKEDIN_REDIRECT_URI": getattr(settings, "LINKEDIN_REDIRECT_URI", ""), + "LINKEDIN_CLIENT_ID": "", + "LINKEDIN_CLIENT_SECRET": "", + "LINKEDIN_REDIRECT_URI": "", } - # Create settings if they don't exist - all_settings = {**zoom_settings, **linkedin_settings} + openrouter_settings = { + "OPENROUTER_API_URL":"", + "OPENROUTER_API_KEY":"", + "OPENROUTER_MODEL":"" + } + + + # Create settings if they don't exist + all_settings = {**zoom_settings, **linkedin_settings,**openrouter_settings} + names=['ZOOM','ZOOM','ZOOM','ZOOM','ZOOM','LINKEDIN','LINKEDIN','LINKEDIN','OPENROUTER','OPENROUTER','OPENROUTER'] + i=0 for key, value in all_settings.items(): - if value: # Only set if value exists - set_setting(key, value) + set_setting(key, value,names[i]) + i=i+1 ##################################### diff --git a/templates/recruitment/settings_detail.html b/templates/recruitment/settings_detail.html index 78c59dd..5462e5f 100644 --- a/templates/recruitment/settings_detail.html +++ b/templates/recruitment/settings_detail.html @@ -1,82 +1,153 @@ {% extends "base.html" %} -{% load widget_tweaks %} -{% block title %}Setting Details{% endblock %} +{% load i18n %} + +{% block title %}{% trans "Setting Details" %} | {{ setting.key }}{% endblock %} {% block content %}
+ + +
+
+

{% trans "Setting Details" %}

+

{{ setting.name|default:setting.key }}

+
+ +
+
-
- - - - -
-

- - Setting Details -

-
- - Edit Setting - - - Back to List - +
+
+
+
{% trans "Configuration" %}
-
+
+
+ +
+ {{ setting.key }} + +
+
- -
-
- {% if messages %} - {% for message in messages %} - + +
+
+
+
{% trans "Metadata" %}
+ +
+ + {{ setting.get_category_display }} +
+ +
+ +
+
+ +
+
+ + {{ setting.created_at|date:"M d, Y H:i" }} +
+
+ +
+
+ +
+
+ + {{ setting.updated_at|date:"M d, Y H:i" }} +
+
+ +
+
+ +
+
+ + {{ setting.updated_by.get_full_name|default:"System" }} +
+
+
{% endblock %} + +{% block customJS %} + +{% endblock %} \ No newline at end of file diff --git a/templates/recruitment/settings_list.html b/templates/recruitment/settings_list.html index 527daf5..179199c 100644 --- a/templates/recruitment/settings_list.html +++ b/templates/recruitment/settings_list.html @@ -1,137 +1,175 @@ {% extends "base.html" %} -{% load widget_tweaks %} {% load i18n %} -{% block title %}Settings{% endblock %} + +{% block title %}{% trans "Integration Settings" %}{% endblock %} {% block content %} -
-