]> git.parisson.com Git - teleforma.git/commitdiff
Merge branch 'no-telemeta' into feature/docker
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 7 Jul 2020 10:51:55 +0000 (12:51 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 7 Jul 2020 10:51:55 +0000 (12:51 +0200)
37 files changed:
1  2 
.gitignore
requirements.txt
teleforma/admin.py
teleforma/exam/views.py
teleforma/forms.py
teleforma/models/crfpa.py
teleforma/south_migrations/0125_auto__add_mediatranscoded__chg_field_period_department__add_field_medi.py
teleforma/south_migrations/0126_auto__del_field_media_item.py
teleforma/static/teleforma/css/teleforma.css
teleforma/templates/postman/base.html
teleforma/templates/postman/view.html
teleforma/templates/registration/login.html
teleforma/templates/registration/registration_complete.html
teleforma/templates/registration/registration_corrector_complete.html
teleforma/templates/teleforma/annals.html
teleforma/templates/teleforma/appointments.html
teleforma/templates/teleforma/course_conference.html
teleforma/templates/teleforma/course_conference_audio.html
teleforma/templates/teleforma/course_conference_record.html
teleforma/templates/teleforma/course_document.html
teleforma/templates/teleforma/course_media.html
teleforma/templates/teleforma/course_media_video_embed.html
teleforma/templates/teleforma/courses.html
teleforma/templates/teleforma/courses_pending.html
teleforma/templates/teleforma/inc/conference_list.html
teleforma/templates/teleforma/inc/document_list.html
teleforma/templates/teleforma/inc/media_list_pending.html
teleforma/templates/teleforma/inc/newsitems_portlet.html
teleforma/templates/teleforma/inc/user_list.html
teleforma/templates/teleforma/newsitem_list.html
teleforma/templates/teleforma/profile_detail.html
teleforma/templates/teleforma/search_criteria.html
teleforma/templates/teleforma/users.html
teleforma/views/core.py
teleforma/views/crfpa.py
teleforma/webclass/models.py
teleforma/webclass/templates/webclass/appointments.html

diff --cc .gitignore
Simple merge
index ab511dd664e72fdf4fd52f05cf2959064fd1e512,cc96fd4c7091283d77daba23cf21732f228947f2..c454c82acecd25314429eba50cbd59a88ba2651b
@@@ -1,21 -1,21 +1,22 @@@
- setuptools<=39.1.0
- django==1.8.*
- telemeta==1.7.1
- django-pagination==1.0.7
- django-postman==3.6.2
- django-extensions==2.1.0
+ setuptools
+ django==1.4.19
+ telemeta==1.4.6
+ south   # a supprimer
+ django-pagination==1.0.7    # a supprimer
+ django-postman==3.2.0
+ django-extensions==0.9
+ django-notes    # a supprimer
  django-timezones==0.2
  django-jqchat
+ crocodoc    # a supprimer
  django-registration==0.8
- django-extra-views==0.11.0
- django-simple-captcha
- django-suit
+ django-extra-views==0.6.5   # a supprimer
+ django-simple-captcha   # a maj
+ django-suit     # a maj
  django-nvd3
  django-user-agents
 -xhtml2pdf
 -html5lib==0.95
 +html5lib>=1.0
 +xhtml2pdf==0.2.3
 +markdown<2.5
  django-tinymce==1.5.4
- deefuzzer
- xlwt
- -e .
+ django-quiz # a supprimer
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c60a3efe45d7edf46e5a243a9a15b1b20c8d7ee4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,784 @@@
++# -*- coding: utf-8 -*-
++from south.utils import datetime_utils as datetime
++from south.db import db
++from south.v2 import SchemaMigration
++from django.db import models
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++
++        # self.backwards(orm)
++
++
++        # Adding model 'MediaTranscoded'
++        db.create_table('teleforma_media_transcoded', (
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++            ('item', self.gf('django.db.models.fields.related.ForeignKey')(related_name='transcoded', to=orm['teleforma.Media'])),
++            ('mimetype', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
++            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
++            ('status', self.gf('django.db.models.fields.IntegerField')(default=1)),
++            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=1024, blank=True)),
++        ))
++        db.send_create_signal('teleforma', ['MediaTranscoded'])
++
++
++        # Changing field 'Period.department'
++        db.alter_column('teleforma_period', 'department_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['teleforma.Department']))
++        # Adding field 'Media.file'
++        db.add_column('teleforma_media', 'file',
++                      self.gf('django.db.models.fields.files.FileField')(max_length=1024, null=True),
++                      keep_default=False)
++
++        # Adding field 'Media.poster_file'
++        db.add_column('teleforma_media', 'poster_file',
++                      self.gf('django.db.models.fields.files.FileField')(max_length=255, null=True),
++                      keep_default=False)
++
++
++        # Changing field 'Document.file'
++        db.alter_column('teleforma_document', 'filename', self.gf('django.db.models.fields.files.FileField')(max_length=1024, db_column='filename'))
++
++        # Changing field 'DocumentSimple.file'
++        db.alter_column('teleforma_document_simple', 'filename', self.gf('django.db.models.fields.files.FileField')(max_length=1024, db_column='filename'))
++
++        # Changing field 'AEStudent.user'
++        db.alter_column('teleforma_ae_student', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, to=orm['auth.User']))
++
++        # Changing field 'AEStudent.platform_only'
++        db.alter_column('teleforma_ae_student', 'platform_only', self.gf('django.db.models.fields.BooleanField')())
++
++        if not db.dry_run:
++            from teleforma.models.core import Media, MediaTranscoded
++            from telemeta.models.media import MediaRelated
++            from django.core.exceptions import ObjectDoesNotExist
++
++            for media_item in Media.objects.filter(mime_type="video/webm").all():
++                # set file directly on mediaitem
++                media_item.file = media_item.item.file
++                # get poster file
++                try:
++                    media_item.poster_file = media_item.item.related.filter(title="preview")[0].file
++                except IndexError:
++                    pass
++
++                media_item.save()
++
++                # add media transcoded
++                for item in Media.objects.filter(conference=media_item.conference, course=media_item.course, course_type=media_item.course_type, period=media_item.period):
++                    if item.id == media_item.id:
++                        continue
++
++                    transcoded = MediaTranscoded(
++                        item=media_item, 
++                        mimetype=item.mime_type, 
++                        date_added=item.date_added, 
++                        status=5,
++                        file=item.item.file
++                        )
++                    transcoded.save()
++                    # remove transcoded item from Media
++                    item.delete()
++
++    def backwards(self, orm):
++        # Deleting model 'MediaTranscoded'
++        db.delete_table('teleforma_media_transcoded')
++
++
++        # Changing field 'Period.department'
++        db.alter_column('teleforma_period', 'department_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['teleforma.Department']))
++        # Deleting field 'Media.file'
++        db.delete_column('teleforma_media', 'file')
++
++        # Deleting field 'Media.poster_file'
++        db.delete_column('teleforma_media', 'poster_file')
++
++
++        # Changing field 'Document.file'
++        db.alter_column('teleforma_document', 'filename', self.gf('django.db.models.fields.files.FileField')(max_length=1024, db_column='filename'))
++
++        # Changing field 'DocumentSimple.file'
++        db.alter_column('teleforma_document_simple', 'filename', self.gf('django.db.models.fields.files.FileField')(max_length=1024, db_column='filename'))
++
++        # Changing field 'AEStudent.user'
++        db.alter_column('teleforma_ae_student', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, to=orm['auth.User']))
++
++        # Changing field 'AEStudent.platform_only'
++        db.alter_column('teleforma_ae_student', 'platform_only', self.gf('django.db.models.fields.BooleanField')())
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        'auth.user': {
++            'Meta': {'object_name': 'User'},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'quiz.category': {
++            'Meta': {'object_name': 'Category'},
++            'category': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'quiz.quiz': {
++            'Meta': {'object_name': 'Quiz'},
++            'answers_at_end': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['quiz.Category']", 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'draft': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'exam_paper': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'fail_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'max_questions': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'pass_mark': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'blank': 'True'}),
++            'random_order': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'single_attempt': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'success_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
++            'url': ('django.db.models.fields.SlugField', [], {'max_length': '60'})
++        },
++        'teleforma.aestudent': {
++            'Meta': {'ordering': "['user__last_name']", 'object_name': 'AEStudent', 'db_table': "'teleforma_ae_student'"},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ae_student'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.appointment': {
++            'Meta': {'unique_together': "(('slot', 'jury', 'slot_nb'),)", 'object_name': 'Appointment'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'jury': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.AppointmentJury']"}),
++            'slot': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'to': "orm['teleforma.AppointmentSlot']"}),
++            'slot_nb': ('django.db.models.fields.IntegerField', [], {}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'to': "orm['auth.User']"})
++        },
++        'teleforma.appointmentjury': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentJury', 'db_table': "'teleforma_appointment_jury'"},
++            'address': ('django.db.models.fields.TextField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'slot': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'jurys'", 'null': 'True', 'to': "orm['teleforma.AppointmentSlot']"})
++        },
++        'teleforma.appointmentperiod': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentPeriod', 'db_table': "'teleforma_appointment_period'"},
++            'appointment_mail_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'appointment_slot_size': ('django.db.models.fields.IntegerField', [], {'default': '40'}),
++            'book_delay': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'cancel_delay': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'enable_appointment': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'end': ('django.db.models.fields.DateField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'appointment_periods'", 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'start': ('django.db.models.fields.DateField', [], {})
++        },
++        'teleforma.appointmentslot': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentSlot', 'db_table': "'teleforma_appointment_slot'"},
++            'appointment_period': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'slots'", 'null': 'True', 'to': "orm['teleforma.AppointmentPeriod']"}),
++            'date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nb': ('django.db.models.fields.IntegerField', [], {}),
++            'start': ('django.db.models.fields.TimeField', [], {})
++        },
++        'teleforma.conference': {
++            'Meta': {'ordering': "['-date_begin']", 'object_name': 'Conference'},
++            'comment': ('teleforma.fields.ShortTextField', [], {'max_length': '255', 'blank': 'True'}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.CourseType']"}),
++            'date_begin': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'date_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Department']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'professor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Professor']"}),
++            'public_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'room': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'to': "orm['teleforma.Room']"}),
++            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
++            'status': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'streaming': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'web_class_group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conferences'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.WebClassGroup']"})
++        },
++        'teleforma.corrector': {
++            'Meta': {'ordering': "['user__last_name', '-date_registered']", 'object_name': 'Corrector'},
++            'date_registered': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'pay_status': ('django.db.models.fields.CharField', [], {'default': "'honoraire'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'corrector'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.course': {
++            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'has_exam_scripts': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'last_professor_sent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['teleforma.Professor']", 'null': 'True', 'blank': 'True'}),
++            'magistral': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'obligation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_1': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_2': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_speciality': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'courses'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'procedure': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'quiz': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['quiz.Quiz']", 'null': 'True', 'blank': 'True'}),
++            'synthesis_note': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'title_tweeter': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'written_speciality': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.coursegroup': {
++            'Meta': {'object_name': 'CourseGroup', 'db_table': "'teleforma_course_group'"},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'course_groups'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.coursetype': {
++            'Meta': {'object_name': 'CourseType', 'db_table': "'teleforma_course_type'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.department': {
++            'Meta': {'object_name': 'Department'},
++            'default_period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'departments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
++        },
++        'teleforma.discount': {
++            'Meta': {'object_name': 'Discount', 'db_table': "'teleforma_discounts'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.document': {
++            'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
++            'annal_year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'document'", 'blank': 'True', 'to': "orm['teleforma.CourseType']"}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iej': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.IEJ']"}),
++            'is_annal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'documents'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'to': "orm['teleforma.DocumentType']"}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.documentsimple': {
++            'Meta': {'ordering': "['-date_added']", 'object_name': 'DocumentSimple', 'db_table': "'teleforma_document_simple'"},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document_simple'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document_simple'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.documenttype': {
++            'Meta': {'ordering': "['number']", 'object_name': 'DocumentType', 'db_table': "'teleforma_document_type'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'for_corrector': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
++        },
++        'teleforma.groupedmessage': {
++            'Meta': {'object_name': 'GroupedMessage', 'db_table': "'teleforma_grouped_messages'"},
++            'date_sent': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'grouped_messages'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.StudentGroup']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'message': ('django.db.models.fields.TextField', [], {}),
++            'sender': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'grouped_messages'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
++            'sent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'subject': ('django.db.models.fields.CharField', [], {'max_length': '119'}),
++            'to_send': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.home': {
++            'Meta': {'object_name': 'Home'},
++            'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'modified_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'home_texts'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'text': ('tinymce.models.HTMLField', [], {'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'default': '"Page d\'accueil"', 'max_length': '255'}),
++            'video': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['teleforma.Media']", 'null': 'True', 'blank': 'True'})
++        },
++        'teleforma.iej': {
++            'Meta': {'ordering': "['name']", 'object_name': 'IEJ'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.livestream': {
++            'Meta': {'object_name': 'LiveStream', 'db_table': "'teleforma_live_stream'"},
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'livestream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'server': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'livestream'", 'to': "orm['teleforma.StreamingServer']"}),
++            'stream_type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'streaming': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.media': {
++            'Meta': {'ordering': "['-date_modified', '-conference__session']", 'object_name': 'Media'},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['teleforma.CourseType']"}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'null': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['telemeta.MediaItem']"}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'poster_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True'}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.mediatranscoded': {
++            'Meta': {'object_name': 'MediaTranscoded', 'db_table': "'teleforma_media_transcoded'"},
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'item': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transcoded'", 'to': "orm['teleforma.Media']"}),
++            'mimetype': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'})
++        },
++        'teleforma.newsitem': {
++            'Meta': {'object_name': 'NewsItem'},
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'to': "orm['teleforma.Course']"}),
++            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'to': "orm['auth.User']"}),
++            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'null': 'True', 'to': "orm['teleforma.Period']"}),
++            'text': ('tinymce.models.HTMLField', [], {}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.optionalfee': {
++            'Meta': {'object_name': 'OptionalFee', 'db_table': "'teleforma_optional_fees'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'optional_fees'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.organization': {
++            'Meta': {'object_name': 'Organization'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.parameters': {
++            'Meta': {'object_name': 'Parameters'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'inscription_text': ('tinymce.models.HTMLField', [], {'blank': 'True'})
++        },
++        'teleforma.payback': {
++            'Meta': {'object_name': 'Payback', 'db_table': "'teleforma_paybacks'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paybacks'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.payment': {
++            'Meta': {'ordering': "['scheduled', 'month']", 'object_name': 'Payment', 'db_table': "'teleforma_payments'"},
++            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'month': ('django.db.models.fields.IntegerField', [], {'default': '1', 'null': 'True', 'blank': 'True'}),
++            'online_paid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'scheduled': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payments'", 'to': "orm['teleforma.Student']"}),
++            'type': ('django.db.models.fields.CharField', [], {'default': "'online'", 'max_length': '64'}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.period': {
++            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
++            'date_begin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_close_accounts': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_exam_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inscription_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inscription_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_password_init': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'period'", 'null': 'True', 'to': "orm['teleforma.Department']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_open': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'message_local': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'message_platform': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nb_script': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Period']"})
++        },
++        'teleforma.professor': {
++            'Meta': {'ordering': "['user__last_name']", 'object_name': 'Professor'},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Department']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.profile': {
++            'Meta': {'object_name': 'Profile', 'db_table': "'teleforma_profiles'"},
++            'address': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'address_detail': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'birthday': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'birthday_place': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'init_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'language': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'ss_number': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
++            'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}),
++            'wifi_login': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'wifi_pass': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
++        },
++        'teleforma.room': {
++            'Meta': {'object_name': 'Room'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"})
++        },
++        'teleforma.streamingserver': {
++            'Meta': {'object_name': 'StreamingServer', 'db_table': "'teleforma_streaming_server'"},
++            'admin_password': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'host': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'port': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'source_password': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '32'})
++        },
++        'teleforma.student': {
++            'Meta': {'ordering': "['user__last_name', '-date_subscribed']", 'object_name': 'Student'},
++            'application_fees': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'balance_intermediary': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'confirmation_sent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'date_registered': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_subscribed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'fascicule': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iej': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.IEJ']"}),
++            'is_subscribed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'level': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
++            'options': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'options_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_1': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_1_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_2_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_speciality_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'payment_schedule': ('django.db.models.fields.CharField', [], {'default': "'split'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'payment_type': ('django.db.models.fields.CharField', [], {'default': "'online'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'portrait': ('django.db.models.fields.files.ImageField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
++            'procedure': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'procedure_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'promo_code': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
++            'receipt_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
++            'subscription_fees': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'training': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_training'", 'null': 'True', 'to': "orm['teleforma.Training']"}),
++            'trainings': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'student_trainings'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Training']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}),
++            'written_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'written_speciality_2students'", 'null': 'True', 'to': "orm['teleforma.Course']"})
++        },
++        'teleforma.studentgroup': {
++            'Meta': {'object_name': 'StudentGroup', 'db_table': "'teleforma_student_groups'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'students': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'groups'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Student']"})
++        },
++        'teleforma.training': {
++            'Meta': {'object_name': 'Training'},
++            'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'cost': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'cost_elearning_fascicle': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'cost_elearning_nofascicle': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
++            'duration': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'magistral': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_magistral'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'obligation': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_obligation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'options': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_options'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_1': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_1'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_2': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_2'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Training']"}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'training'", 'null': 'True', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'procedure': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_procedure'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'synthesis_note': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_synthesis_note'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'written_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_written_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"})
++        },
++        'teleforma.webclassgroup': {
++            'Meta': {'ordering': "['name']", 'object_name': 'WebClassGroup'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iejs': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'web_class_group'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.IEJ']"}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'telemeta.acquisitionmode': {
++            'Meta': {'ordering': "['value']", 'object_name': 'AcquisitionMode', 'db_table': "'acquisition_modes'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.adconversion': {
++            'Meta': {'ordering': "['value']", 'object_name': 'AdConversion', 'db_table': "'ad_conversions'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.ethnicgroup': {
++            'Meta': {'ordering': "['value']", 'object_name': 'EthnicGroup', 'db_table': "'ethnic_groups'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.genericstyle': {
++            'Meta': {'ordering': "['value']", 'object_name': 'GenericStyle', 'db_table': "'generic_styles'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.language': {
++            'Meta': {'ordering': "['name']", 'object_name': 'Language', 'db_table': "'languages'"},
++            'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'identifier': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'part1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}),
++            'part2B': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}),
++            'part2T': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}),
++            'scope': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'})
++        },
++        'telemeta.legalright': {
++            'Meta': {'ordering': "['value']", 'object_name': 'LegalRight', 'db_table': "'legal_rights'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.location': {
++            'Meta': {'ordering': "['name']", 'object_name': 'Location', 'db_table': "'locations'"},
++            'complete_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'to': "orm['telemeta.LocationType']"}),
++            'current_location': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'past_names'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Location']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_authoritative': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'latitude': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'longitude': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '150'}),
++            'type': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'})
++        },
++        'telemeta.locationtype': {
++            'Meta': {'ordering': "['name']", 'object_name': 'LocationType', 'db_table': "'location_types'"},
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '150'})
++        },
++        'telemeta.mediacollection': {
++            'Meta': {'ordering': "['code']", 'object_name': 'MediaCollection', 'db_table': "'media_collections'"},
++            'a_informer_07_03': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'acquisition_mode': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AcquisitionMode']"}),
++            'ad_conversion': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AdConversion']"}),
++            'alt_ids': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'alt_title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'approx_duration': ('teleforma.fields.DurationField', [], {'default': "'0'", 'blank': 'True'}),
++            'auto_period_access': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'booklet_author': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'booklet_description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'cnrs_contributor': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'}),
++            'collector': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'collector_is_creator': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'conservation_site': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'creator': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'doctype_code': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'external_references': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'items_done': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'legal_rights': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.LegalRight']"}),
++            'metadata_author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataAuthor']"}),
++            'metadata_writer': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataWriter']"}),
++            'old_code': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}),
++            'physical_format': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PhysicalFormat']"}),
++            'physical_items_num': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'public_access': ('django.db.models.fields.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}),
++            'publisher': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Publisher']"}),
++            'publisher_collection': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublisherCollection']"}),
++            'publisher_serial': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'publishing_status': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublishingStatus']"}),
++            'recorded_from_year': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'recorded_to_year': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'recording_context': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.RecordingContext']"}),
++            'reference': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '250', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
++            'state': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
++            'travail': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'year_published': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'})
++        },
++        'telemeta.mediaitem': {
++            'Meta': {'object_name': 'MediaItem', 'db_table': "'media_items'"},
++            'alt_title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'approx_duration': ('teleforma.fields.DurationField', [], {'default': "'0'", 'blank': 'True'}),
++            'author': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'auto_period_access': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'default': "''", 'unique': 'True', 'max_length': '250', 'blank': 'True'}),
++            'collection': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'items'", 'to': "orm['telemeta.MediaCollection']"}),
++            'collector': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'collector_from_collection': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'collector_selection': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'context_comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'contributor': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'copied_from_item': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'copies'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MediaItem']"}),
++            'creator_reference': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'cultural_area': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'depositor': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'digitalist': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'digitization_date': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'ethnic_group': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.EthnicGroup']"}),
++            'external_references': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'default': "''", 'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}),
++            'generic_style': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.GenericStyle']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'language': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'language_iso': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'items'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['telemeta.Language']", 'blank': 'True', 'null': 'True'}),
++            'location': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Location']", 'null': 'True', 'blank': 'True'}),
++            'location_comment': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'mimetype': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
++            'moda_execut': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'old_code': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'organization': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Organization']", 'null': 'True', 'blank': 'True'}),
++            'public_access': ('django.db.models.fields.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}),
++            'publishing_date': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'recorded_from_date': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'recorded_to_date': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
++            'recordist': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'rights': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Rights']", 'null': 'True', 'blank': 'True'}),
++            'scientist': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'summary': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'topic': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Topic']", 'null': 'True', 'blank': 'True'}),
++            'track': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}),
++            'vernacular_style': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.VernacularStyle']"})
++        },
++        'telemeta.metadataauthor': {
++            'Meta': {'ordering': "['value']", 'object_name': 'MetadataAuthor', 'db_table': "'metadata_authors'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.metadatawriter': {
++            'Meta': {'ordering': "['value']", 'object_name': 'MetadataWriter', 'db_table': "'metadata_writers'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.organization': {
++            'Meta': {'ordering': "['value']", 'object_name': 'Organization', 'db_table': "'organization'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.physicalformat': {
++            'Meta': {'ordering': "['value']", 'object_name': 'PhysicalFormat', 'db_table': "'physical_formats'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.publisher': {
++            'Meta': {'ordering': "['value']", 'object_name': 'Publisher', 'db_table': "'publishers'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.publishercollection': {
++            'Meta': {'ordering': "['value']", 'object_name': 'PublisherCollection', 'db_table': "'publisher_collections'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'publisher_collections'", 'to': "orm['telemeta.Publisher']"}),
++            'value': ('django.db.models.fields.CharField', [], {'max_length': '250'})
++        },
++        'telemeta.publishingstatus': {
++            'Meta': {'ordering': "['value']", 'object_name': 'PublishingStatus', 'db_table': "'publishing_status'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.recordingcontext': {
++            'Meta': {'ordering': "['value']", 'object_name': 'RecordingContext', 'db_table': "'recording_contexts'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.rights': {
++            'Meta': {'ordering': "['value']", 'object_name': 'Rights', 'db_table': "'rights'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.topic': {
++            'Meta': {'ordering': "['value']", 'object_name': 'Topic', 'db_table': "'topic'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        },
++        'telemeta.vernacularstyle': {
++            'Meta': {'ordering': "['value']", 'object_name': 'VernacularStyle', 'db_table': "'vernacular_styles'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '250'})
++        }
++    }
++
++    complete_apps = ['teleforma']
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..16b2f44ef9130b5cfd0e1bed76a5575f55a7b81c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,496 @@@
++# -*- coding: utf-8 -*-
++from south.utils import datetime_utils as datetime
++from south.db import db
++from south.v2 import SchemaMigration
++from django.db import models
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++        # Deleting field 'Media.item'
++        db.delete_column('teleforma_media', 'item_id')
++
++
++    def backwards(self, orm):
++        # Adding field 'Media.item'
++        db.add_column('teleforma_media', 'item',
++                      self.gf('django.db.models.fields.related.ForeignKey')(related_name='media', null=True, to=orm['telemeta.MediaItem'], blank=True),
++                      keep_default=False)
++
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        'auth.user': {
++            'Meta': {'object_name': 'User'},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'quiz.category': {
++            'Meta': {'object_name': 'Category'},
++            'category': ('django.db.models.fields.CharField', [], {'max_length': '250', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'quiz.quiz': {
++            'Meta': {'object_name': 'Quiz'},
++            'answers_at_end': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['quiz.Category']", 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'draft': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'exam_paper': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'fail_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'max_questions': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'pass_mark': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'blank': 'True'}),
++            'random_order': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'single_attempt': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'success_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
++            'url': ('django.db.models.fields.SlugField', [], {'max_length': '60'})
++        },
++        'teleforma.aestudent': {
++            'Meta': {'ordering': "['user__last_name']", 'object_name': 'AEStudent', 'db_table': "'teleforma_ae_student'"},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ae_student'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.appointment': {
++            'Meta': {'unique_together': "(('slot', 'jury', 'slot_nb'),)", 'object_name': 'Appointment'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'jury': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.AppointmentJury']"}),
++            'slot': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'to': "orm['teleforma.AppointmentSlot']"}),
++            'slot_nb': ('django.db.models.fields.IntegerField', [], {}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appointments'", 'to': "orm['auth.User']"})
++        },
++        'teleforma.appointmentjury': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentJury', 'db_table': "'teleforma_appointment_jury'"},
++            'address': ('django.db.models.fields.TextField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'slot': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'jurys'", 'null': 'True', 'to': "orm['teleforma.AppointmentSlot']"})
++        },
++        'teleforma.appointmentperiod': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentPeriod', 'db_table': "'teleforma_appointment_period'"},
++            'appointment_mail_text': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'appointment_slot_size': ('django.db.models.fields.IntegerField', [], {'default': '40'}),
++            'book_delay': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'cancel_delay': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'enable_appointment': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'end': ('django.db.models.fields.DateField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'appointment_periods'", 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'start': ('django.db.models.fields.DateField', [], {})
++        },
++        'teleforma.appointmentslot': {
++            'Meta': {'ordering': "('id',)", 'object_name': 'AppointmentSlot', 'db_table': "'teleforma_appointment_slot'"},
++            'appointment_period': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'slots'", 'null': 'True', 'to': "orm['teleforma.AppointmentPeriod']"}),
++            'date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nb': ('django.db.models.fields.IntegerField', [], {}),
++            'start': ('django.db.models.fields.TimeField', [], {})
++        },
++        'teleforma.conference': {
++            'Meta': {'ordering': "['-date_begin']", 'object_name': 'Conference'},
++            'comment': ('teleforma.fields.ShortTextField', [], {'max_length': '255', 'blank': 'True'}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.CourseType']"}),
++            'date_begin': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'date_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Department']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'professor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Professor']"}),
++            'public_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'room': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'to': "orm['teleforma.Room']"}),
++            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
++            'status': ('django.db.models.fields.IntegerField', [], {'default': '2'}),
++            'streaming': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'web_class_group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conferences'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.WebClassGroup']"})
++        },
++        'teleforma.corrector': {
++            'Meta': {'ordering': "['user__last_name', '-date_registered']", 'object_name': 'Corrector'},
++            'date_registered': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'pay_status': ('django.db.models.fields.CharField', [], {'default': "'honoraire'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'corrector'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.course': {
++            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'has_exam_scripts': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'last_professor_sent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['teleforma.Professor']", 'null': 'True', 'blank': 'True'}),
++            'magistral': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'obligation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_1': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_2': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'oral_speciality': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'courses'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'procedure': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'quiz': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['quiz.Quiz']", 'null': 'True', 'blank': 'True'}),
++            'synthesis_note': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'title_tweeter': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'written_speciality': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.coursegroup': {
++            'Meta': {'object_name': 'CourseGroup', 'db_table': "'teleforma_course_group'"},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'course_groups'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.coursetype': {
++            'Meta': {'object_name': 'CourseType', 'db_table': "'teleforma_course_type'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.department': {
++            'Meta': {'object_name': 'Department'},
++            'default_period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'departments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'domain': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
++        },
++        'teleforma.discount': {
++            'Meta': {'object_name': 'Discount', 'db_table': "'teleforma_discounts'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.document': {
++            'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
++            'annal_year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'document'", 'blank': 'True', 'to': "orm['teleforma.CourseType']"}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iej': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.IEJ']"}),
++            'is_annal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'documents'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'to': "orm['teleforma.DocumentType']"}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.documentsimple': {
++            'Meta': {'ordering': "['-date_added']", 'object_name': 'DocumentSimple', 'db_table': "'teleforma_document_simple'"},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'document_simple'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document_simple'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.documenttype': {
++            'Meta': {'ordering': "['number']", 'object_name': 'DocumentType', 'db_table': "'teleforma_document_type'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'for_corrector': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
++        },
++        'teleforma.groupedmessage': {
++            'Meta': {'object_name': 'GroupedMessage', 'db_table': "'teleforma_grouped_messages'"},
++            'date_sent': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'grouped_messages'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.StudentGroup']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'message': ('django.db.models.fields.TextField', [], {}),
++            'sender': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'grouped_messages'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
++            'sent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'subject': ('django.db.models.fields.CharField', [], {'max_length': '119'}),
++            'to_send': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.home': {
++            'Meta': {'object_name': 'Home'},
++            'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'modified_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
++            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'home_texts'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}),
++            'text': ('tinymce.models.HTMLField', [], {'blank': 'True'}),
++            'title': ('django.db.models.fields.CharField', [], {'default': '"Page d\'accueil"', 'max_length': '255'}),
++            'video': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['teleforma.Media']", 'null': 'True', 'blank': 'True'})
++        },
++        'teleforma.iej': {
++            'Meta': {'ordering': "['name']", 'object_name': 'IEJ'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.livestream': {
++            'Meta': {'object_name': 'LiveStream', 'db_table': "'teleforma_live_stream'"},
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'livestream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'server': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'livestream'", 'to': "orm['teleforma.StreamingServer']"}),
++            'stream_type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'streaming': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
++        },
++        'teleforma.media': {
++            'Meta': {'ordering': "['-date_modified', '-conference__session']", 'object_name': 'Media'},
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'conference': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Conference']"}),
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'course_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['teleforma.CourseType']"}),
++            'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'null': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'poster_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True'}),
++            'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'})
++        },
++        'teleforma.mediatranscoded': {
++            'Meta': {'object_name': 'MediaTranscoded', 'db_table': "'teleforma_media_transcoded'"},
++            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'item': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transcoded'", 'to': "orm['teleforma.Media']"}),
++            'mimetype': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'})
++        },
++        'teleforma.newsitem': {
++            'Meta': {'object_name': 'NewsItem'},
++            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'to': "orm['teleforma.Course']"}),
++            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'to': "orm['auth.User']"}),
++            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'newsitems'", 'null': 'True', 'to': "orm['teleforma.Period']"}),
++            'text': ('tinymce.models.HTMLField', [], {}),
++            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.optionalfee': {
++            'Meta': {'object_name': 'OptionalFee', 'db_table': "'teleforma_optional_fees'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'optional_fees'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.organization': {
++            'Meta': {'object_name': 'Organization'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'teleforma.parameters': {
++            'Meta': {'object_name': 'Parameters'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'inscription_text': ('tinymce.models.HTMLField', [], {'blank': 'True'})
++        },
++        'teleforma.payback': {
++            'Meta': {'object_name': 'Payback', 'db_table': "'teleforma_paybacks'"},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paybacks'", 'to': "orm['teleforma.Student']"}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.payment': {
++            'Meta': {'ordering': "['scheduled', 'month']", 'object_name': 'Payment', 'db_table': "'teleforma_payments'"},
++            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'month': ('django.db.models.fields.IntegerField', [], {'default': '1', 'null': 'True', 'blank': 'True'}),
++            'online_paid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'scheduled': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payments'", 'to': "orm['teleforma.Student']"}),
++            'type': ('django.db.models.fields.CharField', [], {'default': "'online'", 'max_length': '64'}),
++            'value': ('django.db.models.fields.FloatField', [], {})
++        },
++        'teleforma.period': {
++            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
++            'date_begin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_close_accounts': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_exam_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inscription_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inscription_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_password_init': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'period'", 'null': 'True', 'to': "orm['teleforma.Department']"}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_open': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'message_local': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'message_platform': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nb_script': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Period']"})
++        },
++        'teleforma.professor': {
++            'Meta': {'ordering': "['user__last_name']", 'object_name': 'Professor'},
++            'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}),
++            'department': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Department']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"})
++        },
++        'teleforma.profile': {
++            'Meta': {'object_name': 'Profile', 'db_table': "'teleforma_profiles'"},
++            'address': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'address_detail': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'birthday': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'birthday_place': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'init_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'language': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'ss_number': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
++            'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}),
++            'wifi_login': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'wifi_pass': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
++        },
++        'teleforma.room': {
++            'Meta': {'object_name': 'Room'},
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"})
++        },
++        'teleforma.streamingserver': {
++            'Meta': {'object_name': 'StreamingServer', 'db_table': "'teleforma_streaming_server'"},
++            'admin_password': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'host': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'port': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'source_password': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '32'})
++        },
++        'teleforma.student': {
++            'Meta': {'ordering': "['user__last_name', '-date_subscribed']", 'object_name': 'Student'},
++            'application_fees': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'balance_intermediary': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'confirmation_sent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'date_registered': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
++            'date_subscribed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'fascicule': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iej': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.IEJ']"}),
++            'is_subscribed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'level': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
++            'options': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'options_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_1': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_1_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_2_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'oral_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oral_speciality_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'payment_schedule': ('django.db.models.fields.CharField', [], {'default': "'split'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'payment_type': ('django.db.models.fields.CharField', [], {'default': "'online'", 'max_length': '64', 'null': 'True', 'blank': 'True'}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'portrait': ('django.db.models.fields.files.ImageField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
++            'procedure': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'procedure_students'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
++            'promo_code': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
++            'receipt_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
++            'subscription_fees': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'training': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_training'", 'null': 'True', 'to': "orm['teleforma.Training']"}),
++            'trainings': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'student_trainings'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Training']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}),
++            'written_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'written_speciality_2students'", 'null': 'True', 'to': "orm['teleforma.Course']"})
++        },
++        'teleforma.studentgroup': {
++            'Meta': {'object_name': 'StudentGroup', 'db_table': "'teleforma_student_groups'"},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'students': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'groups'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Student']"})
++        },
++        'teleforma.training': {
++            'Meta': {'object_name': 'Training'},
++            'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'code': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'cost': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'cost_elearning_fascicle': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'cost_elearning_nofascicle': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
++            'duration': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'magistral': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_magistral'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'obligation': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_obligation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'options': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_options'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_1': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_1'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_2': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_2'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'oral_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Training']"}),
++            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'training'", 'null': 'True', 'to': "orm['teleforma.Period']"}),
++            'platform_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'procedure': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_procedure'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'synthesis_note': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_synthesis_note'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}),
++            'written_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_written_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"})
++        },
++        'teleforma.webclassgroup': {
++            'Meta': {'ordering': "['name']", 'object_name': 'WebClassGroup'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'iejs': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'web_class_group'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.IEJ']"}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        }
++    }
++
++    complete_apps = ['teleforma']
index 1b9ff494f674fa5e401bbe51d780316f67988daa,712fbdbc8a3c77b2dcb28067c01e2d626700c693..fb9ef05e17dc1a41848d6859aa00c0a039e8329c
@@@ -122,11 -122,10 +122,10 @@@ margin-bottom: 0em
  #header {
      padding: 0em;
        background-color: #000000 ;
-     background:no-repeat url(/static/telemeta/images/tw_hd.png) 0 0;
+     background:no-repeat url(/static/teleforma/images/tw_hd.png) 0 0;
      background-color:#ebebeb;
--    background-repeat:repeat; 
-     /* border-top: .25em solid #6a0307; */
- /*     background: url("/static/telemeta/images/waves.png") 100% 0% no-repeat; */
 -      border-top: .25em solid #6a0307;
++    background-repeat:repeat;
++    border-top: .25em solid #6a0307;
  }
  
  #content_header, #header{
@@@ -536,7 -531,7 +531,7 @@@ form.login .submit 
      margin:0;
      padding:0;
      list-style:none;
--      
++
  }
  
  /* make the LI display inline */
@@@ -1185,7 -1178,7 +1178,7 @@@ a.image-link 
        cursor: pointer;
        border-radius: 8px;
        font-size: 100%;
--      padding: 5px 15px;      
++      padding: 5px 15px;
  }
  .appointment a button:hover{
        background: #000;
@@@ -1508,7 -1501,7 +1501,7 @@@ input,textarea
        margin: 0;
  }
  #module-set .ui-tabs.ui-widget-content ul.ui-tabs-nav:after {
--      content: ""; 
++      content: "";
        display: table;
        clear: both;
  }
  }
  
  form.add_actus p:after{
--      content: ""; 
++      content: "";
        display: table;
        clear: both;
  }
@@@ -1779,7 -1772,7 +1772,7 @@@ form.add_actus #id_text_parent
          top: 50%; /* poussé de la moitié de hauteur du référent */
          -ms-transform: translateY(-50%); /* IE 9 */
          -webkit-transform: translateY(-50%); /* Chrome, Safari, Opera */
--        transform: translateY(-50%); /* tiré de la moitié de sa propre hauteur */   
++        transform: translateY(-50%); /* tiré de la moitié de sa propre hauteur */
  }
  
  #media_infos {
      box-sizing: border-box;
  }
  #_registerForm:after {
--    content: ""; 
++    content: "";
      display: table;
      clear: both;
  }
@@@ -2125,7 -2114,7 +2118,7 @@@ column-rule: 0
  
  #_registerForm fieldset .helptext{
      font-style: italic;
--    color: #CCC; 
++    color: #CCC;
      font-size: 10px;
      line-height: 12px;
      position: absolute;
          display: block;
      }
      #_registerForm fieldset label[for="id_portrait"]{
--       position: relative; 
--       top: -15px; 
++       position: relative;
++       top: -15px;
      }
  }
  @media (max-width: 1245px) {
      #_registerForm fieldset{
          margin: 10px 0 10px 0;
      }
--    
++
  }
  @media (max-width: 835px) {
--    
++
      #_registerForm .column{
          border: 0;
          background: transparent;
          -moz-column-gap: 0px;
          -webkit-column-gap:0px;
          column-gap:0px;
--       
++
      }
       #_registerForm fieldset #id_portrait{
          margin-left: 10px;
          display: inline-block;
      }
      #_registerForm fieldset label[for="id_portrait"]{
--       position: relative; 
--       top: 0px; 
++       position: relative;
++       top: 0px;
      }
      #_registerForm .submit-panel{
          width: 100%;
@@@ -2788,11 -2777,11 +2781,11 @@@ button.ui-button::-moz-focus-inner { bo
      }
  
  
--/* _____  ______  _____ _____   ____  _   _  _____ _______      ________ 
++/* _____  ______  _____ _____   ____  _   _  _____ _______      ________
  |  __ \|  ____|/ ____|  __ \ / __ \| \ | |/ ____|_   _\ \    / /  ____|
--| |__) | |__  | (___ | |__) | |  | |  \| | (___   | |  \ \  / /| |__   
--|  _  /|  __|  \___ \|  ___/| |  | | . ` |\___ \  | |   \ \/ / |  __|  
--| | \ \| |____ ____) | |    | |__| | |\  |____) |_| |_   \  /  | |____ 
++| |__) | |__  | (___ | |__) | |  | |  \| | (___   | |  \ \  / /| |__
++|  _  /|  __|  \___ \|  ___/| |  | | . ` |\___ \  | |   \ \/ / |  __|
++| | \ \| |____ ____) | |    | |__| | |\  |____) |_| |_   \  /  | |____
  |_|  \_\______|_____/|_|     \____/|_| \_|_____/|_____|   \/   |______|
  */
  
                padding-right: 20px;
        }
        #content, #menu{
