diff --git a/.gitignore b/.gitignore index 7000088..d098f46 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ var/ *.log *.pot *.sqlite3 -local_settings.py +settings.py db.sqlite3 # Virtual environment @@ -95,7 +95,7 @@ coverage.xml # Django stuff: # Local settings -local_settings.py +settings.py # Database sqlite files: # The base directory for relative paths in .gitignore diff --git a/NorahUniversity/__pycache__/settings.cpython-312.pyc b/NorahUniversity/__pycache__/settings.cpython-312.pyc index 48c95df..820adf1 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 4e7bb3d..3eb57de 100644 --- a/NorahUniversity/settings.py +++ b/NorahUniversity/settings.py @@ -135,9 +135,9 @@ WSGI_APPLICATION = 'NorahUniversity.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'norahuniversity', - 'USER': 'norahuniversity', - 'PASSWORD': 'norahuniversity', + 'NAME': 'haikal_db', + 'USER': 'faheed', + 'PASSWORD': 'Faheed@215', 'HOST': '127.0.0.1', 'PORT': '5432', } @@ -185,26 +185,14 @@ ACCOUNT_SIGNUP_FIELDS = ['email*', 'password1*', 'password2*'] ACCOUNT_UNIQUE_EMAIL = True ACCOUNT_EMAIL_VERIFICATION = 'none' ACCOUNT_USER_MODEL_USERNAME_FIELD = None -ACCOUNT_EMAIL_VERIFICATION = "mandatory" +ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True ACCOUNT_FORMS = {'signup': 'recruitment.forms.StaffSignupForm'} -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -EMAIL_HOST = '10.10.1.110' #'smtp.gmail.com' -EMAIL_PORT = 2225 #587 -EMAIL_USE_TLS = False -EMAIL_USE_SSL = False -EMAIL_TIMEOUT = 10 - -DEFAULT_FROM_EMAIL = 'norahuniversity@example.com' - -# Gmail SMTP credentials -# Remove the comment below if you want to use Gmail SMTP server -# EMAIL_HOST_USER = 'your_email@gmail.com' -# EMAIL_HOST_PASSWORD = 'your_password' +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' # Crispy Forms Configuration CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" diff --git a/recruitment/__pycache__/forms.cpython-312.pyc b/recruitment/__pycache__/forms.cpython-312.pyc index a61fc29..2c25944 100644 Binary files a/recruitment/__pycache__/forms.cpython-312.pyc and b/recruitment/__pycache__/forms.cpython-312.pyc differ diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 7e98f6b..d6982ca 100644 Binary files a/recruitment/__pycache__/models.cpython-312.pyc and b/recruitment/__pycache__/models.cpython-312.pyc differ diff --git a/recruitment/__pycache__/urls.cpython-312.pyc b/recruitment/__pycache__/urls.cpython-312.pyc index e468e4d..c06a1d5 100644 Binary files a/recruitment/__pycache__/urls.cpython-312.pyc and b/recruitment/__pycache__/urls.cpython-312.pyc differ diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index 9e9649a..8c83a5d 100644 Binary files a/recruitment/__pycache__/views.cpython-312.pyc and b/recruitment/__pycache__/views.cpython-312.pyc differ diff --git a/recruitment/__pycache__/views_frontend.cpython-312.pyc b/recruitment/__pycache__/views_frontend.cpython-312.pyc index a19c31f..13ae2ea 100644 Binary files a/recruitment/__pycache__/views_frontend.cpython-312.pyc and b/recruitment/__pycache__/views_frontend.cpython-312.pyc differ diff --git a/templates/recruitment/dashboard.html b/templates/recruitment/dashboard.html index 1212eeb..e3dba5c 100644 --- a/templates/recruitment/dashboard.html +++ b/templates/recruitment/dashboard.html @@ -30,54 +30,113 @@ box-shadow: 0 6px 16px rgba(0,0,0,0.1); } - /* Card Header and Icon Styling */ + /* ------------------------------------------------------------- */ + /* CONSOLIDATED CARD HEADER STYLES (for both main and stat cards)*/ + /* ------------------------------------------------------------- */ .card-header { font-weight: 600; - padding: 1.25rem; + /* Consistent, reduced padding for compact look */ + padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--kaauh-border); background-color: #f8f9fa; display: flex; justify-content: space-between; align-items: center; + height: auto; } - .card-header h3, .card-header h2 { + /* Target h2 (for main headers) and h3 (for stat card headers) */ + .card-header h1, .card-header h2, .card-header h3, .card-header h6 { display: flex; align-items: center; color: var(--kaauh-primary-text); - font-size: 1.25rem; - font-weight: 600; margin: 0; + + /* Font size for MAIN card titles (e.g., "Data Scope: All Jobs") */ + font-size: 1.25rem; + font-weight: 600; } + /* Override for H3 inside stat cards to make them very small */ + .stats .card-header h3 { + font-size: 0.85rem; /* Smallest size for the 9-card layout */ + font-weight: 600; + white-space: nowrap; /* Prevent title from wrapping */ + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + } + .stat-icon { color: var(--kaauh-teal); - font-size: 1.75rem; - margin-right: 0.75rem; + font-size: 0.8rem; /* Small icon size */ + margin-right: 0.25rem; + /* Note: For 9-card density, you might still want to hide this on mobile */ } - /* Stats Grid Layout */ + /* ------------------------------------------------------------- */ + /* STATS GRID LAYOUT (9 Columns) */ + /* ------------------------------------------------------------- */ .stats { display: grid; - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); - gap: 1.5rem; - margin-bottom: 3rem; + /* Force 9 columns */ + grid-template-columns: repeat(9, 1fr); + gap: 0.75rem; + margin-bottom: 2rem; } /* Stat Card Specific Styling */ .stat-value { - font-size: 2.8rem; + /* This is the most important number */ + font-size: 1.5rem; /* Increased slightly for focus, was 1rem/1.25rem */ text-align: center; color: var(--kaauh-teal-dark); - font-weight: 700; - padding: 1rem 1rem 0.5rem; + font-weight: 700; + padding: 0.5rem 0.25rem 0.1rem; /* Very little bottom padding */ + line-height: 1.2; } .stat-caption { - font-size: 0.9rem; + /* Smallest text for the label below the value */ + font-size: 0.7rem; /* Minimized size */ text-align: center; color: #6c757d; - padding-bottom: 1rem; + padding: 0 0.25rem 0.5rem; + line-height: 1.1; + } + + /* ------------------------------------------------------------- */ + /* RESPONSIVE DESIGN */ + /* ------------------------------------------------------------- */ + + /* On tablets and smaller laptops (1200px and down) */ + @media (max-width: 1200px) { + .stats { + /* Switch to 4 columns on medium screens */ + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + } + .stat-value { + font-size: 1.75rem; /* Increase value size slightly when more space is available */ + } + .stat-caption { + font-size: 0.8rem; + } + } + + /* On phones (576px and down) */ + @media (max-width: 576px) { + .stats { + /* Stack to 2 columns on mobile for readability */ + grid-template-columns: repeat(2, 1fr); + gap: 0.75rem; + } + .stat-value { + font-size: 1.5rem; + } + .stat-caption { + font-size: 0.75rem; + } } /* Dropdown/Filter Styling */ @@ -130,7 +189,7 @@