From d52025e78a03674e8fba314460fb65a0bd0519b7 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Tue, 17 Feb 2015 22:37:52 +0100 Subject: [PATCH] Student: add optional fees, discount fees and various profile data --- teleforma/admin.py | 19 +- teleforma/exam/admin.py | 5 +- teleforma/locale/fr/LC_MESSAGES/django.mo | Bin 12517 -> 12778 bytes teleforma/locale/fr/LC_MESSAGES/django.po | 93 +-- ...ount__add_field_student_application_fee.py | 570 ++++++++++++++++++ teleforma/models/crfpa.py | 59 +- 6 files changed, 702 insertions(+), 44 deletions(-) create mode 100644 teleforma/migrations/0072_auto__add_optionalfee__add_discount__add_field_student_application_fee.py diff --git a/teleforma/admin.py b/teleforma/admin.py index e65cd66f..02fa16de 100644 --- a/teleforma/admin.py +++ b/teleforma/admin.py @@ -6,9 +6,17 @@ from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin -class StudentPaymentInline(admin.StackedInline): +class PaymentInline(admin.StackedInline): model = Payment +class OptionalFeeInline(admin.StackedInline): + model = OptionalFee + extra = 1 + +class DiscountInline(admin.StackedInline): + model = Discount + extra = 1 + class CRFPAStudentProfileInline(admin.StackedInline): model = Student exclude = ['options'] @@ -22,9 +30,16 @@ class AEStudentProfileInline(admin.StackedInline): class StudentAdmin(admin.ModelAdmin): model = Student exclude = ['options'] - inlines = [StudentPaymentInline] + inlines = [PaymentInline, OptionalFeeInline, DiscountInline] search_fields = ['user__first_name', 'user__last_name', 'user__username'] list_filter = ['user__is_active'] + list_display = ['student_name', 'total_payments', 'total_fees', 'balance'] + + def student_name(self, instance): + return instance.user.last_name + ' ' + instance.user.first_name + + def balance(self, instance): + return instance.total_payments - instance.total_fees class ProfessorProfileInline(admin.StackedInline): model = Professor diff --git a/teleforma/exam/admin.py b/teleforma/exam/admin.py index a2b2373f..529d4cf9 100644 --- a/teleforma/exam/admin.py +++ b/teleforma/exam/admin.py @@ -26,13 +26,12 @@ class ScriptAdmin(admin.ModelAdmin): ordering = ['-date_added'] search_fields = ['author__username', 'author__last_name', 'corrector__username', 'corrector__last_name', 'course__title'] - readonly_fields = ('date_added','uuid','box_uuid','sha1','mime_type') - list_display = ('title', 'author_name') + readonly_fields = ['date_added','uuid','box_uuid','sha1','mime_type'] + list_display = ['title', 'author_name'] def author_name(self, instance): return instance.author.username - admin.site.register(Script, ScriptAdmin) admin.site.register(ScriptPage) admin.site.register(ScriptType) diff --git a/teleforma/locale/fr/LC_MESSAGES/django.mo b/teleforma/locale/fr/LC_MESSAGES/django.mo index c5937dd251cd0742de2b9c8b59853548e060a0c2..ca75b0c9e9ecb8fe3096ccc2576cf83f5094e79f 100644 GIT binary patch delta 5802 zcmZA52Ygo59meq!5=aOuVF^UY%if`2EQTTtRFEN{38F0o$sz<|f(e15z{`>XVh~Vd zstj4mj8JH>AR8=#$}CEmtqc_?Lss$ky!W5hPw&U){hoX7z32Szx$g*GNWPTnKUFd0 z9mf_D;bpcp7EtC@|+?2>Z*u6Wl7)fSZuo+%_zS`>+fiL;iE;cu|3OQRjy|;uTO9 zwOOz<3N=n`)YEH#TB+8k z^E;w$s0Zr27tybdBpQKdg*q|Y_J^a6k2WWv3YdX9ZvmFarKo~8SpR3J^Y&v2JYvU> zTmN~~^*>f){Rh(ci4IkoT-{r$9MlQJ%`vEoC!-1~KutUwb?3{lBCf*9xXq3qK`s4x z)Oc5H|0e2DJ*dw5YvOV>ya}SP3;RCQ9SuSaFbo4LVNSCC8K{+;i<)2|M&e4;BiMqv z?f~jdehhW~dDQur{WNsq4b&Z$jPfQ7N8MRP+pmVY(1%*uhNuEt+3|K}C)7ASP%D&( znmEOd=b*+NjvCKDiiS>{U?TUK#U7vy)Hw!7$??%#4g=5VE3>1JGUoRo(*iUWh{#*dBFWSJa#DdDM9W zQP<_73K@Cd)Ddr3e*XMsO4Xwb3sDam`E+|61Iro@HP!pa*J+dEc{{ia!uxRgi zWiuLeeG}A5Jb@~(9crG==vSrB(a?asQTyqrB_4#DFdKEj2-HO5Py-d9?r=8hbN)VR zqD6LmIkLEJz4aeLjeiui5+|d1{u+ZiAYrGwQtVsDcyCB-C{oKEHP$#}14@-RXGL08`EBs0n7FjxRtRUy7RGBh>MA zsDU?`+fe;`Q3V`Cy$MgC&b#ENp##@ZD{vq61rk=VhKF1iMgo@Hy&T{uSyGTrjVr z27HKPgJ{?BCZ1T=a~ihg_-t&6M^HBqTF*KDgz&pcG_(|r&6cRj<4}ckKo#%|>JAf8 z1*Dics6t1g1|DY?m~&CrEk#|o0b_AHhBLprO(TSk67{`_Ls1h)p!#c|E{sNf(=|g) z)E-q>chpk$vi_G)&v-Cu$w#8bn}WgkHtPD>7|Hx@i5j>OwGw+#D{#pAPoN&rWjlTk zRakHXuYfSrL={li*F;TJ-})P4DfU}ie>>anfPNk5LPKAP&!Ps(Kz@;3KC1Ep)P%E9 z?|}uVJ6>zYi%=8qvi<|se;hU5S=+ygTEV-h8>-Nd_16i}4ZUa7994N++mA;reNWWH zeQ_Y>pqBVJhT=t3q1RALdk*gC6PXBaN>b~!N*XAUPPUD6?Oeh)O*S`;~ymug1s;e2kP^`nT9H@ z)7%@N3F^*TqL#W1>X~=5D(R5r%zuZkKd8Z|&O)CBENE7BEJXcCsgTr7`cP{*gCu3v<@ZVmdi zL`5{@Zq&qIq9#6zTA3@T3vSrHYvC0ThAO-UYKeWQ>*}G#i$RSSXZ>BxUa0f?wP5`< zL5dw1g#0<@hN6~ox}7)+%dOJxmY&ZrJfsExna0kAX*pD$s`! z=&wsd6U3q>?1CyN5%nhOhpITsj=zGD?7xP31aG1Wnu98QA!?%KsKQobByLAN!o#TZ z&LMv;_}x?NX#0-zCi;xFA(M%=gC2ou^-T50#6;^8^{jmewF2MUzV7mdwOI_;hzzj( zKjU2D*XRET4T^Cyh`x%oC6YG-E$^iQTqOEyb`E)-Y#_-*ccZPy!yQHamh2@Rtgo2& zXxuN}k<9OwlM<}OH?G&Fx;dzROIq`=z^yne&$7o_zs`d+5Jlk_2azC+0-qW8kvB$s?kni6fF zlcxhM=l+KIq%zq>Ueo-MG`bOO3rITojds}d)BJ%NY#T`@qVET7e<2HrKHrzfJ)+GQ zcy+Ehwjgm;6N55dHtar8t(1Ck;pz`GNeKbS1wf?~*#? zE%F)3BTGmOSxH8c%|zRW9`5(plQb@V|K+eViu{XgA?3&e(vaLCpOW+BAt_HXNb&Xu zYdlumfkQ|%dDZ$}!Q&*993U%5Ke9vbw8J#MCZoxAQiWs^ZD%~(Ra``#u>I?}cILXu zQT{aR5iQ7<YlPjUg5>6WlDr5XZZ%Cr{@)ZUoA7FTvldk z^3cqjY_BV!W{u#el)Tj3%ppV5(_CJ@wf}oUrmsU#Xlq}qR&83v6|S#+y+qZ79V^oE zQ#FM9Uo)?8alPyk5uI|AGxK~oLv%DdJu9y;qG3YGhyj7#v~*uuPF`MSdTwEIv#G(A Sopm?N%=YHzn#C7d1pN#eo=t`T delta 5559 zcmZA53w%!Z9mny1Bytf^Nd*xk1QB%!ap_Q2cde>hg;kZLt)O*jg;Dh^E}3gvB}MDf zma4Ys(r1*KVWPIFs_UpqWm{arP)jqdTR-3D{IYrNy!y@ifBxrx{ zn2#otXStN;b@G&N!Sr*U<2G?*U#epoL|B)yo;e2R^77- zsy-GgVjZMkpG%@pnTqCS2Mpo7m)F2OhPrVGGB-B@qi{4v;uPdRH;W&d;9IEn>rfNe zXy<-ZzdKM1+Ko|+?+#EC6E%_17|Qr=90g4v+b-mw2FgWsI3G2UJk-QiqdMAv>S!}oML%k13Q+BjpxU2C zwJWys64cI=qE8KPT17}r?}kV-7BztcRJ$fv1=COy?qci+4N zg>z6lbfqTyuM1_?;4W&W;c?zXqEG|YK&`kD#$Z#dhMn#DAXJB$sQ$*<`6SdMnvU9; zg{c1D!rr(hj{Vn4E>fWmen4&6Z8NNvS09bqvN+TLi5QJ3sIBjSx~~uF!#o((J`>e` z465Brs0qwQjW^FnK`UEq70XaJu0d_-dej8-?fOo0AF88+s2w_j8o0==UqSU-hU)JY zs$ForH*gGUV!m1wv_(m%hH0pkv^TqX%!6?1|ZB)Rnr~&(3JnmF=rxE$HK>LfAP#js0o8FMvpK51EouS}q2BYJ zsCGk8^&?O_JqGnCvQZP6?W3TrS%eyB1!{}dpc=l1`dZCL-LMbU;a8}gIEk9*In)4` zP&-+Mst>K_wU0#gAB&oBJnBR3t4~2&-p1^Ly76($3F1{l4Sb@$=XcnV^9$G#8zy-R zNJqZ%T_$SfQ_URI{qs;0e*-mvmB<2pZY>2(;8SxKYNlVJcIJp#XqKRMrVMpo#Rkr` z#u(HN^h7OS0BYcL3_Jp>AA`DYJXX{DKb?XGT8x_6D%3MvhuY#Ts1EjGFdjs;KaBbg zIAdN#tvslqH*f^%dJO83G(cT%jUm_(1KQVN>c9lH?P$h$Eb)nUAyr=Y$A(oiev zW!HzG9?5g4iD%pSRMb|_MGc&XS-1f;UUV}1uL;B@ds~`>nrREv0IgA5*bOVKCF0Sc?47DA_JFHCv&!{z24E z^uSOYjGEw6s1CAFTRQ=@(pgrYhibpdT!(rTA7eOf!wB^4p`Z>9SVbYK;|r*jTr+Q> z-tX`x-qzQ}Y|h)ER3#fsAMD0j$bFY0Q>bwSO0tu*zw?yr1I}E)49Vn>d z?x+s?p*kFCj>W)xjp}f!)#o68g}DW&XS@N`ZWC6)eAJ`ejatBd)R)^)^F(u=zdAfc zg;rdIT5&0Ara>*diG`t_Z4Bz!#-j#IHQS&T(BABh8n_>7A?c`bMxy!|jk^EE7VN)f zG=&P?FwGj|pe8Wi8oqAld8mQjMs>Izb>C*xKwD4~+-2v-Q0)p)1D``ZimO&1u0M|&U@~gU=b|RC6gAP6sBzY!{;u$S zNI^I3#430Q)vyrx`gdK3j(-yU`8|w0NOFme10LQRK)F4cWp$#ymA^#oK>49XUeWun zgU9U}kxZR%_{s0cbaI%mTkbWYU%5K^k@e?q>#)Z+V(+2#|hFoP~wr{=T=^Zx5-V?pX3o8dIW5+ z%hLM4BEKc`ND?VOo-QxoV`Lv$a8KPy%6}zo?x`C?c{dqC^n53h-xGZn7L)Ph6iFdE zeEa#)Jy3M+&-fzI2W}7fHHjv@iH;Q{gZx4#95uXDfA%i?814xNS-3cNn^5!=qM#K$=`|Ig7V{&@&Ycor(9m_YlSCpM0q7% z)$`XQI7;+A{xM-$G!C#}fCB$&KHvWbq<~K96BL_(bGK$P5e;}PmPom=jc|1_^etZk9$xBwZ7QH!J1>E>w(LF->Co-9Q=v*y# ziNbeeFVRs%x{{Cl`(ks0{KIQRRPblVWrX-I)TtiquU)TmP*`eWtF-oMss4=m*DLtP XHhiIi|6+3givCBNEeKw6J@v-VkNN|F diff --git a/teleforma/locale/fr/LC_MESSAGES/django.po b/teleforma/locale/fr/LC_MESSAGES/django.po index ac4f4819..7986cf68 100644 --- a/teleforma/locale/fr/LC_MESSAGES/django.po +++ b/teleforma/locale/fr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-10 23:30+0100\n" +"POT-Creation-Date: 2015-02-17 22:29+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Guillaume Pellerin \n" "Language-Team: LANGUAGE \n" @@ -95,7 +95,7 @@ msgstr "correcteur" #: exam/models.py:123 exam/models.py:223 models/ae.py:47 models/core.py:111 #: models/core.py:136 models/core.py:254 models/core.py:501 models/core.py:547 -#: models/core.py:589 models/crfpa.py:64 models/crfpa.py:133 +#: models/core.py:589 models/crfpa.py:64 models/crfpa.py:129 msgid "period" msgstr "période" @@ -125,7 +125,7 @@ msgid "date added" msgstr "date d'ajout" #: exam/models.py:179 models/core.py:160 models/core.py:463 -#: models/crfpa.py:182 models/pro.py:68 +#: models/crfpa.py:203 models/pro.py:68 msgid "date modified" msgstr "date de modification" @@ -437,12 +437,12 @@ msgstr "" "NB: Ce message est émis par un automate. Ne faites pas de réponse, elle ne " "serait pas prise en compte." -#: models/ae.py:46 models/core.py:206 models/crfpa.py:108 models/crfpa.py:152 +#: models/ae.py:46 models/core.py:206 models/crfpa.py:109 models/crfpa.py:173 #: models/pro.py:101 models/pro.py:140 msgid "user" msgstr "utilisateur" -#: models/ae.py:49 models/crfpa.py:117 +#: models/ae.py:49 models/crfpa.py:131 msgid "platform only" msgstr "plateforme seulement" @@ -472,7 +472,8 @@ msgstr "Publié" #: models/core.py:94 models/core.py:107 models/core.py:129 models/core.py:142 #: models/core.py:157 models/core.py:239 models/core.py:394 models/core.py:460 -#: models/core.py:480 models/crfpa.py:48 models/pro.py:124 +#: models/core.py:480 models/crfpa.py:48 models/crfpa.py:217 +#: models/crfpa.py:230 models/pro.py:124 msgid "description" msgstr "description" @@ -604,7 +605,7 @@ msgstr "poids" msgid "document type" msgstr "type de document" -#: models/core.py:507 models/crfpa.py:111 +#: models/core.py:507 models/crfpa.py:110 msgid "iej" msgstr "iej" @@ -626,27 +627,27 @@ msgstr "fichier" msgid "IEJ" msgstr "IEJ" -#: models/crfpa.py:73 models/crfpa.py:119 +#: models/crfpa.py:73 models/crfpa.py:115 msgid "procedure" msgstr "procédure" -#: models/crfpa.py:76 models/crfpa.py:122 +#: models/crfpa.py:76 models/crfpa.py:118 msgid "written speciality" msgstr "spécialité écrit" -#: models/crfpa.py:79 models/crfpa.py:125 +#: models/crfpa.py:79 models/crfpa.py:121 msgid "oral speciality" msgstr "spécialité orale" -#: models/crfpa.py:82 models/crfpa.py:127 +#: models/crfpa.py:82 models/crfpa.py:123 msgid "oral 1" msgstr "" -#: models/crfpa.py:85 models/crfpa.py:129 +#: models/crfpa.py:85 models/crfpa.py:125 msgid "oral 2" msgstr "" -#: models/crfpa.py:88 models/crfpa.py:131 +#: models/crfpa.py:88 models/crfpa.py:127 msgid "options" msgstr "options" @@ -658,90 +659,114 @@ msgstr "coût" msgid "training" msgstr "formation" -#: models/crfpa.py:115 +#: models/crfpa.py:112 msgid "trainings" msgstr "formations" -#: models/crfpa.py:144 +#: models/crfpa.py:132 +msgid "application fees" +msgstr "frais de dossier" + +#: models/crfpa.py:134 +msgid "subscription fees" +msgstr "frais d'inscription" + +#: models/crfpa.py:135 +msgid "subscripted" +msgstr "inscrit" + +#: models/crfpa.py:165 msgid "Student" msgstr "Etudiant" -#: models/crfpa.py:145 +#: models/crfpa.py:166 msgid "Students" msgstr "Etudiants" -#: models/crfpa.py:153 templates/telemeta/profile_detail.html:77 +#: models/crfpa.py:174 templates/telemeta/profile_detail.html:77 msgid "Address" msgstr "Adresse" -#: models/crfpa.py:154 +#: models/crfpa.py:175 msgid "Postal code" msgstr "Code postal" -#: models/crfpa.py:155 +#: models/crfpa.py:176 msgid "City" msgstr "Ville" -#: models/crfpa.py:156 +#: models/crfpa.py:177 msgid "Country" msgstr "Pays" -#: models/crfpa.py:157 templates/telemeta/profile_detail.html:88 +#: models/crfpa.py:178 templates/telemeta/profile_detail.html:88 msgid "Language" msgstr "Langue" -#: models/crfpa.py:158 templates/telemeta/profile_detail.html:78 +#: models/crfpa.py:179 templates/telemeta/profile_detail.html:78 msgid "Telephone" msgstr "Téléphone" -#: models/crfpa.py:159 +#: models/crfpa.py:180 msgid "Expiration_date" msgstr "Date d'expiration" -#: models/crfpa.py:160 +#: models/crfpa.py:181 msgid "Password initialized" msgstr "Mot de passe initialisé" -#: models/crfpa.py:161 templates/telemeta/profile_detail.html:79 +#: models/crfpa.py:182 templates/telemeta/profile_detail.html:79 msgid "WiFi login" msgstr "" -#: models/crfpa.py:162 +#: models/crfpa.py:183 msgid "WiFi pass" msgstr "" -#: models/crfpa.py:166 +#: models/crfpa.py:187 msgid "profile" msgstr "profil" -#: models/crfpa.py:177 +#: models/crfpa.py:198 models/crfpa.py:215 models/crfpa.py:228 msgid "student" msgstr "étudiant" -#: models/crfpa.py:178 +#: models/crfpa.py:199 models/crfpa.py:216 models/crfpa.py:229 msgid "amount" msgstr "montant" -#: models/crfpa.py:179 +#: models/crfpa.py:200 msgid "month" msgstr "mois" -#: models/crfpa.py:180 +#: models/crfpa.py:201 msgid "collected" msgstr "encaissé" -#: models/crfpa.py:181 +#: models/crfpa.py:202 msgid "date created" msgstr "date de création" -#: models/crfpa.py:186 +#: models/crfpa.py:207 msgid "Payment" msgstr "Paiement" -#: models/crfpa.py:187 +#: models/crfpa.py:208 msgid "Payments" msgstr "Paiements" +#: models/crfpa.py:221 +msgid "Discount" +msgstr "Réduction" + +#: models/crfpa.py:222 +msgid "Discounts" +msgstr "Réductions" + +#: models/crfpa.py:234 models/crfpa.py:235 +msgid "Optional fees" +msgstr "Frais optionnels" + #: models/pro.py:47 msgid "price" msgstr "prix" diff --git a/teleforma/migrations/0072_auto__add_optionalfee__add_discount__add_field_student_application_fee.py b/teleforma/migrations/0072_auto__add_optionalfee__add_discount__add_field_student_application_fee.py new file mode 100644 index 00000000..27574547 --- /dev/null +++ b/teleforma/migrations/0072_auto__add_optionalfee__add_discount__add_field_student_application_fee.py @@ -0,0 +1,570 @@ +# -*- 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 'OptionalFee' + db.create_table('teleforma_optional_fees', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('student', self.gf('django.db.models.fields.related.ForeignKey')(related_name='optional_fees', to=orm['teleforma.Student'])), + ('value', self.gf('django.db.models.fields.FloatField')()), + ('description', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['OptionalFee']) + + # Adding model 'Discount' + db.create_table('teleforma_discounts', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('student', self.gf('django.db.models.fields.related.ForeignKey')(related_name='discounts', to=orm['teleforma.Student'])), + ('value', self.gf('django.db.models.fields.FloatField')()), + ('description', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['Discount']) + + # Adding field 'Student.application_fees' + db.add_column('teleforma_student', 'application_fees', + self.gf('telemeta.models.core.BooleanField')(default=False), + keep_default=False) + + # Adding field 'Student.subscription_fees' + db.add_column('teleforma_student', 'subscription_fees', + self.gf('telemeta.models.core.FloatField')(default=0, blank=True), + keep_default=False) + + # Adding field 'Student.subscribed' + db.add_column('teleforma_student', 'subscribed', + self.gf('telemeta.models.core.BooleanField')(default=False), + keep_default=False) + + + def backwards(self, orm): + # Deleting model 'OptionalFee' + db.delete_table('teleforma_optional_fees') + + # Deleting model 'Discount' + db.delete_table('teleforma_discounts') + + # Deleting field 'Student.application_fees' + db.delete_column('teleforma_student', 'application_fees') + + # Deleting field 'Student.subscription_fees' + db.delete_column('teleforma_student', 'subscription_fees') + + # Deleting field 'Student.subscribed' + db.delete_column('teleforma_student', 'subscribed') + + + 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'}) + }, + '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(2015, 2, 17, 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.aestudent': { + 'Meta': {'ordering': "['user__last_name']", 'object_name': 'AEStudent', 'db_table': "'teleforma_ae_student'"}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'period': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'ae_student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Period']"}), + 'platform_only': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'user': ('telemeta.models.core.ForeignKey', [], {'related_name': "'ae_student'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.conference': { + 'Meta': {'ordering': "['-date_begin']", 'object_name': 'Conference'}, + 'comment': ('teleforma.fields.ShortTextField', [], {'max_length': '255', 'blank': 'True'}), + 'course': ('telemeta.models.core.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}), + 'course_type': ('telemeta.models.core.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.CourseType']"}), + 'date_begin': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'date_end': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'department': ('telemeta.models.core.ForeignKey', [], {'related_name': "'conference'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Department']", 'blank': 'True', 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'conference'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}), + 'professor': ('telemeta.models.core.ForeignKey', [], {'related_name': "'conference'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Professor']", 'blank': 'True', 'null': 'True'}), + 'public_id': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'room': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'conference'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Room']"}), + 'session': ('telemeta.models.core.CharField', [], {'default': "'1'", 'max_length': '16', 'blank': 'True'}), + 'status': ('django.db.models.fields.IntegerField', [], {'default': '2'}) + }, + '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.coursetype': { + 'Meta': {'object_name': 'CourseType', 'db_table': "'teleforma_course_type'"}, + '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.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.discount': { + 'Meta': {'object_name': 'Discount', 'db_table': "'teleforma_discounts'"}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['teleforma.Student']"}), + 'value': ('django.db.models.fields.FloatField', [], {}) + }, + 'teleforma.document': { + 'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'}, + 'annal_year': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'conference': ('telemeta.models.core.ForeignKey', [], {'related_name': "'document'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Conference']", 'blank': 'True', 'null': 'True'}), + 'course': ('telemeta.models.core.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}), + 'course_type': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'date_added': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iej': ('telemeta.models.core.ForeignKey', [], {'related_name': "'document'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.IEJ']", 'blank': 'True', 'null': 'True'}), + 'is_annal': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'is_published': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'document'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}), + 'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'session': ('telemeta.models.core.CharField', [], {'default': "'1'", 'max_length': '16', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'type': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'document'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.DocumentType']"}), + 'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}) + }, + 'teleforma.documentsimple': { + 'Meta': {'ordering': "['-date_added']", 'object_name': 'DocumentSimple', 'db_table': "'teleforma_document_simple'"}, + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'date_added': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_published': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'document_simple'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}), + 'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'document_simple'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}) + }, + 'teleforma.documenttype': { + 'Meta': {'ordering': "['number']", 'object_name': 'DocumentType', 'db_table': "'teleforma_document_type'"}, + 'description': ('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'}), + 'number': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}) + }, + 'teleforma.iej': { + 'Meta': {'ordering': "['name']", 'object_name': 'IEJ'}, + '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.livestream': { + 'Meta': {'object_name': 'LiveStream', 'db_table': "'teleforma_live_stream'"}, + 'conference': ('telemeta.models.core.ForeignKey', [], {'related_name': "'livestream'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Conference']", 'blank': 'True', 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'server': ('telemeta.models.core.ForeignKey', [], {'related_name': "'livestream'", 'to': "orm['teleforma.StreamingServer']"}), + 'stream_type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'streaming': ('telemeta.models.core.BooleanField', [], {'default': 'False'}) + }, + 'teleforma.media': { + 'Meta': {'ordering': "['-conference__session', '-date_modified']", 'object_name': 'Media'}, + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'conference': ('telemeta.models.core.ForeignKey', [], {'related_name': "'media'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Conference']", 'blank': 'True', 'null': 'True'}), + 'course': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'media'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'course_type': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'media'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.CourseType']"}), + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'date_added': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'date_modified': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_published': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'media'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'media'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}), + 'readers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'weight': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}) + }, + 'teleforma.optionalfee': { + 'Meta': {'object_name': 'OptionalFee', 'db_table': "'teleforma_optional_fees'"}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'optional_fees'", 'to': "orm['teleforma.Student']"}), + 'value': ('django.db.models.fields.FloatField', [], {}) + }, + 'teleforma.organization': { + 'Meta': {'object_name': 'Organization'}, + 'description': ('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.payment': { + 'Meta': {'ordering': "['month']", 'object_name': 'Payment', 'db_table': "'teleforma_payments'"}, + 'collected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'month': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payments'", 'to': "orm['teleforma.Student']"}), + 'value': ('django.db.models.fields.FloatField', [], {}) + }, + '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'}) + }, + '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': ('telemeta.models.core.ForeignKey', [], {'related_name': "'professor'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Department']", 'blank': 'True', 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('telemeta.models.core.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.profile': { + 'Meta': {'object_name': 'Profile', 'db_table': "'teleforma_profiles'"}, + 'address': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'city': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'country': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'expiration_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'init_password': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'language': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'postal_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'telephone': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'user': ('telemeta.models.core.ForeignKey', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'wifi_login': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'wifi_pass': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.room': { + 'Meta': {'object_name': 'Room'}, + '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'}), + 'organization': ('telemeta.models.core.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.streamingserver': { + 'Meta': {'object_name': 'StreamingServer', 'db_table': "'teleforma_streaming_server'"}, + 'admin_password': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'host': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'port': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'source_password': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}) + }, + 'teleforma.student': { + 'Meta': {'ordering': "['user__last_name']", 'object_name': 'Student'}, + 'application_fees': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iej': ('telemeta.models.core.ForeignKey', [], {'related_name': "'student'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.IEJ']", 'blank': 'True', 'null': 'True'}), + 'options': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'options'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'oral_1': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'oral_1'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'oral_2': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'oral_2'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'oral_speciality': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'oral_speciality'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'period': ('telemeta.models.core.ForeignKey', [], {'related_name': "'student'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['teleforma.Period']", 'blank': 'True', 'null': 'True'}), + 'platform_only': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'procedure': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'procedure'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}), + 'subscribed': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'subscription_fees': ('telemeta.models.core.FloatField', [], {'default': '0', 'blank': 'True'}), + 'trainings': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'student_trainings'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Training']"}), + 'user': ('telemeta.models.core.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'written_speciality': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'written_speciality'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Course']"}) + }, + 'teleforma.training': { + 'Meta': {'object_name': 'Training'}, + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'cost': ('telemeta.models.core.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'magistral': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_magistral'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'obligation': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_obligation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'options': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_options'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'oral_1': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_1'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'oral_2': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_2'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'oral_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_oral_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'period': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'training'", 'null': 'True', 'blank': 'True', 'to': "orm['teleforma.Period']"}), + 'procedure': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_procedure'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'synthesis_note': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_synthesis_note'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}), + 'written_speciality': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training_written_speciality'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.CourseType']"}) + }, + 'telemeta.acquisitionmode': { + 'Meta': {'ordering': "['value']", 'object_name': 'AcquisitionMode', 'db_table': "'acquisition_modes'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.adconversion': { + 'Meta': {'ordering': "['value']", 'object_name': 'AdConversion', 'db_table': "'ad_conversions'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.ethnicgroup': { + 'Meta': {'ordering': "['value']", 'object_name': 'EthnicGroup', 'db_table': "'ethnic_groups'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.genericstyle': { + 'Meta': {'ordering': "['value']", 'object_name': 'GenericStyle', 'db_table': "'generic_styles'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.language': { + 'Meta': {'ordering': "['name']", 'object_name': 'Language', 'db_table': "'languages'"}, + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identifier': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'part1': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + 'part2B': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'part2T': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'scope': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + 'type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}) + }, + 'telemeta.legalright': { + 'Meta': {'ordering': "['value']", 'object_name': 'LegalRight', 'db_table': "'legal_rights'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.location': { + 'Meta': {'ordering': "['name']", 'object_name': 'Location', 'db_table': "'locations'"}, + 'complete_type': ('telemeta.models.core.ForeignKey', [], {'related_name': "'locations'", 'to': "orm['telemeta.LocationType']"}), + 'current_location': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'past_names'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Location']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_authoritative': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'latitude': ('telemeta.models.core.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'longitude': ('telemeta.models.core.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '150'}), + 'type': ('telemeta.models.core.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}) + }, + 'telemeta.locationtype': { + 'Meta': {'ordering': "['name']", 'object_name': 'LocationType', 'db_table': "'location_types'"}, + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'max_length': '150'}) + }, + 'telemeta.mediacollection': { + 'Meta': {'ordering': "['code']", 'object_name': 'MediaCollection', 'db_table': "'media_collections'"}, + 'a_informer_07_03': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'acquisition_mode': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AcquisitionMode']"}), + 'ad_conversion': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AdConversion']"}), + 'alt_ids': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'alt_title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'approx_duration': ('telemeta.models.core.DurationField', [], {'default': "'0'", 'blank': 'True'}), + 'auto_period_access': ('telemeta.models.core.BooleanField', [], {'default': 'True'}), + 'booklet_author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'booklet_description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'cnrs_contributor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}), + 'collector': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'collector_is_creator': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'conservation_site': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'creator': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'doctype_code': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'external_references': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_published': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'items_done': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'legal_rights': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.LegalRight']"}), + 'metadata_author': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataAuthor']"}), + 'metadata_writer': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataWriter']"}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'physical_format': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PhysicalFormat']"}), + 'physical_items_num': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'publisher': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Publisher']"}), + 'publisher_collection': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublisherCollection']"}), + 'publisher_serial': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'publishing_status': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublishingStatus']"}), + 'recorded_from_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'recorded_to_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'recording_context': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.RecordingContext']"}), + 'reference': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'state': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'travail': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'year_published': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}) + }, + 'telemeta.mediaitem': { + 'Meta': {'object_name': 'MediaItem', 'db_table': "'media_items'"}, + 'alt_title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'approx_duration': ('telemeta.models.core.DurationField', [], {'default': "'0'", 'blank': 'True'}), + 'author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'auto_period_access': ('telemeta.models.core.BooleanField', [], {'default': 'True'}), + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'unique': 'True', 'max_length': '250', 'blank': 'True'}), + 'collection': ('telemeta.models.core.ForeignKey', [], {'related_name': "'items'", 'to': "orm['telemeta.MediaCollection']"}), + 'collector': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'collector_from_collection': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'collector_selection': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'context_comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'contributor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'copied_from_item': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'copies'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'creator_reference': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'cultural_area': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'depositor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'digitalist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'digitization_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'ethnic_group': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.EthnicGroup']"}), + 'external_references': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}), + 'generic_style': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.GenericStyle']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'language_iso': ('telemeta.models.core.ForeignKey', [], {'related_name': "'items'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['telemeta.Language']", 'blank': 'True', 'null': 'True'}), + 'location': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Location']", 'null': 'True', 'blank': 'True'}), + 'location_comment': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'mimetype': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'moda_execut': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'organization': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Organization']", 'null': 'True', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'publishing_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recorded_from_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recorded_to_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recordist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'rights': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Rights']", 'null': 'True', 'blank': 'True'}), + 'scientist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'summary': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'topic': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Topic']", 'null': 'True', 'blank': 'True'}), + 'track': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '512', 'blank': 'True'}), + 'vernacular_style': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.VernacularStyle']"}) + }, + 'telemeta.metadataauthor': { + 'Meta': {'ordering': "['value']", 'object_name': 'MetadataAuthor', 'db_table': "'metadata_authors'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.metadatawriter': { + 'Meta': {'ordering': "['value']", 'object_name': 'MetadataWriter', 'db_table': "'metadata_writers'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.organization': { + 'Meta': {'ordering': "['value']", 'object_name': 'Organization', 'db_table': "'organization'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.physicalformat': { + 'Meta': {'ordering': "['value']", 'object_name': 'PhysicalFormat', 'db_table': "'physical_formats'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.publisher': { + 'Meta': {'ordering': "['value']", 'object_name': 'Publisher', 'db_table': "'publishers'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.publishercollection': { + 'Meta': {'ordering': "['value']", 'object_name': 'PublisherCollection', 'db_table': "'publisher_collections'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'publisher': ('telemeta.models.core.ForeignKey', [], {'related_name': "'publisher_collections'", 'to': "orm['telemeta.Publisher']"}), + 'value': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.publishingstatus': { + 'Meta': {'ordering': "['value']", 'object_name': 'PublishingStatus', 'db_table': "'publishing_status'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.recordingcontext': { + 'Meta': {'ordering': "['value']", 'object_name': 'RecordingContext', 'db_table': "'recording_contexts'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.rights': { + 'Meta': {'ordering': "['value']", 'object_name': 'Rights', 'db_table': "'rights'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.topic': { + 'Meta': {'ordering': "['value']", 'object_name': 'Topic', 'db_table': "'topic'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.vernacularstyle': { + 'Meta': {'ordering': "['value']", 'object_name': 'VernacularStyle', 'db_table': "'vernacular_styles'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + } + } + + complete_apps = ['teleforma'] \ No newline at end of file diff --git a/teleforma/models/crfpa.py b/teleforma/models/crfpa.py index 250fc2d4..6abfe14d 100644 --- a/teleforma/models/crfpa.py +++ b/teleforma/models/crfpa.py @@ -104,17 +104,13 @@ class Training(Model): class Student(Model): + "A student profile" user = ForeignKey(User, related_name='student', verbose_name=_('user'), unique=True) - #period = ManyToManyField('Period', related_name='student', verbose_name=_('period'), - # blank=True, null=True) iej = ForeignKey('IEJ', related_name='student', verbose_name=_('iej'), blank=True, null=True, on_delete=models.SET_NULL) - #training = ForeignKey('Training', related_name='student', verbose_name=_('training'), - # blank=True, null=True, on_delete=models.SET_NULL) trainings = ManyToManyField('Training', related_name='student_trainings', verbose_name=_('trainings'), blank=True, null=True) - platform_only = BooleanField(_('platform only')) procedure = ForeignKey('Course', related_name="procedure", verbose_name=_('procedure'), blank=True, null=True) @@ -132,6 +128,11 @@ class Student(Model): blank=True, null=True) period = ForeignKey('Period', related_name='student', verbose_name=_('period'), blank=True, null=True, on_delete=models.SET_NULL) + platform_only = BooleanField(_('platform only')) + application_fees = BooleanField(_('application fees')) + default_application_fees = 40 + subscription_fees = FloatField(_('subscription fees')) + subscribed = BooleanField(_('subscribed')) def __unicode__(self): try: @@ -139,6 +140,26 @@ class Student(Model): except: return '' + @property + def total_fees(self): + amount = 0 + if self.subscription_fees: + amount += self.subscription_fees + if self.application_fees: + amount += self.default_application_fees + for optional_fee in self.optional_fees.all(): + amount += optional_fee.value + for discount in self.discounts.all(): + amount -= discount.value + return amount + + @property + def total_payments(self): + amount = 0 + for payment in self.payments.all(): + amount += payment.value + return amount + class Meta(MetaCore): db_table = app_label + '_' + 'student' verbose_name = _('Student') @@ -185,4 +206,32 @@ class Payment(models.Model): db_table = app_label + '_' + 'payments' verbose_name = _("Payment") verbose_name_plural = _("Payments") + ordering = ['month'] + + +class Discount(models.Model): + "a discount for a student subscription" + + student = models.ForeignKey(Student, related_name='discounts', verbose_name=_('student')) + value = models.FloatField(_('amount'), help_text='€') + description = models.CharField(_('description'), max_length=255, blank=True) + + class Meta(MetaCore): + db_table = app_label + '_' + 'discounts' + verbose_name = _("Discount") + verbose_name_plural = _("Discounts") + + +class OptionalFee(models.Model): + "an optional fee for a student subscription" + + student = models.ForeignKey(Student, related_name='optional_fees', verbose_name=_('student')) + value = models.FloatField(_('amount'), help_text='€') + description = models.CharField(_('description'), max_length=255, blank=True) + + class Meta(MetaCore): + db_table = app_label + '_' + 'optional_fees' + verbose_name = _("Optional fees") + verbose_name_plural = _("Optional fees") + -- 2.39.5