--              margin: 0;      
++              margin: 0;
        }
  }
  
  /**/
  
  @media (max-width: 1024px) {
--      
++
        #nav ul li{
                background-image: none;
                /*background: #3b3b3b;
--              background: -moz-linear-gradient(top, #3b3b3b 0%, #2c2c2c 100%); 
--              background: -webkit-linear-gradient(top, #3b3b3b 0%,#2c2c2c 100%); 
--              background: linear-gradient(to bottom, #3b3b3b 0%,#2c2c2c 100%); 
--              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b3b3b', endColorstr='#2c2c2c',GradientType=0 );*/ 
--              
++              background: -moz-linear-gradient(top, #3b3b3b 0%, #2c2c2c 100%);
++              background: -webkit-linear-gradient(top, #3b3b3b 0%,#2c2c2c 100%);
++              background: linear-gradient(to bottom, #3b3b3b 0%,#2c2c2c 100%);
++              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b3b3b', endColorstr='#2c2c2c',GradientType=0 );*/
++
                background: #494949; /* Old browsers */
                background: -moz-linear-gradient(top, #494949 3%, #0e0e0e 52%); /* FF3.6-15 */
                background: -webkit-linear-gradient(top, #494949 3%,#0e0e0e 52%); /* Chrome10-25,Safari5.1-6 */
                background: linear-gradient(to bottom, #494949 3%,#0e0e0e 52%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
--              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#0e0e0e',GradientType=0 ); 
++              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#0e0e0e',GradientType=0 );
  
        }
        #menu a, #menu a:visited{
                padding: .5em 1em;
        }
        #nav ul a{
--              font-size: 0.8em;       
--      }       
--              
++              font-size: 0.8em;
++      }
++
        #module-set {
                float: none;
                clear: left;
                background: -moz-linear-gradient(top, #494949 3%, #0e0e0e 52%); /* FF3.6-15 */
                background: -webkit-linear-gradient(top, #494949 3%,#0e0e0e 52%); /* Chrome10-25,Safari5.1-6 */
                background: linear-gradient(to bottom, #494949 3%,#0e0e0e 52%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
--              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#0e0e0e',GradientType=0 ); 
++              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#0e0e0e',GradientType=0 );
  
        }
        #module-set .module .msg input[type="submit"]{
                width: 120px;
                float: right;
        }
--      
++
        #module-set-left, .desk_center{
                -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
          box-sizing: border-box;
        }
--      
++
        /*#module-set-left{
                width: 30% !important;
        }*/
--      
++
        #module-set-left .module ul{
                padding-left: 0.8em;
        }
--      
++
        #module-set-left .module ul li{
                display: inline-block;
                width: 100%;
                position: relative;
        }
--      
++
        #module-set-left .module ul li:before{
                position:absolute;
                content: "■";
                top: 3px;
                left: -10px;
        }
