=Candidate_admin
This commit is contained in:
parent
3a74057ec0
commit
f16367a799
14 changed files with 1157 additions and 151 deletions
|
|
@ -2,21 +2,30 @@ import os
|
|||
import tempfile
|
||||
import zipfile
|
||||
|
||||
from collections import OrderedDict
|
||||
from datetime import date, datetime
|
||||
from django import forms
|
||||
from django.contrib import admin
|
||||
from django.db import models
|
||||
from django.db.models import Case, Count, When
|
||||
from django.http import HttpResponse
|
||||
from django.core.mail import send_mail
|
||||
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.styles import Font, Style
|
||||
from openpyxl.writer.excel import save_virtual_workbook
|
||||
|
||||
from stages.models import (
|
||||
Teacher, Option, Student, Section, Level, Klass, Corporation,
|
||||
CorpContact, Domain, Period, Availability, Training, Course,
|
||||
AsaCandidate, AseCandidate, EdePECandidate, EdePSCandidate, AsscCandidate,
|
||||
EdsCandidate,
|
||||
Candidate, District, Config
|
||||
)
|
||||
from stages.pdf import ChargeSheetPDF
|
||||
|
||||
|
||||
openxml_contenttype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
|
||||
|
||||
def print_charge_sheet(modeladmin, request, queryset):
|
||||
"""
|
||||
Génère un pdf pour chaque enseignant, écrit le fichier créé
|
||||
|
|
@ -192,7 +201,7 @@ class AvailabilityInline(admin.StackedInline):
|
|||
ordering = ('corporation__name',)
|
||||
extra = 1
|
||||
formfield_overrides = {
|
||||
models.TextField: {'widget': forms.Textarea(attrs={'rows':2, 'cols':40})},
|
||||
models.TextField: {'widget': forms.Textarea(attrs={'rows': 2, 'cols': 40})},
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -227,6 +236,79 @@ class CourseAdmin(admin.ModelAdmin):
|
|||
search_fields = ('teacher__last_name', 'public', 'subject')
|
||||
|
||||
|
||||
def send_confirmation_mail(modeladmin, request, queryset):
|
||||
send_mail(
|
||||
'Subject here',
|
||||
'Here is the message.',
|
||||
'alain.zosso@webzos.com',
|
||||
['azo@rpn.ch'],
|
||||
fail_silently=False,
|
||||
)
|
||||
send_confirmation_mail.short_description = "Envoyer email de confirmation"
|
||||
|
||||
|
||||
def export_candidates(modeladmin, request, queryset):
|
||||
# Tous les champs du modèle
|
||||
export_fields = OrderedDict([(f.verbose_name, f.name) for f in Candidate._meta.get_fields()])
|
||||
export_fields['Canton'] = 'district__abrev'
|
||||
export_fields['Employeur'] = 'corporation__name'
|
||||
export_fields['FEE/FPP'] = 'instructor__last_name'
|
||||
del export_fields['ID']
|
||||
|
||||
wb = Workbook()
|
||||
ws = wb.active
|
||||
ws.title = 'Exportation'
|
||||
bold = Style(font=Font(bold=True))
|
||||
for col_idx, header in enumerate(export_fields.keys(), start=1):
|
||||
cell = ws.cell(row=1, column=col_idx)
|
||||
cell.value = header
|
||||
cell.style = bold
|
||||
query_keys = [f for f in export_fields.values() if f is not None]
|
||||
for row_idx, tr in enumerate(queryset.values(*query_keys), start=2):
|
||||
for col_idx, field in enumerate(query_keys, start=1):
|
||||
ws.cell(row=row_idx, column=col_idx).value = tr[field]
|
||||
|
||||
response = HttpResponse(save_virtual_workbook(wb), content_type=openxml_contenttype)
|
||||
response['Content-Disposition'] = 'attachment; filename=%s%s.xlsx' % (
|
||||
'candidats_export_', date.strftime(date.today(), '%Y-%m-%d'))
|
||||
return response
|
||||
export_candidates.short_description = "Exporter les candidats sélectionnés"
|
||||
|
||||
|
||||
class CandidateAdmin(admin.ModelAdmin):
|
||||
list_display = ('last_name', 'first_name', 'section', 'confirm_email')
|
||||
list_filter = ('section', 'option', )
|
||||
readonly_fields = ('total_result_points', 'total_result_mark', 'date_confirmation_mail', )
|
||||
actions = [send_confirmation_mail, export_candidates]
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'fields': (('first_name', 'last_name', 'gender'),
|
||||
('street', 'pcode', 'city', 'district'),
|
||||
('mobile', 'email'),
|
||||
('birth_date', 'avs', 'handicap', ),
|
||||
('section', 'option'),
|
||||
('corporation', 'instructor'),
|
||||
('deposite_date', 'date_confirmation_mail')
|
||||
),
|
||||
}),
|
||||
("FE", {
|
||||
'classes': ('collapse',),
|
||||
'fields': ('exemption_ecg',),
|
||||
}),
|
||||
("EDE/EDS", {
|
||||
'classes': ('collapse',),
|
||||
'fields': (('registration_form', 'certificate_of_payement', 'cv', 'certif_of_cfc',
|
||||
'police_record', 'certif_of_800h', 'reflexive_text', 'work_certificate', 'marks_certificate',
|
||||
'proc_admin_ext', 'promise', 'contract'),
|
||||
'comment',
|
||||
('interview_date', 'interview_room'),
|
||||
('examination_result', 'interview_result', 'file_result', 'total_result_points',
|
||||
'total_result_mark')
|
||||
),
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
admin.site.register(Section)
|
||||
admin.site.register(Level)
|
||||
admin.site.register(Klass, KlassAdmin)
|
||||
|
|
@ -240,9 +322,6 @@ admin.site.register(Domain)
|
|||
admin.site.register(Period, PeriodAdmin)
|
||||
admin.site.register(Availability, AvailabilityAdmin)
|
||||
admin.site.register(Training, TrainingAdmin)
|
||||
admin.site.register(AsaCandidate)
|
||||
admin.site.register(AseCandidate)
|
||||
admin.site.register(AsscCandidate)
|
||||
admin.site.register(EdePECandidate)
|
||||
admin.site.register(EdePSCandidate)
|
||||
admin.site.register(EdsCandidate)
|
||||
admin.site.register(Candidate, CandidateAdmin)
|
||||
admin.site.register(District)
|
||||
admin.site.register(Config)
|
||||
|
|
|
|||
|
|
@ -42,62 +42,7 @@ class Migration(migrations.Migration):
|
|||
('name', models.CharField(max_length=30)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AsaAsscCandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('corporation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur')),
|
||||
('instructor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AseCandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('corporation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur')),
|
||||
('instructor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EdePECandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('registration_form', models.BooleanField(default=False)),
|
||||
('certificate_of_payement', models.BooleanField(default=False)),
|
||||
('police_record', models.BooleanField(default=False)),
|
||||
('cv', models.BooleanField(default=False)),
|
||||
('certif_of_cfc', models.BooleanField(default=False)),
|
||||
('certif_of_800h', models.BooleanField(default=False)),
|
||||
('reflexive_text', models.BooleanField(default=False)),
|
||||
('proc_admin_ext', models.BooleanField(default=False)),
|
||||
('work_certificate', models.BooleanField(default=False)),
|
||||
('marks_certificate', models.BooleanField(default=False)),
|
||||
('deposite_date', models.DateField(default=django.utils.timezone.now, verbose_name='Date dépôt dossier')),
|
||||
('corporation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur')),
|
||||
('instructor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EdePSCandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('registration_form', models.BooleanField(default=False)),
|
||||
('certificate_of_payement', models.BooleanField(default=False)),
|
||||
('police_record', models.BooleanField(default=False)),
|
||||
('cv', models.BooleanField(default=False)),
|
||||
('certif_of_cfc', models.BooleanField(default=False)),
|
||||
('certif_of_800h', models.BooleanField(default=False)),
|
||||
('reflexive_text', models.BooleanField(default=False)),
|
||||
('proc_admin_ext', models.BooleanField(default=False)),
|
||||
('work_certificate', models.BooleanField(default=False)),
|
||||
('marks_certificate', models.BooleanField(default=False)),
|
||||
('deposite_date', models.DateField(default=django.utils.timezone.now, verbose_name='Date dépôt dossier')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='district',
|
||||
|
|
|
|||
|
|
@ -13,26 +13,4 @@ class Migration(migrations.Migration):
|
|||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AsscCandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('corporation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur')),
|
||||
('instructor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EdsCandidate',
|
||||
fields=[
|
||||
('candidate_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stages.Candidate')),
|
||||
('corporation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur')),
|
||||
('instructor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP')),
|
||||
],
|
||||
bases=('stages.candidate',),
|
||||
),
|
||||
migrations.RenameModel(
|
||||
old_name='AsaAsscCandidate',
|
||||
new_name='AsaCandidate',
|
||||
),
|
||||
]
|
||||
|
|
|
|||
169
stages/migrations/0005_ame=Ame_Candidate.py
Normal file
169
stages/migrations/0005_ame=Ame_Candidate.py
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-09-07 14:40
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stages', '0004_ame=Add_EdsCandidate_model'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Config',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.CharField(max_length=100)),
|
||||
('value', models.TextField()),
|
||||
('comment', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='candidate',
|
||||
name='tel',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='certif_of_800h',
|
||||
field=models.BooleanField(default=False, verbose_name='Attest. 800h.'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='certif_of_cfc',
|
||||
field=models.BooleanField(default=False, verbose_name='CFC'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='certificate_of_payement',
|
||||
field=models.BooleanField(default=False, verbose_name='Attest. paiement'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='comment',
|
||||
field=models.TextField(blank=True, default='', verbose_name='Remarques'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='contract',
|
||||
field=models.BooleanField(default=False, verbose_name='Contrat valide'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='corporation',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Corporation', verbose_name='Employeur'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='cv',
|
||||
field=models.BooleanField(default=False, verbose_name='CV'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='deposite_date',
|
||||
field=models.DateField(blank=True, default=None, null=True, verbose_name='Date dépôt dossier'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='examination_result',
|
||||
field=models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points examen'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='file_result',
|
||||
field=models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points dossier'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='instructor',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='FEE/FPP'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='interview_date',
|
||||
field=models.DateTimeField(blank=True, default=None, null=True, verbose_name='Date entretien prof.'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='interview_result',
|
||||
field=models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points entretien prof.'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='interview_room',
|
||||
field=models.CharField(blank=True, max_length=50, verbose_name="Salle d'entretien prof."),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='marks_certificate',
|
||||
field=models.BooleanField(default=False, verbose_name='Bull. notes'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='police_record',
|
||||
field=models.BooleanField(default=False, verbose_name='Casier judic.'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='proc_admin_ext',
|
||||
field=models.BooleanField(default=False, verbose_name='Insc. autre école'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='promise',
|
||||
field=models.BooleanField(default=False, verbose_name="Promesse d'eng."),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='reflexive_text',
|
||||
field=models.BooleanField(default=False, verbose_name='Texte réflexif'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='registration_form',
|
||||
field=models.BooleanField(default=False, verbose_name="Formulaire d'inscription"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='total_result_mark',
|
||||
field=models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Note finale'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='total_result_points',
|
||||
field=models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Total points'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='candidate',
|
||||
name='work_certificate',
|
||||
field=models.BooleanField(default=False, verbose_name='Certif. de travail'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='candidate',
|
||||
name='birth_date',
|
||||
field=models.DateField(blank=True, default=None, null=True, verbose_name='Date de naissance'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='candidate',
|
||||
name='date_confirmation_mail',
|
||||
field=models.DateField(blank=True, default=None, null=True, verbose_name='Mail de confirmation'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='candidate',
|
||||
name='district',
|
||||
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='stages.District', verbose_name='Canton'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='candidate',
|
||||
name='option',
|
||||
field=models.CharField(blank=True, max_length=20, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='candidate',
|
||||
name='section',
|
||||
field=models.CharField(choices=[('ASA', 'Aide en soin et accompagnement AFP'), ('ASE', 'Assist. socio-éducatif-ve CFC'), ('ASSC', 'Assist. en soin et santé communautaire CFC'), ('EDE', "Educ. de l'enfance, dipl. ES"), ('EDS', 'Educ. social-e, dipl. ES')], max_length=10, verbose_name='Filière'),
|
||||
),
|
||||
]
|
||||
132
stages/models.py
132
stages/models.py
|
|
@ -425,8 +425,40 @@ GENDER_CHOICES = (
|
|||
('I', 'Inconnu')
|
||||
)
|
||||
|
||||
SECTION_CHOICES = (
|
||||
('ASA', 'Aide en soin et accompagnement AFP'),
|
||||
('ASE', 'Assist. socio-éducatif-ve CFC'),
|
||||
('ASSC', 'Assist. en soin et santé communautaire CFC'),
|
||||
('EDE', 'Educ. de l\'enfance, dipl. ES'),
|
||||
('EDS', 'Educ. social-e, dipl. ES'),
|
||||
)
|
||||
|
||||
|
||||
OPTION_CHOICES = (
|
||||
('GEN', 'Généraliste'),
|
||||
('ENF', 'Enfance'),
|
||||
('PAG', 'Personnes âgées'),
|
||||
('HAN', 'Handicap'),
|
||||
('PE-5400h', 'Parcours Emploi 5400h.'),
|
||||
('PE-3600h', 'Parcours Emploi 3600h.'),
|
||||
('PS', 'Parcours stage'),
|
||||
)
|
||||
|
||||
|
||||
class Config(models.Model):
|
||||
key = models.CharField(max_length=100)
|
||||
value = models.TextField()
|
||||
comment = models.TextField()
|
||||
|
||||
def __str__(self):
|
||||
return '{0} : {1}'.format(self.key, self.value)
|
||||
|
||||
|
||||
|
||||
class District(models.Model):
|
||||
class Meta:
|
||||
verbose_name = 'Canton'
|
||||
|
||||
abrev = models.CharField(max_length=10)
|
||||
name = models.CharField(max_length=30)
|
||||
|
||||
|
|
@ -435,89 +467,61 @@ class District(models.Model):
|
|||
|
||||
|
||||
class Candidate(models.Model):
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Candidat'
|
||||
|
||||
first_name = models.CharField(max_length=40, verbose_name='Prénom')
|
||||
last_name = models.CharField(max_length=40, verbose_name='Nom')
|
||||
gender = models.CharField(max_length=3, choices=GENDER_CHOICES, verbose_name='Genre')
|
||||
birth_date = models.DateField(blank=True, verbose_name='Date de naissance')
|
||||
birth_date = models.DateField(default=None, blank=True, null=True, verbose_name='Date de naissance')
|
||||
street = models.CharField(max_length=150, blank=True, verbose_name='Rue')
|
||||
pcode = models.CharField(max_length=4, verbose_name='Code postal')
|
||||
city = models.CharField(max_length=40, verbose_name='Localité')
|
||||
district = models.ForeignKey(District, default=None, null=True)
|
||||
tel = models.CharField(max_length=40, blank=True, verbose_name='Téléphone')
|
||||
district = models.ForeignKey(District, default=None, null=True, verbose_name='Canton')
|
||||
mobile = models.CharField(max_length=40, blank=True, verbose_name='Portable')
|
||||
email = models.EmailField(verbose_name='Courriel', blank=True)
|
||||
avs = models.CharField(max_length=15, blank=True, verbose_name='No AVS')
|
||||
handicap = models.BooleanField(default=False)
|
||||
|
||||
section = models.ForeignKey(Section, null=False)
|
||||
option = models.ForeignKey(Option, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
section = models.CharField(max_length=10, choices=SECTION_CHOICES, null=False, verbose_name='Filière')
|
||||
option = models.CharField(max_length=20, null=True, blank=True)
|
||||
exemption_ecg = models.BooleanField(default=False)
|
||||
|
||||
date_confirmation_mail = models.DateField(auto_now_add=True, verbose_name='Mail de confirmation')
|
||||
date_confirmation_mail = models.DateField(default=None, blank=True, null=True, verbose_name='Mail de confirmation')
|
||||
|
||||
|
||||
class AsaCandidate(Candidate):
|
||||
corporation = models.ForeignKey('Corporation', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='Employeur')
|
||||
instructor = models.ForeignKey('CorpContact', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='FEE/FPP')
|
||||
|
||||
|
||||
class AsscCandidate(Candidate):
|
||||
corporation = models.ForeignKey('Corporation', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='Employeur')
|
||||
instructor = models.ForeignKey('CorpContact', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='FEE/FPP')
|
||||
|
||||
|
||||
class AseCandidate(Candidate):
|
||||
|
||||
corporation = models.ForeignKey('Corporation', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='Employeur')
|
||||
instructor = models.ForeignKey('CorpContact', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='FEE/FPP')
|
||||
|
||||
|
||||
class EdePECandidate(Candidate):
|
||||
corporation = models.ForeignKey('Corporation', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='Employeur')
|
||||
instructor = models.ForeignKey('CorpContact', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='FEE/FPP')
|
||||
|
||||
# Checking for registration file
|
||||
registration_form = models.BooleanField(default=False)
|
||||
certificate_of_payement = models.BooleanField(default=False)
|
||||
police_record = models.BooleanField(default=False)
|
||||
cv = models.BooleanField(default=False)
|
||||
certif_of_cfc = models.BooleanField(default=False)
|
||||
certif_of_800h = models.BooleanField(default=False)
|
||||
reflexive_text = models.BooleanField(default=False)
|
||||
registration_form = models.BooleanField(default=False, verbose_name="Formulaire d'inscription")
|
||||
certificate_of_payement = models.BooleanField(default=False, verbose_name="Attest. paiement")
|
||||
police_record = models.BooleanField(default=False, verbose_name="Casier judic.")
|
||||
cv = models.BooleanField(default=False, verbose_name="CV")
|
||||
certif_of_cfc = models.BooleanField(default=False, verbose_name="CFC")
|
||||
certif_of_800h = models.BooleanField(default=False, verbose_name="Attest. 800h.")
|
||||
reflexive_text = models.BooleanField(default=False, verbose_name="Texte réflexif")
|
||||
promise = models.BooleanField(default=False, verbose_name="Promesse d'eng.")
|
||||
contract = models.BooleanField(default=False, verbose_name="Contrat valide")
|
||||
comment = models.TextField(default='', blank=True, verbose_name='Remarques')
|
||||
|
||||
proc_admin_ext = models.BooleanField(default=False)
|
||||
work_certificate = models.BooleanField(default=False)
|
||||
marks_certificate = models.BooleanField(default=False)
|
||||
deposite_date = models.DateField(default=timezone.now, verbose_name='Date dépôt dossier')
|
||||
proc_admin_ext = models.BooleanField(default=False, verbose_name="Insc. autre école")
|
||||
work_certificate = models.BooleanField(default=False, verbose_name="Certif. de travail")
|
||||
marks_certificate = models.BooleanField(default=False, verbose_name="Bull. notes")
|
||||
deposite_date = models.DateField(default=None, blank=True, null=True, verbose_name='Date dépôt dossier')
|
||||
interview_date = models.DateTimeField(default=None, blank=True, null=True, verbose_name='Date entretien prof.')
|
||||
interview_room = models.CharField(max_length=50, blank=True, verbose_name="Salle d'entretien prof.")
|
||||
examination_result = models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points examen')
|
||||
interview_result = models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points entretien prof.')
|
||||
file_result = models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Points dossier')
|
||||
total_result_points = models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Total points')
|
||||
total_result_mark = models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='Note finale')
|
||||
|
||||
|
||||
class EdePSCandidate(Candidate):
|
||||
|
||||
# Checking for registration file
|
||||
registration_form = models.BooleanField(default=False)
|
||||
certificate_of_payement = models.BooleanField(default=False)
|
||||
police_record = models.BooleanField(default=False)
|
||||
cv = models.BooleanField(default=False)
|
||||
certif_of_cfc = models.BooleanField(default=False)
|
||||
certif_of_800h = models.BooleanField(default=False)
|
||||
reflexive_text = models.BooleanField(default=False)
|
||||
|
||||
proc_admin_ext = models.BooleanField(default=False)
|
||||
work_certificate = models.BooleanField(default=False)
|
||||
marks_certificate = models.BooleanField(default=False)
|
||||
deposite_date = models.DateField(default=timezone.now, verbose_name='Date dépôt dossier')
|
||||
|
||||
|
||||
class EdsCandidate(Candidate):
|
||||
corporation = models.ForeignKey('Corporation', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='Employeur')
|
||||
instructor = models.ForeignKey('CorpContact', null=True, blank=True,
|
||||
on_delete=models.SET_NULL, verbose_name='FEE/FPP')
|
||||
def confirm_email(self):
|
||||
if self.date_confirmation_mail is None:
|
||||
return u'<img src="{0}" height="20px" width="20px" />'.format('/static/img/no_ok.jpg')
|
||||
else:
|
||||
return u'<img src="{0}" height="20px" width="20px" />'.format('/static/img/ok.jpeg')
|
||||
confirm_email.allow_tags = True
|
||||
|
|
|
|||
BIN
stages/static/img/no_ok.jpg
Normal file
BIN
stages/static/img/no_ok.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
BIN
stages/static/img/ok.jpeg
Normal file
BIN
stages/static/img/ok.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.8 KiB |
Loading…
Add table
Add a link
Reference in a new issue