]> git.parisson.com Git - teleforma.git/commitdiff
Django 3 migration
authorYoan Le Clanche <yoanl@pilotsystems.net>
Tue, 2 May 2023 10:09:48 +0000 (12:09 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Tue, 2 May 2023 10:09:48 +0000 (12:09 +0200)
56 files changed:
app/settings.py
app/urls.py
etc/apache2-dev.conf
requirements-dev.txt
requirements.txt
teleforma/admin.py
teleforma/exam/migrations/0001_initial.py [deleted file]
teleforma/exam/migrations/0002_auto__chg_field_script_reject_reason.py [deleted file]
teleforma/exam/migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py [deleted file]
teleforma/exam/migrations/0004_auto__add_field_quota_script_type.py [deleted file]
teleforma/exam/migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py [deleted file]
teleforma/exam/migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py [deleted file]
teleforma/exam/migrations/__init__.py [deleted file]
teleforma/exam/south_migrations/0001_initial.py [new file with mode: 0644]
teleforma/exam/south_migrations/0002_auto__chg_field_script_reject_reason.py [new file with mode: 0644]
teleforma/exam/south_migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py [new file with mode: 0644]
teleforma/exam/south_migrations/0004_auto__add_field_quota_script_type.py [new file with mode: 0644]
teleforma/exam/south_migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py [new file with mode: 0644]
teleforma/exam/south_migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py [new file with mode: 0644]
teleforma/exam/south_migrations/__init__.py [new file with mode: 0644]
teleforma/forms.py
teleforma/management/commands/teleforma-convert-boolean-fields.py [new file with mode: 0644]
teleforma/migrations/0001_initial.py
teleforma/models/__init__.py
teleforma/models/ae.py [deleted file]
teleforma/models/core.py
teleforma/models/crfpa.py
teleforma/models/pro.py
teleforma/templates/postman/base_write.html
teleforma/templates/registration/registration_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_detail.html
teleforma/templates/teleforma/course_document.html
teleforma/templates/teleforma/course_media.html
teleforma/templates/teleforma/course_media_transcoded.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.html
teleforma/templates/teleforma/inc/newsitem.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/templates/telemeta/base.html
teleforma/templatetags/teleforma_tags.py
teleforma/urls.py
teleforma/views/core.py
teleforma/webclass/migrations/0001_initial.py

index 76100369e2770d8764f1790aba7d4b6f0cddb31d..72c1387eea8ceed528de83663c823b04736d9a72 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # Django settings for sandbox project.
 
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
 import warnings
 import os
 import sys
@@ -30,12 +30,18 @@ MANAGERS = ADMINS
 
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-        'NAME': 'teleforma',                      # Or path to database file if using sqlite3.
-        'USER': 'teleforma',                      # Not used with sqlite3.
-        'PASSWORD': 'HMYsrZLEtYeBrvER',                  # Not used with sqlite3.
-        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
-        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
+        # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
+        # Or path to database file if using sqlite3.
+        'NAME': os.environ.get('POSTGRES_DATABASE'),
+        # Not used with sqlite3.
+        'USER': os.environ.get('POSTGRES_USER'),
+        # Not used with sqlite3.
+        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
+        # Set to empty string for localhost. Not used with sqlite3.
+        'HOST': os.environ.get('DB_HOST'),
+        # Set to empty string for default. Not used with sqlite3.
+        'PORT': os.environ.get('DB_PORT'),
     }
 }
 