--      
++
        .desk_center{
                float: left;
                width: 74%;
                -moz-box-sizing: border-box;
                box-sizing: border-box;
        }
--      
++
        .desk_large {
                width: 73%;
                padding: 0em 0em 0em 1em;
        }
--      
++
        .desk_large .infos{
                width: 100% !important;
        }
--      
++
        table.listing tbody td a{
                word-break: break-all;
                -webkit-hyphens: auto;
                 -o-hyphens: auto;
                 hyphens: auto;
         }
--       
++
         #module-set-left {
                width: 23% !important;
        }
                padding: 0;
                max-width: 100%;
        }
--      
++
        .write_content #_messageForm table{
                max-width: 100% !important;
                table-layout: fixed;
                width: 100%!important;
        }
--      
++
        .write_content #_messageForm table th{
                width: 110px;
                text-align: left;
        }
--      
++
        .write_content #_messageForm table td{
                width: calc(100% - 120px);
        }
--      
++
        .write_content #_messageForm table input[type="text"], .write_content #_messageForm table textarea{
                width: 100% !important;
                max-width: 100% !important;
  
  
  @media (max-width: 850px) {
--      
++
        input[type="text"], input[type="password"], input.textwidget {
                padding: .5em .1em;
        }
        #menu a, #menu a:visited{
                font-size: 12px;
        }
