├── .gitattributes ├── .gitignore ├── .vscode └── settings.json ├── Administration ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-35.pyc │ ├── admin.cpython-35.pyc │ ├── models.cpython-35.pyc │ ├── serializers.cpython-35.pyc │ ├── urls.cpython-35.pyc │ └── views.cpython-35.pyc ├── admin.py ├── apps.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_doctorant_password.py │ ├── 0003_auto_20180603_0945.py │ ├── 0004_enseignant_grade.py │ ├── 0005_auto_20180603_1017.py │ ├── 0006_remove_demandesoutenance_slug.py │ ├── 0007_auto_20180603_1039.py │ ├── 0008_auto_20180603_1040.py │ ├── 0009_auto_20180603_1040.py │ ├── 0010_auto_20180603_1307.py │ ├── 0011_auto_20180603_1309.py │ ├── 0012_auto_20180608_1524.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-35.pyc │ │ ├── 0002_doctorant_password.cpython-35.pyc │ │ ├── 0003_auto_20180603_0945.cpython-35.pyc │ │ ├── 0004_enseignant_grade.cpython-35.pyc │ │ ├── 0005_auto_20180603_1017.cpython-35.pyc │ │ ├── 0006_remove_demandesoutenance_slug.cpython-35.pyc │ │ ├── 0007_auto_20180603_1039.cpython-35.pyc │ │ ├── 0008_auto_20180603_1040.cpython-35.pyc │ │ ├── 0009_auto_20180603_1040.cpython-35.pyc │ │ ├── 0010_auto_20180603_1307.cpython-35.pyc │ │ ├── 0011_auto_20180603_1309.cpython-35.pyc │ │ ├── 0012_auto_20180608_1524.cpython-35.pyc │ │ └── __init__.cpython-35.pyc ├── models.py ├── serializers.py ├── tests.py ├── urls.py └── views.py ├── LICENSE ├── PostGraduation ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-35.pyc │ ├── settings.cpython-35.pyc │ ├── urls.cpython-35.pyc │ └── wsgi.cpython-35.pyc ├── settings.py ├── urls.py └── wsgi.py ├── README.md ├── Template ├── about.html ├── admin │ ├── css │ │ └── style.css │ ├── dashboard.html │ ├── demandesoutenace.html │ ├── editionpv.html │ ├── emploit.html │ ├── index.html │ ├── inscriptions.html │ ├── js │ │ ├── index.js │ │ └── print.min.js │ ├── listeetudiant.html │ ├── recours.html │ ├── reinscription.html │ ├── validergrade.html │ └── validersujet.html ├── css │ ├── bootstrap.css │ ├── flexslider.css │ ├── style.css │ └── swipebox.css ├── enseignant │ ├── login.html │ └── passagegrade.html ├── images │ ├── arr.png │ ├── bann1.jpg │ ├── bann2.jpg │ ├── bann3.jpg │ ├── bann4.jpg │ ├── g1.jpg │ ├── g2.jpg │ ├── g6.jpg │ ├── g7.jpg │ ├── icons.png │ ├── left.png │ ├── left11.png │ ├── loader.gif │ ├── logo (copy).jpg~ │ ├── logo.jpg │ ├── logo.png │ ├── right.png │ └── right11.png ├── index.html ├── inscription.html ├── js │ ├── bootstrap.js │ ├── easing.js │ ├── jquery-2.2.3.min.js │ ├── jquery.flexslider.js │ ├── jquery.swipebox.min.js │ ├── jquery.waypoints.min.js │ ├── main.js │ └── responsiveslides.min.js ├── login.html ├── recours.html └── reinscription.html └── manage.py /.gitattributes: -------------------------------------------------------------------------------- 1 | Template/* linguist-vendored 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/.gitignore -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.linting.enabled": false 3 | } -------------------------------------------------------------------------------- /Administration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__init__.py -------------------------------------------------------------------------------- /Administration/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/__pycache__/admin.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/admin.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/__pycache__/models.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/models.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/__pycache__/serializers.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/serializers.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/__pycache__/views.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/__pycache__/views.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from . import models 3 | # Register your models here. 4 | 5 | 6 | 7 | class DoctorantAdmin(admin.ModelAdmin): 8 | pass 9 | 10 | admin.site.register(models.Doctorant, DoctorantAdmin) 11 | 12 | class ModuleAdmin(admin.ModelAdmin): 13 | pass 14 | 15 | admin.site.register(models.Module, ModuleAdmin) 16 | 17 | class RecoursAdmin(admin.ModelAdmin): 18 | pass 19 | 20 | admin.site.register(models.Recours, ModuleAdmin) 21 | 22 | class SujetAdmin(admin.ModelAdmin): 23 | pass 24 | 25 | admin.site.register(models.Sujet, ModuleAdmin) 26 | 27 | class ReinscriptionAdmin(admin.ModelAdmin): 28 | pass 29 | 30 | admin.site.register(models.Reinscription, ModuleAdmin) 31 | 32 | class InscriptionAdmin(admin.ModelAdmin): 33 | pass 34 | 35 | admin.site.register(models.Inscription, ModuleAdmin) 36 | 37 | class EnseignantAdmin(admin.ModelAdmin): 38 | pass 39 | 40 | admin.site.register(models.Enseignant, ModuleAdmin) 41 | 42 | class PassageGradeAdmin(admin.ModelAdmin): 43 | pass 44 | 45 | admin.site.register(models.PassageGrade, ModuleAdmin) 46 | 47 | -------------------------------------------------------------------------------- /Administration/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AdministrationConfig(AppConfig): 5 | name = 'Administration' 6 | -------------------------------------------------------------------------------- /Administration/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-01 00:48 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | initial = True 10 | 11 | dependencies = [ 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='Doctorant', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('nationaliter', models.CharField(max_length=50)), 20 | ('nom', models.CharField(max_length=50)), 21 | ('prenom', models.CharField(max_length=50)), 22 | ('sexe', models.CharField(max_length=10)), 23 | ('date_naissance', models.DateField()), 24 | ('lieu_naissance', models.CharField(max_length=100)), 25 | ('addresse', models.CharField(max_length=100)), 26 | ('email', models.CharField(max_length=50)), 27 | ('telephone', models.CharField(max_length=15)), 28 | ('nom_prenom_mere', models.CharField(max_length=50)), 29 | ('nom_pere', models.CharField(max_length=50)), 30 | ('accepted', models.BooleanField(default=False)), 31 | ('slug', models.SlugField()), 32 | ], 33 | options={ 34 | 'ordering': ['nom'], 35 | }, 36 | ), 37 | migrations.CreateModel( 38 | name='Inscription', 39 | fields=[ 40 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 41 | ('intitulerPostGrade', models.CharField(max_length=100)), 42 | ('intitulerSujet', models.CharField(max_length=100)), 43 | ('diplomeGraduation', models.CharField(max_length=250)), 44 | ('nomEncadreur', models.CharField(max_length=100)), 45 | ('gradeEncadreur', models.CharField(max_length=100)), 46 | ('nomCoEncadreur', models.CharField(max_length=100)), 47 | ('gradeCoEncadreur', models.CharField(max_length=100)), 48 | ('dateInscription', models.DateField(auto_now_add=True)), 49 | ('slug', models.SlugField()), 50 | ('doctorant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inscriptions', to='Administration.Doctorant')), 51 | ], 52 | options={ 53 | 'ordering': ['intitulerPostGrade'], 54 | }, 55 | ), 56 | migrations.CreateModel( 57 | name='Module', 58 | fields=[ 59 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 60 | ('nom', models.CharField(max_length=50)), 61 | ('niveau', models.CharField(max_length=10)), 62 | ('slug', models.SlugField()), 63 | ], 64 | options={ 65 | 'ordering': ['nom'], 66 | }, 67 | ), 68 | migrations.CreateModel( 69 | name='Recourt', 70 | fields=[ 71 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 72 | ('sujet', models.CharField(max_length=50)), 73 | ('message', models.CharField(max_length=2550)), 74 | ('accepted', models.BooleanField(default=False)), 75 | ('doctorant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recours', to='Administration.Doctorant')), 76 | ], 77 | options={ 78 | 'ordering': ['sujet'], 79 | }, 80 | ), 81 | migrations.CreateModel( 82 | name='Reinscription', 83 | fields=[ 84 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 85 | ('intitulerPostGrade', models.CharField(max_length=100)), 86 | ('intitulerSujet', models.CharField(max_length=100)), 87 | ('diplomeGraduation', models.CharField(max_length=250)), 88 | ('nomEncadreur', models.CharField(max_length=100)), 89 | ('gradeEncadreur', models.CharField(max_length=100)), 90 | ('nomCoEncadreur', models.CharField(max_length=100)), 91 | ('gradeCoEncadreur', models.CharField(max_length=100)), 92 | ('dateReinscription', models.DateField(auto_now_add=True)), 93 | ('slug', models.SlugField()), 94 | ('doctorant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reinscriptions', to='Administration.Doctorant')), 95 | ], 96 | options={ 97 | 'ordering': ['intitulerPostGrade'], 98 | }, 99 | ), 100 | migrations.CreateModel( 101 | name='Sujet', 102 | fields=[ 103 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 104 | ('titre', models.CharField(max_length=50)), 105 | ('description', models.TextField()), 106 | ('accepted', models.BooleanField(default=False)), 107 | ('slug', models.SlugField()), 108 | ], 109 | options={ 110 | 'ordering': ['titre'], 111 | }, 112 | ), 113 | migrations.AlterUniqueTogether( 114 | name='recourt', 115 | unique_together={('doctorant', 'sujet')}, 116 | ), 117 | ] 118 | -------------------------------------------------------------------------------- /Administration/migrations/0002_doctorant_password.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-01 22:24 2 | 3 | from django.db import migrations, models 4 | import django.utils.timezone 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('Administration', '0001_initial'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='doctorant', 16 | name='password', 17 | field=models.CharField(default=django.utils.timezone.now, max_length=50), 18 | preserve_default=False, 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /Administration/migrations/0003_auto_20180603_0945.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 09:45 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('Administration', '0002_doctorant_password'), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='DemandeSoutenance', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('numberAccepted', models.IntegerField()), 19 | ('slug', models.SlugField()), 20 | ], 21 | options={ 22 | 'ordering': ['id'], 23 | }, 24 | ), 25 | migrations.CreateModel( 26 | name='Enseignant', 27 | fields=[ 28 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 29 | ('nom', models.CharField(max_length=50)), 30 | ('prenom', models.CharField(max_length=50)), 31 | ('sexe', models.CharField(max_length=10)), 32 | ('date_naissance', models.DateField()), 33 | ('lieu_naissance', models.CharField(max_length=100)), 34 | ('addresse', models.CharField(max_length=100)), 35 | ('email', models.CharField(max_length=50)), 36 | ('telephone', models.CharField(max_length=15)), 37 | ('password', models.CharField(max_length=50)), 38 | ('slug', models.SlugField()), 39 | ], 40 | options={ 41 | 'ordering': ['nom'], 42 | }, 43 | ), 44 | migrations.AddField( 45 | model_name='demandesoutenance', 46 | name='Enseignant', 47 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='enseignants', to='Administration.Enseignant'), 48 | ), 49 | migrations.AddField( 50 | model_name='demandesoutenance', 51 | name='doctorant', 52 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='doctorant', to='Administration.Doctorant'), 53 | ), 54 | ] 55 | -------------------------------------------------------------------------------- /Administration/migrations/0004_enseignant_grade.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 09:49 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0003_auto_20180603_0945'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='enseignant', 15 | name='grade', 16 | field=models.IntegerField(default=1), 17 | preserve_default=False, 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /Administration/migrations/0005_auto_20180603_1017.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 10:17 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('Administration', '0004_enseignant_grade'), 11 | ] 12 | 13 | operations = [ 14 | migrations.RenameField( 15 | model_name='demandesoutenance', 16 | old_name='Enseignant', 17 | new_name='enseignant', 18 | ), 19 | migrations.AddField( 20 | model_name='demandesoutenance', 21 | name='reinscription', 22 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='reinscription', to='Administration.Reinscription'), 23 | preserve_default=False, 24 | ), 25 | migrations.AlterField( 26 | model_name='demandesoutenance', 27 | name='numberAccepted', 28 | field=models.IntegerField(default=0), 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /Administration/migrations/0006_remove_demandesoutenance_slug.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 10:26 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0005_auto_20180603_1017'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='demandesoutenance', 15 | name='slug', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /Administration/migrations/0007_auto_20180603_1039.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 10:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0006_remove_demandesoutenance_slug'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='demandesoutenance', 15 | name='doctorant', 16 | ), 17 | migrations.RemoveField( 18 | model_name='demandesoutenance', 19 | name='enseignant', 20 | ), 21 | migrations.RemoveField( 22 | model_name='demandesoutenance', 23 | name='reinscription', 24 | ), 25 | migrations.RemoveField( 26 | model_name='enseignant', 27 | name='grade', 28 | ), 29 | migrations.AddField( 30 | model_name='enseignant', 31 | name='Grade', 32 | field=models.BooleanField(default=False), 33 | ), 34 | migrations.DeleteModel( 35 | name='DemandeSoutenance', 36 | ), 37 | ] 38 | -------------------------------------------------------------------------------- /Administration/migrations/0008_auto_20180603_1040.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 10:40 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0007_auto_20180603_1039'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='enseignant', 15 | name='Grade', 16 | field=models.IntegerField(default=1), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /Administration/migrations/0009_auto_20180603_1040.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 10:40 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0008_auto_20180603_1040'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='enseignant', 15 | name='Grade', 16 | ), 17 | migrations.AddField( 18 | model_name='enseignant', 19 | name='grade', 20 | field=models.IntegerField(default=0), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /Administration/migrations/0010_auto_20180603_1307.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 13:07 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('Administration', '0009_auto_20180603_1040'), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='PassageGrade', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('gradeVoulu', models.CharField(max_length=50)), 19 | ('argument', models.CharField(max_length=2550)), 20 | ('enseignant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='passagegrades', to='Administration.Enseignant')), 21 | ], 22 | options={ 23 | 'ordering': ['gradeVoulu'], 24 | }, 25 | ), 26 | migrations.AlterUniqueTogether( 27 | name='passagegrade', 28 | unique_together={('enseignant', 'gradeVoulu')}, 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /Administration/migrations/0011_auto_20180603_1309.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-03 13:09 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0010_auto_20180603_1307'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='passagegrade', 15 | name='argument', 16 | field=models.TextField(), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /Administration/migrations/0012_auto_20180608_1524.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.5 on 2018-06-08 15:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('Administration', '0011_auto_20180603_1309'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameModel( 14 | old_name='Recourt', 15 | new_name='Recours', 16 | ), 17 | migrations.AlterField( 18 | model_name='enseignant', 19 | name='grade', 20 | field=models.CharField(max_length=50), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /Administration/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__init__.py -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0001_initial.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0001_initial.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0002_doctorant_password.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0002_doctorant_password.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0003_auto_20180603_0945.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0003_auto_20180603_0945.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0004_enseignant_grade.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0004_enseignant_grade.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0005_auto_20180603_1017.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0005_auto_20180603_1017.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0006_remove_demandesoutenance_slug.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0006_remove_demandesoutenance_slug.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0007_auto_20180603_1039.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0007_auto_20180603_1039.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0008_auto_20180603_1040.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0008_auto_20180603_1040.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0009_auto_20180603_1040.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0009_auto_20180603_1040.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0010_auto_20180603_1307.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0010_auto_20180603_1307.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0011_auto_20180603_1309.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0011_auto_20180603_1309.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/0012_auto_20180608_1524.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/0012_auto_20180608_1524.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/migrations/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Administration/migrations/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /Administration/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.template.defaultfilters import slugify 3 | from datetime import datetime 4 | 5 | # Create your views here. 6 | class Doctorant(models.Model): 7 | nationaliter = models.CharField(max_length=50,null=False) 8 | nom = models.CharField(max_length=50,null=False) 9 | prenom = models.CharField(max_length=50,null=False) 10 | sexe = models.CharField(max_length=10,null=False) 11 | date_naissance = models.DateField() 12 | lieu_naissance = models.CharField(max_length=100,null=False) 13 | addresse = models.CharField(max_length=100,null=False) 14 | email = models.CharField(max_length=50,null=False) 15 | telephone = models.CharField(max_length=15,null=False) 16 | nom_prenom_mere = models.CharField(max_length=50,null=False) 17 | nom_pere = models.CharField(max_length=50,null=False) 18 | password = models.CharField(max_length=50,null=False) 19 | accepted = models.BooleanField(default=False) 20 | slug = models.SlugField() 21 | 22 | def __str__(self): 23 | return self.nom 24 | 25 | def save(self, *args, **kwargs): 26 | if not self.id: 27 | self.slug = slugify(self.nom) 28 | 29 | super(Doctorant, self).save(*args, **kwargs) 30 | 31 | class Meta: 32 | ordering = ['nom'] 33 | 34 | 35 | class Module(models.Model): 36 | nom = models.CharField(max_length=50) 37 | niveau = models.CharField(max_length=10) 38 | slug = models.SlugField() 39 | 40 | def __str__(self): 41 | return self.nom 42 | 43 | def save(self, *args, **kwargs): 44 | if not self.id: 45 | self.slug = slugify(self.nom) 46 | 47 | super(Module, self).save(*args, **kwargs) 48 | 49 | class Meta: 50 | ordering = ['nom'] 51 | 52 | class Recours(models.Model): 53 | doctorant = models.ForeignKey(Doctorant, related_name='recours', on_delete=models.CASCADE) 54 | sujet = models.CharField(max_length=50) 55 | message = models.CharField(max_length=2550) 56 | accepted = models.BooleanField(default=False) 57 | 58 | class Meta: 59 | unique_together = ('doctorant', 'sujet') 60 | ordering = ['sujet'] 61 | 62 | def __unicode__(self): 63 | return '%s: %s' % (self.sujet, self.message) 64 | 65 | 66 | class Sujet(models.Model): 67 | titre = models.CharField(max_length=50) 68 | description = models.TextField() 69 | accepted = models.BooleanField(default=False) 70 | slug = models.SlugField() 71 | 72 | def __str__(self): 73 | return self.titre 74 | 75 | def save(self, *args, **kwargs): 76 | if not self.id: 77 | self.slug = slugify(self.titre) 78 | 79 | super(Sujet, self).save(*args, **kwargs) 80 | 81 | class Meta: 82 | ordering = ['titre'] 83 | 84 | 85 | class Reinscription(models.Model): 86 | doctorant = models.ForeignKey(Doctorant, related_name='reinscriptions', on_delete=models.CASCADE) 87 | intitulerPostGrade = models.CharField(max_length=100) 88 | intitulerSujet = models.CharField(max_length=100) 89 | diplomeGraduation = models.CharField(max_length=250) 90 | nomEncadreur = models.CharField(max_length=100) 91 | gradeEncadreur = models.CharField(max_length=100) 92 | nomCoEncadreur = models.CharField(max_length=100) 93 | gradeCoEncadreur = models.CharField(max_length=100) 94 | dateReinscription = models.DateField(auto_now_add=True) 95 | slug = models.SlugField() 96 | 97 | def __str__(self): 98 | return self.intitulerSujet 99 | 100 | def save(self, *args, **kwargs): 101 | if not self.id: 102 | self.slug = slugify(self.id) 103 | 104 | super(Reinscription, self).save(*args, **kwargs) 105 | 106 | class Meta: 107 | ordering = ['intitulerPostGrade'] 108 | 109 | class Inscription(models.Model): 110 | doctorant = models.ForeignKey(Doctorant, related_name='inscriptions', on_delete=models.CASCADE) 111 | intitulerPostGrade = models.CharField(max_length=100) 112 | intitulerSujet = models.CharField(max_length=100) 113 | diplomeGraduation = models.CharField(max_length=250) 114 | nomEncadreur = models.CharField(max_length=100) 115 | gradeEncadreur = models.CharField(max_length=100) 116 | nomCoEncadreur = models.CharField(max_length=100) 117 | gradeCoEncadreur = models.CharField(max_length=100) 118 | dateInscription = models.DateField(auto_now_add=True) 119 | slug = models.SlugField() 120 | 121 | def __str__(self): 122 | return self.intitulerSujet 123 | 124 | def save(self, *args, **kwargs): 125 | if not self.id: 126 | self.slug = slugify(self.id) 127 | 128 | super(Inscription, self).save(*args, **kwargs) 129 | 130 | class Meta: 131 | ordering = ['intitulerPostGrade'] 132 | 133 | class Enseignant(models.Model): 134 | nom = models.CharField(max_length=50,null=False) 135 | prenom = models.CharField(max_length=50,null=False) 136 | sexe = models.CharField(max_length=10,null=False) 137 | date_naissance = models.DateField() 138 | lieu_naissance = models.CharField(max_length=100,null=False) 139 | addresse = models.CharField(max_length=100,null=False) 140 | email = models.CharField(max_length=50,null=False) 141 | telephone = models.CharField(max_length=15,null=False) 142 | password = models.CharField(max_length=50,null=False) 143 | grade = models.CharField(max_length=50,null=False) 144 | slug = models.SlugField() 145 | 146 | def __str__(self): 147 | return self.nom 148 | 149 | def save(self, *args, **kwargs): 150 | if not self.id: 151 | self.slug = slugify(self.nom) 152 | 153 | super(Enseignant, self).save(*args, **kwargs) 154 | 155 | class Meta: 156 | ordering = ['nom'] 157 | 158 | class PassageGrade(models.Model): 159 | enseignant = models.ForeignKey(Enseignant, related_name='passagegrades', on_delete=models.CASCADE) 160 | gradeVoulu = models.CharField(max_length=50) 161 | argument = models.TextField() 162 | 163 | class Meta: 164 | unique_together = ('enseignant', 'gradeVoulu') 165 | ordering = ['gradeVoulu'] 166 | 167 | def __unicode__(self): 168 | return '%s: %s' % (self.gradeVoulu, self.argument) -------------------------------------------------------------------------------- /Administration/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | from . import models 3 | 4 | 5 | class RecoursSerializer(serializers.ModelSerializer): 6 | class Meta: 7 | model = models.Recours 8 | fields = ('doctorant','sujet','message','accepted') 9 | 10 | class PassageGradeSerializer(serializers.ModelSerializer): 11 | class Meta: 12 | model = models.PassageGrade 13 | fields = ('id','enseignant','gradeVoulu','argument') 14 | 15 | class ReinscriptionSerializer(serializers.ModelSerializer): 16 | class Meta: 17 | model = models.Reinscription 18 | fields = ('doctorant','intitulerPostGrade','intitulerSujet','diplomeGraduation','nomEncadreur','nomCoEncadreur','dateReinscription') 19 | 20 | class InscriptionSerializer(serializers.ModelSerializer): 21 | class Meta: 22 | model = models.Inscription 23 | fields = ('doctorant','intitulerPostGrade','intitulerSujet','diplomeGraduation','nomEncadreur','nomCoEncadreur','dateInscription','gradeEncadreur','gradeCoEncadreur') 24 | 25 | class EnseignantSerializer(serializers.ModelSerializer): 26 | passagegrades = serializers.HyperlinkedRelatedField( 27 | many=True, 28 | read_only=True, 29 | view_name='passagegrade-detail' 30 | ) 31 | class Meta: 32 | model = models.Enseignant 33 | fields = ('id','nom','prenom','sexe' ,'date_naissance', 'lieu_naissance', 'addresse','email','grade','passagegrades') 34 | 35 | class DoctorantSerializer(serializers.ModelSerializer): 36 | recours = serializers.HyperlinkedRelatedField( 37 | many=True, 38 | read_only=True, 39 | view_name='recours-detail' 40 | ) 41 | reinscriptions = serializers.HyperlinkedRelatedField( 42 | many=True, 43 | read_only=True, 44 | view_name='reinscription-detail' 45 | ) 46 | inscriptions = serializers.HyperlinkedRelatedField( 47 | many=True, 48 | read_only=True, 49 | view_name='inscription-detail' 50 | ) 51 | 52 | class Meta: 53 | model = models.Doctorant 54 | fields = ('id','nationaliter', 'nom','prenom','sexe' ,'date_naissance', 'lieu_naissance', 'addresse','email','accepted','password','inscriptions','reinscriptions','recours') 55 | 56 | class ModuleSerializer(serializers.HyperlinkedModelSerializer): 57 | class Meta: 58 | model = models.Module 59 | fields = ('id','nom','niveau') 60 | 61 | class SujetSerializer(serializers.HyperlinkedModelSerializer): 62 | class Meta: 63 | model = models.Sujet 64 | fields = ('id','titre','description','accepted') 65 | 66 | class EnseignantSerializer(serializers.HyperlinkedModelSerializer): 67 | passagegrades = serializers.HyperlinkedRelatedField( 68 | many=True, 69 | read_only=True, 70 | view_name='passagegrade-detail' 71 | ) 72 | class Meta: 73 | model = models.Enseignant 74 | fields = ('id', 'nom','prenom','sexe' ,'date_naissance', 'lieu_naissance', 'addresse','email','password','grade','passagegrades') 75 | -------------------------------------------------------------------------------- /Administration/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /Administration/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, include 2 | from rest_framework.routers import DefaultRouter 3 | 4 | from . import views 5 | 6 | router = DefaultRouter() 7 | 8 | router.register(r'doctorant', views.DoctorantViewSet) 9 | router.register(r'module', views.ModuleViewSet) 10 | router.register(r'recours', views.RecoursViewSet) 11 | router.register(r'sujet', views.SujetViewSet) 12 | router.register(r'reinscription', views.ReinscriptionViewSet) 13 | router.register(r'inscription', views.InscriptionViewSet) 14 | router.register(r'enseignant', views.EnseignantViewSet) 15 | router.register(r'passagegrade', views.PassageGradeViewSet) 16 | 17 | urlpatterns = [ 18 | path('', include(router.urls)), 19 | ] -------------------------------------------------------------------------------- /Administration/views.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets 2 | from . import models 3 | from . import serializers 4 | 5 | 6 | class DoctorantViewSet(viewsets.ModelViewSet): 7 | queryset = models.Doctorant.objects.all() 8 | serializer_class = serializers.DoctorantSerializer 9 | 10 | class ModuleViewSet(viewsets.ModelViewSet): 11 | queryset = models.Module.objects.all() 12 | serializer_class = serializers.ModuleSerializer 13 | lookup_field = 'niveau' 14 | 15 | class RecoursViewSet(viewsets.ModelViewSet): 16 | queryset = models.Recours.objects.all() 17 | serializer_class = serializers.RecoursSerializer 18 | 19 | class SujetViewSet(viewsets.ModelViewSet): 20 | queryset = models.Sujet.objects.all() 21 | serializer_class = serializers.SujetSerializer 22 | lookup_field = 'id' 23 | 24 | class ReinscriptionViewSet(viewsets.ModelViewSet): 25 | queryset = models.Reinscription.objects.all() 26 | serializer_class = serializers.ReinscriptionSerializer 27 | 28 | class InscriptionViewSet(viewsets.ModelViewSet): 29 | queryset = models.Inscription.objects.all() 30 | serializer_class = serializers.InscriptionSerializer 31 | 32 | class EnseignantViewSet(viewsets.ModelViewSet): 33 | queryset = models.Enseignant.objects.all() 34 | serializer_class = serializers.EnseignantSerializer 35 | 36 | class PassageGradeViewSet(viewsets.ModelViewSet): 37 | queryset = models.PassageGrade.objects.all() 38 | serializer_class = serializers.PassageGradeSerializer -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Amine Smahi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PostGraduation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/PostGraduation/__init__.py -------------------------------------------------------------------------------- /PostGraduation/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/PostGraduation/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /PostGraduation/__pycache__/settings.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/PostGraduation/__pycache__/settings.cpython-35.pyc -------------------------------------------------------------------------------- /PostGraduation/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/PostGraduation/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /PostGraduation/__pycache__/wsgi.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/PostGraduation/__pycache__/wsgi.cpython-35.pyc -------------------------------------------------------------------------------- /PostGraduation/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for PostGraduation project. 3 | 4 | Generated by 'django-admin startproject' using Django 2.0.5. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.0/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/2.0/ref/settings/ 11 | """ 12 | 13 | import os 14 | 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = 'a_fg*@gegind@k$x(80fm7-d9lxlacnbskpd^8%jiejbq06c3$' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'rest_framework', 41 | 'Administration', 42 | 'corsheaders', 43 | ] 44 | 45 | MIDDLEWARE = [ 46 | 'django.middleware.security.SecurityMiddleware', 47 | 'corsheaders.middleware.CorsMiddleware', 48 | 'django.contrib.sessions.middleware.SessionMiddleware', 49 | 'django.middleware.common.CommonMiddleware', 50 | 'django.middleware.csrf.CsrfViewMiddleware', 51 | 'corsheaders.middleware.CorsMiddleware', 52 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 53 | 'django.contrib.messages.middleware.MessageMiddleware', 54 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 55 | ] 56 | 57 | ROOT_URLCONF = 'PostGraduation.urls' 58 | 59 | TEMPLATES = [ 60 | { 61 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 62 | 'DIRS': [], 63 | 'APP_DIRS': True, 64 | 'OPTIONS': { 65 | 'context_processors': [ 66 | 'django.template.context_processors.debug', 67 | 'django.template.context_processors.request', 68 | 'django.contrib.auth.context_processors.auth', 69 | 'django.contrib.messages.context_processors.messages', 70 | ], 71 | }, 72 | }, 73 | ] 74 | 75 | WSGI_APPLICATION = 'PostGraduation.wsgi.application' 76 | 77 | 78 | # Database 79 | # https://docs.djangoproject.com/en/2.0/ref/settings/#databases 80 | 81 | DATABASES = { 82 | 'default': { 83 | 'ENGINE': 'django.db.backends.mysql', 84 | 'OPTIONS': { 85 | 'read_default_file': '/etc/mysql/my.cnf', 86 | }, 87 | } 88 | } 89 | 90 | 91 | # Password validation 92 | # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators 93 | 94 | AUTH_PASSWORD_VALIDATORS = [ 95 | { 96 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 97 | }, 98 | { 99 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 100 | }, 101 | { 102 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 103 | }, 104 | { 105 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 106 | }, 107 | ] 108 | 109 | 110 | # Internationalization 111 | # https://docs.djangoproject.com/en/2.0/topics/i18n/ 112 | 113 | LANGUAGE_CODE = 'en-us' 114 | 115 | TIME_ZONE = 'UTC' 116 | 117 | USE_I18N = True 118 | 119 | USE_L10N = True 120 | 121 | USE_TZ = True 122 | 123 | CORS_ORIGIN_ALLOW_ALL = True 124 | 125 | 126 | # Static files (CSS, JavaScript, Images) 127 | # https://docs.djangoproject.com/en/2.0/howto/static-files/ 128 | 129 | STATIC_URL = '/static/' 130 | DATE_INPUT_FORMATS = ['%d-%m-%Y'] 131 | 132 | REST_FRAMEWORK = { 133 | 'DEFAULT_RENDERER_CLASSES': ( 134 | 'rest_framework.renderers.JSONRenderer', 135 | ) 136 | } -------------------------------------------------------------------------------- /PostGraduation/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path, include 3 | 4 | urlpatterns = [ 5 | path('Administration/', include('Administration.urls')), 6 | ] 7 | -------------------------------------------------------------------------------- /PostGraduation/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for PostGraduation project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PostGraduation.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PostGraduation 2 | University management platform dedicated for post-graduation in computer science field. 3 | ## Tools and Languages: 4 | * Visuel Studio Code (code writting and debugging). 5 | * Django REST Framework (API based access and data transfer). 6 | * HTML, CSS and JS 7 | * Materelize. 8 | * Python (programming language). 9 | 10 | ## Screenshots: 11 | ![image](https://user-images.githubusercontent.com/24621701/67271733-0e6f2880-f4b3-11e9-81cd-a9e43ccb46b4.png) 12 | 13 |
14 | 15 | ![image](https://user-images.githubusercontent.com/24621701/67271741-1333dc80-f4b3-11e9-8175-2f60bdc35e2c.png) 16 | 17 |
18 | 19 | ![image](https://user-images.githubusercontent.com/24621701/67271751-1929bd80-f4b3-11e9-8c3a-7f760ebfab12.png) 20 | 21 |
22 | 23 | ![image](https://user-images.githubusercontent.com/24621701/67271777-25ae1600-f4b3-11e9-9e60-c16c4cc41638.png) 24 | 25 |
26 | 27 | ![image](https://user-images.githubusercontent.com/24621701/67271790-2b0b6080-f4b3-11e9-82c7-bed1a4f4ccf9.png) 28 | 29 |
30 | 31 | ![image](https://user-images.githubusercontent.com/24621701/67271806-33639b80-f4b3-11e9-9cff-c622bec83ff2.png) 32 | 33 |
34 | 35 | ![image](https://user-images.githubusercontent.com/24621701/67271824-3eb6c700-f4b3-11e9-86a8-c3543a666b3e.png) 36 | -------------------------------------------------------------------------------- /Template/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Universiter oran 1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 | 37 |
38 |
39 | 61 |
62 |
63 |
64 |
65 |
66 |
67 | 119 |
120 |
121 | 123 |
124 | 125 |
126 |
127 |

128 | About Us

129 |
130 |
131 |

Welcome to Education

132 |

Donec bibendum velit quis diam venenatis, vulputate aliquam sapien blandit. Etiam dui massa, vehicula a convallis a, 133 | facilisis vitae neque.Pellentesque sit amet odio quis libero eleifend congue at ac justo. Suspendisse posuere congue 134 | accumsan Vulputate aliquam sapien.

135 |

136 | Proin tempor pulvinar Vivamus nisi hendrerit et.

137 |

138 | Proin tempor pulvinar Vivamus nisi hendrerit et.

139 |

140 | Proin tempor pulvinar Vivamus nisi hendrerit et.

141 |

142 | Proin tempor pulvinar Vivamus nisi hendrerit et.

143 |
144 |
145 | 146 |
147 |
148 |
149 |
150 |
151 | 152 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /Template/admin/css/style.css: -------------------------------------------------------------------------------- 1 | header, main, footer { 2 | padding-left: 240px; 3 | } 4 | body { 5 | backgroud: white; 6 | } 7 | main{ 8 | padding-top: 2%; 9 | padding-left: 15%; 10 | padding-right: 2%; 11 | } 12 | .login-form{ 13 | border: 1px solid #BCC2E2; 14 | box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 15 | } 16 | .accept{ 17 | background-color: seagreen; 18 | } 19 | .refuse{ 20 | background-color: indianred; 21 | } 22 | .imprimer{ 23 | background-color: darkslateblue; 24 | } 25 | .inside-table{ 26 | border: 1px solid black; 27 | border-collapse: collapse; 28 | height: 10px; 29 | font-weight: normal; 30 | } 31 | .mark{ 32 | padding-top: 15px; 33 | padding-bottom: 15px; 34 | } 35 | .login-footer{ 36 | position:absolute; 37 | bottom:0; 38 | width:100%; 39 | } 40 | .tableview{ 41 | padding-left: 0px; 42 | } 43 | @media only screen and (max-width: 992px) { 44 | header, main, footer { 45 | padding-left: 0; 46 | } 47 | } 48 | .indigo.darken-2 { 49 | background-color: #1a9b46 !important; 50 | } 51 | .indigo{ 52 | background-color: #1eb04f !important; 53 | } 54 | #credits li, #credits li a { 55 | color: white; 56 | } 57 | #credits li a { 58 | font-weight: bold; 59 | } 60 | .footer-copyright .container, .footer-copyright .container a { 61 | color: #BCC2E2; 62 | } 63 | .fab-tip { 64 | position: fixed; 65 | right: 85px; 66 | padding: 0px 0.5rem; 67 | text-align: right; 68 | background-color: #323232; 69 | border-radius: 2px; 70 | color: #FFF; 71 | width: auto; 72 | } 73 | @media only screen and (max-width: 600px) { 74 | .tableview{ 75 | padding-left: 10px; 76 | } 77 | } 78 | #printablediv input{ 79 | align-content: unset; 80 | align-items: unset; 81 | align-self: unset; 82 | animation: unset; 83 | appearance: unset; 84 | backface-visibility: unset; 85 | background-blend-mode: unset; 86 | background: unset; 87 | binding: unset; 88 | block-size: unset; 89 | border-block-end: unset; 90 | border-block-start: unset; 91 | border-collapse: unset; 92 | border-inline-end: unset; 93 | border-inline-start: unset; 94 | border-radius: unset; 95 | border-spacing: unset; 96 | border: unset; 97 | bottom: unset; 98 | box-align: unset; 99 | box-decoration-break: unset; 100 | box-direction: unset; 101 | box-flex: unset; 102 | box-ordinal-group: unset; 103 | box-orient: unset; 104 | box-pack: unset; 105 | box-shadow: unset; 106 | box-sizing: unset; 107 | caption-side: unset; 108 | clear: unset; 109 | clip-path: unset; 110 | clip-rule: unset; 111 | clip: unset; 112 | color-adjust: unset; 113 | color-interpolation-filters: unset; 114 | color-interpolation: unset; 115 | color: unset; 116 | column-fill: unset; 117 | column-gap: unset; 118 | column-rule: unset; 119 | columns: unset; 120 | content: unset; 121 | control-character-visibility: unset; 122 | counter-increment: unset; 123 | counter-reset: unset; 124 | cursor: unset; 125 | display: unset; 126 | dominant-baseline: unset; 127 | empty-cells: unset; 128 | fill-opacity: unset; 129 | fill-rule: unset; 130 | fill: unset; 131 | filter: unset; 132 | flex-flow: unset; 133 | flex: unset; 134 | float-edge: unset; 135 | float: unset; 136 | flood-color: unset; 137 | flood-opacity: unset; 138 | font-family: unset; 139 | font-feature-settings: unset; 140 | font-kerning: unset; 141 | font-language-override: unset; 142 | font-size-adjust: unset; 143 | font-size: unset; 144 | font-stretch: unset; 145 | font-synthesis: unset; 146 | font-variant: unset; 147 | font-weight: unset; 148 | force-broken-image-icon: unset; 149 | height: unset; 150 | hyphens: unset; 151 | image-orientation: unset; 152 | image-region: unset; 153 | image-rendering: unset; 154 | ime-mode: unset; 155 | inline-size: unset; 156 | isolation: unset; 157 | justify-content: unset; 158 | justify-items: unset; 159 | justify-self: unset; 160 | left: unset; 161 | letter-spacing: unset; 162 | lighting-color: unset; 163 | line-height: unset; 164 | list-style: unset; 165 | margin-block-end: unset; 166 | margin-block-start: unset; 167 | margin-inline-end: unset; 168 | margin-inline-start: unset; 169 | margin: unset; 170 | marker-offset: unset; 171 | marker: unset; 172 | mask-type: unset; 173 | mask: unset; 174 | max-block-size: unset; 175 | max-height: unset; 176 | max-inline-size: unset; 177 | max-width: unset; 178 | min-block-size: unset; 179 | min-height: unset; 180 | min-inline-size: unset; 181 | min-width: unset; 182 | mix-blend-mode: unset; 183 | object-fit: unset; 184 | object-position: unset; 185 | offset-block-end: unset; 186 | offset-block-start: unset; 187 | offset-inline-end: unset; 188 | offset-inline-start: unset; 189 | opacity: unset; 190 | order: unset; 191 | orient: unset; 192 | outline-offset: unset; 193 | outline-radius: unset; 194 | outline: unset; 195 | overflow: unset; 196 | padding-block-end: unset; 197 | padding-block-start: unset; 198 | padding-inline-end: unset; 199 | padding-inline-start: unset; 200 | padding: unset; 201 | page-break-after: unset; 202 | page-break-before: unset; 203 | page-break-inside: unset; 204 | paint-order: unset; 205 | perspective-origin: unset; 206 | perspective: unset; 207 | pointer-events: unset; 208 | position: unset; 209 | quotes: unset; 210 | resize: unset; 211 | right: unset; 212 | ruby-align: unset; 213 | ruby-position: unset; 214 | scroll-behavior: unset; 215 | scroll-snap-coordinate: unset; 216 | scroll-snap-destination: unset; 217 | scroll-snap-points-x: unset; 218 | scroll-snap-points-y: unset; 219 | scroll-snap-type: unset; 220 | shape-rendering: unset; 221 | stack-sizing: unset; 222 | stop-color: unset; 223 | stop-opacity: unset; 224 | stroke-dasharray: unset; 225 | stroke-dashoffset: unset; 226 | stroke-linecap: unset; 227 | stroke-linejoin: unset; 228 | stroke-miterlimit: unset; 229 | stroke-opacity: unset; 230 | stroke-width: unset; 231 | stroke: unset; 232 | tab-size: unset; 233 | table-layout: unset; 234 | text-align-last: unset; 235 | text-align: unset; 236 | text-anchor: unset; 237 | text-combine-upright: unset; 238 | text-decoration: unset; 239 | text-emphasis-position: unset; 240 | text-emphasis: unset; 241 | text-indent: unset; 242 | text-orientation: unset; 243 | text-overflow: unset; 244 | text-rendering: unset; 245 | text-shadow: unset; 246 | text-size-adjust: unset; 247 | text-transform: unset; 248 | top: unset; 249 | transform-origin: unset; 250 | transform-style: unset; 251 | transform: unset; 252 | transition: unset; 253 | user-focus: unset; 254 | user-input: unset; 255 | user-modify: unset; 256 | user-select: unset; 257 | vector-effect: unset; 258 | vertical-align: unset; 259 | visibility: unset; 260 | white-space: unset; 261 | width: unset; 262 | will-change: unset; 263 | window-dragging: unset; 264 | word-break: unset; 265 | word-spacing: unset; 266 | word-wrap: unset; 267 | writing-mode: unset; 268 | z-index: unset; 269 | } 270 | -------------------------------------------------------------------------------- /Template/admin/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 28 | 83 | 84 | 85 |
86 | 91 | 92 | 111 | 112 | 120 |
121 | 122 |
123 |
124 |
 
125 | 188 | 251 |
252 |
253 |
254 |
255 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | -------------------------------------------------------------------------------- /Template/admin/demandesoutenace.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 136 | 137 | 138 | 139 | 140 | 141 | 145 | 146 | 147 | 148 | 149 | 150 | 154 | 155 | 156 | 157 | 158 | 159 | 163 | 164 | 165 | 166 | 167 | 168 | 172 | 173 | 174 | 175 | 176 | 177 | 181 | 182 | 183 | 184 | 185 | 186 | 190 | 191 | 192 | 193 | 194 | 195 | 199 | 200 | 201 | 202 | 203 | 204 | 208 | 209 | 210 | 211 | 212 | 213 | 217 | 218 | 219 | 220 | 221 | 222 | 226 | 227 | 228 | 229 | 230 | 231 | 235 | 236 | 237 |
NameItem NameItem PricessssssghbjghjnkAction
AlvinEclairsssss@sssss.cccc$0.870 133 | accepter 134 | refuser 135 |
AlanEclairsssss@sssss.cccc$3.760 142 | accepter 143 | refuser 144 |
JonathanEclairsssss@sssss.cccc$7.000 151 | accepter 152 | refuser 153 |
JonathanEclairsssss@sssss.cccc$7.000 160 | accepter 161 | refuser 162 |
JonathanEclairsssss@sssss.cccc$7.000 169 | accepter 170 | refuser 171 |
JonathanEclairsssss@sssss.cccc$7.000 178 | accepter 179 | refuser 180 |
JonathanEclairsssss@sssss.cccc$7.000 187 | accepter 188 | refuser 189 |
JonathanEclairsssss@sssss.cccc$7.000 196 | accepter 197 | refuser 198 |
JonathanEclairsssss@sssss.cccc$7.000 205 | accepter 206 | refuser 207 |
JonathanEclairsssss@sssss.cccc$7.000 214 | accepter 215 | refuser 216 |
JonathanEclairsssss@sssss.cccc$7.000 223 | accepter 224 | refuser 225 |
JonathanEclairsssss@sssss.cccc$7.000 232 | accepter 233 | refuser 234 |
238 |
239 |
240 | 241 |
242 | 243 | 259 | 260 | 261 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /Template/admin/emploit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Paneaux d'administration 7 | 8 | 9 | 10 | 11 | 12 | 13 | 21 | 76 | 77 | 78 |
79 | 84 | 85 | 104 | 105 | 113 |
114 | 115 |
116 |
117 |
118 | 119 |
120 |
121 |

Selectionner l'anner :

122 |
123 |
124 | 131 |
132 | 137 |
138 | 139 |
140 |
141 |
142 |
143 |
144 | 145 |
146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 |
HorairDimancheLundiMardiMercrediJeudi
161 |
162 |
163 |
164 | 165 |
166 |
167 |
168 |
169 | 170 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | -------------------------------------------------------------------------------- /Template/admin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 29 | 30 | 38 |
39 | 40 |
41 |
42 |
.
43 | 55 |
56 | 57 |
58 |
59 |
60 |
61 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /Template/admin/inscriptions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 76 | 77 | 78 |
79 | 84 | 85 | 104 | 105 | 113 |
114 | 115 |
116 | 117 |
118 |
119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 |
NomPrenomsexedate naissancelieu naissanceemailaddresseAction
135 | 136 |
137 |
138 | 139 |
140 | 141 | 157 | 158 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /Template/admin/js/print.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("print-js",[],t):"object"==typeof exports?exports["print-js"]=t():e["print-js"]=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="./",t(t.s=10)}([function(e,t,n){"use strict";function r(e,t){if(e.focus(),a.a.isEdge()||a.a.isIE())try{e.contentWindow.document.execCommand("print",!1,null)}catch(t){e.contentWindow.print()}else e.contentWindow.print();t.showModal&&d.a.close(),t.onLoadingEnd&&t.onLoadingEnd()}function i(e,t){var n=[];return t.printable.forEach(function(t,r){return n.push(o(e,r))}),Promise.all(n)}function o(e,t){return new Promise(function(n){var r=e?e.getElementById("printableImage"+t):null;r&&void 0!==r.naturalWidth&&0!==r.naturalWidth?n():setTimeout(function(){o(e,t)},500)})}var a=n(2),d=n(3),l={send:function(e,t){document.getElementsByTagName("body")[0].appendChild(t);var n=document.getElementById(e.frameId);"pdf"===e.type&&(a.a.isIE()||a.a.isEdge())?n.setAttribute("onload",r(n,e)):t.onload=function(){if("pdf"===e.type)r(n,e);else{var t=n.contentWindow||n.contentDocument;if(t.document&&(t=t.document),t.body.innerHTML=e.htmlData,"pdf"!==e.type&&null!==e.style){var o=document.createElement("style");o.innerHTML=e.style,t.head.appendChild(o)}"image"===e.type?i(t,e).then(function(){r(n,e)}):r(n,e)}}}};t.a=l},function(e,t,n){"use strict";function r(e,t){return'
'+e+"
"}function i(e){return e.charAt(0).toUpperCase()+e.slice(1)}function o(e,t){var n=document.defaultView||window,r=[],i="";if(n.getComputedStyle){r=n.getComputedStyle(e,"");var o=t.targetStyles||["border","box","break","text-decoration"],a=t.targetStyle||["clear","display","width","min-width","height","min-height","max-height"];t.honorMarginPadding&&o.push("margin","padding"),t.honorColor&&o.push("color");for(var d=0;d0||-1!==navigator.userAgent.toLowerCase().indexOf("safari")}};t.a=r},function(e,t,n){"use strict";var r={show:function(e){var t=document.createElement("div");t.setAttribute("style","font-family:sans-serif; display:table; text-align:center; font-weight:300; font-size:30px; left:0; top:0;position:fixed; z-index: 9990;color: #0460B5; width: 100%; height: 100%; background-color:rgba(255,255,255,.9);transition: opacity .3s ease;"),t.setAttribute("id","printJS-Modal");var n=document.createElement("div");n.setAttribute("style","display:table-cell; vertical-align:middle; padding-bottom:100px;");var i=document.createElement("div");i.setAttribute("class","printClose"),i.setAttribute("id","printClose"),n.appendChild(i);var o=document.createElement("span");o.setAttribute("class","printSpinner"),n.appendChild(o);var a=document.createTextNode(e.modalMessage);n.appendChild(a),t.appendChild(n),document.getElementsByTagName("body")[0].appendChild(t),document.getElementById("printClose").addEventListener("click",function(){r.close()})},close:function(){var e=document.getElementById("printJS-Modal");e.parentNode.removeChild(e)}};t.a=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7),i=r.a.init;"undefined"!=typeof window&&(window.printJS=i),t.default=i},function(e,t,n){"use strict";var r=n(1),i=n(0);t.a={print:function(e,t){var o=document.getElementById(e.printable);if(!o)return window.console.error("Invalid HTML element id: "+e.printable),!1;var a=document.createElement("div");a.appendChild(o.cloneNode(!0)),a.setAttribute("style","height:0; overflow:hidden;"),a.setAttribute("id","printJS-html"),o.parentNode.appendChild(a),a=document.getElementById("printJS-html"),!0===e.scanStyles&&a.setAttribute("style",n.i(r.c)(a,e)+"margin:0 !important;");var d=a.children;!0===e.scanStyles&&n.i(r.d)(d,e),e.header&&n.i(r.e)(a,e.header,e.headerStyle),a.parentNode.removeChild(a),e.htmlData=n.i(r.a)(a.innerHTML,e),i.a.send(e,t)}}},function(e,t,n){"use strict";function r(e,t){var n=[];return t.printable.forEach(function(r,o){var a=document.createElement("img");a.src=r,n.push(i(e,t,a,o))}),Promise.all(n)}function i(e,t,n,r){return new Promise(function(i){n.onload=function(){var o=document.createElement("div");o.setAttribute("style",t.imageStyle),n.setAttribute("style","width:100%;"),n.setAttribute("id","printableImage"+r),o.appendChild(n),e.appendChild(o),i()}})}var o=n(1),a=n(0);t.a={print:function(e,t){e.printable.constructor!==Array&&(e.printable=[e.printable]);var i=document.createElement("div");i.setAttribute("style","width:100%"),r(i,e).then(function(){e.header&&n.i(o.e)(i,e.header,e.headerStyle),e.htmlData=i.outerHTML,a.a.send(e,t)})}}},function(e,t,n){"use strict";var r=n(2),i=n(3),o=n(9),a=n(5),d=n(6),l=n(8),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c=["pdf","html","image","json"];t.a={init:function(){var e={printable:null,fallbackPrintable:null,type:"pdf",header:null,headerStyle:"font-weight: 300;",maxWidth:800,font:"TimesNewRoman",font_size:"12pt",honorMarginPadding:!0,honorColor:!1,properties:null,gridHeaderStyle:"font-weight: bold; padding: 5px; border: 1px solid #dddddd;",gridStyle:"border: 1px solid lightgray; margin-bottom: -1px;",showModal:!1,onLoadingStart:null,onLoadingEnd:null,modalMessage:"Retrieving Document...",frameId:"printJS",htmlData:"",documentTitle:"Document",targetStyle:null,targetStyles:null,ignoreElements:[],imageStyle:"width:100%;",repeatTableHeader:!0,css:null,style:null,scanStyles:!0},t=arguments[0];if(void 0===t)throw new Error("printJS expects at least 1 attribute.");switch(void 0===t?"undefined":s(t)){case"string":e.printable=encodeURI(t),e.fallbackPrintable=e.printable,e.type=arguments[1]||e.type;break;case"object":e.printable=t.printable,e.fallbackPrintable=void 0!==t.fallbackPrintable?t.fallbackPrintable:e.printable,e.type=void 0!==t.type?t.type:e.type,e.frameId=void 0!==t.frameId?t.frameId:e.frameId,e.header=void 0!==t.header?t.header:e.header,e.headerStyle=void 0!==t.headerStyle?t.headerStyle:e.headerStyle,e.maxWidth=void 0!==t.maxWidth?t.maxWidth:e.maxWidth,e.font=void 0!==t.font?t.font:e.font,e.font_size=void 0!==t.font_size?t.font_size:e.font_size,e.honorMarginPadding=void 0!==t.honorMarginPadding?t.honorMarginPadding:e.honorMarginPadding,e.properties=void 0!==t.properties?t.properties:e.properties,e.gridHeaderStyle=void 0!==t.gridHeaderStyle?t.gridHeaderStyle:e.gridHeaderStyle,e.gridStyle=void 0!==t.gridStyle?t.gridStyle:e.gridStyle,e.showModal=void 0!==t.showModal?t.showModal:e.showModal,e.onLoadingStart=void 0!==t.onLoadingStart?t.onLoadingStart:e.onLoadingStart,e.onLoadingEnd=void 0!==t.onLoadingEnd?t.onLoadingEnd:e.onLoadingEnd,e.modalMessage=void 0!==t.modalMessage?t.modalMessage:e.modalMessage,e.documentTitle=void 0!==t.documentTitle?t.documentTitle:e.documentTitle,e.targetStyle=void 0!==t.targetStyle?t.targetStyle:e.targetStyle,e.targetStyles=void 0!==t.targetStyles?t.targetStyles:e.targetStyles,e.ignoreElements=void 0!==t.ignoreElements?t.ignoreElements:e.ignoreElements,e.imageStyle=void 0!==t.imageStyle?t.imageStyle:e.imageStyle,e.repeatTableHeader=void 0!==t.repeatTableHeader?t.repeatTableHeader:e.repeatTableHeader,e.css=void 0!==t.css?t.css:e.css,e.style=void 0!==t.style?t.style:e.style,e.scanStyles=void 0!==t.scanStyles?t.scanStyles:e.scanStyles;break;default:throw new Error('Unexpected argument type! Expected "string" or "object", got '+(void 0===t?"undefined":s(t)))}if(!e.printable)throw new Error("Missing printable information.");if(!e.type||"string"!=typeof e.type||-1===c.indexOf(e.type.toLowerCase()))throw new Error("Invalid print type. Available types are: pdf, html, image and json.");e.showModal&&i.a.show(e),e.onLoadingStart&&e.onLoadingStart();var n=document.getElementById(e.frameId);n&&n.parentNode.removeChild(n);var p=void 0;switch(p=document.createElement("iframe"),p.setAttribute("style","visibility: hidden; height: 0; width: 0; position: absolute;"),p.setAttribute("id",e.frameId),"pdf"!==e.type&&(p.srcdoc=""+e.documentTitle+"",null!==e.css&&(Array.isArray(e.css)||(e.css=[e.css]),e.css.forEach(function(e){p.srcdoc+=''})),p.srcdoc+=""),e.type){case"pdf":if(r.a.isFirefox()||r.a.isEdge()||r.a.isIE()){window.open(e.fallbackPrintable,"_blank").focus(),e.showModal&&i.a.close(),e.onLoadingEnd&&e.onLoadingEnd()}else o.a.print(e,p);break;case"image":d.a.print(e,p);break;case"html":a.a.print(e,p);break;case"json":l.a.print(e,p)}}}},function(e,t,n){"use strict";function r(e){var t=e.printable,r=e.properties,o='';e.repeatTableHeader&&(o+=""),o+="";for(var a=0;a'+n.i(i.b)(r[a])+"";o+="",e.repeatTableHeader&&(o+=""),o+="";for(var d=0;d";for(var l=0;l1)for(var p=0;p'+s+""}o+=""}return o+="
"}var i=n(1),o=n(0),a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.a={print:function(e,t){if("object"!==a(e.printable))throw new Error("Invalid javascript data object (JSON).");if("boolean"!=typeof e.repeatTableHeader)throw new Error("Invalid value for repeatTableHeader attribute (JSON).");if(!e.properties||"object"!==a(e.properties))throw new Error("Invalid properties array for your JSON data.");var d="";e.header&&(d+='

'+e.header+"

"),d+=r(e),e.htmlData=n.i(i.a)(d,e),o.a.send(e,t)}}},function(e,t,n){"use strict";function r(e,t){t.setAttribute("src",e.printable),i.a.send(e,t)}var i=n(0);t.a={print:function(e,t){if(e.printable=-1!==e.printable.indexOf("http")?e.printable:window.location.origin+("/"!==e.printable.charAt(0)?"/"+e.printable:e.printable),e.showModal||e.onLoadingStart){var n=new window.XMLHttpRequest;n.responseType="arraybuffer",n.addEventListener("load",function(){var i=new window.Blob([n.response],{type:"application/pdf"});i=window.URL.createObjectURL(i),e.printable=i,r(e,t)}),n.open("GET",e.printable,!0),n.send()}else r(e,t)}}},function(e,t,n){e.exports=n(4)}])}); -------------------------------------------------------------------------------- /Template/admin/listeetudiant.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 |
NomPrenomSexeDate de naissanceLieu de naissanceAddresseEmail
128 |
129 |
130 | 131 |
132 | 133 | 149 | 150 | 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /Template/admin/recours.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
NomPrenomSujetEmailAction
126 |
127 |
128 | 129 |
130 | 131 | 147 | 148 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /Template/admin/reinscription.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 |
NomPrenomEmailintituler PostGradeintituler Sujetdiplome GraduationnomEncadreurnom CoEncadreurdateRinscription
130 |
131 |
132 | 133 |
134 | 135 | 151 | 152 | 153 | 154 | 155 | 156 | -------------------------------------------------------------------------------- /Template/admin/validergrade.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 |
NomPrenomEmailGradeObjectifArgumentAction
128 |
129 |
130 | 131 |
132 | 133 | 149 | 150 | 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /Template/admin/validersujet.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Paneaux d'administration 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 70 | 71 | 72 |
73 | 78 | 79 | 98 | 99 | 107 |
108 | 109 |
110 | 111 |
112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 |
TitreDescriptionAction
124 |
125 |
126 | 127 |
128 | 129 | 145 | 146 | 147 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /Template/css/flexslider.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery FlexSlider v2.0 3 | * http://www.woothemes.com/flexslider/ 4 | * 5 | * Copyright 2012 WooThemes 6 | * Free to use under the GPLv2 license. 7 | * http://www.gnu.org/licenses/gpl-2.0.html 8 | * 9 | * Contributing author: Tyler Smith (@mbmufffin) 10 | */ 11 | 12 | 13 | /* Browser Resets */ 14 | 15 | .flex-container a:active, 16 | .flexslider a:active, 17 | .flex-container a:focus, 18 | .flexslider a:focus { 19 | outline: none; 20 | } 21 | 22 | .slides, 23 | .flex-control-nav, 24 | .flex-direction-nav { 25 | margin: 0; 26 | padding: 0; 27 | list-style: none; 28 | } 29 | 30 | 31 | /* FlexSlider Necessary Styles 32 | *********************************/ 33 | 34 | .flexslider .slides>li { 35 | display: none; 36 | -webkit-backface-visibility: hidden; 37 | } 38 | 39 | 40 | /* Hide the slides before the JS is loaded. Avoids image jumping */ 41 | 42 | .flexslider .slides img { 43 | display: block; 44 | } 45 | 46 | .flex-pauseplay span { 47 | text-transform: capitalize; 48 | } 49 | 50 | 51 | /* Clearfix for the .slides element */ 52 | 53 | .slides:after { 54 | content: "."; 55 | display: block; 56 | clear: both; 57 | visibility: hidden; 58 | line-height: 0; 59 | height: 0; 60 | } 61 | 62 | html[xmlns] .slides { 63 | display: block; 64 | } 65 | 66 | * html .slides { 67 | height: 1%; 68 | } 69 | 70 | 71 | /* No JavaScript Fallback */ 72 | 73 | 74 | /* If you are not using another script, such as Modernizr, make sure you 75 | * include js that eliminates this class on page load */ 76 | 77 | .no-js .slides>li:first-child { 78 | display: block; 79 | } 80 | 81 | 82 | /* FlexSlider Default Theme 83 | *********************************/ 84 | 85 | .flexslider { 86 | border: 0px; 87 | position: relative; 88 | zoom: 1; 89 | } 90 | 91 | .flex-viewport { 92 | max-height: 2000px; 93 | -webkit-transition: all 1s ease; 94 | -moz-transition: all 1s ease; 95 | transition: all 1s ease; 96 | } 97 | 98 | .loading .flex-viewport { 99 | max-height: 300px; 100 | } 101 | 102 | .flexslider .slides { 103 | zoom: 1; 104 | } 105 | 106 | .carousel li { 107 | margin-right: 5px 108 | } 109 | 110 | 111 | /* Direction Nav */ 112 | 113 | .flex-direction-nav { 114 | *height: 0; 115 | } 116 | 117 | .flex-direction-nav a { 118 | width: 35px; 119 | height: 49px; 120 | margin: 0; 121 | display: block; 122 | background: #93c83f url(../images/right.png) no-repeat 4px 11px; 123 | position: absolute; 124 | top: 0; 125 | z-index: 10; 126 | cursor: pointer; 127 | text-indent: -9999px; 128 | opacity: 1; 129 | -webkit-transition: all .3s ease; 130 | } 131 | 132 | .flex-direction-nav .flex-next { 133 | background: #93c83f url(../images/left.png) no-repeat 7px 11px; 134 | right: 53%; 135 | } 136 | 137 | .flex-direction-nav .flex-prev { 138 | left: 47%; 139 | } 140 | 141 | 142 | /* 143 | .flexslider:hover .flex-next {opacity: 1;} 144 | .flexslider:hover .flex-prev {opacity: 1;} 145 | .flexslider:hover .flex-next:hover, .flexslider:hover .flex-prev:hover {opacity: 1;} 146 | .flex-direction-nav .flex-disabled {opacity: .3!important; filter:alpha(opacity=30); cursor: default;}*/ 147 | 148 | .flex-next:hover, 149 | .flex-prev:hover { 150 | opacity: .8; 151 | } 152 | 153 | 154 | /* Control Nav */ 155 | 156 | .flex-control-nav { 157 | display: block; 158 | position: absolute; 159 | left: 9px; 160 | margin-left: 0; 161 | bottom: 20%; 162 | } 163 | 164 | .flex-control-nav li { 165 | margin: 0 .5em; 166 | display: inline-block; 167 | zoom: 1; 168 | position: relative; 169 | } 170 | 171 | .flex-control-paging li a { 172 | width: 10px; 173 | height: 10px; 174 | display: block; 175 | background: none; 176 | cursor: pointer; 177 | text-indent: -9999px; 178 | border: none; 179 | color: #fff; 180 | background: #000; 181 | text-align: center; 182 | border-radius: 15px; 183 | font-weight: 600; 184 | display: none; 185 | } 186 | 187 | .flex-control-paging li a.flex-active { 188 | background: #3be8b0; 189 | cursor: default; 190 | transform: rotateX(360deg); 191 | -webkit-transform: rotateX(360deg); 192 | -moz-transform: rotateX(360deg); 193 | -o-transform: rotateX(360deg); 194 | -ms-transform: rotateX(360deg); 195 | transition: transform 2s; 196 | } 197 | 198 | .flex-control-thumbs { 199 | margin: 5px 0 0; 200 | position: static; 201 | overflow: hidden; 202 | } 203 | 204 | .flex-control-thumbs li { 205 | width: 25%; 206 | float: left; 207 | margin: 0; 208 | } 209 | 210 | .flex-control-thumbs img { 211 | width: 100%; 212 | display: block; 213 | opacity: .7; 214 | cursor: pointer; 215 | } 216 | 217 | .flex-control-thumbs img:hover { 218 | opacity: 1; 219 | } 220 | 221 | .flex-control-thumbs .flex-active { 222 | opacity: 1; 223 | cursor: default; 224 | } 225 | 226 | @media screen and (max-width:1080px) { 227 | .flex-direction-nav .flex-prev { 228 | left: 46.2%; 229 | } 230 | .flex-direction-nav .flex-next { 231 | right: 53.8%; 232 | } 233 | .flex-direction-nav a { 234 | bottom: 88%; 235 | } 236 | .flex-control-nav { 237 | left: -7px; 238 | bottom: 14%; 239 | } 240 | } 241 | 242 | @media screen and (max-width: 991px) { 243 | .flex-direction-nav .flex-prev { 244 | left: 10.2%; 245 | } 246 | .flex-direction-nav .flex-next { 247 | right: 89.8%; 248 | } 249 | .flex-direction-nav a { 250 | bottom: 93%; 251 | } 252 | .flex-control-nav { 253 | left: 92px; 254 | bottom: -1%; 255 | } 256 | } 257 | 258 | @media screen and (max-width: 667px) {} 259 | 260 | @media screen and (max-width: 640px) {} 261 | 262 | @media screen and (max-width: 600px) {} 263 | 264 | @media screen and (max-width: 480px) {} 265 | 266 | @media screen and (max-width: 414px) { 267 | .flex-direction-nav .flex-next { 268 | right: 97.5%; 269 | } 270 | } 271 | 272 | @media screen and (max-width: 375px) { 273 | .flex-direction-nav .flex-next { 274 | right: 96.5%; 275 | } 276 | } 277 | 278 | @media screen and (max-width: 320px) { 279 | section.slider { 280 | padding-top: 0%; 281 | } 282 | .flex-direction-nav .flex-prev { 283 | left: -8.8%; 284 | } 285 | .flex-direction-nav .flex-next { 286 | right: 86.5%; 287 | } 288 | .flex-control-nav { 289 | left: -8.8%; 290 | } 291 | .flex-control-nav li:first-child:before { 292 | left: -135%; 293 | } 294 | } -------------------------------------------------------------------------------- /Template/css/swipebox.css: -------------------------------------------------------------------------------- 1 | /*! Swipebox v1.2.8 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ 2 | 3 | html.swipebox-html.swipebox-touch { 4 | overflow: hidden !important; 5 | } 6 | 7 | #swipebox-overlay img { 8 | border: none !important; 9 | } 10 | 11 | #swipebox-overlay { 12 | width: 100%; 13 | height: 100%; 14 | position: fixed; 15 | top: 0; 16 | left: 0; 17 | z-index: 99999 !important; 18 | overflow: hidden; 19 | -webkit-user-select: none; 20 | -moz-user-select: none; 21 | -ms-user-select: none; 22 | user-select: none; 23 | } 24 | 25 | #swipebox-container { 26 | position: relative; 27 | width: 100%; 28 | height: 100%; 29 | } 30 | 31 | #swipebox-slider { 32 | -webkit-transition: -webkit-transform 0.4s ease; 33 | transition: transform 0.4s ease; 34 | height: 100%; 35 | left: 0; 36 | top: 0; 37 | width: 100%; 38 | white-space: nowrap; 39 | position: absolute; 40 | display: none; 41 | cursor: pointer; 42 | } 43 | 44 | #swipebox-slider .slide { 45 | height: 100%; 46 | width: 100%; 47 | line-height: 1px; 48 | text-align: center; 49 | display: inline-block; 50 | } 51 | 52 | #swipebox-slider .slide:before { 53 | content: ""; 54 | display: inline-block; 55 | height: 43%; 56 | width: 1px; 57 | margin-right: -1px; 58 | } 59 | 60 | #swipebox-slider .slide img, 61 | #swipebox-slider .slide .swipebox-video-container { 62 | display: inline-block; 63 | max-height: 100%; 64 | max-width: 100%; 65 | margin: 0; 66 | padding: 0; 67 | width: auto; 68 | height: auto; 69 | vertical-align: middle; 70 | } 71 | 72 | #swipebox-slider .slide .swipebox-video-container { 73 | background: none; 74 | max-width: 1140px; 75 | max-height: 100%; 76 | width: 100%; 77 | padding: 5%; 78 | -webkit-box-sizing: border-box; 79 | box-sizing: border-box; 80 | -moz-box-sizing: border-box; 81 | } 82 | 83 | #swipebox-slider .slide .swipebox-video-container .swipebox-video { 84 | width: 100%; 85 | height: 0; 86 | padding-bottom: 56.25%; 87 | overflow: hidden; 88 | position: relative; 89 | } 90 | 91 | #swipebox-slider .slide .swipebox-video-container .swipebox-video iframe { 92 | width: 100% !important; 93 | height: 100% !important; 94 | position: absolute; 95 | top: 0; 96 | left: 0; 97 | } 98 | 99 | #swipebox-slider .slide-loading { 100 | background: url(../images/loader.gif) no-repeat center center; 101 | } 102 | 103 | #swipebox-bottom-bar, 104 | #swipebox-top-bar { 105 | -webkit-transition: 0.5s all; 106 | transition: 0.5s all; 107 | -moz-transition: 0.5s all; 108 | position: absolute; 109 | left: 0; 110 | z-index: 999; 111 | height: 50px; 112 | width: 100%; 113 | } 114 | 115 | #swipebox-bottom-bar { 116 | bottom: -50px; 117 | } 118 | 119 | #swipebox-bottom-bar.visible-bars { 120 | -webkit-transform: translate3d(0, -50px, 0); 121 | transform: translate3d(0, -50px, 0); 122 | -moz-transform: translate3d(0, -50px, 0); 123 | -o-transform: translate3d(0, -50px, 0); 124 | -ms-transform: translate3d(0, -50px, 0); 125 | } 126 | 127 | #swipebox-top-bar { 128 | bottom: 14%; 129 | } 130 | 131 | #swipebox-title { 132 | display: block; 133 | width: 45%; 134 | text-align: center; 135 | margin: 0 auto !important; 136 | } 137 | 138 | #swipebox-prev, 139 | #swipebox-next, 140 | #swipebox-close { 141 | background-image: url(../images/icons.png); 142 | background-repeat: no-repeat; 143 | border: none !important; 144 | text-decoration: none !important; 145 | cursor: pointer; 146 | width: 50px; 147 | height: 50px; 148 | top: 0; 149 | } 150 | 151 | #swipebox-arrows { 152 | display: block; 153 | margin: 0 auto; 154 | width: 100%; 155 | height: 50px; 156 | } 157 | 158 | #swipebox-prev { 159 | background-position: -32px 13px; 160 | float: left; 161 | } 162 | 163 | #swipebox-next { 164 | background-position: -78px 13px; 165 | float: right; 166 | } 167 | 168 | #swipebox-close { 169 | right: 50px; 170 | top: 12px; 171 | position: absolute; 172 | z-index: 9999; 173 | background-position: 15px 12px; 174 | } 175 | 176 | .swipebox-no-close-button #swipebox-close { 177 | display: none; 178 | } 179 | 180 | #swipebox-prev.disabled, 181 | #swipebox-next.disabled { 182 | opacity: 0.3; 183 | } 184 | 185 | .swipebox-no-touch #swipebox-overlay.rightSpring #swipebox-slider { 186 | -webkit-animation: rightSpring 0.3s; 187 | animation: rightSpring 0.3s; 188 | -moz-animation: rightSpring 0.3s; 189 | } 190 | 191 | .swipebox-no-touch #swipebox-overlay.leftSpring #swipebox-slider { 192 | -webkit-animation: leftSpring 0.3s; 193 | animation: leftSpring 0.3s; 194 | -moz-animation: leftSpring 0.3s; 195 | } 196 | 197 | .swipebox-touch #swipebox-container:before, 198 | .swipebox-touch #swipebox-container:after { 199 | -webkit-backface-visibility: hidden; 200 | backface-visibility: hidden; 201 | -webkit-transition: all .3s ease; 202 | transition: all .3s ease; 203 | -moz-transition: all .3s ease; 204 | content: ' '; 205 | position: absolute; 206 | z-index: 999; 207 | top: 0; 208 | height: 100%; 209 | width: 20px; 210 | opacity: 0; 211 | } 212 | 213 | .swipebox-touch #swipebox-container:before { 214 | left: 0; 215 | -webkit-box-shadow: inset 10px 0px 10px -8px #656565; 216 | box-shadow: inset 10px 0px 10px -8px #656565; 217 | -moz-box-shadow: inset 10px 0px 10px -8px #656565; 218 | } 219 | 220 | .swipebox-touch #swipebox-container:after { 221 | right: 0; 222 | -webkit-box-shadow: inset -10px 0px 10px -8px #656565; 223 | box-shadow: inset -10px 0px 10px -8px #656565; 224 | -moz-box-shadow: inset -10px 0px 10px -8px #656565; 225 | } 226 | 227 | .swipebox-touch #swipebox-overlay.leftSpringTouch #swipebox-container:before { 228 | opacity: 1; 229 | } 230 | 231 | .swipebox-touch #swipebox-overlay.rightSpringTouch #swipebox-container:after { 232 | opacity: 1; 233 | } 234 | 235 | @-webkit-keyframes rightSpring { 236 | 0% { 237 | left: 0; 238 | } 239 | 50% { 240 | left: -30px; 241 | } 242 | 100% { 243 | left: 0; 244 | } 245 | } 246 | 247 | @keyframes rightSpring { 248 | 0% { 249 | left: 0; 250 | } 251 | 50% { 252 | left: -30px; 253 | } 254 | 100% { 255 | left: 0; 256 | } 257 | } 258 | 259 | @-webkit-keyframes leftSpring { 260 | 0% { 261 | left: 0; 262 | } 263 | 50% { 264 | left: 30px; 265 | } 266 | 100% { 267 | left: 0; 268 | } 269 | } 270 | 271 | @keyframes leftSpring { 272 | 0% { 273 | left: 0; 274 | } 275 | 50% { 276 | left: 30px; 277 | } 278 | 100% { 279 | left: 0; 280 | } 281 | } 282 | 283 | @media screen and (min-width: 800px) { 284 | #swipebox-close { 285 | right: 50px; 286 | top: 12px; 287 | } 288 | #swipebox-arrows { 289 | width: 80%; 290 | max-width: 800px; 291 | } 292 | } 293 | 294 | 295 | /* Skin 296 | --------------------------*/ 297 | 298 | #swipebox-overlay { 299 | background: #0d0d0d; 300 | } 301 | 302 | #swipebox-bottom-bar, 303 | #swipebox-top-bar { 304 | opacity: 1; 305 | } 306 | 307 | #swipebox-top-bar { 308 | color: white !important; 309 | font-size: 15px; 310 | line-height: 30px; 311 | } 312 | 313 | @media(max-width:1366px) { 314 | #swipebox-top-bar { 315 | bottom: 20%; 316 | } 317 | } 318 | 319 | @media(max-width:1080px) { 320 | #swipebox-title { 321 | width: 61%; 322 | line-height: 1.8em; 323 | margin: 1em auto 0 !important; 324 | } 325 | } 326 | 327 | @media(max-width:991px) { 328 | #swipebox-top-bar { 329 | bottom: 11%; 330 | } 331 | } 332 | 333 | @media(max-width:768px) { 334 | #swipebox-title { 335 | width: 75%; 336 | } 337 | #swipebox-arrows { 338 | width: 83%; 339 | } 340 | } 341 | 342 | @media(max-width:667px) { 343 | #swipebox-slider .slide img, 344 | #swipebox-slider .slide .swipebox-video-container { 345 | max-width: 80%; 346 | } 347 | #swipebox-title { 348 | width: 82%; 349 | font-size: 14px; 350 | font-weight: 300; 351 | } 352 | } 353 | 354 | @media(max-width:640px) { 355 | #swipebox-title { 356 | width: 82%; 357 | font-size: .9em; 358 | } 359 | #swipebox-arrows { 360 | width: 80%; 361 | } 362 | } 363 | 364 | @media(max-width:480px) { 365 | #swipebox-title { 366 | width: 85%; 367 | } 368 | #swipebox-close { 369 | right: 30px; 370 | } 371 | #swipebox-slider .slide img, 372 | #swipebox-slider .slide .swipebox-video-container { 373 | max-width: 100%; 374 | } 375 | #swipebox-container { 376 | width: 97%; 377 | } 378 | } 379 | 380 | @media(max-width:414px) { 381 | #swipebox-container { 382 | width: 96%; 383 | } 384 | } 385 | 386 | @media(max-width:384px) { 387 | #swipebox-top-bar { 388 | bottom: 23%; 389 | } 390 | } -------------------------------------------------------------------------------- /Template/enseignant/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | login Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 | 37 |
38 |
39 | 61 |
62 |
63 |
64 |
65 |
66 |
67 | 119 |
120 |
121 | 123 |
124 |
125 |
126 |

127 | Contact Us

128 |
129 |
130 |
131 |

s'identifier

132 |
133 | 134 | 135 | 136 |
137 | 138 |
139 |
140 | 141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /Template/enseignant/passagegrade.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | login Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 | 37 |
38 |
39 | 61 |
62 |
63 |
64 |
65 |
66 |
67 | 88 |
89 |
90 | 92 |
93 |
94 |
95 |

96 | Contact Us

97 |
98 |
99 |

Demande de Passage de grade

100 | 101 | 102 | 103 | 104 |
105 |
106 | 107 |
108 |
109 |
110 |
111 |
112 | 119 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /Template/images/arr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/arr.png -------------------------------------------------------------------------------- /Template/images/bann1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/bann1.jpg -------------------------------------------------------------------------------- /Template/images/bann2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/bann2.jpg -------------------------------------------------------------------------------- /Template/images/bann3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/bann3.jpg -------------------------------------------------------------------------------- /Template/images/bann4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/bann4.jpg -------------------------------------------------------------------------------- /Template/images/g1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/g1.jpg -------------------------------------------------------------------------------- /Template/images/g2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/g2.jpg -------------------------------------------------------------------------------- /Template/images/g6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/g6.jpg -------------------------------------------------------------------------------- /Template/images/g7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/g7.jpg -------------------------------------------------------------------------------- /Template/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/icons.png -------------------------------------------------------------------------------- /Template/images/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/left.png -------------------------------------------------------------------------------- /Template/images/left11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/left11.png -------------------------------------------------------------------------------- /Template/images/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/loader.gif -------------------------------------------------------------------------------- /Template/images/logo (copy).jpg~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/logo (copy).jpg~ -------------------------------------------------------------------------------- /Template/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/logo.jpg -------------------------------------------------------------------------------- /Template/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/logo.png -------------------------------------------------------------------------------- /Template/images/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/right.png -------------------------------------------------------------------------------- /Template/images/right11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Amine-Smahi/PostGraduation/1f201439346d10000270b977551005f980ab5c11/Template/images/right11.png -------------------------------------------------------------------------------- /Template/inscription.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Inscription Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |
21 | 35 |
36 |
37 | 59 |
60 |
61 |
62 |
63 |
64 |
65 | 117 |
118 |
119 | 121 |
122 | 129 |
130 |
131 |
132 |
133 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /Template/js/easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php 3 | * 4 | * Uses the built In easIng capabilities added In jQuery 1.1 5 | * to offer multiple easIng options 6 | * 7 | * Copyright (c) 2007 George Smith 8 | * Licensed under the MIT License: 9 | * http://www.opensource.org/licenses/mit-license.php 10 | */ 11 | 12 | // t: current time, b: begInnIng value, c: change In value, d: duration 13 | 14 | jQuery.extend( jQuery.easing, 15 | { 16 | easeInQuad: function (x, t, b, c, d) { 17 | return c*(t/=d)*t + b; 18 | }, 19 | easeOutQuad: function (x, t, b, c, d) { 20 | return -c *(t/=d)*(t-2) + b; 21 | }, 22 | easeInOutQuad: function (x, t, b, c, d) { 23 | if ((t/=d/2) < 1) return c/2*t*t + b; 24 | return -c/2 * ((--t)*(t-2) - 1) + b; 25 | }, 26 | easeInCubic: function (x, t, b, c, d) { 27 | return c*(t/=d)*t*t + b; 28 | }, 29 | easeOutCubic: function (x, t, b, c, d) { 30 | return c*((t=t/d-1)*t*t + 1) + b; 31 | }, 32 | easeInOutCubic: function (x, t, b, c, d) { 33 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 34 | return c/2*((t-=2)*t*t + 2) + b; 35 | }, 36 | easeInQuart: function (x, t, b, c, d) { 37 | return c*(t/=d)*t*t*t + b; 38 | }, 39 | easeOutQuart: function (x, t, b, c, d) { 40 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 41 | }, 42 | easeInOutQuart: function (x, t, b, c, d) { 43 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 44 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 45 | }, 46 | easeInQuint: function (x, t, b, c, d) { 47 | return c*(t/=d)*t*t*t*t + b; 48 | }, 49 | easeOutQuint: function (x, t, b, c, d) { 50 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 51 | }, 52 | easeInOutQuint: function (x, t, b, c, d) { 53 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 54 | return c/2*((t-=2)*t*t*t*t + 2) + b; 55 | }, 56 | easeInSine: function (x, t, b, c, d) { 57 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 58 | }, 59 | easeOutSine: function (x, t, b, c, d) { 60 | return c * Math.sin(t/d * (Math.PI/2)) + b; 61 | }, 62 | easeInOutSine: function (x, t, b, c, d) { 63 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 64 | }, 65 | easeInExpo: function (x, t, b, c, d) { 66 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 67 | }, 68 | easeOutExpo: function (x, t, b, c, d) { 69 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 70 | }, 71 | easeInOutExpo: function (x, t, b, c, d) { 72 | if (t==0) return b; 73 | if (t==d) return b+c; 74 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 75 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 76 | }, 77 | easeInCirc: function (x, t, b, c, d) { 78 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 79 | }, 80 | easeOutCirc: function (x, t, b, c, d) { 81 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 82 | }, 83 | easeInOutCirc: function (x, t, b, c, d) { 84 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 85 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 86 | }, 87 | easeInElastic: function (x, t, b, c, d) { 88 | var s=1.70158;var p=0;var a=c; 89 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 90 | if (a < Math.abs(c)) { a=c; var s=p/4; } 91 | else var s = p/(2*Math.PI) * Math.asin (c/a); 92 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 93 | }, 94 | easeOutElastic: function (x, t, b, c, d) { 95 | var s=1.70158;var p=0;var a=c; 96 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 97 | if (a < Math.abs(c)) { a=c; var s=p/4; } 98 | else var s = p/(2*Math.PI) * Math.asin (c/a); 99 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 100 | }, 101 | easeInOutElastic: function (x, t, b, c, d) { 102 | var s=1.70158;var p=0;var a=c; 103 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 104 | if (a < Math.abs(c)) { a=c; var s=p/4; } 105 | else var s = p/(2*Math.PI) * Math.asin (c/a); 106 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 107 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 108 | }, 109 | easeInBack: function (x, t, b, c, d, s) { 110 | if (s == undefined) s = 1.70158; 111 | return c*(t/=d)*t*((s+1)*t - s) + b; 112 | }, 113 | easeOutBack: function (x, t, b, c, d, s) { 114 | if (s == undefined) s = 1.70158; 115 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 116 | }, 117 | easeInOutBack: function (x, t, b, c, d, s) { 118 | if (s == undefined) s = 1.70158; 119 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 120 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 121 | }, 122 | easeInBounce: function (x, t, b, c, d) { 123 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 124 | }, 125 | easeOutBounce: function (x, t, b, c, d) { 126 | if ((t/=d) < (1/2.75)) { 127 | return c*(7.5625*t*t) + b; 128 | } else if (t < (2/2.75)) { 129 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 130 | } else if (t < (2.5/2.75)) { 131 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 132 | } else { 133 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 134 | } 135 | }, 136 | easeInOutBounce: function (x, t, b, c, d) { 137 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 138 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 139 | } 140 | }); 141 | -------------------------------------------------------------------------------- /Template/js/jquery.swipebox.min.js: -------------------------------------------------------------------------------- 1 | /*! Swipebox v1.3.0 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ 2 | !function(a,b,c,d){c.swipebox=function(e,f){var g,h,i={useCSS:!0,useSVG:!0,initialIndexOnArray:0,hideCloseButtonOnMobile:!1,hideBarsDelay:3e3,videoMaxWidth:1140,vimeoColor:"cccccc",beforeOpen:null,afterOpen:null,afterClose:null,loopAtEnd:!1},j=this,k=[],l=e.selector,m=c(l),n=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i),o=null!==n||b.createTouch!==d||"ontouchstart"in a||"onmsgesturechange"in a||navigator.msMaxTouchPoints,p=!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,q=a.innerWidth?a.innerWidth:c(a).width(),r=a.innerHeight?a.innerHeight:c(a).height(),s=0,t='
';j.settings={},c.swipebox.close=function(){g.closeSlide()},c.swipebox.extend=function(){return g},j.init=function(){j.settings=c.extend({},i,f),c.isArray(e)?(k=e,g.target=c(a),g.init(j.settings.initialIndexOnArray)):c(b).on("click",l,function(a){if("slide current"===a.target.parentNode.className)return!1;c.isArray(e)||(g.destroy(),h=c(l),g.actions()),k=[];var b,d,f;f||(d="data-rel",f=c(this).attr(d)),f||(d="rel",f=c(this).attr(d)),h=f&&""!==f&&"nofollow"!==f?m.filter("["+d+'="'+f+'"]'):c(l),h.each(function(){var a=null,b=null;c(this).attr("title")&&(a=c(this).attr("title")),c(this).attr("href")&&(b=c(this).attr("href")),k.push({href:b,title:a})}),b=h.index(c(this)),a.preventDefault(),a.stopPropagation(),g.target=c(a.target),g.init(b)})},g={init:function(a){j.settings.beforeOpen&&j.settings.beforeOpen(),this.target.trigger("swipebox-start"),c.swipebox.isOpen=!0,this.build(),this.openSlide(a),this.openMedia(a),this.preloadMedia(a+1),this.preloadMedia(a-1),j.settings.afterOpen&&j.settings.afterOpen()},build:function(){var a,b=this;c("body").append(t),p&&j.settings.useSVG===!0&&(a=c("#swipebox-close").css("background-image"),a=a.replace("png","svg"),c("#swipebox-prev, #swipebox-next, #swipebox-close").css({"background-image":a})),n&&c("#swipebox-bottom-bar, #swipebox-top-bar").remove(),c.each(k,function(){c("#swipebox-slider").append('
')}),b.setDim(),b.actions(),o&&b.gesture(),b.keyboard(),b.animBars(),b.resize()},setDim:function(){var b,d,e={};"onorientationchange"in a?a.addEventListener("orientationchange",function(){0===a.orientation?(b=q,d=r):(90===a.orientation||-90===a.orientation)&&(b=r,d=q)},!1):(b=a.innerWidth?a.innerWidth:c(a).width(),d=a.innerHeight?a.innerHeight:c(a).height()),e={width:b,height:d},c("#swipebox-overlay").css(e)},resize:function(){var b=this;c(a).resize(function(){b.setDim()}).resize()},supportTransition:function(){var a,c="transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition".split(" ");for(a=0;a=m||i)){var p=.75-Math.abs(d)/r.height();r.css({top:d+"px"}),r.css({opacity:p}),i=!0}e=b,b=o.pageX-n.pageX,g=100*b/q,!j&&!i&&Math.abs(b)>=l&&(c("#swipebox-slider").css({"-webkit-transition":"",transition:""}),j=!0),j&&(b>0?0===a?c("#swipebox-overlay").addClass("leftSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"})):0>b&&(k.length===a+1?c("#swipebox-overlay").addClass("rightSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"}))))}),!1}).bind("touchend",function(a){if(a.preventDefault(),a.stopPropagation(),c("#swipebox-slider").css({"-webkit-transition":"-webkit-transform 0.4s ease",transition:"transform 0.4s ease"}),d=o.pageY-n.pageY,b=o.pageX-n.pageX,g=100*b/q,i)if(i=!1,Math.abs(d)>=2*m&&Math.abs(d)>Math.abs(f)){var k=d>0?r.height():-r.height();r.animate({top:k+"px",opacity:0},300,function(){h.closeSlide()})}else r.animate({top:0,opacity:1},300);else j?(j=!1,b>=l&&b>=e?h.getPrev():-l>=b&&e>=b&&h.getNext()):p.hasClass("visible-bars")?(h.clearTimeout(),h.hideBars()):(h.showBars(),h.setTimeout());c("#swipebox-slider").css({"-webkit-transform":"translate3d("+s+"%, 0, 0)",transform:"translate3d("+s+"%, 0, 0)"}),c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c(".touching").off("touchmove").removeClass("touching")})},setTimeout:function(){if(j.settings.hideBarsDelay>0){var b=this;b.clearTimeout(),b.timeout=a.setTimeout(function(){b.hideBars()},j.settings.hideBarsDelay)}},clearTimeout:function(){a.clearTimeout(this.timeout),this.timeout=null},showBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.addClass("visible-bars"):(c("#swipebox-top-bar").animate({top:0},500),c("#swipebox-bottom-bar").animate({bottom:0},500),setTimeout(function(){a.addClass("visible-bars")},1e3))},hideBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.removeClass("visible-bars"):(c("#swipebox-top-bar").animate({top:"-50px"},500),c("#swipebox-bottom-bar").animate({bottom:"-50px"},500),setTimeout(function(){a.removeClass("visible-bars")},1e3))},animBars:function(){var a=this,b=c("#swipebox-top-bar, #swipebox-bottom-bar");b.addClass("visible-bars"),a.setTimeout(),c("#swipebox-slider").click(function(){b.hasClass("visible-bars")||(a.showBars(),a.setTimeout())}),c("#swipebox-bottom-bar").hover(function(){a.showBars(),b.addClass("visible-bars"),a.clearTimeout()},function(){j.settings.hideBarsDelay>0&&(b.removeClass("visible-bars"),a.setTimeout())})},keyboard:function(){var b=this;c(a).bind("keyup",function(a){a.preventDefault(),a.stopPropagation(),37===a.keyCode?b.getPrev():39===a.keyCode?b.getNext():27===a.keyCode&&b.closeSlide()})},actions:function(){var a=this,b="touchend click";k.length<2?(c("#swipebox-bottom-bar").hide(),d===k[1]&&c("#swipebox-top-bar").hide()):(c("#swipebox-prev").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getPrev(),a.setTimeout()}),c("#swipebox-next").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getNext(),a.setTimeout()})),c("#swipebox-close").bind(b,function(){a.closeSlide()})},setSlide:function(a,b){b=b||!1;var d=c("#swipebox-slider");s=100*-a,this.doCssTrans()?d.css({"-webkit-transform":"translate3d("+100*-a+"%, 0, 0)",transform:"translate3d("+100*-a+"%, 0, 0)"}):d.animate({left:100*-a+"%"}),c("#swipebox-slider .slide").removeClass("current"),c("#swipebox-slider .slide").eq(a).addClass("current"),this.setTitle(a),b&&d.fadeIn(),c("#swipebox-prev, #swipebox-next").removeClass("disabled"),0===a?c("#swipebox-prev").addClass("disabled"):a===k.length-1&&j.settings.loopAtEnd!==!0&&c("#swipebox-next").addClass("disabled")},openSlide:function(b){c("html").addClass("swipebox-html"),o?(c("html").addClass("swipebox-touch"),j.settings.hideCloseButtonOnMobile&&c("html").addClass("swipebox-no-close-button")):c("html").addClass("swipebox-no-touch"),c(a).trigger("resize"),this.setSlide(b,!0)},preloadMedia:function(a){var b=this,c=null;k[a]!==d&&(c=k[a].href),b.isVideo(c)?b.openMedia(a):setTimeout(function(){b.openMedia(a)},1e3)},openMedia:function(a){var b,e,f=this;return k[a]!==d&&(b=k[a].href),0>a||a>=k.length?!1:(e=c("#swipebox-slider .slide").eq(a),void(f.isVideo(b)?e.html(f.getVideo(b)):(e.addClass("slide-loading"),f.loadMedia(b,function(){e.removeClass("slide-loading"),e.html(this)}))))},setTitle:function(a){var b=null;c("#swipebox-title").empty(),k[a]!==d&&(b=k[a].title),b?(c("#swipebox-top-bar").show(),c("#swipebox-title").append(b)):c("#swipebox-top-bar").hide()},isVideo:function(a){if(a){if(a.match(/youtube\.com\/watch\?v=([a-zA-Z0-9\-_]+)/)||a.match(/vimeo\.com\/([0-9]*)/)||a.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/))return!0;if(a.toLowerCase().indexOf("swipeboxvideo=1")>=0)return!0}},getVideo:function(a){var b="",c=a.match(/watch\?v=([a-zA-Z0-9\-_]+)/),d=a.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/),e=a.match(/vimeo\.com\/([0-9]*)/);return c||d?(d&&(c=d),b=''):e&&(b=''),d||d||e||(b=''),'
'+b+"
"},loadMedia:function(a,b){if(!this.isVideo(a)){var d=c("").on("load",function(){b.call(d)});d.attr("src",a)}},getNext:function(){var a,b=this,d=c("#swipebox-slider .slide").index(c("#swipebox-slider .slide.current"));d+10?(a=c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src"),c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src",a),b--,this.setSlide(b),this.preloadMedia(b-1)):(c("#swipebox-overlay").addClass("leftSpring"),setTimeout(function(){c("#swipebox-overlay").removeClass("leftSpring")},500))},closeSlide:function(){c("html").removeClass("swipebox-html"),c("html").removeClass("swipebox-touch"),c(a).trigger("resize"),this.destroy()},destroy:function(){c(a).unbind("keyup"),c("body").unbind("touchstart"),c("body").unbind("touchmove"),c("body").unbind("touchend"),c("#swipebox-slider").unbind(),c("#swipebox-overlay").remove(),c.isArray(e)||e.removeData("_swipebox"),this.target&&this.target.trigger("swipebox-destroy"),c.swipebox.isOpen=!1,j.settings.afterClose&&j.settings.afterClose()}},j.init()},c.fn.swipebox=function(a){if(!c.data(this,"_swipebox")){var b=new c.swipebox(this,a);this.data("_swipebox",b)}return this.data("_swipebox")}}(window,document,jQuery); -------------------------------------------------------------------------------- /Template/js/jquery.waypoints.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Waypoints - 4.0.0 3 | Copyright © 2011-2015 Caleb Troughton 4 | Licensed under the MIT license. 5 | https://github.com/imakewebthings/waypoints/blob/master/licenses.txt 6 | */ 7 | !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.invokeAll("enable")},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical);t&&e&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s],l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=y+l-f,h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}(); -------------------------------------------------------------------------------- /Template/js/main.js: -------------------------------------------------------------------------------- 1 | $('#ok').click(function(){ 2 | $('#popup').fadeOut(); 3 | }); 4 | 5 | 6 | jQuery(document).ready(function($){ 7 | var MqL = 1170; 8 | //move nav element position according to window width 9 | moveNavigation(); 10 | $(window).on('resize', function(){ 11 | (!window.requestAnimationFrame) ? setTimeout(moveNavigation, 300) : window.requestAnimationFrame(moveNavigation); 12 | }); 13 | 14 | //mobile - open lateral menu clicking on the menu icon 15 | $('.cd-nav-trigger').on('click', function(event){ 16 | event.preventDefault(); 17 | if( $('.cd-main-content').hasClass('nav-is-visible') ) { 18 | closeNav(); 19 | $('.cd-overlay').removeClass('is-visible'); 20 | } else { 21 | $(this).addClass('nav-is-visible'); 22 | $('.cd-main-header').addClass('nav-is-visible'); 23 | $('.cd-main-content').addClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 24 | $('body').addClass('overflow-hidden'); 25 | }); 26 | toggleSearch('close'); 27 | $('.cd-overlay').addClass('is-visible'); 28 | } 29 | }); 30 | 31 | //submenu items - go back link 32 | $('.go-back').on('click', function(){ 33 | $(this).parent('ul').addClass('is-hidden').parent('.has-children').parent('ul').removeClass('moves-out'); 34 | }); 35 | 36 | function closeNav() { 37 | $('.cd-nav-trigger').removeClass('nav-is-visible'); 38 | $('.cd-main-header').removeClass('nav-is-visible'); 39 | $('.cd-primary-nav').removeClass('nav-is-visible'); 40 | $('.has-children ul').addClass('is-hidden'); 41 | $('.has-children a').removeClass('selected'); 42 | $('.moves-out').removeClass('moves-out'); 43 | $('.cd-main-content').removeClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 44 | $('body').removeClass('overflow-hidden'); 45 | }); 46 | } 47 | 48 | function checkWindowWidth() { 49 | //check window width (scrollbar included) 50 | var e = window, 51 | a = 'inner'; 52 | if (!('innerWidth' in window )) { 53 | a = 'client'; 54 | e = document.documentElement || document.body; 55 | } 56 | if ( e[ a+'Width' ] >= MqL ) { 57 | return true; 58 | } else { 59 | return false; 60 | } 61 | } 62 | 63 | function moveNavigation(){ 64 | var navigation = $('.cd-nav'); 65 | var desktop = checkWindowWidth(); 66 | if ( desktop ) { 67 | navigation.detach(); 68 | navigation.insertBefore('.cd-header-buttons'); 69 | } else { 70 | navigation.detach(); 71 | navigation.insertAfter('.cd-main-content'); 72 | } 73 | } 74 | }); -------------------------------------------------------------------------------- /Template/js/responsiveslides.min.js: -------------------------------------------------------------------------------- 1 | /*! http://responsiveslides.com v1.54 by @viljamis */ 2 | (function(c,I,B){c.fn.responsiveSlides=function(l){var a=c.extend({auto:!0,speed:500,timeout:4E3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",navContainer:"",manualControls:"",namespace:"rslides",before:c.noop,after:c.noop},l);return this.each(function(){B++;var f=c(this),s,r,t,m,p,q,n=0,e=f.children(),C=e.size(),h=parseFloat(a.speed),D=parseFloat(a.timeout),u=parseFloat(a.maxwidth),g=a.namespace,d=g+B,E=g+"_nav "+d+"_nav",v=g+"_here",j=d+"_on", 3 | w=d+"_s",k=c("
    "),x={"float":"left",position:"relative",opacity:1,zIndex:2},y={"float":"none",position:"absolute",opacity:0,zIndex:1},F=function(){var b=(document.body||document.documentElement).style,a="transition";if("string"===typeof b[a])return!0;s=["Moz","Webkit","Khtml","O","ms"];var a=a.charAt(0).toUpperCase()+a.substr(1),c;for(c=0;c"+a+""});k.append(A);l.navContainer?c(a.navContainer).append(k):f.after(k)}a.manualControls&&(k=c(a.manualControls),k.addClass(g+"_tabs "+d+"_tabs"));(a.pager||a.manualControls)&&k.find("li").each(function(a){c(this).addClass(w+(a+1))});if(a.pager||a.manualControls)q= 6 | k.find("a"),r=function(a){q.closest("li").removeClass(v).eq(a).addClass(v)};a.auto&&(t=function(){p=setInterval(function(){e.stop(!0,!0);var b=n+1"+a.prevText+"";l.navContainer?c(a.navContainer).append(g):f.after(g);var d=c("."+d+"_nav"),G=d.filter(".prev");d.bind("click",function(b){b.preventDefault();b=c("."+j);if(!b.queue("fx").length){var d=e.index(b);b=d-1;d=d+1u&&f.css("width",u)};H();c(I).bind("resize",function(){H()})}})}})(jQuery,this,0); 9 | -------------------------------------------------------------------------------- /Template/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | login Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
    23 | 37 |
    38 |
    39 | 61 |
    62 |
    63 |
    64 |
    65 |
    66 |
    67 | 119 |
    120 |
    121 | 123 |
    124 |
    125 |
    126 |

    127 | Contact Us

    128 |
    129 |
    130 |
    131 |

    s'identifier

    132 |
    133 | 134 | 135 | 136 |
    137 | 138 |
    139 |
    140 | 141 |
    142 |
    143 |
    144 | 145 | 148 | 149 |
    150 |
    151 |
    152 |
    153 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | -------------------------------------------------------------------------------- /Template/recours.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | login Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
    23 | 37 |
    38 |
    39 | 61 |
    62 |
    63 |
    64 |
    65 |
    66 |
    67 | 94 |
    95 |
    96 | 98 |
    99 |
    100 |
    101 |

    102 | Contact Us

    103 |
    104 |
    105 |

    Demande recours

    106 | 107 | 108 | 109 | 110 |
    111 |
    112 | 113 |
    114 |
    115 |
    116 |
    117 |
    118 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /Template/reinscription.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | login Post-Graduation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
    23 | 37 |
    38 |
    39 | 61 |
    62 |
    63 |
    64 |
    65 |
    66 |
    67 | 94 |
    95 |
    96 | 98 |
    99 |
    100 |
    101 |

    102 | C 103 |

    104 |
    105 |
    106 |

    Reinscription

    107 | 108 | 109 |
    110 | 120 |
    121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 |
    135 |
    136 | 137 |
    138 |
    139 |
    140 |
    141 |
    142 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PostGraduation.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | --------------------------------------------------------------------------------