Initial commit

This commit is contained in:
ifaryd
2026-05-12 16:54:38 +00:00
commit 8638273475
92 changed files with 6861 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
{% extends "base.html" %}
{% load static %}
{% block title %}Postuler — {{ job.title }} — Jool International{% endblock %}
{% block extra_css %}
<link rel="stylesheet" href="{% static 'css/careers.css' %}">
{% endblock %}
{% block content %}
<div class="apply-wrapper">
<a href="{{ job.get_absolute_url }}" class="apply-job-ref">
<span class="material-icons-round">arrow_back</span> {{ job.title }}
</a>
<h1 class="apply-title">Votre candidature</h1>
<p class="apply-subtitle">Complétez le formulaire ci-dessous. Tous les champs marqués d'un * sont obligatoires.</p>
<form method="post" enctype="multipart/form-data" novalidate>
{% csrf_token %}
<div class="form-row">
<div class="form-group">
<label class="form-label required" for="{{ form.first_name.id_for_label }}">{{ form.first_name.label }}</label>
{{ form.first_name }}
{% if form.first_name.errors %}
{% for error in form.first_name.errors %}<p class="form-error">{{ error }}</p>{% endfor %}
{% endif %}
</div>
<div class="form-group">
<label class="form-label required" for="{{ form.last_name.id_for_label }}">{{ form.last_name.label }}</label>
{{ form.last_name }}
{% if form.last_name.errors %}
{% for error in form.last_name.errors %}<p class="form-error">{{ error }}</p>{% endfor %}
{% endif %}
</div>
</div>
<div class="form-row">
<div class="form-group">
<label class="form-label required" for="{{ form.email.id_for_label }}">{{ form.email.label }}</label>
{{ form.email }}
{% if form.email.errors %}
{% for error in form.email.errors %}<p class="form-error">{{ error }}</p>{% endfor %}
{% endif %}
</div>
<div class="form-group">
<label class="form-label" for="{{ form.phone.id_for_label }}">{{ form.phone.label }}</label>
{{ form.phone }}
</div>
</div>
<div class="form-group">
<label class="form-label" for="{{ form.linkedin_url.id_for_label }}">{{ form.linkedin_url.label }}</label>
{{ form.linkedin_url }}
</div>
<div class="form-group">
<label class="form-label required" for="{{ form.cover_letter.id_for_label }}">{{ form.cover_letter.label }}</label>
{{ form.cover_letter }}
{% if form.cover_letter.errors %}
{% for error in form.cover_letter.errors %}<p class="form-error">{{ error }}</p>{% endfor %}
{% endif %}
</div>
<div class="form-group">
<label class="form-label required" for="{{ form.cv_file.id_for_label }}">{{ form.cv_file.label }}</label>
{{ form.cv_file }}
<p class="form-help">{{ form.cv_file.help_text }}</p>
{% if form.cv_file.errors %}
{% for error in form.cv_file.errors %}<p class="form-error">{{ error }}</p>{% endfor %}
{% endif %}
</div>
<div class="form-group">
<label class="form-label" for="{{ form.portfolio_url.id_for_label }}">{{ form.portfolio_url.label }}</label>
{{ form.portfolio_url }}
</div>
{% if form.non_field_errors %}
<div style="background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:14px 18px;border-radius:12px;margin-bottom:20px;">
{% for error in form.non_field_errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
<button type="submit" class="btn-submit">
<span class="material-icons-round">send</span> Envoyer ma candidature
</button>
</form>
</div>
{% endblock %}

View File

@@ -0,0 +1,22 @@
{% extends "base.html" %}
{% load static %}
{% block title %}Candidature envoyée — Jool International{% endblock %}
{% block extra_css %}
<link rel="stylesheet" href="{% static 'css/careers.css' %}">
{% endblock %}
{% block content %}
<div class="success-wrapper">
<div class="success-icon">
<span class="material-icons-round">check_circle</span>
</div>
<h1 class="success-title">Candidature reçue !</h1>
<p class="success-body">
Merci pour votre intérêt pour le poste de <strong>{{ job.title }}</strong>.<br>
Nous avons bien reçu votre dossier et vous contacterons dans les plus brefs délais.
</p>
<a href="{% url 'careers:job_list' %}" class="btn-back">Voir toutes les offres</a>
</div>
{% endblock %}

View File

@@ -0,0 +1,12 @@
Bonjour {{ application.first_name }},
Nous avons bien reçu votre candidature pour le poste de :
{{ application.job.title }} ({{ application.job.get_contract_type_display }})
{{ application.job.location }}
Votre dossier est en cours d'examen par notre équipe RH. Nous vous contacterons dans les meilleurs délais.
Merci pour votre intérêt pour Jool International.
Cordialement,
L'équipe Jool International

View File

@@ -0,0 +1 @@
Candidature reçue — {{ application.job.title }} | Jool International

View File

@@ -0,0 +1,16 @@
Nouvelle candidature reçue.
POSTE : {{ application.job.title }} ({{ application.job.get_contract_type_display }})
CANDIDAT: {{ application.full_name }}
EMAIL : {{ application.email }}
TEL : {{ application.phone|default:"—" }}
LinkedIn: {{ application.linkedin_url|default:"—" }}
Portfolio: {{ application.portfolio_url|default:"—" }}
LETTRE DE MOTIVATION :
{{ application.cover_letter }}
CV : voir l'interface d'administration Django.
---
Gérer cette candidature : http://localhost:8000/admin/careers/jobapplication/

View File

@@ -0,0 +1 @@
Nouvelle candidature — {{ application.job.title }} — {{ application.full_name }}

View File

@@ -0,0 +1,63 @@
{% extends "base.html" %}
{% load static %}
{% block title %}{{ job.title }} — Carrières Jool International{% endblock %}
{% block extra_css %}
<link rel="stylesheet" href="{% static 'css/careers.css' %}">
{% endblock %}
{% block content %}
<div class="job-detail-hero">
<div class="job-detail-breadcrumb">
<a href="{% url 'careers:job_list' %}">Carrières</a> &rsaquo; {{ job.title }}
</div>
<h1 class="job-detail-title">{{ job.title }}</h1>
<div class="job-detail-tags">
<span class="job-tag"><span class="material-icons-round">work</span> {{ job.get_contract_type_display }}</span>
<span class="job-tag"><span class="material-icons-round">location_on</span> {{ job.location }}</span>
<span class="job-tag"><span class="material-icons-round">category</span> {{ job.get_department_display }}</span>
{% if job.is_remote %}<span class="job-tag"><span class="material-icons-round">wifi</span> Télétravail possible</span>{% endif %}
{% if job.salary_range %}<span class="job-tag"><span class="material-icons-round">payments</span> {{ job.salary_range }}</span>{% endif %}
</div>
{% if job.is_open %}
<a href="{% url 'careers:apply' slug=job.slug %}" class="btn-apply-lg">
<span class="material-icons-round">send</span> Postuler maintenant
</a>
{% else %}
<div class="job-closed-banner">
<span class="material-icons-round">info</span>
Cette offre n'accepte plus de candidatures.
</div>
{% endif %}
</div>
<div class="job-detail-body">
{% if job.application_deadline %}
<p style="color:#888;font-size:13px;margin-bottom:32px;">
<span class="material-icons-round" style="font-size:15px;vertical-align:middle;">event</span>
Date limite : {{ job.application_deadline|date:"d/m/Y" }}
</p>
{% endif %}
<div class="job-section-title">Description du poste</div>
<div>{{ job.description|linebreaks }}</div>
<div class="job-section-title">Compétences requises</div>
<div>{{ job.requirements|linebreaks }}</div>
{% if job.nice_to_have %}
<div class="job-section-title">Compétences souhaitées</div>
<div>{{ job.nice_to_have|linebreaks }}</div>
{% endif %}
{% if job.is_open %}
<div style="margin-top:48px;padding-top:32px;border-top:1px solid var(--gray);text-align:center;">
<p style="color:#555;margin-bottom:20px;">Ce poste vous correspond ? Envoyez votre candidature dès maintenant.</p>
<a href="{% url 'careers:apply' slug=job.slug %}" class="btn-apply-lg">
<span class="material-icons-round">send</span> Postuler
</a>
</div>
{% endif %}
</div>
{% endblock %}

View File

@@ -0,0 +1,50 @@
{% extends "base.html" %}
{% load static %}
{% block title %}Carrières — Jool International{% endblock %}
{% block extra_css %}
<link rel="stylesheet" href="{% static 'css/careers.css' %}">
{% endblock %}
{% block content %}
<div class="careers-hero reveal">
<h1>Rejoignez l'aventure <span>Jool</span></h1>
<p>Nous construisons l'avenir de l'agriculture africaine. Découvrez nos opportunités et faites partie de l'équipe.</p>
</div>
<div class="careers-filters">
<span class="filter-label">Département :</span>
<a href="{% url 'careers:job_list' %}" class="filter-chip {% if not active_dept %}active{% endif %}">Tous</a>
{% for value, label in departments %}
<a href="?dept={{ value }}" class="filter-chip {% if active_dept == value %}active{% endif %}">{{ label }}</a>
{% endfor %}
</div>
<div class="jobs-grid">
{% for job in jobs %}
<div class="job-card reveal">
<div class="job-card-header">
<span class="job-dept-badge">{{ job.get_department_display }}</span>
<span class="job-contract">{{ job.get_contract_type_display }}</span>
</div>
<div class="job-card-title">{{ job.title }}</div>
<div class="job-card-meta">
<span><span class="material-icons-round">location_on</span> {{ job.location }}</span>
{% if job.is_remote %}<span><span class="material-icons-round">wifi</span> Télétravail</span>{% endif %}
{% if job.salary_range %}<span><span class="material-icons-round">payments</span> {{ job.salary_range }}</span>{% endif %}
</div>
<div class="job-card-footer">
<a href="{{ job.get_absolute_url }}" class="btn-apply">Voir l'offre</a>
{% if job.application_deadline %}
<span class="job-deadline">Jusqu'au {{ job.application_deadline|date:"d/m/Y" }}</span>
{% endif %}
</div>
</div>
{% empty %}
<div class="jobs-empty">
<p>Aucune offre disponible pour le moment.<br>Revenez bientôt !</p>
</div>
{% endfor %}
</div>
{% endblock %}