--      
++
        #nav ul a{
--              font-size: 0.7em;       
--      }       
--      
++              font-size: 0.7em;
++      }
++
        form.login:after {
--              content: ""; 
++              content: "";
                display: table;
                clear: both;
        }
  
--      
++
        form.login{
                float: none;
        }
        form.login label {
                padding-top: 0.7em;
        }
--      
++
        form.login input{
                width: calc(100% - 12em);
        }
--      
--      
++
++
        form.login>div{
                float: right;
                margin-top: 0px !important;
        }
--      
++
        #action_red{
                display: inline-block;
        }
--      
++
        .content_video table.listing {
                table-layout: fixed;
        }
        }
  
  }
--      
++
  /**/
  
  @media (max-width: 730px) {
        #logo_wrapper{
                margin-right: 0;
        }
--      
++
        dl.listing dd {
                margin-left: 91px;
                font-weight: bold;
        }
--      
++
        #module-set-left {
                width: 26% !important;
        }
  
  
  @media (max-width: 660px) {
--      
--      
++
++
        #module-set-left {
                width: 100% !important;
                padding: 0;
        #module-set-left .module {
            margin: 0em 0em 0.5em 0em;
        }
--      
++
        #module-set-left .module ul{
        -moz-column-count:3;
        -webkit-column-count:3;
        column-rule-color:#cbcefb;
        column-rule-style:dotted;
        }