@@ -140,6 +146,8 @@ INSTALLED_APPS = (
     'django.contrib.admin',
     # 'south',
     'teleforma',
+    'teleforma.exam',
+    'teleforma.webclass',
     'sorl.thumbnail',
     # 'django_extensions',
     'dj_pagination',
@@ -241,17 +249,25 @@ TELECASTER_LIVE_ICECAST_STREAMING_PORT = 8000
 TELECASTER_LIVE_STREAM_M_STREAMING_PORT = 8888
 
 # CRFPA or AE or PRO
-TELEFORMA_E_LEARNING_TYPE = 'CRFPA'
+TELEFORMA_E_LEARNING_TYPE = 'AE'
+TELEFORMA_ORGANIZATION = 'Pré-Barreau - Avocats étrangers'
+TELEFORMA_SUBJECTS = ('Barreau', 'Avocats', 'étrangers', 'e-learning')
+TELEFORMA_DESCRIPTION = "E-learning Pré-Barreau - Avocats étrangers"
 TELEFORMA_GLOBAL_TWEETER = False
 TELEFORMA_PERIOD_TWEETER = True
 TELEFORMA_EXAM_TOPIC_DEFAULT_DOC_TYPE_ID = 4
 TELEFORMA_EXAM_SCRIPT_UPLOAD = True
 TELEFORMA_REGISTER_DEFAULT_DOC_ID = 5506
-TELEFORMA_PERIOD_DEFAULT_ID = 22
-TELEFORMA_EXAM_MAX_SESSIONS = 15
+TELEFORMA_PERIOD_DEFAULT_ID = 11
+TELEFORMA_EXAM_MAX_SESSIONS = 10
 TELEFORMA_EXAM_SCRIPT_MAX_SIZE = 20480000
 TELEFORMA_EXAM_SCRIPT_SERVICE_URL = '/webviewer/teleforma.html'
 
+# courses choice in register form
+TELEFORMA_REGISTER_COURSE_CHOICE = (28, 29, 30, 31)
+# courses added to all registered users
+TELEFORMA_REGISTER_COURSE_AUTOREGISTER = (27, 34, 35, 36, 37)
+
 TELECASTER_LIVE_STREAMING_SERVER = 'stream4.parisson.com'
 TELECASTER_LIVE_STREAMING_PORT = 443
 TELECASTER_LIVE_ICECAST_STREAMING_PORT = 8000
@@ -269,6 +285,10 @@ FILE_UPLOAD_TEMP_DIR = '/tmp'
 SESSION_ENGINE = "unique_session.backends.session_backend"
 UNIQUE_SESSION_WHITELIST = (1, 2042)
 
+RECAPTCHA_PUBLIC_KEY = '6Ldq5DgbAAAAADkKg19JXlhx6F1XUQDsrXfXqSP6'
+RECAPTCHA_PRIVATE_KEY = '6Ldq5DgbAAAAAOVDOeF2kH8i2e2VSNHpqlinbpAJ'
+RECAPTCHA_REQUIRED_SCORE = 0.85
+
 # SOUTH_MIGRATION_MODULES = {
 #     'captcha': 'captcha.south_migrations',
 # }
@@ -345,7 +365,7 @@ def show_user_as(user):
     if user.quotas.count() and not professor and not user.is_superuser:
         return "#"+str(user.id)
     else:
-        return force_text(user)
+        return force_str(user)
 
 
 POSTMAN_SHOW_USER_AS = show_user_as
index 355c941c91ed11e7d570a71afa37acb37dd28cb4..84b68022d1c2050c15615c49b872f5d1d6e6820f 100644 (file)
@@ -1,4 +1,5 @@
 # -*- coding: utf-8 -*-
+from django.conf import settings
 from django.http import HttpResponse
 from django.conf.urls import include, url
 from django.views.i18n import JavaScriptCatalog
index 87917d8dda3dcffeb5a6448b7f17a075058e7c94..d47c932df2d8fc0e6e514bf8fdabb149e99888cc 100644 (file)
@@ -551,8 +551,5 @@ SSLRandomSeed connect builtin
 
     RewriteEngine on
     ProxyPreserveHost on
-    RewriteCond %{HTTP:Connection} Upgrade [NC]
-    RewriteCond %{HTTP:Upgrade} websocket [NC]
-    RewriteRule ^/(.*)$ ws://channels:8000/$1 [P,L]
 
     RewriteRule ^(.*)$ http://app:8000$1 [P,L]
index d1cc50e1cd1c9a385873ea96bfe0d7b6408fe92d..3a22361c54bac7b119734d97eca50478d8d2ac3c 100644 (file)
@@ -1,2 +1,2 @@
 ipdb==0.13.8
-django-debug-toolbar
\ No newline at end of file
+django-debug-toolbar==3.8.1
\ No newline at end of file
index da76a6c25f8b63c6e557e228b5c8b86a994c8aab..e802cc87f8bbaf7e9c7fab787b7dfb8f79df59d5 100644 (file)
@@ -1,6 +1,9 @@
 bigbluebutton-api-python==0.0.11
+channels==3.0.4
+channels_redis==3.4.0
 docutils==0.17.1
-Django==3.2.3
+Django==3.2.13
+djangorestframework==3.13.1
 # django-extensions==1.2.1
 # django-timezones==0.2
 # django-registration==3.1.2
@@ -10,17 +13,27 @@ django-json-rpc==0.7.1
 # django-google-tools==1.1.0
 django-nvd3==0.8.2
 django-postman==4.2
-django-simple-captcha==0.5.14   # a maj
 django-tinymce==3.3.0
 -e git+https://git.parisson.com/git/django-unique-session.git@master#egg=django-unique-session
 django-user-agents==0.4.0
+django-recaptcha==2.0.6
 jxmlease==1.0.3
 mysqlclient==2.0.3
 numpy==1.20.3
 # django-user-agents==0.3.0
 # html5lib==1.1
+requests
 sorl-thumbnail==12.7.0
 unidecode==1.2.0
-xhtml2pdf==0.2.5
+weasyprint==52.5
 xlrd==2.0.1
-xlwt==1.3.0
\ No newline at end of file
+xlwt==1.3.0
+psycopg2==2.8.6 
+redis==3.5.3 
+uwsgi==2.0.19
+daphne==3.0.2
+pymemcache==3.4.4
+django-debug-toolbar==3.2.1
+uvicorn[standard]==0.18.1
+httpx==0.23.3
+ipython
index b133ad86531ccf416260fcf736ffedb61d3e000f..ec05e40f2a5c6d978309bd074cc81ddac9683fd5 100644 (file)
@@ -2,6 +2,7 @@
 import csv
 import datetime
 
+from django.conf import settings
 from django.contrib import admin
 from django.contrib.admin import SimpleListFilter
 from django.contrib.auth.admin import UserAdmin
@@ -9,6 +10,9 @@ from django.contrib.auth.models import User
 from django.core import serializers
 from django.http import HttpResponse
 from django.utils.translation import ugettext_lazy as _
+from django import forms
+from django.contrib.admin.helpers import ActionForm
+
 
 from .exam.admin import QuotaInline
 from .models.appointment import (Appointment, AppointmentJury,
@@ -81,9 +85,8 @@ class StudentInline(admin.StackedInline):
     model = Student
     extra = 1
 
-# TODO fix max_length
-# class StudentGroupForm(ActionForm):
-#     group_name = forms.CharField(_('Group'), required=False)
+class StudentGroupForm(ActionForm):
+    group_name = forms.CharField(label=_('Group'), max_length=255, required=False)
 
 
 class StudentGroupAdmin(admin.ModelAdmin):
@@ -189,8 +192,8 @@ else:
         actions = ['export_xls', 'write_message', 'add_to_group']
         action_form = StudentGroupForm
 
-    def get_trainings(self, instance):
-        return ' - '.join([str(training) for training in instance.trainings.all()])
+        def get_trainings(self, instance):
+            return ' - '.join([str(training) for training in instance.trainings.all()])
 
         def student_name(self, instance):
             return instance.user.last_name + ' ' + instance.user.first_name
@@ -205,23 +208,23 @@ else:
             serializers.serialize("json", queryset, stream=response)
             return response
 
-    def export_xls(self, request, queryset):
-        book = UserXLSBook(students=queryset)
-        book.write()
-        response = HttpResponse(content_type="application/vnd.ms-excel")
-        response['Content-Disposition'] = 'attachment; filename=users.xls'
-        book.book.save(response)
-        return response
+        def export_xls(self, request, queryset):
+            book = UserXLSBook(students=queryset)
+            book.write()
+            response = HttpResponse(content_type="application/vnd.ms-excel")
+            response['Content-Disposition'] = 'attachment; filename=users.xls'
+            book.book.save(response)
+            return response
 
-        export_xls.short_description = "Export vers XLS"
+            export_xls.short_description = "Export vers XLS"
 
-        def add_to_group(self, request, queryset):
-            group_name = request.POST['group_name']
-            group, c = StudentGroup.objects.get_or_create(name=group_name)
-            for student in queryset:
-                group.students.add(student)
-            # self.message_user(request, ("Successfully added to group : %s") % (group_name,), messages.SUCCESS)
-        add_to_group.short_description = "Ajouter au groupe"
+            def add_to_group(self, request, queryset):
+                group_name = request.POST['group_name']
+                group, c = StudentGroup.objects.get_or_create(name=group_name)
+                for student in queryset:
+                    group.students.add(student)
+                # self.message_user(request, ("Successfully added to group : %s") % (group_name,), messages.SUCCESS)
+            add_to_group.short_description = "Ajouter au groupe"
 
 
 class CorrectorAdmin(admin.ModelAdmin):
diff --git a/teleforma/exam/migrations/0001_initial.py b/teleforma/exam/migrations/0001_initial.py
deleted file mode 100644 (file)
index 3f216f7..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-# -*- 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):
-        # Adding model 'Quota'
-        db.create_table('exam_quota', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('course', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, to=orm['teleforma.Course'])),
-            ('corrector', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, to=orm['auth.User'])),
-            ('period', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Period'])),
-            ('value', self.gf('django.db.models.fields.IntegerField')()),
-            ('date_start', self.gf('django.db.models.fields.DateField')()),
-            ('date_end', self.gf('django.db.models.fields.DateField')()),
-        ))
-        db.send_create_signal('exam', ['Quota'])
-
-        # Adding model 'ScriptPage'
-        db.create_table('exam_scriptpage', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
-            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
-            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
-            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
-            ('sha1', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
-            ('script', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='pages', null=True, to=orm['exam.Script'])),
-            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=100, blank=True)),
-            ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100, blank=True)),
-            ('rank', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
-        ))
-        db.send_create_signal('exam', ['ScriptPage'])
-
-        # Adding model 'ScriptType'
-        db.create_table('exam_scripttype', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('name', self.gf('django.db.models.fields.CharField')(max_length='512', blank=True)),
-        ))
-        db.send_create_signal('exam', ['ScriptType'])
-
-        # Adding model 'Script'
-        db.create_table('exam_script', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
-            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
-            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
-            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
-            ('sha1', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
-            ('course', self.gf('django.db.models.fields.related.ForeignKey')(related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Course'])),
-            ('period', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Period'])),
-            ('session', self.gf('django.db.models.fields.CharField')(default='1', max_length=16)),
-            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['exam.ScriptType'])),
-            ('author', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='author_scripts', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
-            ('corrector', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='corrector_scripts', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
-            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=100, blank=True)),
-            ('box_uuid', self.gf('django.db.models.fields.CharField')(max_length='256', blank=True)),
-            ('score', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
-            ('comments', self.gf('django.db.models.fields.TextField')(blank=True)),
-            ('status', self.gf('django.db.models.fields.IntegerField')(default=1, blank=True)),
-            ('reject_reason', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
-            ('date_submitted', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
-            ('date_marked', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
-            ('date_rejected', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
-            ('url', self.gf('django.db.models.fields.CharField')(max_length='2048', blank=True)),
-        ))
-        db.send_create_signal('exam', ['Script'])
-
-
-    def backwards(self, orm):
-        # Deleting model 'Quota'
-        db.delete_table('exam_quota')
-
-        # Deleting model 'ScriptPage'
-        db.delete_table('exam_scriptpage')
-
-        # Deleting model 'ScriptType'
-        db.delete_table('exam_scripttype')
-
-        # Deleting model 'Script'
-        db.delete_table('exam_script')
-
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['date_start']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['-date_submitted']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        'notes.note': {
-            'Meta': {'object_name': 'Note'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
-            'content': ('django.db.models.fields.TextField', [], {}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 6, 23, 0, 0)'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
-            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
-        },
-        'notes.topic': {
-            'Meta': {'object_name': 'Topic'},
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
-            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
-        },
-        'teleforma.course': {
-            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
-            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
-            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.department': {
-            'Meta': {'object_name': 'Department'},
-            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
-        },
-        'teleforma.organization': {
-            'Meta': {'object_name': 'Organization'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.period': {
-            'Meta': {'object_name': 'Period'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/0002_auto__chg_field_script_reject_reason.py b/teleforma/exam/migrations/0002_auto__chg_field_script_reject_reason.py
deleted file mode 100644 (file)
index 291c364..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-# -*- 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):
-
-        # Changing field 'Script.reject_reason'
-        db.alter_column('exam_script', 'reject_reason', self.gf('django.db.models.fields.CharField')(default='', max_length='256'))
-
-    def backwards(self, orm):
-
-        # Changing field 'Script.reject_reason'
-        db.alter_column('exam_script', 'reject_reason', self.gf('django.db.models.fields.IntegerField')(null=True))
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['date_start']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['-date_submitted']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        'notes.note': {
-            'Meta': {'object_name': 'Note'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
-            'content': ('django.db.models.fields.TextField', [], {}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 7, 15, 0, 0)'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
-            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
-        },
-        'notes.topic': {
-            'Meta': {'object_name': 'Topic'},
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
-            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
-        },
-        'teleforma.course': {
-            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
-            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
-            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.department': {
-            'Meta': {'object_name': 'Department'},
-            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
-        },
-        'teleforma.organization': {
-            'Meta': {'object_name': 'Organization'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.period': {
-            'Meta': {'object_name': 'Period'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py b/teleforma/exam/migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py
deleted file mode 100644 (file)
index b03f766..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-# -*- 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):
-
-        # Changing field 'Script.file'
-        db.alter_column('exam_script', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=1024))
-
-        # Changing field 'ScriptPage.file'
-        db.alter_column('exam_scriptpage', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=1024))
-
-    def backwards(self, orm):
-
-        # Changing field 'Script.file'
-        db.alter_column('exam_script', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=100))
-
-        # Changing field 'ScriptPage.file'
-        db.alter_column('exam_scriptpage', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=100))
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['corrector__username']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        'notes.note': {
-            'Meta': {'object_name': 'Note'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
-            'content': ('django.db.models.fields.TextField', [], {}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 9, 2, 0, 0)'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
-            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
-        },
-        'notes.topic': {
-            'Meta': {'object_name': 'Topic'},
-            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
-            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
-            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
-        },
-        'teleforma.course': {
-            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
-            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
-            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.department': {
-            'Meta': {'object_name': 'Department'},
-            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
-        },
-        'teleforma.organization': {
-            'Meta': {'object_name': 'Organization'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.period': {
-            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/0004_auto__add_field_quota_script_type.py b/teleforma/exam/migrations/0004_auto__add_field_quota_script_type.py
deleted file mode 100644 (file)
index fb6f0f7..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-# -*- 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):
-        # Adding field 'Quota.script_type'
-        db.add_column('exam_quota', 'script_type',
-                      self.gf('django.db.models.fields.related.ForeignKey')(related_name='quotas', null=True, on_delete=models.SET_NULL, to=orm['exam.ScriptType']),
-                      keep_default=False)
-
-
-    def backwards(self, orm):
-        # Deleting field 'Quota.script_type'
-        db.delete_column('exam_quota', 'script_type_id')
-
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        'teleforma.course': {
-            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
-            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
-            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
-            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.department': {
-            'Meta': {'object_name': 'Department'},
-            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
-        },
-        'teleforma.organization': {
-            'Meta': {'object_name': 'Organization'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        },
-        'teleforma.period': {
-            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
-            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py b/teleforma/exam/migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py
deleted file mode 100644 (file)
index 1a04795..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding field 'Quota.session'
-        db.add_column('exam_quota', 'session',
-                      self.gf('django.db.models.fields.CharField')(default='1', max_length=16),
-                      keep_default=False)
-
-
-        # Changing field 'Quota.course'
-        db.alter_column('exam_quota', 'course_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['teleforma.Course']))
-
-        # Changing field 'Quota.corrector'
-        db.alter_column('exam_quota', 'corrector_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['auth.User']))
-
-    def backwards(self, orm):
-        # Deleting field 'Quota.session'
-        db.delete_column('exam_quota', 'session')
-
-
-        # Changing field 'Quota.course'
-        db.alter_column('exam_quota', 'course_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['teleforma.Course']))
-
-        # Changing field 'Quota.corrector'
-        db.alter_column('exam_quota', 'corrector_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['auth.User']))
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        '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'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': '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'}),
-            'procedure': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            '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.department': {
-            'Meta': {'object_name': 'Department'},
-            'default_period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'department'", '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.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.period': {
-            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
-            'date_begin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
-            'date_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
-            'date_password_init': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
-            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': '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'}),
-            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Period']"})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py b/teleforma/exam/migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py
deleted file mode 100644 (file)
index 610cc70..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-
-        # Changing field 'Script.mime_type'
-        db.alter_column('exam_script', 'mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True))
-
-        # Changing field 'ScriptPage.mime_type'
-        db.alter_column('exam_scriptpage', 'mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True))
-
-    def backwards(self, orm):
-
-        # Changing field 'Script.mime_type'
-        db.alter_column('exam_script', 'mime_type', self.gf('django.db.models.fields.CharField')(default='', max_length=128))
-
-        # Changing field 'ScriptPage.mime_type'
-        db.alter_column('exam_scriptpage', 'mime_type', self.gf('django.db.models.fields.CharField')(default='', max_length=128))
-
-    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'})
-        },
-        'exam.quota': {
-            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_end': ('django.db.models.fields.DateField', [], {}),
-            'date_start': ('django.db.models.fields.DateField', [], {}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'value': ('django.db.models.fields.IntegerField', [], {})
-        },
-        'exam.script': {
-            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
-            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
-            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
-            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
-            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
-            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
-            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
-            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scriptpage': {
-            'Meta': {'object_name': 'ScriptPage'},
-            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
-            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
-            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
-            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
-            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
-        },
-        'exam.scripttype': {
-            'Meta': {'object_name': 'ScriptType'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
-        },
-        '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.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.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.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.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': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'period'", 'null': 'True', 'blank': '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']"})
-        }
-    }
-
-    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/migrations/__init__.py b/teleforma/exam/migrations/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/teleforma/exam/south_migrations/0001_initial.py b/teleforma/exam/south_migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..3f216f7
--- /dev/null
@@ -0,0 +1,238 @@
+# -*- 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):
+        # Adding model 'Quota'
+        db.create_table('exam_quota', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('course', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, to=orm['teleforma.Course'])),
+            ('corrector', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, to=orm['auth.User'])),
+            ('period', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='quotas', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Period'])),
+            ('value', self.gf('django.db.models.fields.IntegerField')()),
+            ('date_start', self.gf('django.db.models.fields.DateField')()),
+            ('date_end', self.gf('django.db.models.fields.DateField')()),
+        ))
+        db.send_create_signal('exam', ['Quota'])
+
+        # Adding model 'ScriptPage'
+        db.create_table('exam_scriptpage', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
+            ('sha1', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('script', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='pages', null=True, to=orm['exam.Script'])),
+            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=100, blank=True)),
+            ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100, blank=True)),
+            ('rank', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
+        ))
+        db.send_create_signal('exam', ['ScriptPage'])
+
+        # Adding model 'ScriptType'
+        db.create_table('exam_scripttype', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('name', self.gf('django.db.models.fields.CharField')(max_length='512', blank=True)),
+        ))
+        db.send_create_signal('exam', ['ScriptType'])
+
+        # Adding model 'Script'
+        db.create_table('exam_script', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
+            ('sha1', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('course', self.gf('django.db.models.fields.related.ForeignKey')(related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Course'])),
+            ('period', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['teleforma.Period'])),
+            ('session', self.gf('django.db.models.fields.CharField')(default='1', max_length=16)),
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='scripts', null=True, on_delete=models.SET_NULL, to=orm['exam.ScriptType'])),
+            ('author', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='author_scripts', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+            ('corrector', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='corrector_scripts', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=100, blank=True)),
+            ('box_uuid', self.gf('django.db.models.fields.CharField')(max_length='256', blank=True)),
+            ('score', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
+            ('comments', self.gf('django.db.models.fields.TextField')(blank=True)),
+            ('status', self.gf('django.db.models.fields.IntegerField')(default=1, blank=True)),
+            ('reject_reason', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
+            ('date_submitted', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+            ('date_marked', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+            ('date_rejected', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+            ('url', self.gf('django.db.models.fields.CharField')(max_length='2048', blank=True)),
+        ))
+        db.send_create_signal('exam', ['Script'])
+
+
+    def backwards(self, orm):
+        # Deleting model 'Quota'
+        db.delete_table('exam_quota')
+
+        # Deleting model 'ScriptPage'
+        db.delete_table('exam_scriptpage')
+
+        # Deleting model 'ScriptType'
+        db.delete_table('exam_scripttype')
+
+        # Deleting model 'Script'
+        db.delete_table('exam_script')
+
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['date_start']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['-date_submitted']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        'notes.note': {
+            'Meta': {'object_name': 'Note'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+            'content': ('django.db.models.fields.TextField', [], {}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 6, 23, 0, 0)'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
+        },
+        'notes.topic': {
+            'Meta': {'object_name': 'Topic'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'teleforma.course': {
+            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
+            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
+            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.department': {
+            'Meta': {'object_name': 'Department'},
+            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
+        },
+        'teleforma.organization': {
+            'Meta': {'object_name': 'Organization'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.period': {
+            'Meta': {'object_name': 'Period'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/0002_auto__chg_field_script_reject_reason.py b/teleforma/exam/south_migrations/0002_auto__chg_field_script_reject_reason.py
new file mode 100644 (file)
index 0000000..291c364
--- /dev/null
@@ -0,0 +1,171 @@
+# -*- 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):
+
+        # Changing field 'Script.reject_reason'
+        db.alter_column('exam_script', 'reject_reason', self.gf('django.db.models.fields.CharField')(default='', max_length='256'))
+
+    def backwards(self, orm):
+
+        # Changing field 'Script.reject_reason'
+        db.alter_column('exam_script', 'reject_reason', self.gf('django.db.models.fields.IntegerField')(null=True))
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['date_start']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['-date_submitted']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        'notes.note': {
+            'Meta': {'object_name': 'Note'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+            'content': ('django.db.models.fields.TextField', [], {}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 7, 15, 0, 0)'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
+        },
+        'notes.topic': {
+            'Meta': {'object_name': 'Topic'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'teleforma.course': {
+            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
+            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
+            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.department': {
+            'Meta': {'object_name': 'Department'},
+            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
+        },
+        'teleforma.organization': {
+            'Meta': {'object_name': 'Organization'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.period': {
+            'Meta': {'object_name': 'Period'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py b/teleforma/exam/south_migrations/0003_auto__chg_field_script_file__chg_field_scriptpage_file.py
new file mode 100644 (file)
index 0000000..b03f766
--- /dev/null
@@ -0,0 +1,177 @@
+# -*- 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):
+
+        # Changing field 'Script.file'
+        db.alter_column('exam_script', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=1024))
+
+        # Changing field 'ScriptPage.file'
+        db.alter_column('exam_scriptpage', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=1024))
+
+    def backwards(self, orm):
+
+        # Changing field 'Script.file'
+        db.alter_column('exam_script', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=100))
+
+        # Changing field 'ScriptPage.file'
+        db.alter_column('exam_scriptpage', 'file', self.gf('django.db.models.fields.files.FileField')(max_length=100))
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['corrector__username']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        'notes.note': {
+            'Meta': {'object_name': 'Note'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+            'content': ('django.db.models.fields.TextField', [], {}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2014, 9, 2, 0, 0)'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'markup': ('django.db.models.fields.CharField', [], {'default': "'m'", 'max_length': '1'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'rendered_content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['notes.Topic']"})
+        },
+        'notes.topic': {
+            'Meta': {'object_name': 'Topic'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'slug': ('django_extensions.db.fields.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '50', 'separator': "u'-'", 'blank': 'True', 'populate_from': "'title'", 'overwrite': 'False'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'teleforma.course': {
+            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
+            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
+            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.department': {
+            'Meta': {'object_name': 'Department'},
+            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
+        },
+        'teleforma.organization': {
+            'Meta': {'object_name': 'Organization'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.period': {
+            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/0004_auto__add_field_quota_script_type.py b/teleforma/exam/south_migrations/0004_auto__add_field_quota_script_type.py
new file mode 100644 (file)
index 0000000..fb6f0f7
--- /dev/null
@@ -0,0 +1,150 @@
+# -*- 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):
+        # Adding field 'Quota.script_type'
+        db.add_column('exam_quota', 'script_type',
+                      self.gf('django.db.models.fields.related.ForeignKey')(related_name='quotas', null=True, on_delete=models.SET_NULL, to=orm['exam.ScriptType']),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'Quota.script_type'
+        db.delete_column('exam_quota', 'script_type_id')
+
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        'teleforma.course': {
+            'Meta': {'ordering': "['number']", 'object_name': 'Course'},
+            'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Department']"}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'magistral': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
+            'obligation': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'synthesis_note': ('telemeta.models.core.BooleanField', [], {'default': 'False'}),
+            'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'title_tweeter': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.department': {
+            'Meta': {'object_name': 'Department'},
+            'default_period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}),
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'domain': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"})
+        },
+        'teleforma.organization': {
+            'Meta': {'object_name': 'Organization'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        },
+        'teleforma.period': {
+            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
+            'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py b/teleforma/exam/south_migrations/0005_auto__add_field_quota_session__chg_field_quota_course__chg_field_quota.py
new file mode 100644 (file)
index 0000000..1a04795
--- /dev/null
@@ -0,0 +1,174 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'Quota.session'
+        db.add_column('exam_quota', 'session',
+                      self.gf('django.db.models.fields.CharField')(default='1', max_length=16),
+                      keep_default=False)
+
+
+        # Changing field 'Quota.course'
+        db.alter_column('exam_quota', 'course_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['teleforma.Course']))
+
+        # Changing field 'Quota.corrector'
+        db.alter_column('exam_quota', 'corrector_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['auth.User']))
+
+    def backwards(self, orm):
+        # Deleting field 'Quota.session'
+        db.delete_column('exam_quota', 'session')
+
+
+        # Changing field 'Quota.course'
+        db.alter_column('exam_quota', 'course_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['teleforma.Course']))
+
+        # Changing field 'Quota.corrector'
+        db.alter_column('exam_quota', 'corrector_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['auth.User']))
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        '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'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': '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'}),
+            'procedure': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            '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.department': {
+            'Meta': {'object_name': 'Department'},
+            'default_period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'department'", '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.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.period': {
+            'Meta': {'ordering': "['name']", 'object_name': 'Period'},
+            'date_begin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_password_init': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': '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'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['teleforma.Period']"})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py b/teleforma/exam/south_migrations/0006_auto__chg_field_script_mime_type__chg_field_scriptpage_mime_type.py
new file mode 100644 (file)
index 0000000..610cc70
--- /dev/null
@@ -0,0 +1,206 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+
+        # Changing field 'Script.mime_type'
+        db.alter_column('exam_script', 'mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True))
+
+        # Changing field 'ScriptPage.mime_type'
+        db.alter_column('exam_scriptpage', 'mime_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True))
+
+    def backwards(self, orm):
+
+        # Changing field 'Script.mime_type'
+        db.alter_column('exam_script', 'mime_type', self.gf('django.db.models.fields.CharField')(default='', max_length=128))
+
+        # Changing field 'ScriptPage.mime_type'
+        db.alter_column('exam_scriptpage', 'mime_type', self.gf('django.db.models.fields.CharField')(default='', max_length=128))
+
+    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'})
+        },
+        'exam.quota': {
+            'Meta': {'ordering': "['-date_end']", 'object_name': 'Quota'},
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_end': ('django.db.models.fields.DateField', [], {}),
+            'date_start': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'script_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'quotas'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'value': ('django.db.models.fields.IntegerField', [], {})
+        },
+        'exam.script': {
+            'Meta': {'ordering': "['date_added']", 'object_name': 'Script'},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'author_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'box_uuid': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'corrector': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'corrector_scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Course']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_marked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'date_rejected': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'period': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['teleforma.Period']"}),
+            'reject_reason': ('django.db.models.fields.CharField', [], {'max_length': "'256'", 'blank': 'True'}),
+            'score': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+            'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'status': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scripts'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['exam.ScriptType']"}),
+            'url': ('django.db.models.fields.CharField', [], {'max_length': "'2048'", 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scriptpage': {
+            'Meta': {'object_name': 'ScriptPage'},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'rank': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'script': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pages'", 'null': 'True', 'to': "orm['exam.Script']"}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'exam.scripttype': {
+            'Meta': {'object_name': 'ScriptType'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'512'", 'blank': 'True'})
+        },
+        '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.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.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.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.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': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'period'", 'null': 'True', 'blank': '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']"})
+        }
+    }
+
+    complete_apps = ['exam']
\ No newline at end of file
diff --git a/teleforma/exam/south_migrations/__init__.py b/teleforma/exam/south_migrations/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index 358ca36b0060349fdb901cdf52ed0109eaa69ec7..7cb8535ff32b26b7c6047025f7ba3b67f525a712 100644 (file)
@@ -2,7 +2,7 @@
 import datetime
 from io import BytesIO
 
-from captcha.fields import CaptchaField
+from captcha.fields import ReCaptchaField
 from django import forms
 from django.conf import settings
 from django.contrib.auth.models import User
@@ -55,6 +55,7 @@ def get_unique_username(first_name, last_name):
 class BBBConferenceForm(ModelForm):
     class Meta:
         model = Conference
+        fields = '__all__'
 
 class UserProfileForm(ModelForm):
     class Meta:
@@ -110,7 +111,7 @@ if settings.TELEFORMA_E_LEARNING_TYPE != 'AE':
                                     widget=forms.Select())
         
         # no model
-        captcha = CaptchaField()
+        captcha = ReCaptchaField()
         accept = BooleanField()
 
         class Meta:
@@ -132,23 +133,23 @@ if settings.TELEFORMA_E_LEARNING_TYPE != 'AE':
                 return image
             #width, height = get_image_dimensions(image)
             #ratio = float(height) / float(width)
-            #if ratio > 2.5 or ratio < 1:
+            # if ratio > 2.5 or ratio < 1:
             #    raise ValidationError({'portrait': "L'image n'est pas au format portrait."})
             NEW_HEIGHT = 230
             NEW_WIDTH = 180
-            #if width < NEW_WIDTH or height < NEW_HEIGHT:
+            # if width < NEW_WIDTH or height < NEW_HEIGHT:
             #    raise ValidationError({'portrait': "L'image est trop petite. Elle doit faire au moins %spx de large et %spx de hauteur." % (NEW_WIDTH, NEW_HEIGHT)})
 
-        # resize image
-        img = Image.open(image.file)
-        new_image = img.resize((NEW_WIDTH, NEW_HEIGHT), Image.ANTIALIAS)
-        if new_image.mode == "RGBA":
-            new_image = new_image.convert("RGB")
+            # resize image
+            img = Image.open(image.file)
+            new_image = img.resize((NEW_WIDTH, NEW_HEIGHT), Image.ANTIALIAS)
+            if new_image.mode == "RGBA":
+                new_image = new_image.convert("RGB")
 
-        temp = BytesIO()
-        new_image.save(temp, 'jpeg')
-        temp.seek(0)
-        return SimpleUploadedFile('temp', temp.read())
+            temp = BytesIO()
+            new_image.save(temp, 'jpeg')
+            temp.seek(0)
+            return SimpleUploadedFile('temp', temp.read())
 
         def save(self, commit=True):
 
@@ -234,7 +235,7 @@ else:
                                     required=True)
 
         # no model
-        captcha = CaptchaField()
+        captcha = ReCaptchaField()
         accept = BooleanField()
 
         class Meta:
@@ -323,7 +324,7 @@ class CorrectorForm(ModelForm):
                                        queryset=Course.objects.all().exclude(title="Aucune").order_by('title'),
                                        widget=forms.CheckboxSelectMultiple())
     # no model
-    captcha = CaptchaField()
+    captcha = ReCaptchaField()
     # accept = BooleanField()
 
     class Meta:
diff --git a/teleforma/management/commands/teleforma-convert-boolean-fields.py b/teleforma/management/commands/teleforma-convert-boolean-fields.py
new file mode 100644 (file)
index 0000000..fcbd33d
--- /dev/null
@@ -0,0 +1,18 @@
+from django.conf import settings
+from django.apps import apps
+from django.core.management.base import BaseCommand, CommandError
+import django.db.models as models
+
+class Command(BaseCommand):
+    help = "Issue SQL commands to fix boolean fields after MySQL migration"
+    admin_email = 'webmaster@parisson.com'
+
+    def handle(self, *args, **options):
+        for app, _ in apps.all_models.items():
+            app_models = apps.get_app_config(app).get_models()
+            for model in app_models:
+                table = model._meta.db_table
+                for field in model._meta.fields:
+                    if isinstance(field, models.BooleanField):
+                        field_name = field.column
+                        print(f"alter table {table} alter {field_name} type boolean using case when {field_name}=0 then false else true end;")
index d5866158128fff4745a6c5c4fa1d2ecfc7a73908..32bb774bfd2c2b3f67e9c3ba8945c8258944ccb3 100644 (file)
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.3 on 2021-06-01 15:28
+# Generated by Django 3.2.13 on 2023-04-26 11:59
 
 from django.conf import settings
 from django.db import migrations, models
@@ -42,7 +42,7 @@ class Migration(migrations.Migration):
             fields=[
                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                 ('public_id', models.CharField(blank=True, max_length=255, verbose_name='public_id')),
-                ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15')], default='1', max_length=16, verbose_name='session')),
+                ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], default='1', max_length=16, verbose_name='session')),
                 ('comment', teleforma.fields.ShortTextField(blank=True, max_length=255, verbose_name='comment')),
                 ('date_begin', models.DateTimeField(blank=True, null=True, verbose_name='begin date')),
                 ('date_end', models.DateTimeField(blank=True, null=True, verbose_name='end date')),
@@ -65,14 +65,6 @@ class Migration(migrations.Migration):
                 ('title_tweeter', models.CharField(max_length=255, verbose_name='tweeter title')),
                 ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
                 ('number', models.IntegerField(blank=True, null=True, verbose_name='number')),
-                ('synthesis_note', models.BooleanField(verbose_name='synthesis note')),
-                ('obligation', models.BooleanField(verbose_name='obligations')),
-                ('magistral', models.BooleanField(verbose_name='magistral')),
-                ('procedure', models.BooleanField(verbose_name='procedure')),
-                ('written_speciality', models.BooleanField(verbose_name='written_speciality')),
-                ('oral_speciality', models.BooleanField(verbose_name='oral_speciality')),
-                ('oral_1', models.BooleanField(verbose_name='oral_1')),
-                ('oral_2', models.BooleanField(verbose_name='oral_2')),
                 ('has_exam_scripts', models.BooleanField(default=True, verbose_name="copies d'examen")),
             ],
             options={
@@ -232,7 +224,7 @@ class Migration(migrations.Migration):
                 ('restricted', models.BooleanField(default=False, help_text="Cocher cette case lorsque vous voulez que l'étudiant puisse se connecter, mais ne pas avoir accès aux cours.", verbose_name='Accès restreint')),
                 ('portrait', models.ImageField(blank=True, max_length=500, null=True, upload_to='portraits/')),
                 ('platform_only', models.BooleanField(verbose_name='e-learning platform only')),
-                ('application_fees', models.BooleanField(blank=True, default=True, verbose_name='application fees')),
+                ('application_fees', models.BooleanField(blank=True, default=False, verbose_name='application fees')),
                 ('subscription_fees', models.FloatField(blank=True, help_text='€', null=True, verbose_name='subscription fees')),
                 ('promo_code', models.CharField(blank=True, max_length=100, verbose_name='promo code')),
                 ('date_registered', models.DateTimeField(auto_now_add=True, null=True, verbose_name='registration date')),
@@ -247,32 +239,15 @@ class Migration(migrations.Migration):
                 ('payment_schedule', models.CharField(blank=True, choices=[('split', 'en plusieurs fois'), ('once', 'en une seule fois')], default='split', max_length=64, null=True, verbose_name='échéancier de paiement')),
                 ('comment', models.TextField(blank=True, null=True, verbose_name='commentaire')),
                 ('receipt_id', models.IntegerField(blank=True, null=True, unique=True, verbose_name='numéro de facture')),
+                ('courses', models.ManyToManyField(blank=True, related_name='student', to='teleforma.Course', verbose_name='courses')),
                 ('iej', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student', to='teleforma.iej', verbose_name='iej')),
-                ('options', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='options_students', to='teleforma.course', verbose_name='options')),
-                ('oral_1', models.ForeignKey(blank=True, help_text='Matière d’oral de langue (en option)', limit_choices_to={'oral_1': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_1_students', to='teleforma.course', verbose_name='oral de langue (option)')),
-                ('oral_2', models.ForeignKey(blank=True, help_text='Matière d’oral technique 2 (en option)', limit_choices_to={'oral_2': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_2_students', to='teleforma.course', verbose_name='oral 2 (option)')),
-                ('oral_speciality', models.ForeignKey(blank=True, help_text='Matière d’oral de spécialité (matière incluse dans la formation approfondie, en option pour toutes les autres formations)', limit_choices_to={'oral_speciality': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_speciality_students', to='teleforma.course', verbose_name='oral speciality')),
-                ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student', to='teleforma.period', verbose_name='period')),
-                ('procedure', models.ForeignKey(blank=True, help_text='Matière de procédure', limit_choices_to={'procedure': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='procedure_students', to='teleforma.course', verbose_name='procedure')),
+                ('period', models.ManyToManyField(blank=True, related_name='student', to='teleforma.Period', verbose_name='period')),
             ],
             options={
-                'verbose_name': 'Student',
-                'verbose_name_plural': 'Students',
-                'db_table': 'teleforma_student',
-                'ordering': ['user__last_name', '-date_subscribed'],
-            },
-        ),
-        migrations.CreateModel(
-            name='WebClassGroup',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='name')),
-                ('iejs', models.ManyToManyField(blank=True, related_name='web_class_group', to='teleforma.IEJ', verbose_name='IEJ')),
-            ],
-            options={
-                'verbose_name': 'web class group',
-                'verbose_name_plural': 'web class group',
-                'ordering': ['name'],
+                'verbose_name': 'AE student',
+                'verbose_name_plural': 'AE students',
+                'db_table': 'teleforma_ae_student',
+                'ordering': ['user__last_name'],
             },
         ),
         migrations.CreateModel(
@@ -288,17 +263,8 @@ class Migration(migrations.Migration):
                 ('available', models.BooleanField(verbose_name='available')),
                 ('platform_only', models.BooleanField(verbose_name='e-learning platform only')),
                 ('duration', models.IntegerField(default=0, verbose_name='Durée en heures')),
-                ('magistral', models.ManyToManyField(blank=True, related_name='training_magistral', to='teleforma.CourseType', verbose_name='magistral')),
-                ('obligation', models.ManyToManyField(blank=True, related_name='training_obligation', to='teleforma.CourseType', verbose_name='obligations')),
-                ('options', models.ManyToManyField(blank=True, related_name='training_options', to='teleforma.CourseType', verbose_name='options')),
-                ('oral_1', models.ManyToManyField(blank=True, related_name='training_oral_1', to='teleforma.CourseType', verbose_name='oral 1')),
-                ('oral_2', models.ManyToManyField(blank=True, related_name='training_oral_2', to='teleforma.CourseType', verbose_name='oral 2')),
-                ('oral_speciality', models.ManyToManyField(blank=True, related_name='training_oral_speciality', to='teleforma.CourseType', verbose_name='oral speciality')),
                 ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='teleforma.training', verbose_name='parent')),
                 ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='training', to='teleforma.period', verbose_name='period')),
-                ('procedure', models.ManyToManyField(blank=True, related_name='training_procedure', to='teleforma.CourseType', verbose_name='procedure')),
-                ('synthesis_note', models.ManyToManyField(blank=True, related_name='training_synthesis_note', to='teleforma.CourseType', verbose_name='synthesis note')),
-                ('written_speciality', models.ManyToManyField(blank=True, related_name='training_written_speciality', to='teleforma.CourseType', verbose_name='written speciality')),
             ],
             options={
                 'verbose_name': 'training',
@@ -317,11 +283,6 @@ class Migration(migrations.Migration):
                 'db_table': 'teleforma_student_groups',
             },
         ),
-        migrations.AddField(
-            model_name='student',
-            name='training',
-            field=models.ForeignKey(blank=True, limit_choices_to={'available': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student_training', to='teleforma.training', verbose_name='training'),
-        ),
         migrations.AddField(
             model_name='student',
             name='trainings',
@@ -332,11 +293,6 @@ class Migration(migrations.Migration):
             name='user',
             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user'),
         ),
-        migrations.AddField(
-            model_name='student',
-            name='written_speciality',
-            field=models.ForeignKey(blank=True, help_text='Matière juridique de spécialité', limit_choices_to={'written_speciality': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='written_speciality_2students', to='teleforma.course', verbose_name='written speciality'),
-        ),
         migrations.CreateModel(
             name='Room',
             fields=[
@@ -362,7 +318,7 @@ class Migration(migrations.Migration):
                 ('language', models.CharField(blank=True, max_length=255, verbose_name='Language')),
                 ('telephone', models.CharField(blank=True, max_length=255, verbose_name='Telephone')),
                 ('expiration_date', models.DateField(blank=True, null=True, verbose_name='Expiration_date')),
-                ('init_password', models.BooleanField(verbose_name='Password initialized')),
+                ('init_password', models.BooleanField(default=False, verbose_name='Password initialized')),
                 ('wifi_login', models.CharField(blank=True, max_length=255, verbose_name='WiFi login')),
                 ('wifi_pass', models.CharField(blank=True, max_length=255, verbose_name='WiFi pass')),
                 ('birthday', models.DateField(blank=True, help_text='jj/mm/aaaa', null=True, verbose_name='birthday')),
@@ -564,7 +520,7 @@ class Migration(migrations.Migration):
                 ('is_published', models.BooleanField(verbose_name='published')),
                 ('mime_type', models.CharField(blank=True, max_length=255, verbose_name='mime type')),
                 ('weight', models.IntegerField(blank=True, choices=[(1, 1), (2, 2), (3, 3), (4, 4)], default=1, verbose_name='weight')),
-                ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15')], default='1', max_length=16, verbose_name='session')),
+                ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], default='1', max_length=16, verbose_name='session')),
                 ('is_annal', models.BooleanField(verbose_name='annal')),
                 ('annal_year', models.IntegerField(blank=True, null=True, verbose_name='year')),
                 ('file', models.FileField(blank=True, db_column='filename', max_length=1024, upload_to='items/%Y/%m/%d', verbose_name='file')),
@@ -632,6 +588,11 @@ class Migration(migrations.Migration):
             name='periods',
             field=models.ManyToManyField(blank=True, related_name='courses', to='teleforma.Period', verbose_name='Périodes associées'),
         ),
+        migrations.AddField(
+            model_name='course',
+            name='types',
+            field=models.ManyToManyField(blank=True, related_name='course', to='teleforma.CourseType', verbose_name='types'),
+        ),
         migrations.CreateModel(
             name='Corrector',
             fields=[
@@ -684,11 +645,6 @@ class Migration(migrations.Migration):
             name='room',
             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conference', to='teleforma.room', verbose_name='room'),
         ),
-        migrations.AddField(
-            model_name='conference',
-            name='web_class_group',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conferences', to='teleforma.webclassgroup', verbose_name='web class group'),
-        ),
         migrations.CreateModel(
             name='AppointmentSlot',
             fields=[
@@ -731,21 +687,6 @@ class Migration(migrations.Migration):
                 'ordering': ('id',),
             },
         ),
-        migrations.CreateModel(
-            name='AEStudent',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('platform_only', models.BooleanField(verbose_name='platform only')),
-                ('courses', models.ManyToManyField(blank=True, related_name='ae_student', to='teleforma.Course', verbose_name='courses')),
-                ('period', models.ManyToManyField(blank=True, related_name='ae_student', to='teleforma.Period', verbose_name='period')),
-                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ae_student', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user')),
-            ],
-            options={
-                'verbose_name': 'AE student',
-                'db_table': 'teleforma_ae_student',
-                'ordering': ['user__last_name'],
-            },
-        ),
         migrations.CreateModel(
             name='Appointment',
             fields=[
index cf70770c4d229d628b76fcacd8e36a51014b8ea3..5603dfc931cbfc5a4c1405167af1246697d59236 100644 (file)
@@ -1,6 +1,5 @@
 from .core import *
 from .crfpa import *
 # from pro import *
-from .ae import *
 from .messages import *
 from .appointment import *
diff --git a/teleforma/models/ae.py b/teleforma/models/ae.py
deleted file mode 100644 (file)
index 3dc4baa..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-"""
-   teleforma
-
-   Copyright (c) 2012 Guillaume Pellerin <yomguy@parisson.com>
-
-# This software is governed by the CeCILL  license under French law and
-# abiding by the rules of distribution of free software.  You can  use,
-# modify and/ or redistribute the software under the terms of the CeCILL
-# license as circulated by CEA, CNRS and INRIA at the following URL
-# "http://www.cecill.info".
-
-# As a counterpart to the access to the source code and  rights to copy,
-# modify and redistribute granted by the license, users are provided only
-# with a limited warranty  and the software's author,  the holder of the
-# economic rights,  and the successive licensors  have only  limited
-# liability.
-
-# In this respect, the user's attention is drawn to the risks associated
-# with loading,  using,  modifying and/or developing or reproducing the
-# software by the user in light of its specific status of free software,
-# that may mean  that it is complicated to manipulate,  and  that  also
-# therefore means  that it is reserved for developers  and  experienced
-# professionals having in-depth computer knowledge. Users are therefore
-# encouraged to load and test the software's suitability as regards their
-# requirements in conditions enabling the security of their systems and/or
-# data to be ensured and,  more generally, to use and operate it in the
-# same conditions as regards security.
-
-# The fact that you are presently reading this means that you have had
-# knowledge of the CeCILL license and that you accept its terms.
-
-# Author: Guillaume Pellerin <yomguy@parisson.com>
-"""
-
-import django.db.models as models
-from django.contrib.auth.models import User
-from django.utils.translation import ugettext_lazy as _
-
-from ..models import app_label
-from ..models.core import MetaCore
-
-
-class AEStudent(models.Model):
-
-    user = models.ForeignKey(
-        User, related_name='ae_student', verbose_name=_('user'), unique=True, on_delete=models.CASCADE)
-    period = models.ManyToManyField('Period', related_name='ae_student', verbose_name=_('period'),
-                                    blank=True)
-    platform_only = models.BooleanField(_('platform only'))
-    courses = models.ManyToManyField('Course', related_name="ae_student",
-                                     verbose_name=_('courses'),
-                                     blank=True)
-
-    def __str__(self):
-        try:
-            return self.user.last_name + ' ' + self.user.first_name
-        except:
-            return ''
-
-    class Meta(MetaCore):
-        db_table = app_label + '_' + 'ae_student'
-        verbose_name = _('AE student')
-        ordering = ['user__last_name']
index af555b3d6fe71b9240c609a7e096f89b2b8357e2..6a1dfbc1e903b3527c134cdb806c9d6bb2495b48 100755 (executable)
@@ -252,10 +252,10 @@ class Course(models.Model):
 
     periods = models.ManyToManyField('Period', related_name="courses",
                                      verbose_name=u'Périodes associées',
-                                     blank=True, null=True)
+                                     blank=True)
     types = models.ManyToManyField('CourseType', related_name="course",
                                         verbose_name=_('types'),
-                                        blank=True, null=True)
+                                        blank=True)
 
     def __str__(self):
         return self.title
@@ -392,8 +392,8 @@ class Conference(models.Model):
     status = models.IntegerField(
         _('status'), choices=STATUS_CHOICES, default=2)
     streaming = models.BooleanField(_('streaming'), default=True)
-    web_class_group = models.ForeignKey('WebClassGroup', related_name='conferences', verbose_name=_('web class group'),
-                                        blank=True, null=True, on_delete=models.SET_NULL)
+    web_class_group = models.ForeignKey('WebClassGroup', related_name='conferences', verbose_name=_('web class group'),
+                                        blank=True, null=True, on_delete=models.SET_NULL)
 
     @property
     def description(self):
@@ -599,7 +599,7 @@ class LiveStream(models.Model):
     @property
     def url(self):
         if self.server.type == 'stream-m':
-           return 'https://' + self.server.host + '/stream/video/consume/' + self.slug
+               return 'https://' + self.server.host + '/stream/video/consume/' + self.slug
         else:
             return 'https://' + self.server.host + '/stream/audio/' + self.slug
 
@@ -798,9 +798,6 @@ class Media(MediaBase):
                                     blank=True, null=True, on_delete=models.SET_NULL)
     period = models.ForeignKey('Period', related_name='media', verbose_name=_('period'),
                                null=True, blank=True, on_delete=models.SET_NULL)
-    if HAS_TELEMETA:
-        item = models.ForeignKey(MediaItem, related_name='media',
-                                 verbose_name='item', blank=True, null=True, on_delete=models.SET_NULL)
     type = models.CharField(
         _('type'), choices=streaming_choices, max_length=32)
     readers = models.ManyToManyField(User, related_name="media", verbose_name=_('readers'),
@@ -959,10 +956,10 @@ class NamePage(object):
         else:
             return '%c-%c' % (self.start_letter, self.end_letter)
 
-class StudentMixin(Model):
-    user = models.ForeignKey(User, related_name='student', verbose_name=_('user'), unique=True)
+class StudentMixin(models.Model):
+    user = models.ForeignKey(User, related_name='student', verbose_name=_('user'), unique=True, on_delete=models.CASCADE)
     trainings = models.ManyToManyField('Training', related_name='student_trainings', verbose_name=_('trainings'),
-                                        blank=True, null=True)
+                                        blank=True)
     iej = models.ForeignKey('IEJ', related_name='student', verbose_name=_('iej'),
                                     blank=True, null=True, on_delete=models.SET_NULL)
     restricted = models.BooleanField("Accès restreint", help_text="Cocher cette case lorsque vous voulez que l'étudiant puisse se connecter, mais ne pas avoir accès aux cours.", default=False)
index 01c112536028007c8ae9c788e69dfca2a8f2c42f..12d2b6815c624c6163546710557cf59d2b6266ab 100755 (executable)
@@ -44,7 +44,7 @@ from django.urls.base import reverse_lazy
 from django.utils.translation import ugettext_lazy as _
 from tinymce.models import HTMLField
 
-from ..models.core import (Course, Media, MetaCore, payment_choices,
+from ..models.core import (Course, Media, MetaCore, StudentMixin, payment_choices,
                            payment_schedule_choices)
 
 app_label = 'teleforma'
@@ -75,36 +75,36 @@ class Training(models.Model):
     code = models.CharField(_('code'), max_length=255)
     name = models.CharField(_('name'), max_length=255, blank=True)
     description = models.CharField(_('description'), max_length=512, blank=True)
-    period = models.ForeignKey('Period', related_name='training', verbose_name=_('period'), blank=True, null=True)
-    parent = models.ForeignKey('Training', related_name='children', verbose_name=_('parent'), blank=True, null=True)
+    period = models.ForeignKey('Period', related_name='training', verbose_name=_('period'), blank=True, null=True, on_delete=models.SET_NULL)
+    parent = models.ForeignKey('Training', related_name='children', verbose_name=_('parent'), blank=True, null=True, on_delete=models.SET_NULL)
 
     if settings.TELEFORMA_E_LEARNING_TYPE != 'AE':
         synthesis_note  = models.ManyToManyField('CourseType', related_name="training_synthesis_note", verbose_name=_('synthesis note'),
-                                            blank=True, null=True)
+                                            blank=True)
         obligation = models.ManyToManyField('CourseType', related_name="training_obligation",
                                             verbose_name=_('obligations'),
-                                            blank=True, null=True)
+                                            blank=True)
         procedure = models.ManyToManyField('CourseType', related_name="training_procedure",
                                             verbose_name=_('procedure'),
-                                            blank=True, null=True)
+                                            blank=True)
         written_speciality = models.ManyToManyField('CourseType', related_name="training_written_speciality",
                                             verbose_name=_('written speciality'),
-                                            blank=True, null=True)
+                                            blank=True)
         oral_speciality = models.ManyToManyField('CourseType', related_name="training_oral_speciality",
                                             verbose_name=_('oral speciality'),
-                                            blank=True, null=True)
+                                            blank=True)
         oral_1 = models.ManyToManyField('CourseType', related_name="training_oral_1",
                                             verbose_name=_('oral 1'),
-                                            blank=True, null=True)
+                                            blank=True)
         oral_2 = models.ManyToManyField('CourseType', related_name="training_oral_2",
                                             verbose_name=_('oral 2'),
-                                            blank=True, null=True)
+                                            blank=True)
         options = models.ManyToManyField('CourseType', related_name="training_options",
                                             verbose_name=_('options'),
-                                            blank=True, null=True)
+                                            blank=True)
         magistral = models.ManyToManyField('CourseType', related_name="training_magistral",
                                             verbose_name=_('magistral'),
-                                            blank=True, null=True)
+                                            blank=True)
 
     cost = models.FloatField(_('cost'), blank=True, null=True)
     cost_elearning_fascicle = models.FloatField(
@@ -167,11 +167,11 @@ if settings.TELEFORMA_E_LEARNING_TYPE != 'AE':
 
 else:
     class Student(StudentMixin):
-        period          = ManyToManyField('Period', related_name='student', verbose_name=_('period'),
-                                    blank=True, null=True)
-        courses        = ManyToManyField('Course', related_name="student",
+        period          = models.ManyToManyField('Period', related_name='student', verbose_name=_('period'),
+                                    blank=True)
+        courses        = models.ManyToManyField('Course', related_name="student",
                                             verbose_name=_('courses'),
-                                            blank=True, null=True)
+                                            blank=True)
         # to stay in sync with crfpa
         training = None
 
@@ -350,7 +350,7 @@ class Home(models.Model):
         _('Title'), max_length=255, null=True, blank=True)
     text = models.TextField('Texte', blank=True)
     video = models.ForeignKey(Media, verbose_name="Video", null=True, blank=True, on_delete=models.SET_NULL)
-    modified_at = models.DateTimeField(u'Date de modification', auto_now=True, default=datetime.datetime.now)
+    modified_at = models.DateTimeField(u'Date de modification', auto_now=True)
     periods = models.ManyToManyField('Period', related_name="home_texts",
                                      verbose_name=u'Périodes associées',
                                      blank=True)
index 2f89dee67af2ffc1fe0ac0aceda70a9f2903bdaf..8aab47cfd10a81bb88f1f56b5a30b3fba377ff82 100644 (file)
@@ -69,7 +69,7 @@ class Seminar(models.Model):
                                     verbose_name=_('corrected document'),
                                     blank=True, null=True)
     suscribers = models.ManyToManyField(User, related_name="seminar", verbose_name=_('suscribers'),
-                                        blank=True, null=True)
+                                        blank=True)
 
     date_added = models.DateTimeField(_('date added'), auto_now_add=True)
     date_modified = models.DateTimeField(_('date modified'), auto_now=True)
index 186813e3eba3467641cbda99953bf05e3212da29..b99f7ad01ea13d1dc868225eb9cd7c3579779755 100644 (file)
@@ -15,7 +15,7 @@
                 {% trans "Pour les questions concernant l'organisation des cours, le planning, les documents de cours ou les copies, adressez-vous à <b>Admin-CRFPA</b>." %}
                 <br/>
                 {% trans "Pour les questions concernant uniquement l'accès à la plateforme et aux médias vidéo ou audio, lire d'abord" %}
-                <a href="{% url teleforma-help %}">la page
+                <a href="{% url 'teleforma-help' %}">la page
                     d'aide</a> {% trans "puis adressez-vous à <b>Support technique</b>." %}
                 <br/><br/>
 
index acb6a200230e86cf0540e93f421f3db8ac6d8e93..de6eb9c061eb20b97696a5ec0822fc57d2e6aa04 100644 (file)
@@ -15,7 +15,7 @@ Afin de compléter votre inscription, il est nécessaire d’imprimer le formula
 
 <br/><br/><br/>
 
-<a href="{% url teleforma-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>
+<a href="{% url 'teleforma-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>
index 38e52df28d82231e4280f55c7945eddbc6375670..5ae0288cbd2ba540290aa662bfc7909db67bb537 100644 (file)
@@ -17,7 +17,7 @@
 {% block courses %}
 {% for c in all_courses %}
   {% with c.course as course %}
-   <li><a href="{% url teleforma-annals-course course.id %}">{{ course.title }}</a></li>
+   <li><a href="{% url 'teleforma-annals-course' course.id %}">{{ course.title }}</a></li>
   {% endwith %}
  {% endfor %}
 {% endblock courses %}
@@ -32,7 +32,7 @@
                <ul>
                {% block iej %}
                {% for iej in iejs %}
-               <li><a href="{% url teleforma-annals-iej iej.id %}">{{ iej.name|lower|capfirst }}</a></li>
+               <li><a href="{% url 'teleforma-annals-iej' iej.id %}">{{ iej.name|lower|capfirst }}</a></li>
                {% endfor %}
                {% endblock iej %}
                </ul>
                                            <tbody>
                                                {% for doc in docs %}
                                                <tr>
-                                               <td {% if forloop.first %}class="border-top"{% endif %} width="50%">{% if doc.file %}<a href="{% url teleforma-document-view doc.id %}" target="_blank" title="{% trans "View" %}"><img src="/static//teleforma/images/application-msword.png" style="vertical-align:middle" alt="" />{% endif %} {{ doc.title }}{% if doc.file %}</a>{% endif %}</td>
+                                               <td {% if forloop.first %}class="border-top"{% endif %} width="50%">{% if doc.file %}<a href="{% url 'teleforma-document-view' doc.id %}" target="_blank" title="{% trans "View" %}"><img src="/static//teleforma/images/application-msword.png" style="vertical-align:middle" alt="" />{% endif %} {{ doc.title }}{% if doc.file %}</a>{% endif %}</td>
 
                                                        <td {% if forloop.first %}class="border-top"{% endif %} width="40%">{{ year }}</td>
 
-                                               <td {% if forloop.first %}class="border-top"{% endif %} width="10%" align="center">{% if doc.file %}<a href="{% url teleforma-document-download doc.id %}"><img src="/static/teleforma/images/download.png" style="vertical-align:middle" alt="" title="{% trans "Download" %}" /></a>{% endif %}</td>
+                                               <td {% if forloop.first %}class="border-top"{% endif %} width="10%" align="center">{% if doc.file %}<a href="{% url 'teleforma-document-download' doc.id %}"><img src="/static/teleforma/images/download.png" style="vertical-align:middle" alt="" title="{% trans "Download" %}" /></a>{% endif %}</td>
                                                </tr>
                                                {% endfor %}
                                            </tbody>
index 9809e68ba9da5ade607e7c2029d681525a3142e5..9c10ea5c8b34b343295fa8dc590773668132f45d 100644 (file)
             </p>
 
             {% if ap_period.appointment.can_cancel %}
-                <form class="cancel_form" action="{% url teleforma-appointment-cancel %}" method="POST">
+                <form class="cancel_form" action="{% url 'teleforma-appointment-cancel' %}" method="POST">
                     {% csrf_token %}
                     <input type="hidden" name="course_id" value="{{ ap_period.course.id }}"/>
                     <input type="hidden" name="period_id" value="{{ period_id }}"/>
index cd08ffe3eb3ec9c92fd15d0932b751b38da9864b..99aca695201f47bd3178656d13c5d488b0ca51e7 100644 (file)
@@ -9,7 +9,7 @@
     var conferenceUtils = {
         stop : function(id){
             json([id],'teleforma.stop_conference',function(){
-                location.href = '{% url teleforma-conference-record %}';
+                location.href = "{% url 'teleforma-conference-record' %}"";
                 }
                 );
         }}
@@ -33,9 +33,9 @@
 
 <div class="course_title">
     <div style="float: right; font-size: 0.9em;">
-        <a href="{% url teleforma-conference-audio period.id conference.id %}" class="component_icon button icon_speaker">&nbsp;{% trans "Audio" %}</a>
+        <a href="{% url 'teleforma-conference-audio' period.id conference.id %}" class="component_icon button icon_speaker">&nbsp;{% trans "Audio" %}</a>
     </div>
-    <a href="{% url teleforma-desk-period-course period.id course.id %}" style="color: #000;">{{ course.title }}</a> - {{ type }} - {% trans "Session" %} {{ conference.session }}
+    <a href="{% url 'teleforma-desk-period-course' period.id course.id %}" style="color: #000;">{{ course.title }}</a> - {{ type }} - {% trans "Session" %} {{ conference.session }}
 </div>
 
 <div class="media">
@@ -62,7 +62,7 @@
 <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>{{ conference.professor }}</dd>
 {% endif %}
index 1eb79839144b4fbe0fd51e561dbd8bb0093f199f..1e8f4ccbd30eee5c09ed8b1a91387af4e69e62ef 100644 (file)
@@ -7,7 +7,7 @@
     var conferenceUtils = {
         stop : function(id){
             json([id],'teleforma.conference_stop',function(){
-                location.href = '{% url teleforma-conference-record %}';});
+                location.href = "{% url 'teleforma-conference-record' %}"";});
         }}
 
     jQuery(window).ready(function(){
@@ -32,7 +32,7 @@
 
 <div class="course_title">
     <div style="float: right; font-size: 0.9em;">
-        <a href="{% url teleforma-conference-detail period.id conference.id %}" class="component_icon button icon_clap">&nbsp;{% trans "Video" %}</a>
+        <a href="{% url 'teleforma-conference-detail' period.id conference.id %}" class="component_icon button icon_clap">&nbsp;{% trans "Video" %}</a>
     </div>
 
 {{ course.title }}{% if course.description %} - {{ course.description }}{% endif %} - {{ conference.session }} - {{ conference.professor }}
index 17e03efcc1047d2cf7dc8ac77401561c77d7f987..2bdf4334976c8e4a991f0a6c7a169a350ddc9f17 100644 (file)
@@ -5,7 +5,7 @@
 {% block courses %}
 {% for c in all_courses %}
 {% with c.course as course %}
-<li><a href="{% url teleforma-desk-period-course period.id course.id %}">{{ course.title }}</a></li>
+<li><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ course.title }}</a></li>
 {% endwith %}
 {% endfor %}
 {% endblock courses %}
index d408707213f0dc0d9d632ca76030db3fc8ac179d..74db19eb59b2796deb6af6bc122bf3d0ae8e07b6 100644 (file)
@@ -16,7 +16,7 @@
 //
 // Fetch the PDF document from the URL using promices
 //
-PDFJS.getDocument('{% url teleforma-document-download document.id %}').then(function(pdf) {
+PDFJS.getDocument("{% url 'teleforma-document-download' document.id %}").then(function(pdf) {
   // Using promise to fetch the page
   pdf.getPage(1).then(function(page) {
     var scale = 1.5;
index 774261ac633d4dec5677353e6d28c4a6079b2bb0..4033ce9ea223075da9f2e02fc3c00b7439a4a683 100644 (file)
@@ -60,7 +60,7 @@ $(document).ready(function(){
 {% 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 %}
@@ -75,14 +75,14 @@ $(document).ready(function(){
         <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>
         {% endif %}
     </div>
 
-    <a href="{% url teleforma-desk-period-course period.id course.id %}">{{ course.title }} - {{ type }}{% if media.conference.session %} - {% trans "Session" %} {{ media.conference.session }}{% endif %}</a>
+    <a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ course.title }} - {{ type }}{% if media.conference.session %} - {% trans "Session" %} {{ media.conference.session }}{% endif %}</a>
 
 </div>
 
@@ -129,7 +129,7 @@ $(document).ready(function(){
 <dl class="listing">
 
 {% if media.conference %}
-<dt>{% trans "Course" %}</dt><dd><a href="{% url teleforma-desk-period-course period.id course.id %}">{{ media.course.title }} - {{ media.course_type }}</a></dd>
+<dt>{% trans "Course" %}</dt><dd><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ media.course.title }} - {{ media.course_type }}</a></dd>
 <dt>{% trans "Session" %}</dt><dd>{{ media.conference.session }}</dd>
 {% if media.conference.professor %}
 <dt>{% trans "Professor" %}</dt><dd>{{ media.conference.professor }}</dd>
@@ -144,7 +144,6 @@ $(document).ready(function(){
 <dt>{% trans "Date modified" %}</dt><dd>{{ media.date_modified }}</dd>
 <dt>{% trans "Media ID" %}</dt><dd>{{ media.id }}</dd>
 <dt>{% trans "Conference ID" %}</dt><dd>{{ media.conference.public_id }}</dd>
-<dt>{% trans "Web class group" %}</dt><dd>{{ media.conference.web_class_group }}</dd>
 {% endif %}
 {% endif %}
 
index 2fa6fc106ceb97919b8f16ffcb2ef8c395969ac4..99473353277a2d66c98d68e06830ce8f62496346 100644 (file)
@@ -106,7 +106,6 @@ $(document).ready(function(){
 <dt>{% trans "Date modified" %}</dt><dd>{{ media.date_modified }}</dd>
 <dt>{% trans "Media ID" %}</dt><dd>{{ media.id }}</dd>
 <dt>{% trans "Conference ID" %}</dt><dd>{{ media.conference.public_id }}</dd>
-<dt>{% trans "Web class group" %}</dt><dd>{{ media.conference.web_class_group }}</dd>
 {% endif %}
 {% endif %}
 
index 1ecf528056bf2a7257fcc1853268ee70a81f06f8..eb218228efef58208a823f9081a2428b9a866c57 100644 (file)
@@ -29,7 +29,7 @@
 <dl class="listing">
 
 {% if media.conference %}
-<dt>{% trans "Course" %}</dt><dd><a href="{% url teleforma-desk-period-course period.id course.id %}">{{ media.course.title }} - {{ media.course_type }}</a></dd>
+<dt>{% trans "Course" %}</dt><dd><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ media.course.title }} - {{ media.course_type }}</a></dd>
 <dt>{% trans "Session" %}</dt><dd>{{ media.conference.session }}</dd>
 {% if media.conference.professor %}
 <dt>{% trans "Professor" %}</dt><dd>{{ media.conference.professor }}</dd>
index 2518564ce97fd4493f3e77a8c0920ba0643293e3..9574aa8097b8dd927f36dc4717d472a0def527e9 100644 (file)
@@ -18,7 +18,7 @@
         {% block courses %}
         {% for c in all_courses %}
         {% with c.course as course %}
-        <li><a href="{% url teleforma-desk-period-course period.id course.id %}">{{ course.title }}</a></li>
+        <li><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ course.title }}</a></li>
         {% endwith %}
         {% endfor %}
         {% endblock courses %}
   {% get_telecaster as telecaster %}
   {%  if telecaster %}
   <div class="module_action">
-    <a href="{% url teleforma-conference-record %}" class="component_icon button"
+    <a href="{% url 'teleforma-conference-record' %}" class="component_icon button"
       id="action_red">{% trans "New conference" %}</a>
   </div>
   {% endif %}
 
   {% if user.is_staff %}
   <div class="module_action">
-    <a href="{% url teleforma-desk-period-pending period.id %}" class="component_icon button"
+    <a href="{% url 'teleforma-desk-period-pending' period.id %}" class="component_icon button"
       id="action_red">{% trans "Pending" %}</a>
   </div>
   {% endif %}
               {% elif slot.status == 'almost' %}
               La webclasse <strong>"{{slot.webclass.course.title}}"</strong> va démarrer bientôt.
               {% endif %}
-              <a href="{% url teleforma-webclass-join slot.id %}" target="_blank"
+              <a href="{% url 'teleforma-webclass-join' slot.id %}" target="_blank"
                 class="conference-big-button component_icon button icon_next">Cliquez ici pour rejoindre la
                 webclasse</a>
             </p>
             <p>
               <strong>Vous n'êtes pas inscrit à la webclasse "{{webclass.course.title}}".</strong> <a
                 class="conference-big-button component_icon button icon_next"
-                href="{% url teleforma-webclass-appointments webclass.id %}">Cliquez-ici pour choisir un créneau
+                href="{% url 'teleforma-webclass-appointments' webclass.id %}">Cliquez-ici pour choisir un créneau
                 horaire</a>
             </p>
           </td>
index 7460181efa63c5698c6b9e62de28ff828a4087ee..537b5d7f6ba405fdbf480d17d3a16cc237766f58 100644 (file)
@@ -13,7 +13,7 @@
       {% for type in c.types %}
       <div class="course">
         <div class="course_title">
-         <a href="{% url teleforma-desk-period-course period.id course.id %}">{{ course.title }} - {{ type }}{% if course.description %} - {{ course.description }}{% endif %}</a>
+         <a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ course.title }} - {{ type }}{% if course.description %} - {{ course.description }}{% endif %}</a>
         </div>
 
         {% block media %}
index db43f0b497fc936388c28f13e73b49674e0ef673..96cc81660046c55bec674d2fadb397279f7463cc 100644 (file)
@@ -15,7 +15,7 @@
             <tr>
             {% if stream.streaming %}
             <td {% if forloop.first %}class="border-top"{% endif %} width="230px">
-               <a href="{% url teleforma-conference-detail period.id stream.conference.id %}" title="{% trans "View" %}">
+               <a href="{% url 'teleforma-conference-detail' period.id stream.conference.id %}" title="{% trans "View" %}">
                <img id="snapshot-{{ stream.course.code }}-{{ stream.course_type }}" src="{{ stream.snapshot_url }}" width="100%" alt="{% trans 'Click here' %}" />
                </a>
             </td>
@@ -25,7 +25,7 @@
                     <dt>{% trans "Title" %}</dt><dd>{{ stream.conference.course.title }}</dd>
                     <dt>{% trans "Session" %}</dt><dd>{{ stream.conference.session }}</dd>
                     {% if stream.conference.professor.user.username %}
-                    <dt>{% trans "Professor" %}</dt><dd><a href="{% url teleforma-profile-detail stream.conference.professor.user.username %}" target="_blank">{{ stream.conference.professor }}</a></dd>
+                    <dt>{% trans "Professor" %}</dt><dd><a href="{% url 'teleforma-profile-detail' stream.conference.professor.user.username %}" target="_blank">{{ stream.conference.professor }}</a></dd>
                     {% endif %}
                     <dt>{% trans "Begin" %}</dt><dd>{{ stream.conference.date_begin }}</dd>
                     </dl>
index 99a88b104b32442f798c2cc8e5f57bca1846c491..b1f21155ae4a1e1597f10e13ebb4286636f6e2c9 100644 (file)
@@ -15,9 +15,9 @@
     <tbody>
         {% for doc in docs|from_course_type:type|from_doc_type:doc_type|from_periods:period|published %}
         <tr>
-        <td {% if forloop.first %}class="border-top"{% endif %} width="60%">{% if doc.file %}<a href="{% url teleforma-document-view doc.id %}" target="_blank" title="{% trans "View" %}"><img src="/static//teleforma/images/application-msword.png" style="vertical-align:middle" alt="" />{% endif %} {{ doc.title }}{% if doc.file %}</a>{% endif %}</td>
+        <td {% if forloop.first %}class="border-top"{% endif %} width="60%">{% if doc.file %}<a href="{% url 'teleforma-document-view' doc.id %}" target="_blank" title="{% trans "View" %}"><img src="/static//teleforma/images/application-msword.png" style="vertical-align:middle" alt="" />{% endif %} {{ doc.title }}{% if doc.file %}</a>{% endif %}</td>
         <td {% if forloop.first %}class="border-top"{% endif %} width="35%">{{ doc.date_added }}</td>
-        <td {% if forloop.first %}class="border-top"{% endif %} width="5%" align="center">{% if doc.file %}<a href="{% url teleforma-document-download doc.id %}"><img src="/static/teleforma/images/download.png" style="vertical-align:middle" alt="" title="{% trans "Download" %}" /></a>{% endif %}</td>
+        <td {% if forloop.first %}class="border-top"{% endif %} width="5%" align="center">{% if doc.file %}<a href="{% url 'teleforma-document-download' doc.id %}"><img src="/static/teleforma/images/download.png" style="vertical-align:middle" alt="" title="{% trans "Download" %}" /></a>{% endif %}</td>
         </tr>
     {% endfor %}
     </tbody>
index 4826e3e47394fe60bce266cbf6668b9e792d2e1d..b83a75561515e24eaa039815837508fb1d84990b 100644 (file)
@@ -32,7 +32,7 @@
                     <dt>{% trans "Title" %}</dt><dd>{{ media.conference.course.title }}</dd>
                     <dt>{% trans "Session" %}</dt><dd>{{ media.conference.session }}</dd>
                     {% if media.conference.professor %}
-                    <dt>{% trans "Professor" %}</dt><dd><a href="{% url teleforma-profile-detail media.conference.professor.user.username %}" target="_blank">{{ media.conference.professor }}</a></dd>
+                    <dt>{% trans "Professor" %}</dt><dd><a href="{% url 'teleforma-profile-detail' media.conference.professor.user.username %}" target="_blank">{{ media.conference.professor }}</a></dd>
                     {% endif %}
                     <dt>{% trans "Begin" %}</dt><dd>{{ media.conference.date_begin }}</dd>
                     {% if media.conference.comment %}
index 1c8a43efe7902b674fade810a9b5745a477839f0..7f4692d4d9cf9ba9c001c966aca2c31e99d52d45 100644 (file)
@@ -7,13 +7,13 @@
         <ul class="actions">
                {% if newsitem.can_edit %}
                <li>
-                       <a href="{% url newsitem-update pk=newsitem.id %}?period_id={{ period_id }}"><img src="{% static 'teleforma/images/pencil-edit-button.png' %}" alt="éditer"/>
+                       <a href="{% url 'newsitem-update' pk=newsitem.id %}?period_id={{ period_id }}"><img src="{% static 'teleforma/images/pencil-edit-button.png' %}" alt="éditer"/>
 </a>
                </li>
                {% endif %}
                {% if newsitem.can_delete %}
                <li>
-                       <a href="{% url newsitem-delete pk=newsitem.id %}?period_id={{ period_id }}"><img src="{% static 'teleforma/images/rubbish-bin-delete-button.png' %}" alt="supprimer"/></a>
+                       <a href="{% url 'newsitem-delete' pk=newsitem.id %}?period_id={{ period_id }}"><img src="{% static 'teleforma/images/rubbish-bin-delete-button.png' %}" alt="supprimer"/></a>
                </li>
                {% endif %}
         </ul>          
index f5beb44a07f522a71a8ec2ccb9630fa6ab1181fd..f42048069ffa719a10a054c2f29c80eeb7722c85 100644 (file)
@@ -6,10 +6,10 @@
     <h3><img src="{% static 'teleforma/images/actus.png' %}" alt="actualités"/>Actualités</h3>
     <ul>
         <li><a href="#news_local">{% if course.title_tweeter %}{{ course.title_tweeter }}{% else %}{{ course.title }}{% endif %}</a>
-            {% if can_add %}<a href="{% url newsitem-create %}?course_id={{course.id}}&period_id={{period_id}}">+</a>{% endif %}
+            {% if can_add %}<a href="{% url 'newsitem-create' %}?course_id={{course.id}}&period_id={{period_id}}">+</a>{% endif %}
         </li>
         <li><a href="#news_global">Générales</a>
-            {% if can_add %}<a href="{% url newsitem-create %}?period_id={{period_id}}">+</a>{% endif %}
+            {% if can_add %}<a href="{% url 'newsitem-create' %}?period_id={{period_id}}">+</a>{% endif %}
         </li>
     </ul>
     <div id="news_local">
index 6f50d651bbb2cc756addad44573252e25573d859..0f0b03ada710feb63b50cffc8d98b88c1d2cbd2b 100644 (file)
@@ -25,8 +25,8 @@
     <tbody id="spacing">
     {% for user in page.object_list %}
     <tr>
-     <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>
+     <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 %}
index d5e0c68b9161eeb7b61cf1424e64a26c9c5212de..99c989727b53292e22d57c7e0f80eebcd62aaa24 100644 (file)
         <div class="pagination">
             <span class="page-links">
                 {% if page_obj.has_previous %}
-                    <a href="{% url newsitem-list period_id=period_id %}?page={{ page_obj.previous_page_number }}&course_id={{ course_id }}">Précédent</a>
+                    <a href="{% url 'newsitem-list' period_id=period_id %}?page={{ page_obj.previous_page_number }}&course_id={{ course_id }}">Précédent</a>
                 {% endif %}
                 <span class="page-current">
                     Page {{ page_obj.number }} sur {{ page_obj.paginator.num_pages }}
                 </span>
                 {% if page_obj.has_next %}
-                    <a href="{% url newsitem-list period_id=period_id %}?page={{ page_obj.next_page_number }}&course_id={{ course_id }}">Suivant</a>
+                    <a href="{% url 'newsitem-list' period_id=period_id %}?page={{ page_obj.next_page_number }}&course_id={{ course_id }}">Suivant</a>
                 {% endif %}
             </span>
         </div>
index da83fa788df003afe46efb678db3a535691190ff..640ae7638433e1f81cdc8b56a8adc5effafad3c7 100644 (file)
@@ -48,7 +48,7 @@
     {% 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>
+        <a href="{% url 'teleforma-user-login' usr.id %}" class="component_icon button icon_login">{% trans "Login as" %}</a>
     {%  endif %}
     </div>
 
index 6e8ef116c7e1472503c0b69c204f8a64242e75e8..a81e32a8d089fa9a60328417317965639471e242 100644 (file)
@@ -31,7 +31,7 @@ function update_period(source, from_field, to_field) {
 }
 
 $(document).ready(function () {
-    $('#location').autocomplete('{% url telemeta-complete-location %}', {
+    $('#location').autocomplete('{% url 'telemeta-complete-location' %}', {
         max: 20,
         formatResult: function(data) {
             return data[0].replace(/ *\([0-9]+.*\) *$/, '');
@@ -74,7 +74,7 @@ $(document).ready(function () {
 <div class="course">
 <h1>{% trans "Advanced Search" %}</h1>
 
-<form action="{% url telemeta-search %}" id="searchform">{% csrf_token %}
+<form action="{% url 'telemeta-search' %}" id="searchform">{% csrf_token %}
 <fieldset>
 
     <p>
index 6f744f68e7cbc1448570efc3767b4fe35f4f3bcf..a9953fc569959db408addfe2f64216f82b56ff29 100644 (file)
@@ -16,7 +16,7 @@
 <ul>
 {% block trainings %}
 {% for t in trainings %}
-<li><a href="{% url teleforma-users t.id iej.id course.id %}">{{ t.code|lower|capfirst }} - {{ t.period|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>
@@ -29,7 +29,7 @@
 <ul>
 {% block iej %}
 {% for i in iejs %}
-<li><a href="{% url teleforma-users training.id i.id course.id %}">{{ i.name|lower|capfirst }}</a></li>
+<li><a href="{% url 'teleforma-users' training.id i.id course.id %}">{{ i.name|lower|capfirst }}</a></li>
 {% endfor %}
 {% endblock iej %}
 </ul>
@@ -42,7 +42,7 @@
 <ul>
 {% block courses %}
 {% for c in courses %}
-<li><a href="{% url teleforma-users training.id iej.id c.id %}">{{ c }}</a></li>
+<li><a href="{% url 'teleforma-users' training.id iej.id c.id %}">{{ c }}</a></li>
 {% endfor %}
 {% endblock courses %}
 </ul>
@@ -61,7 +61,7 @@
 
 {% 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>
+<a href="{% url 'teleforma-users'-export training.id iej.id course.id %}" class="component_icon button icon_csv">XLS Export</a>
 </div>
 {% endif %}
 
index 378acf7f021d135c0a1aa6e32725489fcd61c8fb..386fc5af2410c56b06c6a00d7997197c912c972f 100644 (file)
@@ -167,8 +167,8 @@ alt="logo" />
     </ul>
  </li>
  {% else %}
- <li><a href="{% url telemeta-profile-detail user.username %}" class="darkblue">{% trans "Profile" %}</a></li>
- <li><a href="{% url telemeta-logout %}" class="black">{% trans "Sign out" %}</a></li>
+ <li><a href="{% url 'telemeta-profile-detail' user.username %}" class="darkblue">{% trans "Profile" %}</a></li>
+ <li><a href="{% url 'telemeta-logout' %}" class="black">{% trans "Sign out" %}</a></li>
  {% endif %}
 
  {% endif %}
index 25cb62a931100147aa6268e9c2a3515b09fec625..aaa18ac926d6d10f9718f2875f2479896786d2bf 100644 (file)
@@ -43,7 +43,7 @@ from django.contrib.auth.models import User
 from django.db.models.query_utils import Q
 from django.shortcuts import get_object_or_404
 from django.urls.base import reverse
-from django.utils.encoding import force_text, smart_str
+from django.utils.encoding import force_str, smart_str
 from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext_lazy as _
 from docutils.core import publish_parts
@@ -419,7 +419,7 @@ def render_flatpage(content):
 
     parts = publish_parts(source=smart_str(
         parsed), writer_name="html4css1", settings_overrides={})
-    return mark_safe('<div class="rst-content">\n' + force_text(parts["html_body"]) + '</div>')
+    return mark_safe('<div class="rst-content">\n' + force_str(parts["html_body"]) + '</div>')
 
 
 render_flatpage.is_safe = True
index a644ea547b5f429facb4bb8df8838faf06bfeef7..b471edd365118ea5919781e55554beb363355d59 100644 (file)
@@ -125,9 +125,6 @@ urlpatterns = [
                url(r'^accounts/password_reset_complete/$', PasswordResetCompleteView.as_view(
                    template_name='registration/password_reset_complete.html'), name="teleforma-password-reset-complete"),
 
-
-               url(r'^captcha/', include('captcha.urls')),
-
                # Help
                url(r'^help/$', HelpView.as_view(), name="teleforma-help"),
 
@@ -188,10 +185,6 @@ urlpatterns = [
     url(r'^desk/periods/(?P<period_id>.*)/conferences/(?P<pk>.*)/audio/$',
         ConferenceView.as_view(template_name="teleforma/course_conference_audio.html"),
         name="teleforma-conference-audio"),
-    url(r'^desk/conference_record/$', ConferenceRecordView.as_view(),
-        name="teleforma-conference-record"),
-    url(r'^desk/bbbconference_record/$', BBBConferenceRecordView.as_view(),
-        name="teleforma-bbbconference-record"),
     url(r'^desk/periods/(?P<period_id>.*)/conferences/list/$', ConferenceListView.as_view(),
         name="teleforma-conferences"),
 
index 31d416869f5a598b493b7a2380a132e894daeaff..548d8bc41910686d5e7db8b13ff2c9b5e119a5ee 100644 (file)
@@ -42,12 +42,13 @@ from teleforma.utils import guess_mimetypes
 
 from jsonrpc import jsonrpc_method
 
+import weasyprint
 from django.utils.decorators import method_decorator
 from django.contrib.auth import authenticate, login, get_backends
 from django.template import RequestContext, loader, Context
 from django import template
-from django.http import HttpResponse, HttpResponseRedirect, Http404
-from django.shortcuts import render_to_response, redirect, get_object_or_404
+from django.http import FileResponse, HttpResponse, HttpResponseRedirect, Http404
+from django.shortcuts import render, redirect, get_object_or_404
 from django.views.generic import *
 from django.views.generic.base import *
 from django.conf import settings
@@ -78,15 +79,13 @@ from teleforma.models.crfpa import Home
 import pages
 from xlwt import Workbook
 
-from cgi import escape
-from cStringIO import StringIO
-from xhtml2pdf import pisa
+from html import escape
 
 from ..decorators import access_required
 from ..models.appointment import Appointment, AppointmentPeriod
 from ..models.core import (Conference, Course, CourseType, Department,
                            Document, DocumentType, Media, MediaTranscoded,
-                           Organization, Period, Professor, WebClassGroup,
+                           Organization, Period, Professor,
                            get_user_role)
 from ..webclass.models import Webclass, WebclassRecord
 from .pages import get_page_content
@@ -205,15 +204,15 @@ def get_default_period(periods):
     else:
         return Period.objects.get(id=getattr(settings, 'TELEFORMA_PERIOD_DEFAULT_ID', 1))
 
-
 def content_to_pdf(content, dest, encoding='utf-8', **kwargs):
     """
     Write into *dest* file object the given html *content*.
     Return True if the operation completed successfully.
     """
-    src = BytesIO(content.encode(encoding))
-    pdf = pisa.pisaDocument(src, dest, encoding=encoding, **kwargs)
-    return not pdf.err
+    src = weasyprint.HTML(string=content, encoding=encoding)
+    src.write_pdf(dest)
+    return True
+
 
 
 def content_to_response(content, filename=None):
@@ -316,8 +315,7 @@ def serve_media(media_path, content_type="", buffering=True, streaming=False):
                                  buffering=buffering, streaming=streaming)
     else:
         try:
-            pass
-            #response = FileResponse(open(media_path, 'rb'))
+            response = FileResponse(open(media_path, 'rb'))
         except:    
             response = StreamingHttpResponse(stream_from_file(media_path), content_type=content_type)
         filename = os.path.basename(media_path)
@@ -608,8 +606,6 @@ class MediaView(CourseAccessMixin, DetailView):
             app_label="teleforma", model="course")
 
         room_name = media.course.code
-        if media.conference.web_class_group:
-            room_name += '_' + media.conference.public_id
 
         context['room'] = get_room(name=room_name, period=context['period'].name,
                                    content_type=content_type,
@@ -672,8 +668,6 @@ class MediaTranscodedView(CourseAccessMixin, DetailView):
             app_label="teleforma", model="course")
 
         room_name = media.course.code
-        if media.conference.web_class_group:
-            room_name += '_' + media.conference.public_id
 
         context['room'] = get_room(name=room_name, period=context['period'].name,
                                    content_type=content_type,
@@ -780,8 +774,6 @@ class ConferenceView(CourseAccessMixin, DetailView):
             app_label="teleforma", model="course")
 
         room_name = conference.course.code
-        if conference.web_class_group:
-            room_name += '_' + conference.public_id
 
         context['room'] = get_room(name=room_name, period=context['period'].name,
                                    content_type=content_type,
@@ -870,10 +862,10 @@ class ConferenceMixin(FormView):
     model = Conference
     hidden_fields = ['started', 'date_begin', 'date_end', 'public_id', 'readers']
 
-class ConferenceRecordView(ConferenceMixin):
-    "Conference record form : TeleCaster module required"
-    form_class = ConferenceForm
-    template_name='teleforma/course_conference_record.html'
+class ConferenceRecordView(ConferenceMixin):
+    "Conference record form : TeleCaster module required"
+    form_class = ConferenceForm
+    template_name='teleforma/course_conference_record.html'
 
 #     def get_context_data(self, **kwargs):
 #         context = super(ConferenceRecordView, self).get_context_data(**kwargs)
@@ -1065,24 +1057,24 @@ class ProfessorListView(View):
             professor.save()
 
 
-class WebClassGroupView(View):
+class WebClassGroupView(View):
 
-    @jsonrpc_method('teleforma.get_class_group_list')
-    def get_class_group_list(request):
-        class_groups = WebClassGroup.objects.all()
-        return [w.to_json_dict() for w in class_groups]
+    @jsonrpc_method('teleforma.get_class_group_list')
+    def get_class_group_list(request):
+        class_groups = WebClassGroup.objects.all()
+        return [w.to_json_dict() for w in class_groups]
 
-    def pull(request, host=None):
-        if host:
-            url = 'http://' + host + '/json/'
-        else:
-            url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/'
-        s = ServiceProxy(url)
+    def pull(request, host=None):
+        if host:
+            url = 'http://' + host + '/json/'
+        else:
+            url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/'
+        s = ServiceProxy(url)
 
-        remote_list = s.teleforma.get_class_group_list()
-        for class_group_dict in remote_list['result']:
-            class_group, c = WebClassGroup.objects.get_or_create(
-                name=class_group_dict['name'])
+        remote_list = s.teleforma.get_class_group_list()
+        for class_group_dict in remote_list['result']:
+            class_group, c = WebClassGroup.objects.get_or_create(
+                name=class_group_dict['name'])
 
 
 class HelpView(TemplateView):
index 65a107ff4178c826de72c2cf297c20a8c690d7c4..87a2441f021d4099079e3b1e34bd963eb588354f 100644 (file)
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.3 on 2021-06-01 15:28
+# Generated by Django 3.2.13 on 2023-04-26 11:59
 
 from django.conf import settings
 from django.db import migrations, models