--      
++
        .desk_center, .desk_large, .desk_center.home{
                width: 100% !important;
                padding: 0em;
        }
--      
++
        .module_action {
        text-align: right;
                margin-bottom: 15px;
                width: 100% !important;
                padding-left: 0;
        }
--      
++
        .write_content #_messageForm table th,
        .write_content #_messageForm table td{
                width: 100%;
                display: block;
        }
        .write_content #_messageForm table{
--              margin-top: 15px;       
++              margin-top: 15px;
        }
--      
++
        .write_content #_messageForm table input[type="text"],
        .write_content #_messageForm table textarea{
                margin: 0 0 15px 0;
        }
--      
++
        .course_media  {
                width: 100%;
                padding: 0;
                font-size: 11px;
                line-height: 14px;
        }
--      
++
        .content_video table.listing tbody td:first-child{
                width: 40px!important;
                vertical-align: top !important;
                overflow-y: scroll;
                position: relative;
        }
--      
++
        .shadow{
--              
++
        }
--      
++
        /*#users:after{
                content:"";
                position: absolute;
                height: 100%;
                display: block;
                background: -moz-linear-gradient(left, rgba(0,0,0,0) 88%, rgba(0,0,0,0.4) 100%);
--              background: -webkit-linear-gradient(left, rgba(0,0,0,0) 88%,rgba(0,0,0,0.4) 100%); 
--              background: linear-gradient(to right, rgba(0,0,0,0) 88%,rgba(0,0,0,0.4) 100%); 
++              background: -webkit-linear-gradient(left, rgba(0,0,0,0) 88%,rgba(0,0,0,0.4) 100%);
++              background: linear-gradient(to right, rgba(0,0,0,0) 88%,rgba(0,0,0,0.4) 100%);
                filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00000000', endColorstr='#66000000',GradientType=1 );
        }*/
--      
++
        #users table{
                min-width: 620px;
        }
--      
++
        #users table th:first-child{
                width: 60px;
        }
  }
  
  @media (max-width: 440px) {
--      
++
        .nv-controlsWrap.nvd3-svg{
                transform: translate(-86px,-70px) !important
        }
--      
++
        .nv-legendWrap.nvd3-svg{
                transform: translate(230px,-70px) !important
        }
--      
++
        #nav ul{
                width: 120%;
                left: 50%; /* poussé de la moitié de hauteur du référent */
                        -webkit-transform: translateX(-50%); /* Chrome, Safari, Opera */
                        transform: translateX(-50%); /* tiré de la moitié de sa propre hauteur */
        }
--      
++
        #nav ul a {
                font-size: 0.8em;
        }
                background: -moz-linear-gradient(top, #3b3b3b 0%, #2c2c2c 100%); /* FF3.6-15 */
                background: -webkit-linear-gradient(top, #3b3b3b 0%,#2c2c2c 100%); /* Chrome10-25,Safari5.1-6 */
                background: linear-gradient(to bottom, #3b3b3b 0%,#2c2c2c 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
--              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b3b3b', endColorstr='#2c2c2c',GradientType=0 ); /* IE6-9 */        
++              filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b3b3b', endColorstr='#2c2c2c',GradientType=0 ); /* IE6-9 */
        }
        #footer tr td{
--              display: inline-block;  
++              display: inline-block;
        }
        #footer p.right{
                text-align: center;
        font-size: 0.85em;
        }
        .desk_large .course .course_content:after {
--              content: ""; 
++              content: "";
                display: table;
                clear: both;
        }
                margin-left: 0;
                width: 60%;
        }
--      
--      
++
++
  }
  
  #payment_summary{
  #payment_summary table tr td{
        padding: 8px 40px 8px 0;
        border-bottom: 1px solid #dfdfdf;
--      
++
  }
  #payment_summary table tr td:last-child{
        font-weight: bold;
Simple merge
index adbe657795cf8a8bfdad29ad765db05644036eaa,9ca6e00745b4ecc956034c6e5e3bc212ed0faaa9..c4d25f807048a2179a742389cc9d102cdb762cf5
  <div class="pm_message{% if message.is_pending %} pm_pending{% endif %}{% if message.is_rejected %} pm_rejected{% endif %}{% if message.sender == user and message.sender_archived or message.recipient == user and message.recipient_archived %} pm_archived{% endif %}{% if message.sender == user and message.sender_deleted_at or message.recipient == user and message.recipient_deleted_at %} pm_deleted{% endif %}{% if message.recipient == user and not message.read_at %} pm_unread{% endif %}">
   <div class="pm_header">
    {% if message.obfuscated_sender %}
-     <a href="{% url 'telemeta-profile-detail' message.obfuscated_sender %}" title="{% get_training_profile message.sender %}">
+     {% if not message.obfuscated_sender|startswith:'#' %}
 -        <a href="{% url teleforma-profile-detail message.obfuscated_sender %}" title="{% get_training_profile message.sender %}">
++    <a href="{% url teleforma-profile-detail message.obfuscated_sender %}" title="{% get_training_profile message.sender %}">
+     {% endif %}
          <span class="pm_sender">{{ message.obfuscated_sender|or_me:user }}</span>
          {% if not message.obfuscated_sender|startswith:'#' %}</a>{% endif %}&raquo;
    {% endif %}
    {% if message.obfuscated_recipient %}
-     <a href="{% url 'telemeta-profile-detail' message.obfuscated_recipient %}" title="{% get_training_profile message.recipient %}">
+     {% if not message.obfuscated_recipient|startswith:'#' %}
 -        <a href="{% url teleforma-profile-detail message.obfuscated_recipient %}" title="{% get_training_profile message.recipient %}">
++    <a href="{% url teleforma-profile-detail message.obfuscated_recipient %}" title="{% get_training_profile message.recipient %}">
+     {% endif %}
          <span class="pm_recipient">{{ message.obfuscated_recipient|or_me:user }}</span>
          {% if not message.obfuscated_recipient|startswith:'#' %}</a>{% endif %} |
    {% endif %}
index 2fd6edb6619498414818a03a9018645ea90d95c1,c8be9a829d43f6807466105ee4fd59451ce5948b..b467f91e67d2ca68a282a3d124eb7474a80e2603
@@@ -23,7 -23,7 +23,7 @@@
  <p>{% blocktrans %}<a href="{{ auth_pwd_reset_url }}">Forgot</a> your password?
      <a href="{{ register_url }}">Need an account</a>?{% endblocktrans %}</p>
  
--<input type="submit" value="{% trans "login" %}" />
++<input type="submit" value="{% trans 'login' %}" />
  <input type="hidden" name="next" value="{{ next }}" />
  </form>
  
index 14ad333d7ee7dea83bca6a34d071151937cd6b75,59846d9403d1f0acf9ba5be7b0adb3ae880d9706..a21b4f2aa20cf964520f456f46f340c239f9bd82
@@@ -8,7 -7,27 +7,27 @@@
  {% block content %}
  <center>
  <div class="register">
- Votre enregistrement a été validé.
+ Vous venez de réaliser avec succès votre préinscription à la formation {{ period }} du Pré-Barreau.
+ <br><br>
+ Afin de compléter votre inscription, il est nécessaire d’imprimer le formulaire ci-dessous, de le dater et le signer, et nous le retourner accompagné de deux photos d’identité à l’adresse suivante :
+ <br><br>
+ LE PRE-BARREAU<br>
+ Service inscription<br>
+ 3, rue de Nesle<br>
+ 75006 Paris
+ <br><br><br>
+ <a href="{% url teleforma-corrector-registration-view username %}" class="component_icon button" id="action_green" target="_blank"><img src="/static/teleforma/images/download.png" alt="" style="vertical-align:middle" />&nbsp;{% trans "Download" %}</a>
+ <br><br><br>
+ Une fois votre dossier reçu et confirmé par nos services, vous recevrez un mail vous invitant à procéder au règlement des arrhes par carte bancaire. <b>Votre inscription ne sera validée qu’au terme de cette ultime étape.</b>
+ <br><br>
 -<a href="http://crfpa.pre-barreau.com/tarifs/conditions-generales-dinscription">Conditions générales d’inscription</a>
++<a href="https://crfpa.pre-barreau.com/tarifs/conditions-generales-dinscription">Conditions générales d’inscription</a>
+ <br><br>
  
  </center>
  </div>
index 2381e658f389c8f5ac265fbfb60458c646258c0e,8ffc2bf462ef62962fd46ecff9e576d3d5a27ab5..a091114d789ab520c9d845b18506db2041501e17
  <dl class="listing">
  
  {% if conference.professor %}
 -    <dt>{% trans "Course" %}</dt><dd><a href="{% url teleforma-desk-period-course period.id course.id %}">{{ conference.course.title }} - {{ conference.course_type }}</a></dd>
 +    <dt>{% trans "Course" %}</dt><dd><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ conference.course.title }} - {{ conference.course_type }}</a></dd>
      <dt>{% trans "Session" %}</dt><dd>{{ conference.session }}</dd>
      <dt>{% trans "Professor" %}</dt>
-         <dd><a href="{% url 'telemeta-profile-detail' conference.professor.user.username %}" target="_blank">{{ conference.professor }}</a></dd>
+         <dd><a href="{% url teleforma-profile-detail conference.professor.user.username %}" target="_blank">{{ conference.professor }}</a></dd>
  {% endif %}
  
  {% if conference.comment %}<dt>{% trans "Comment" %}</dt><dd>{{ conference.comment }}</dd>{% endif %}
index 3e846fd737bb5b7e231ddaec015a90967f369eee,8bb91ccb2019f1996c5b3e406d23299dae8159fa..e99a7753b7511ef9e0e3c1bd0b7e356c68bcefea
@@@ -58,10 -57,10 +57,10 @@@ $(document).ready(function()
  {% endblock extra_javascript %}
  
  {% block module-action %}
- {% if media.item.file and media.is_published or user.is_superuser or user.is_staff %}
-  {% if not "video" in media.mime_type or perms.telemeta.can_play_all_items or request.user_agent.os.family == 'iOS' %}
+ {% if media.file and media.is_published or user.is_superuser or user.is_staff %}
+  {% if not "video" in media.mime_type or request.user_agent.os.family == 'iOS' %}
    <div class="module_action">
 -   <a href="{% url teleforma-media-download period.id media.id %}" class="component_icon button" id="action_red"><img src="/static/teleforma/images/download_media.png" alt="" style="vertical-align:middle" />&nbsp;{% trans "Download" %}</a>
 +   <a href="{% url 'teleforma-media-download' period.id media.id %}" class="component_icon button" id="action_red"><img src="/static/teleforma/images/download_media.png" alt="" style="vertical-align:middle" />&nbsp;{% trans "Download" %}</a>
    </div>
   {% endif %}
  {% endif %}
  <div class="course_title">
      <div style="float: right; font-size: 0.9em;">
          {% if "video" in media.mime_type %}
-         <a href="{% url 'teleforma-media-detail' period.id media|get_audio_id %}" class="component_icon button icon_speaker">&nbsp;{% trans "Audio" %}</a>
+         <a href="{% url teleforma-media-transcoded period.id media|get_audio_id %}" class="component_icon button icon_speaker">&nbsp;{% trans "Audio" %}</a>
          {% endif %}
          {% if "audio" in media.mime_type %}
 -        <a href="{% url teleforma-media-detail period.id media|get_video_id %}" class="component_icon button icon_clap">&nbsp;{% trans "Video" %}</a>
 +        <a href="{% url 'teleforma-media-detail' period.id media|get_video_id %}" class="component_icon button icon_clap">&nbsp;{% trans "Video" %}</a>
          {% endif %}
          {% if user.is_staff %}
          <a id="publish" href="#" class="{% if media.is_published %}component_icon button icon_ok{% else %}component_icon button icon_delete{% endif %}">{% if media.is_published %}{% trans " published" %}{% else %}{% trans " rejected" %}{% endif %}</a>
index 0000000000000000000000000000000000000000,45d135674f6a74f51e2a284a5bab1ca1976c36f6..bfc98c113f0f736ac577617dc4641408cfe54476
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,77 +1,77 @@@
 -     <td><a href="{% url teleforma-profile-detail user.username %}">{{ user.last_name }}</a></td>
 -     <td><a href="{% url teleforma-profile-detail user.username %}">{{ user.first_name }}</a></td>
+ {% load i18n %}
+ {% load teleforma_tags %}
+ {% load pagination_tags %}
+ <div class="pagination">
+     {% for p in page.paginator.pages %}
+       {% if p == page %}
+        <span class="selected">{{ page }}</span>
+       {% else %}
+        <a href="?page={{ p.number }}">{{ p }}</a>
+       {% endif %}
+     {% endfor %}
+ </div>
+ <div id="users">
+ <div class="shadow">...</div>
+   <table class="listing" width="100%">
+    <thead>
+    <tr><th>{% trans "Last Name"%}</th>
+     <th>{% trans "First Name"%}</th>
+     <th>{% trans "IEJ"%}</th>
+     <th>{% trans "Trainings"%}</th>
+     <th>{% trans "Procedure"%}</th>
+     <th>{% trans "Written spe"%}</th>
+     <th>{% trans "Oral spe"%}</th>
+     <th>{% trans "Oral 1"%}</th>
+     <th>{% trans "Oral 2"%}</th>
+     <th>{% trans "Write"%}</th>
+     </tr>
+     </thead>
+     <tbody id="spacing">
+     {% for user in page.object_list %}
+     <tr>
 -    <td><a href="{% url postman_write user.username %}" class="component_icon button" id="action_orange">{% trans "Message" %}</a></td>
++     <td><a href="{% url 'teleforma-profile-detail' user.username %}">{{ user.last_name }}</a></td>
++     <td><a href="{% url 'teleforma-profile-detail' user.username %}">{{ user.first_name }}</a></td>
+      {% if user.student.get %}
+       {% with user.student.get as student %}
+         <td>{{ student.iej.name }}</td>
+         <td>{% for training in student.trainings.all %}{{ training }} {% endfor %}</td>
+         <td>{{ student.procedure.code }}</td>
+         <td>{{ student.written_speciality.code }}</td>
+         <td>{{ student.oral_speciality.code }}</td>
+         <td>{{ student.oral_1.code }}</td>
+         <td>{{ student.oral_2.code }}</td>
+      {% endwith %}
+     {% elif user.professor.get %}
+         <td>{% trans "Professor" %}</td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+     {% elif user.is_staff %}
+         <td>{% trans "Administrator" %}</td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+     {% else %}
+         <td>{% trans "Unknown" %}</td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+         <td></td>
+     {%  endif %}
++    <td><a href="{% url 'postman_write' user.username %}" class="component_icon button" id="action_orange">{% trans "Message" %}</a></td>
+     </tr>
+     {% endfor %}
+     </tbody>
+   </table>
+ </div>
index 0000000000000000000000000000000000000000,1b52c5097639688b7222f7589a5bfde6ecd91be5..7fe07edd0d4065b4041521f80804c87356987033
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,118 +1,118 @@@
 -    <a href="{% url postman_write usr.username %}" class="component_icon button" id="action_orange">{% trans "Send a message" %}</a>
+ {% extends "teleforma/base.html" %}
+ {% load i18n %}
+ {% load teleforma_tags %}
+ {% load payment %}
+ {% block head_title %}{% trans "User Profile" %} : {{ usr.username }}{% endblock %}
+ {% block title %}
+ {% endblock %}
+ {% block content %}
+   <div id="module-set-left" style="width: 20%">
+   {% block modules %}
+     <div class="module">
+     <h3><a href="{% url teleforma-home %}"><img src="/static/teleforma/images/module_playlist.png" alt="playlists" style="vertical-align:middle" />{% if user.username != usr.username%}{% trans "His courses" %}{% else %}{% trans "My courses" %}{% endif %}</a></h3>
+     <div style="background: white;">
+     <ul>
+     {% block courses %}
+     {% with usr|user_courses as courses %}
+      {% for c in courses %}
+        {% with c.course as course %}
+        <li><a href="#">{{ course.title}} {{ course.type }}</a></li>
+        {% endwith %}
+      {% endfor %}
+     {% endwith %}
+     {% endblock courses %}
+     </ul>
+     </div>
+     </div>
+   {% endblock %}
+   {% if user.is_authenticated and user.username != usr.username %}
+    <div class="module_action">
 -        <a href="{% url teleforma-user-login usr.id %}" class="component_icon button icon_login">{% trans "Login as" %}</a>
++    <a href="{% url 'postman_write' usr.username %}" class="component_icon button" id="action_orange">{% trans "Send a message" %}</a>
+    </div>
+   {%  endif %}
+  </div>
+ <div class="desk_large">
+ <div class="course">
+     <h1>{% trans "User profile" %} : {{ usr.username }}
+     </h1>
+     <div id="password" style="float: right;">
+     {% if user.is_authenticated and user.username == usr.username %}
+     <a href="{% url teleforma-password-change %}" class="component_icon button icon_login">{% trans "Change password" %}</a>
+     {% elif user.is_staff %}
++        <a href="{% url 'teleforma-user-login' usr.id %}" class="component_icon button icon_login">{% trans "Login as" %}</a>
+     {%  endif %}
+     </div>
+    <div class="course_content">
+    <div class="infos" style="width: 55%">
+      {% if usr.student.get.portrait %}
+      <img style="float:right" src="{{ usr.student.get.portrait.url }}" />
+      {% endif %}
+      <dl class="listing">
+       <dt>{% trans "First Name" %}</dt><dd>{{ usr.first_name }}</dd>
+       <dt>{% trans "Last Name" %}</dt><dd>{{ usr.last_name }}</dd>
+       <dt>{% trans "Username" %}</dt><dd>{{ usr.username }}</dd>
+       {% if usr.student.get %}
+         <dt>{% trans "IEJ" %}</dt><dd>{{ usr.student.get.iej }}</dd>
+         <dt>{% trans "Trainings" %}</dt><dd>{% for training in usr.student.get.trainings.all %}{{ training }}<br />{% endfor %}</dd>
+         <dt>{% trans "Platform only" %}</dt><dd>{{ usr.student.get.platform_only|yes_no }}</dd>
+         <dt>{% trans "Procedure"%}</dt><dd>{{ usr.student.get.procedure}}</dd>
+         <dt>{% trans "Oral spe"%}</dt><dd>{{ usr.student.get.oral_speciality }}</dd>
+         <dt>{% trans "Written spe"%}</dt><dd>{{ usr.student.get.written_speciality }}</dd>
+         <dt>{% trans "Oral 1"%}</dt><dd>{{ usr.student.get.oral_1 }}</dd>
+         <dt>{% trans "Oral 2"%}</dt><dd>{{ usr.student.get.oral_2 }}</dd>
+         <dt>{% trans "Options"%}</dt><dd>{{ usr.student.get.options }}</dd>
+       {% endif %}
+       {% if user.is_staff or user.is_superuser or usr == user %}
+       <dt>{% trans "Email" %}</dt><dd>{{ usr.email }}</dd>
+           <dt>{% trans "Address" %}</dt><dd>{{ usr.profile.get.address }}{% if usr.profile.get.address_detail %}, {% endif %}</span>{{ usr.profile.get.address_detail }}{% if usr.profile.get.postal_code or usr.profile.get.city %}, {% endif %}{{ usr.profile.get.postal_code }} {{ usr.profile.get.city }}</dd>
+       <dt>{% trans "Telephone" %}</dt><dd>{{ usr.profile.get.telephone }}</dd>
+       <dt>{% trans "WiFi login" %}</dt><dd>{{ usr.profile.get.wifi_login }}</dd>
+       <dt>{% trans "WiFi password" %}</dt><dd>{{ usr.profile.get.wifi_pass }}</dd>
+       {% endif %}
+       <dt>{% trans "Date added" %}</dt><dd>{{ usr.date_joined }}</dd>
+       <dt>{% trans "Expiration date" %}</dt><dd>{{ usr.profile.get.expiration_date }}</dd>
+       <dt>{% trans "Last login" %}</dt><dd>{{ usr.last_login }}</dd>
+       {% if user.is_authenticated and user.username == usr.username %}
+       <dt>{% trans "Language" %}</dt><dd><form id="setlang" action="/i18n/setlang/" method="post">{% csrf_token %}
+         <input name="next" type="hidden" value="" />
+           <select name="language">
+             {% for lang in LANGUAGES %}
+              <option {% if lang.0 == LANGUAGE_CODE %}selected{% endif %} value="{{ lang.0 }}">{{ lang.1 }}</option>
+             {% endfor %}
+           </select><br /><br />
+           <a href="#" class="component_icon button icon_ok"
+             onclick="document.getElementById('setlang').submit(); return false;">{% trans "Apply" %}</a>
+          </form>
+         </dd>
+       {%  endif %}
+      </dl>
+     </div>
+   </div>
+   {% if payment %}
+     {% payment_summary payment with_pending=False %}
+   {% endif %}
+ <div class="buttons">
+ </div>
+ </div>
+ </div>
+ {% endblock content %}
index 0000000000000000000000000000000000000000,6e8ef116c7e1472503c0b69c204f8a64242e75e8..a81e32a8d089fa9a60328417317965639471e242
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,160 +1,160 @@@
 -    $('#location').autocomplete('{% url telemeta-complete-location %}', {
+ {% extends "teleforma/base.html" %}
+ {% load i18n %}
+ {% block head_title %}{% trans "Advanced Search" %} - {{ block.super }}{% endblock %}
+ {% block stylesheets %}
+ {{ block.super }}
+ <link rel="stylesheet" type="text/css" href="/static/teleforma/css/jquery.autocomplete.css" />
+ {% endblock %}
+ {% block extra_javascript %}
+ <script src="/static/telemeta/js/jquery.bgiframe.js" type="text/javascript"></script>
+ <script src="/static/telemeta/js/jquery.autocomplete.js" type="text/javascript"></script>
+ <script type="text/javascript">
+ function update_period(source, from_field, to_field) {
+     var from_year = $(from_field);
+     var to_year = $(to_field);
+     if (from_year.val() == "0") {
+         to_year.attr('disabled', '1');
+         to_year.val('0');
+     } else {
+         to_year.removeAttr('disabled');
+         if ($(source).is(to_field)) {
+             if (parseInt(from_year.val()) > parseInt(to_year.val()))
+                 from_year.val(to_year.val());
+         } else if (parseInt(from_year.val()) > parseInt(to_year.val())) {
+             to_year.val(from_year.val());
+         }
+     }
+ }
+ $(document).ready(function () {
 -<form action="{% url telemeta-search %}" id="searchform">{% csrf_token %}
++    $('#location').autocomplete('{% url 'telemeta-complete-location' %}', {
+         max: 20,
+         formatResult: function(data) {
+             return data[0].replace(/ *\([0-9]+.*\) *$/, '');
+         }
+     });
+     update_period('#rec_year_from', '#rec_year_to');
+     $('#rec_year_from, #rec_year_to').change(function () {
+         update_period(this, '#rec_year_from', '#rec_year_to');
+     });
+     update_period('#pub_year_from', '#pub_year_to');
+     $('#pub_year_from, #pub_year_to').change(function () {
+         update_period(this, '#pub_year_from', '#pub_year_to');
+     });
+ });
+ </script>
+ {% endblock %}
+ {% block title %}
+ {% endblock %}
+ {% block content %}
+ <div id="module-set-left" style="width: 20%">
+     {% block module_searches %}
+     {% with searches as searches and "My searches" as title %}
+     {% include "telemeta/inc/module_searches.html" %}
+     {% endwith %}
+     {% endblock %}
+ <div class="module_action">
+     <a href="#" class="component_icon button" id="action_yellow"
+       onclick="document.getElementById('searchform').submit(); return false;">{% trans 'Search' %}</a>
+ </div>
+ </div>
+ <div class="desk_center">
+ <div class="course">
+ <h1>{% trans "Advanced Search" %}</h1>
++<form action="{% url 'telemeta-search' %}" id="searchform">{% csrf_token %}
+ <fieldset>
+     <p>
+     <label for="location">{% field_label "Location" %}</label>
+     <input type="text" name="location" id="location" value="{{ criteria.location }}" />
+     </p>
+     <p>
+     <label for="ethnic_group">{% field_label "EthnicGroup" %}</label>
+     <select id="ethnic_group" name="ethnic_group">
+         <option value="">All ethnic groups</option>
+     {% for group in ethnic_groups %}
+         <option value="{{group.id}}" {% ifequal criteria.ethnic_group.id group.id %}selected {% endifequal %}>{{group|escape}}</option>
+     {% endfor %}
+     </select>
+     </p>
+     <p>
+     <label for="title">{% trans "Title" %}</label>
+     <input type="text" id="title" name="title" />
+     </p>
+     <p>
+     <label for="creator">{% field_label "MediaCollection" "creator" %}</label>
+     <input type="text" id="creator" name="creator" />
+     </p>
+     <p>
+     <label for="collector">{% field_label "MediaCollection" "collector" %}</label>
+     <input type="text" id="collector" name="collector" />
+     </p>
+     {% if rec_years %}
+     <p>
+     <label for="rec_date_from">{% trans "Year of recording" %}</label>
+     <select id="rec_year_from" name="rec_year_from" class="tiny">
+         <option value="0"></option>
+         {% for year in rec_years %}
+         <option value="{{ year }}" {% ifequal criteria.rec_year_from year %}selected {% endifequal %}>{{year}}</option>
+         {% endfor %}
+     </select>
+     {% trans "to" %}
+     <select id="rec_year_to" name="rec_year_to" class="tiny">
+         <option value="0"></option>
+         {% for year in rec_years %}
+         <option value="{{ year }}" {% ifequal criteria.rec_year_to year %}selected {% endifequal %}>{{year}}</option>
+         {% endfor %}
+     </select>
+     </p>
+     {% endif %}
+     {% if pub_years %}
+     <p>
+     <label for="pub_date_from">{% trans "Year of publication" %}</label>
+     <select id="pub_year_from" name="pub_year_from" class="tiny">
+         <option value="0"></option>
+         {% for year in pub_years %}
+         <option value="{{ year }}" {% ifequal criteria.pub_year_from year %}selected {% endifequal %}>{{year}}</option>
+         {% endfor %}
+     </select>
+     {% trans "to" %}
+     <select id="pub_year_to" name="pub_year_to" class="tiny">
+         <option value="0"></option>
+         {% for year in pub_years %}
+         <option value="{{ year }}" {% ifequal criteria.pub_year_to year %}selected {% endifequal %}>{{year}}</option>
+         {% endfor %}
+     </select>
+     </p>
+     {% endif %}
+     <p><label for="sound">{% trans "Sound" %}</label>
+     <input type="checkbox" name="sound" value="True" align="left" />
+     </p>
+ </fieldset>
+ </form>
+ </div>
+ </div>
+ {% endblock %}
index 0000000000000000000000000000000000000000,18884d0aa0f945dd644fd1d5153722de294a16c5..0efbd02ac5c452819a33125a6965702a9a9f602b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,76 +1,76 @@@
 -<li><a href="{% url teleforma-users t.id iej.id course.id %}">{{ t.code|lower|capfirst }} - {{ t.period|lower|capfirst }}</a></li>
+ {% extends "teleforma/base.html" %}
+ {% load i18n %}
+ {% load teleforma_tags %}
+ {% block head_title %}{% trans "Users" %} - {{ block.super }}{% endblock %}
+ {% block title %}
+ {% endblock %}
+ {% block content %}
+ <div id="module-set-left" style="width: 20%">
+ <div class="module">
+ <h3><img src="/static/teleforma/images/module_playlist.png" alt="Trainings" style="vertical-align:middle" />{% trans "Trainings" %}</h3>
+ <div style="background: white;">
+ <ul>
+ {% block trainings %}
+ {% for t in trainings %}
 -<li><a href="{% url teleforma-users training.id i.id course.id %}">{{ i.name|lower|capfirst }}</a></li>
++<li><a href="{% url 'teleforma-users' t.id iej.id course.id %}">{{ t.code|lower|capfirst }} - {{ t.period|lower|capfirst }}</a></li>
+ {% endfor %}
+ {% endblock trainings %}
+ </ul>
+ </div>
+ </div>
+ <div class="module">
+ <h3><img src="/static/teleforma/images/module_world.png" alt="IEJ" style="vertical-align:middle" /> {% trans "IEJ" %}</h3>
+ <div style="background: white;">
+ <ul>
+ {% block iej %}
+ {% for i in iejs %}
 -<li><a href="{% url teleforma-users training.id iej.id c.id %}">{{ c }}</a></li>
++<li><a href="{% url 'teleforma-users' training.id i.id course.id %}">{{ i.name|lower|capfirst }}</a></li>
+ {% endfor %}
+ {% endblock iej %}
+ </ul>
+ </div>
+ </div>
+ <div class="module">
+ <h3><img src="/static/teleforma/images/module_playlist.png" alt="Courses" style="vertical-align:middle" />{% trans "Courses" %}</h3>
+ <div style="background: white;">
+ <ul>
+ {% block courses %}
+ {% for c in courses %}
 -<a href="{% url postman_write users|to_recipients %}" class="component_icon button" id="action_orange">{% trans "Grouped message" %}</a>
++<li><a href="{% url 'teleforma-users' training.id iej.id c.id %}">{{ c }}</a></li>
+ {% endfor %}
+ {% endblock courses %}
+ </ul>
+ </div>
+ </div>
+ {% if users %}
+ <div class="module_action">
 -<a href="{% url teleforma-users-export training.id iej.id course.id %}" class="component_icon button icon_csv">XLS Export</a>
++<a href="{% url 'postman_write' users|to_recipients %}" class="component_icon button" id="action_orange">{% trans "Grouped message" %}</a>
+ </div>
+ {% endif %}
+ </div>
+ <div class="desk_messages">
+ {% if user.is_staff %}
+ <div style="float:right;">
++<a href="{% url 'teleforma-users-export' training.id iej.id course.id %}" class="component_icon button icon_csv">XLS Export</a>
+ </div>
+ {% endif %}
+ <div class="course_title">{% trans "Users" %} ({{ users|length }}){% if training.id != 0 %} - {{ training }}{% endif %}{% if iej.id != 0 %} - {{ iej }}{% endif %}{% if course.id != 0 %} - {{ course }}{% endif %}</div>
+ <br />
+  {% if users %}
+   {% include "teleforma/inc/user_list.html" %}
+  {% else %}
+     <p class="help">{% trans "No users" %}</p>
+  {% endif %}
+ </div>
+ {% endblock %}
Simple merge
Simple merge
Simple merge