From 82db8fcff1be6a76d654a20e0b5b6908ffecc156 Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 22 Mar 2012 15:50:56 +0100 Subject: [PATCH] fix student model and profile --- doc/teleforma-all.dot | 322 +++++++++---- doc/teleforma-all.pdf | Bin 107016 -> 107576 bytes doc/teleforma.dot | 306 +++++++----- doc/teleforma.pdf | Bin 89790 -> 90678 bytes example/settings.py | 1 + teleforma/admin.py | 22 +- teleforma/locale/fr/LC_MESSAGES/django.po | 148 ++++-- ...d_training__add_speciality__add_procedu.py | 437 ++++++++++++++++++ ...rittenspeciality__add_field_student_tra.py | 430 +++++++++++++++++ ...auto__del_teleformaprofile__add_profile.py | 385 +++++++++++++++ teleforma/models.py | 133 ++++-- 11 files changed, 1902 insertions(+), 282 deletions(-) create mode 100644 teleforma/migrations/0011_auto__add_writtenspeciality__add_training__add_speciality__add_procedu.py create mode 100644 teleforma/migrations/0012_auto__del_oralspeciality__del_writtenspeciality__add_field_student_tra.py create mode 100644 teleforma/migrations/0013_auto__del_teleformaprofile__add_profile.py diff --git a/doc/teleforma-all.dot b/doc/teleforma-all.dot index e3054f53..acfa0a80 100644 --- a/doc/teleforma-all.dot +++ b/doc/teleforma-all.dot @@ -1225,6 +1225,13 @@ digraph name { >DateField + init_password + BooleanField + >] @@ -2659,21 +2666,14 @@ digraph name { title - CharField - - descriptiontitle CharField mime_typedescription CharField >] - teleforma_models_IEJ [label=< + teleforma_models_Document [label=< + >Document
<MediaBase> + + + + + + + + + + + + + + + - -
IEJ
nametitle CharFieldCharField
descriptiondescriptionCharField
creditsCharField
is_publishedBooleanField
date_addedDateTimeField
date_modifiedDateTimeField
code CharField
- >] - - teleforma_models_Student [label=< - - - + +
Student
is_annalBooleanField
idfile AutoFieldFileField
>] - teleforma_models_Document [label=< + teleforma_models_Media [label=< + >Media
<MediaBase> - - - + + +
Document
<MediaBase>
titleCharField
descriptiontitle CharField
mime_typedescription CharField
codeis_live CharFieldBooleanField
+ >] + + teleforma_models_IEJ [label=< + + + + + +
IEJ
idAutoField
is_annalname BooleanFieldCharField
filedescription FileFieldCharField
>] - teleforma_models_Video [label=< + teleforma_models_Training [label=< + >Training + +
Video
<MediaBase>
titlename CharFieldCharField
+ >] + + teleforma_models_Procedure [label=< + + + + + +
Procedure
descriptionid CharFieldAutoField
mime_typename CharFieldCharField
+ >] + + teleforma_models_Speciality [label=< + + + + + + +
Speciality
creditsid CharFieldAutoField
is_publishedname BooleanFieldCharField
+ >] + + teleforma_models_Student [label=< + + + + + +
Student
idAutoField
date_addedoral_1 DateTimeFieldCharField
date_modifiedoral_2 DateTimeFieldCharField
>] - teleforma_models_Audio [label=< + teleforma_models_Profile [label=< + >Profile + + + + + +
Audio
<MediaBase>
titleaddress CharFieldTextField
descriptionpostal_code CharFieldCharField
mime_typecity CharFieldCharField
creditscountry CharFieldCharField
is_publishedlanguage BooleanFieldCharField
date_addedtelephone DateTimeFieldCharField
date_modifiedexpiration_date DateTimeFieldDateField
init_passwordBooleanField
+ >] + + + + + sorl_thumbnail_models_KVStore [label=< + + + + + + + + + @@ -3661,6 +3778,32 @@ digraph name { + + teleforma_models_Document -> teleforma_models_Course + [label="course (document)"] [arrowhead=none, arrowtail=dot]; + + + + + teleforma_models_Media -> teleforma_models_Conference + [label="conference (media)"] [arrowhead=none, arrowtail=dot]; + + + teleforma_models_Media -> telemeta_models_media_MediaItem + [label="item (media)"] [arrowhead=none, arrowtail=dot]; + + + + + + + teleforma_models_Training -> teleforma_models_Course + [label="courses (training)"] [arrowhead=dot arrowtail=dot, dir=both]; + + + + + @@ -3676,34 +3819,29 @@ digraph name { [label="iej (student)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Student -> teleforma_models_Course - [label="courses (student)"] [arrowhead=dot arrowtail=dot, dir=both]; - - - + teleforma_models_Student -> teleforma_models_Training + [label="training (student)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Document -> teleforma_models_Course - [label="course (document)"] [arrowhead=none, arrowtail=dot]; - + teleforma_models_Student -> teleforma_models_Procedure + [label="procedure (student)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Video -> teleforma_models_Course - [label="course (video)"] [arrowhead=none, arrowtail=dot]; + teleforma_models_Student -> teleforma_models_Speciality + [label="oral_speciality (student_oral_spe)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Video -> telemeta_models_media_MediaItem - [label="item (video)"] [arrowhead=none, arrowtail=dot]; + teleforma_models_Student -> teleforma_models_Speciality + [label="written_speciality (student_written_spe)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Audio -> teleforma_models_Course - [label="course (audio)"] [arrowhead=none, arrowtail=dot]; - + teleforma_models_Profile -> django_contrib_auth_models_User + [label="user (profile)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Audio -> telemeta_models_media_MediaItem - [label="item (audio)"] [arrowhead=none, arrowtail=dot]; + + diff --git a/doc/teleforma-all.pdf b/doc/teleforma-all.pdf index 6ec0ce17b80c53ee459e06c18d941fa69e5e25cf..bbaf71f96ccf0a5e4b7955911cc73c25c06d8bc4 100644 GIT binary patch delta 20140 zcmV)LK)Jt�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�myjyY(me=giy&ElHzuH`_cVc-wBRYEFLu0X6x;_cl^yV?6K_x zKg&)&%NnXZ3fR!RqS~sn%0yc6tT|Vd^a;zp%Ycl46cDH6&o;ypD$|9O5IsbHHS87D zNuP-zPcM>xw}3xp&G@I@h#T5+X}gRZMa|yQ*$|~<_T%qUCAUy1ap@fBnUFk3 zkrC?)W#V5fFrblf;qd{D`oRc6;)!<*D?vBPq|ZWsOyHX{b3Rj4xQjC?=HF1*MVqdE z#tX{#l{f(1*^yUegu}(`uY!qoXCHe!smOSbKP9*>8!SjV!}Dw{FeGC-MWZ;k#5x_@ z>^p}7^znq40a_>eBPux(ad=ar`$#I`ycu2rH5=?@o!!R+E|bQ9Q#vopaRtR=YgU>C zwB-(e4v1FI+553(Ty4z0gQwjn-ny85XShsuQs(SP7U22B#6~Y*Db~AX@B5$`0WK(Y zwoyxPMxx2~Kte}gqz{p1-}CGvd~Y@oBivv*Lz)-|SLjO{LchB^5u`+E^dT+s%r%^r zSDSdP?I~%?Sk;(#+Q6O@xQLP4gn%@4P63&J|Fi%Aw!!Szi3fBIfU$kDjB`pih|4E1 z9TFx3-w^Bpo_J+uC!WrqSDEW08c!BWj&leVFLrL zsVoQ>K!}k8hw`e<1&lqEs-0FHOSSD0iy2MOYM2Mi{yKS=<z9Iv>hozGi|jsZ`9N*WUCCC{Fkj!T8Vc8BTc8D=mS66sa(#QHYk0!5i zW$~b740`F4ZjJ4rYVYlhxmYGI8QAd`#WJyR?K*n;+J~7-{sD?)*n87|+NR>3B<8l2 zvUJO9*8-kGeny^~m%RF!goL1up}qFgbJa>-50BFJRpj}I9+T4?st zhGqq2(6VB)viDC%{Wa@-MEFqU4^%?E{AFJ{xyaY~@Wek?-}1{`b${rmuXS>fGYZ66jk5s9H`sM1ZO;L> z-8j;wad4-^!mm~&bp@kw$F_`uLX23p;d}zRb=vzRxaHftjhP9E| z!#}xwEcWLe;5X7hedmmQQgVux5aZ}LQADmt0ObUcWG=5%bR}b?fAeUr3hI(rFUcz0 zu6^27+t+-R<&DXN6_zV(c>JU;o|=`DrvQzi@cP}=r`~%wu_B#NTQ_mMmWW|w%;(S| zh7W+Ld|JM?5hHPbH6-`yI39O(?u_EG0NWg1CBXLHu*8&~8( zehKKAw8c*;JU5u)YP?Oa$qg?0i{F_)pH4bTfvS^icr)kQ;Ty z{!9qbJQb={-KZJWWcW8ZC+1@b(_Z4)1F?ihgXsDguP$t~D+zXm!`N)pE3k`4f5gpX zj)4!}X?uyV>Ah~K;6?=3+etZh$Cf>t9bSuwDM>I7aj7)LPPa*fTKC!0=6xF{myQwJ&R1QUz*Qh!o;j?JJOhGBK+w`PuXq&un^*Nj4Z06szMlTDz% zxL_QSdW+tc7P^GJQbN2T*A!$8!b-Pe#;blI3vIK7SNx++Pk=OpS|O zWmp=2nLhD@T}0(AbKfj?dvhOJXwLTBV`Cesyvb2R*w{|&lUl1Njl}RgJo!>z#7fhY$sdRbWxb=9bf z!Z_rZem{$yM+3cO2kqinbiW8)WNL|sR{gSn2nW~oOnlD7$Ba^-QE@aJCZ0Au6N0u$ z48thNnYglN7MyIIH26!DiBI$q%R4TBwa`jMOLv4N2-cmBK)WopKtpis{HKM8jCuZ| zT{aw2NslBBsRZa=TPYyyA#yU)Q(Vy7BBtz=B`{f=AOKe{T;+8dQ;D`me8n=aT|8QU z9D-=HS=!e))Rkq@j$^x+H6cRfCvJJ#t1#?Wyh4p22wf_gr|bo|s1|HB+FRyWS}EG^ z2nf@(H~^Q+sMne--N1wz+Ws(P+F52Jz1*C}mRi(ybz%3WdUqQW>Tw9ackxB*&F)7$ z^;?@A#eflqgCaPU!vn$C2d*$2IK0$<(9y|fE0;3hSQN|P9)-mN4AQbg#URiT5kyYO zt_NE}JTJ!-RUVHBF(8F8j)zGe$dM>>5Q)tssd7LpN5B>0JmO;+(_6S&`cUCzqu!io z#U5wR1%*|QhuiutA>(%{IJ*sERm3-Ugz0QiaqOD4as&Ab@^Ta?C5)%P!>Xe9#z$fNF z5~IM@`!=58LNwhQ2Mgdxe>U9g8_z6#%Nuh}D~8MTJJo$3a#`IQH1Z%S+dB;!pG6%VL?SAy8AX`(N$ zDt`3%=E0*isa8Zl+O5wpwkv*g|Hf2-xukEQM?ZYDe(#RfQgQrhF;q4ZBJaZakBJ9O zllW`O4A5$m_Td^HG`2}ZG7;2!NBRx4@Q8F2%d#E}gBnF#EA8v3q#mqBF>|K^{;Uf0 za~7pE!p3C_qVc*8*^c&qZEqA9&|f=~p_rToVQffGnKS;aO9)KD8*dhE1F~>@Vlnj&|n*-n+hiGV%tQ=dx*I;Oa zJTtCq0L0IL8(H6>u$o`s}{Ppm1CE_`A0 zQ`v--&8ak|xC41AZIY6g#mnMQ7sz@py~J)278*hT(g{};vL%AwYEJN`-y9eK!NiCH z&iDkXOTf4qc$@Rw8xP-#W?{gxm+gi2z2Q7>*61RPtPU1$sZ?Za2Ji@E5U)9xpN5^; zEvGG912MpVolqY#A>L6}s*G%pF#0@x-MIq#to>~fZ!lfY6NXx1SDLeDgD{R{5wKU$ z`NSR^w1HXi51L^3ZTdEz;rRXTjf1%Z(x1NFx7U5&z7)irFvDsX3B2{MAf1$xcEG^@ zUQJqUSIDPA(HP5l^$|r8n)-;TS2GEFch|^Ri6V1XV+fn!2!QFX&}5xXLYNjesgf`hC?Y2qa)B~hQ}ZV zW;q}Rtj9Z!FrxF!7PoT^=Wr^qt8y>%%G~L->c5s_^8d#G9lg`5dwD}s|jI`l?|RkaBP)^NbHR5lQM+ZpHq** z5D#iNre4+QZLznpSGMQ+8F;7(0&}K;R05uV#!)M-x^*;rTMQ~mb6_GoGAKgY1a#t| z2x|+ohC^e_Qw)dKN{))|x<{&%>H0qvdVi? zwp`paCJERhO3#|(Wup}!Rz#eFwFc`L(l&WjFqRU$V#JVNyjN#siKKzqn#0LEsV1G^ z5z6ia2&OO{ZHdy86X0OFnhI@2QyTbx@THMth|%ohyL-^k9)IsS>>IVsb%KF`n}+4t zZ1d36N$e5b(+4>>_r>95JKdTRjn+Lq#lA%pH#^a2cX4p6(O5w_v{;wL0xt@6&EygL zhYG~>)5qlcuq2tO(6g{tpzV2Vp9iFO@bDkw`&^Ofl>i2cQEaTL(l$z{icIf+YPzU> zvn~{K)NSD{OedfG>6Ri9k%<{;(r;@jveOLC;&(2c;1fFtltjM zGKXy)Z>za%)`7c#ph5ccHUv%8FJ$?8oQg*W@IEvi&7r_>J%_+a#Nd^G&U2KSc4%P3 zXv1!4?X*%#bKI`elyDkj;5azy-@%`*pZ1XJV3+U56OjNUO4tJ z!f=S#Y~-#%Vj*5*S`cC~j?n=xri z915^3^V)(}Hs*;sMpL(EL;iTGY zES<=x@xmS@D8S%$-&@`bN|ODVn5&)05;^m_)PD~Z8jnXTk|z z{}DO`{lKr76{Y|}loEsTTgHPybtCV&zNXg3o>7X8A*L9sDkU~;koc4vG>=utt2Uun zBN$0v(H9u;$3_mpr#tB!G+YBlFn|VWsvnP_)-aTRmX|Ve%PoC2q`aF6h>~rMP5G9zD z?M?N6N*p4FvxV1J)j2c1c~DYipf+)~ly>biuG+;t)4wq#sYXN{A92o9_BLWp=Rra> zK%mU_NfzM6Ee$LwF2 zUT#XL4q&*)q~}BP9(FW?ha^<`_FWR{YO-H{RYDE7HI`|)p8Fur-;(1UTxfY zX)k{5A49$`%1(Blzr0i5gHhyi7}rD^laQM!HZNbKukMx-Su3GJ@75h(rLT6+0{_l` zgzih1cglM_*2^)>2sDN(OYNH74hb|v;-&4Z$ItZHB&{lDowN(O97o3Y?TT{Ozj080 zk^VSLaKG=0a@W5xXK6F)d=Teu%F+f0@(^&?1u9;Hy(3O#qx1L1m%mfkJD%8C*t@$k zZB`=9zKhyFb=9YV@3M_=0DQ+Ni%$W* zOTkpoJC+&vnscK7!Y)^ET*Pu==udY5tjp*34$Gmc`u9#j)4fXH;|y%z+4ZscaqxOQ zwZ36MKtPZbU2aFNASfz#-^Mdl`LAyrR{hbRF*o~;#&mtl8&gMTNNl(OF8M2eDgWc4 z8Hc!q>xZUJ5y2vVjYBi=^5~hUhQG05-^-!-H&*Q5Sh1a|4G%;BTs;@yDA%NFa)L2m z`3T_rSg)Y`PXiK`cXIg4oS8OSF^5~2pzD=qTtS0#rP0I*sN+mLhPn5Yd&JsZ zMr3v(LaFs{L(I{! z#hBlxuq<}^MdBK=FRp_CEc2Nehca^<%g=I6tedNg$(6~G0Y%Fda8=c;6j{Fi_VP0aXs1 z1O8Up=T>@iD3KY$09pHDXfqcM49G$FMuA!DdA-qRDH~>gkw9lagKieFw)~Len1Z|9 zq_UxB26oYr!%!r_Lw)<%t|R*q{{g)&U%Qs)SyNnn;h?4(zzj*$m9bdvnfuLZ)uv}k z|Lu)AO;z#px2?P)u>I(Dqg$nVZ87OJc$P3|bWNysNA;Y5M9Yx7a9JX8Pb3kSJRg0v8I8H?qfrQfh>>(+mJV~YE5 zZSH6u4=}Ase?K}Y%N*TmiHr20i1I@?ojx71_q+;!;DMpv^9tsYUgyj`aV&NQcg*^= zRrMn*f^*HF6>ffkAL8nq>3$j!0pX0gl{MOoJzdu5T~?8eyxGpK-fiq5>?KlTEaP2t({a0WS@qpv)#Qh_O2czX2gC#grHxkO0iG^n6 z(wah~QY&(GDG!(Gjs4q)i${{uu1oz&jb3YixyZh$TiMF`^jzIY!@optQ*C9arne2R zaJ$8yx2$-x`ybqANx=s3jwlraGJ6ml?~PJhau#%6w$C`U1Fqk-v(qwD7iTV{1KZYRva)L@X}XzXT2ga(+Vzi~!? zM{ms&D^u?YAIwXwm`d1!UblU1rPiG*>c>+slalS&Q@O0%%s3V}R+kHNTfKc0LMgez zuB6Evjrz<(v%x2|r>DXRowmEIO>fJJKL*MCITj-tet1{xj0g0Q*qIFY-LtbprN=Ui zDb6IJ&2pK=*kTOu<}NPzVJQVRynVEP5?Qt<7o{2yn%PR9X=uh!yRJ{q6_+u<0W>#h z^9t_plPoR<{<@2l!e2>_JRrZ5r29Ur1<1JF4qyA_RC#Gi^8LPgOZe9o$f=Vf!Y2x{ ziK}RV%uqzy#}g`Sc`ic@xF#J>)_acO)EQ8k9$J8B_{iBR(;45`7IqGbB?GvBW(SEd zqE&zIkRUI;oy1Mt*^>6+IIKe?6CF8S6?L~!5|iQ1;1h)V(9<*+csGIZKs@Ul)I4}u z$h-4Vk|=wRpTwoAOOJ27EKj;O1r22MIZ)lsf!8N3p1*qOoM@&V6L@i{tK)F>_CZAz z)x464G7MDGaMEWQn)E>Fx;{OBrKlnYBiWn98W!Z7AyTOi?h0M7-zZ%P$Qob;BS^;4_@kbU0^pJF7GCLb zS$t2LSLzFY={15>&xTmZxC?!+k6ytFcA0^JNfGB-U_S-*0=PplXb!j19=OPf<~V}= zqevf3R#~k8MjxkzypFi4@^hN{~(nQlv;nnh1h)3=)b4kS2&U1*8fJf+$5ke7`^M!}IRhAA7Ey znQLbDoSpr#yLIfCSIdSQgWlVG1)|wJM4VH}fDlB5HSmz4%6rgW6dxDbrzA;qGb7R| zhyJW*Nu%V|AN;-DrO~~XgJikVa&KYwaxnAP&-sVt8T)9RYWv(GSE`$Pv$imej%4Wf zF4oXRYzAkWCDTcH$HoRz$1tF$dHtSbxTBN>$H(z}-;!=u)2|bm{;W1zS>Zhl0-_X? zc}Oz#Y672NSW`<%)Ncguj9S21k@X&5e->1@LdZ&6G=u)w_Ht=B2)eXopwV%idsw|H za3|r~8TTxmuE4U9?-RV*fg0YrK#3iERg|*egiq<^GnpDEe4NliL2uynZRToZ&fb8fJZACi6^v%@nS<~{A^GH6u z+jiC?KfZAexAqm%=$geAx27XI8NJ=Y)0Q*PH3TKu*OJAYa7j7Q*QV1r03kZVICfv6z=4qzr)!^ zbii3{1e4jHN3+Y0+mDshUb%uQPFV}kc-fh9ULm=U^11O;J`Y+jS^EC?-I&u~<+iON zd5pjB)Q-`$M%JEgBD(Jl(t$vlt{jk)VNpND8Tm-?6-`T^8Qvtn)!LOMxY3zG<11Y% zYuB5tSc8c`XO8UBCRU480IRtS{Z6{wLm}68heP0n8$eC~%`Ar>}R(~pMKJyuWZ98S@OE`{F|5IWVp@#m^HVXNp>tpl4xV%kMcg zJhxF;YL7onB8HB)iI#b5Qe+hG`1nkl-vssjE1#QlC9F-Ae{cr`wo#|Srvg=LSXZvN zjR9=$84@PQxU*DHFG`|z`scDluRlTfSL@z@J&IZ$lYOBraHMA4uJg70+DA9LI_4nUVONSYwZso}v7XFBWYHR0?AeLUY6t!1^ZFfTMvYW)Y_g9tV;I=&wIBNvC*9_X;F zE1F32a0VA_gF{eYDL7ZL#U(TJxMWf5r11FctwuntiO) zqXag#;z~(kd(*N8I)qv6Fh{=|1H>(@nys9lNJD0xdmt}32_u%?^aFdEqxnB!a@SeK zGOwrGTg;XX9z7Hs6z|ORtFgH}A9Q_`W7awlwiFp@w;uGidLkHD#qrx_pZO!Z7=E1ACWD!FU zcfL!YWSPPGwbQ1{DpD1h=41GjyU<@>tk4Yj-ER()=MWSl9?e-`PRT`HnPcSrsk8pk>L3kTBy53_WG#9BA!E{Nf;0<L9($WpK#EgvqG+kdc}z#@zPh9M+Eb}uHCVp-7M0)N7XAfI)xjNV z%}{C2qsr$M#;II5<@EKG`MY3>%ZYt7EeDV2E9)jeS|;mqga_)oPO^asT$+{#}nzwtU8W)kxni{O7Fr)dpsZ)6W1wx$;-T(kq&do zYg(*okjR1I_05WL@Dqd>yIXqh9r_!WuZ>BI6rAh-_y8+~S|cmj&NQ~7;Le75ZR>~j zu3Ztpi@s9B_(jYLrM6J0>U7b*AoMX<4y;3cAM#Ni*#ShI}r0;tU=znQEr zhaJm6dWJa=i&qczgoEL}*E7o2Xff)AQ9#v~!6`8g20!|R>~Wrq6LwrV^hWBW2&+%@ zmyjfmUq}_~SNR5)A?8 zx`UWtPw{kFr`|3IWB11Q7BB8Q48d8Y&d#x&9#@8~ASbSL93-M0pXnL(CUJj1NdsVS z=RJ_RQc4+)uj(7E9jgDil{90~@u9MrJb))j#SXT#S6kQ$P3k7XEiNpmJK6c;?8dm2 zEQ@1@sk$#uGHH=XB~QDg?};1pFFexvm2f!*Ha2hk z(pze1rjS!Zay_m`XjkKE?+^BQF5sbZG#ZG}I`5qQu%$p-rS(;66NgP-1EjBfY~j4$ zYi&o-JozgAlGa9_@g(QIj$R|sFU-?6{xbfV=GIvT1T4Toj6vaW-v4d>T@jxWJQY6h zU>B9J>^SN8_3uX|l?_|cCjIXANd)tcqmBL$v1<{T7jX|U!aC`L^|P61-~+|8=0?P? z!HM}zchYsFXui-A@UCLPBE;!ZV~g3FG7p?HT#tik#GDuwG<+3KAHt+5*#1(jA=`hl zV6Nq!hY$q^w?toP+L;V;HBg@V@SFTmL#xx|aL|g{HU9pwK>Jmha_0Ne3vC~}ZG2ei zJ~L&T2nR7{y=v(ON ziTv2TigB$Uvn0%h`tu-8<1F<{G42sR65ZqMtzEf|Ibm)_w`ksM`F{Z0ihtjU5)Dctum5Sp+ClmfI*cZFq8@+JkFp#&ftWm1vg4b2?G7wAUFuq ze+DoWBsy*G$q7jSiG&@SL!jYE=rQaFQa)w_21O$Nhg~%Mm>g6I3WXz%*+Za|;s4!N&P#Jk#5DisP`4>tEOw0|*a^f8hn5QYAiL8J;Stt#(?3DeQKF-b^VGP%t3 Ef6;z7;{X5v delta 19566 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 diff --git a/doc/teleforma.dot b/doc/teleforma.dot index e4385f74..b0bf87d1 100644 --- a/doc/teleforma.dot +++ b/doc/teleforma.dot @@ -24,21 +24,14 @@ digraph name { - - -
KVStore
keyCharField
valueTextField
titleCharField
descriptiontitle CharField
mime_typedescription CharField >] - teleforma_models_IEJ [label=< + teleforma_models_Document [label=< + >Document
<MediaBase> + + + + + + + + + + + + + + + - -
IEJ
nametitle CharFieldCharField
descriptiondescriptionCharField
creditsCharField
is_publishedBooleanField
date_addedDateTimeField
date_modifiedDateTimeField
code CharField
- >] - - teleforma_models_Student [label=< - - - + +
Student
is_annalBooleanField
idfile AutoFieldFileField
>] - teleforma_models_Document [label=< + teleforma_models_Media [label=< + >Media
<MediaBase> - - - + +
Document
<MediaBase>
titleCharField
descriptiontitle CharField
mime_typedescription CharField
codeis_live CharFieldBooleanField
+ >] + + teleforma_models_IEJ [label=< + + + + + + +
IEJ
is_annalid BooleanFieldAutoField
filename FileFieldCharField
descriptionCharField
>] - teleforma_models_Video [label=< + teleforma_models_Training [label=< + >Training + +
Video
<MediaBase>
titlename CharFieldCharField
+ >] + + teleforma_models_Procedure [label=< + + + + + +
Procedure
descriptionid CharFieldAutoField
mime_typename CharFieldCharField
+ >] + + teleforma_models_Speciality [label=< + + + + + +
Speciality
creditsid CharFieldAutoField
is_publishedname BooleanFieldCharField
+ >] + + teleforma_models_Student [label=< + + + + + + +
Student
date_addedid DateTimeFieldAutoField
date_modifiedoral_1 DateTimeFieldCharField
oral_2CharField
>] - teleforma_models_Audio [label=< + teleforma_models_Profile [label=< + >Profile + + + @@ -649,6 +731,40 @@ digraph name { + + teleforma_models_Document -> teleforma_models_Course + [label="course (document)"] [arrowhead=none, arrowtail=dot]; + + + + + teleforma_models_Media -> teleforma_models_Conference + [label="conference (media)"] [arrowhead=none, arrowtail=dot]; + + + telemeta_models_media_MediaItem [label=< +
Audio
<MediaBase>
titleaddress CharFieldTextField
descriptionpostal_code CharFieldCharField
mime_typecity CharFieldCharField
creditscountry CharFieldCharField
is_publishedlanguage BooleanFieldCharField
date_addedtelephone DateTimeFieldCharField
date_modifiedexpiration_date DateTimeFieldDateField
init_passwordBooleanField
+ +
MediaItem
+ >] + + teleforma_models_Media -> telemeta_models_media_MediaItem + [label="item (media)"] [arrowhead=none, arrowtail=dot]; + + + + + + + teleforma_models_Training -> teleforma_models_Course + [label="courses (training)"] [arrowhead=dot arrowtail=dot, dir=both]; + + + + + @@ -672,50 +788,34 @@ digraph name { [label="iej (student)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Student -> teleforma_models_Course - [label="courses (student)"] [arrowhead=dot arrowtail=dot, dir=both]; + teleforma_models_Student -> teleforma_models_Training + [label="training (student)"] [arrowhead=none, arrowtail=dot]; - + teleforma_models_Student -> teleforma_models_Procedure + [label="procedure (student)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Document -> teleforma_models_Course - [label="course (document)"] [arrowhead=none, arrowtail=dot]; - - + teleforma_models_Student -> teleforma_models_Speciality + [label="oral_speciality (student_oral_spe)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Video -> teleforma_models_Course - [label="course (video)"] [arrowhead=none, arrowtail=dot]; - - telemeta_models_media_MediaItem [label=< - - -
MediaItem
- >] - - teleforma_models_Video -> telemeta_models_media_MediaItem - [label="item (video)"] [arrowhead=none, arrowtail=dot]; + teleforma_models_Student -> teleforma_models_Speciality + [label="written_speciality (student_written_spe)"] [arrowhead=none, arrowtail=dot]; - teleforma_models_Audio -> teleforma_models_Course - [label="course (audio)"] [arrowhead=none, arrowtail=dot]; - - - telemeta_models_media_MediaItem [label=< + django_contrib_auth_models_User [label=< + >User
MediaItem
>] - teleforma_models_Audio -> telemeta_models_media_MediaItem - [label="item (audio)"] [arrowhead=none, arrowtail=dot]; + teleforma_models_Profile -> django_contrib_auth_models_User + [label="user (profile)"] [arrowhead=none, arrowtail=dot]; } diff --git a/doc/teleforma.pdf b/doc/teleforma.pdf index 0d1e45a8b86b36ed68161f9321dfd2a77f68d32c..8d1d5cc849d83864273254df0ff8a1984bcc2451 100644 GIT binary patch delta 52084 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�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 delta 51187 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 XA%NBAjk1wP$RGmA;&7I~osj((mZ5U* diff --git a/example/settings.py b/example/settings.py index 6bcb1051..e949fbe4 100644 --- a/example/settings.py +++ b/example/settings.py @@ -107,6 +107,7 @@ INSTALLED_APPS = ( 'south', 'teleforma', 'sorl.thumbnail', + 'django_extensions', ) TEMPLATE_CONTEXT_PROCESSORS = ( diff --git a/teleforma/admin.py b/teleforma/admin.py index 37aad145..2bfd9071 100644 --- a/teleforma/admin.py +++ b/teleforma/admin.py @@ -3,7 +3,6 @@ from teleforma.models import * from django.contrib import admin from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin -from telemeta.models.system import UserProfile admin.site.unregister(User) @@ -12,28 +11,39 @@ admin.site.unregister(User) class StudentProfileInline(admin.StackedInline): model = Student - filter_horizontal = ['courses'] class ProfessorProfileInline(admin.StackedInline): model = Professor filter_horizontal = ['courses'] -class UserProfileInline(admin.StackedInline): - model = UserProfile +class ProfileInline(admin.StackedInline): + model = Profile class UserProfileAdmin(UserAdmin): - inlines = [StudentProfileInline, ProfessorProfileInline, UserProfileInline] + inlines = [StudentProfileInline, ProfessorProfileInline, ProfileInline] + +class TrainingAdmin(admin.ModelAdmin): + model = Training + filter_horizontal = ['courses'] + +class CourseAdmin(admin.ModelAdmin): + model = Course + exclude = ['public_id'] admin.site.register(Organization) admin.site.register(Department) admin.site.register(Category) -admin.site.register(Course) +admin.site.register(Course, CourseAdmin) admin.site.register(Conference) admin.site.register(IEJ) admin.site.register(Document) admin.site.register(Media) admin.site.register(Room) admin.site.register(User, UserProfileAdmin) +admin.site.register(Training, TrainingAdmin) +admin.site.register(Procedure) +admin.site.register(Speciality) + diff --git a/teleforma/locale/fr/LC_MESSAGES/django.po b/teleforma/locale/fr/LC_MESSAGES/django.po index b2abb549..ef907707 100644 --- a/teleforma/locale/fr/LC_MESSAGES/django.po +++ b/teleforma/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-21 23:05+0100\n" +"POT-Creation-Date: 2012-03-22 15:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,119 +18,180 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" -#: models.py:62 models.py:74 models.py:88 models.py:133 models.py:169 +#: models.py:61 models.py:73 models.py:87 models.py:132 models.py:244 +#: models.py:258 models.py:272 models.py:284 models.py:295 models.py:310 msgid "name" msgstr "nom" -#: models.py:63 models.py:75 models.py:89 models.py:104 models.py:134 -#: models.py:147 models.py:170 models.py:201 +#: models.py:62 models.py:74 models.py:88 models.py:103 models.py:133 +#: models.py:146 models.py:170 models.py:245 msgid "description" msgstr "description" -#: models.py:70 models.py:76 models.py:132 +#: models.py:69 models.py:75 models.py:131 msgid "organization" msgstr "organisation" -#: models.py:83 models.py:102 +#: models.py:82 models.py:101 msgid "department" msgstr "département" -#: models.py:96 models.py:105 models.py:184 +#: models.py:95 models.py:104 models.py:326 msgid "category" msgstr "catégorie" -#: models.py:97 +#: models.py:96 msgid "categories" msgstr "catégories" -#: models.py:103 models.py:146 models.py:200 +#: models.py:102 models.py:145 models.py:169 msgid "title" msgstr "titre" -#: models.py:106 +#: models.py:105 msgid "public_id" msgstr "" -#: models.py:113 models.py:149 +#: models.py:112 models.py:148 msgid "course" msgstr "matière" -#: models.py:118 models.py:183 +#: models.py:117 models.py:325 models.py:342 msgid "user" msgstr "utilisateur" -#: models.py:119 models.py:186 +#: models.py:118 models.py:259 models.py:328 msgid "courses" msgstr "matières" -#: models.py:127 models.py:148 +#: models.py:126 models.py:147 msgid "professor" msgstr "professeur" -#: models.py:141 models.py:152 +#: models.py:140 models.py:151 msgid "room" msgstr "salle" -#: models.py:150 +#: models.py:149 msgid "session" msgstr "session" -#: models.py:154 +#: models.py:153 msgid "begin date" msgstr "date de début" -#: models.py:155 +#: models.py:154 msgid "end date" msgstr "date de fin" -#: models.py:164 +#: models.py:163 models.py:231 msgid "conference" msgstr "conférence" -#: models.py:177 models.py:178 -msgid "IEJ" -msgstr "IEJ" - -#: models.py:185 -msgid "iej" -msgstr "iej" - -#: models.py:194 -msgid "student" -msgstr "étudiant" - -#: models.py:202 -msgid "mime type" -msgstr "type mime" - -#: models.py:203 +#: models.py:171 msgid "credits" msgstr "crédits" -#: models.py:204 +#: models.py:172 msgid "published" msgstr "publié" -#: models.py:205 +#: models.py:173 msgid "date added" msgstr "date d'ajout" -#: models.py:206 +#: models.py:174 msgid "date modified" msgstr "date de modification" -#: models.py:227 +#: models.py:198 msgid "code" msgstr "cote" -#: models.py:229 +#: models.py:200 msgid "annal" msgstr "annale" -#: models.py:230 +#: models.py:201 msgid "file" msgstr "fichier" +#: models.py:234 +msgid "is live" +msgstr "en direct" + +#: models.py:252 models.py:253 +msgid "IEJ" +msgstr "IEJ" + +#: models.py:267 +msgid "training" +msgstr "formation" + +#: models.py:279 +msgid "procedure" +msgstr "procédure" + +#: models.py:291 +msgid "speciality" +msgstr "spécialité" + +#: models.py:304 +msgid "oral speciality" +msgstr "spécialité orale" + +#: models.py:305 +msgid "oral specialities" +msgstr "spécialités orales" + +#: models.py:319 +msgid "written speciality" +msgstr "spécialité écrit" + +#: models.py:320 +msgid "written specialities" +msgstr "spécialités écrites" + +#: models.py:327 +msgid "iej" +msgstr "iej" + +#: models.py:336 +msgid "student" +msgstr "étudiant" + +#: models.py:343 +msgid "Address" +msgstr "" + +#: models.py:344 +msgid "Postal code" +msgstr "Code postal" + +#: models.py:345 +msgid "City" +msgstr "Ville" + +#: models.py:346 +msgid "Country" +msgstr "" + +#: models.py:347 +msgid "Language" +msgstr "" + +#: models.py:348 +msgid "Telephone" +msgstr "" + +#: models.py:349 +msgid "Expiration_date" +msgstr "Date d'expiration" + +#: models.py:350 +msgid "Password initialization" +msgstr "" + #: templates/teleforma/base.html:13 msgid "Courses" msgstr "Matières" @@ -138,3 +199,6 @@ msgstr "Matières" #: templates/teleforma/base.html:17 msgid "Messages" msgstr "Messages" + +#~ msgid "mime type" +#~ msgstr "type mime" diff --git a/teleforma/migrations/0011_auto__add_writtenspeciality__add_training__add_speciality__add_procedu.py b/teleforma/migrations/0011_auto__add_writtenspeciality__add_training__add_speciality__add_procedu.py new file mode 100644 index 00000000..fd4e6ea0 --- /dev/null +++ b/teleforma/migrations/0011_auto__add_writtenspeciality__add_training__add_speciality__add_procedu.py @@ -0,0 +1,437 @@ +# -*- 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 model 'WrittenSpeciality' + db.create_table('teleforma_speciality_written', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('speciality', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='writtenspeciality', null=True, to=orm['teleforma.Speciality'])), + )) + db.send_create_signal('teleforma', ['WrittenSpeciality']) + + # Adding model 'Training' + db.create_table('teleforma_training', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['Training']) + + # Adding M2M table for field courses on 'Training' + db.create_table('teleforma_training_courses', ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('training', models.ForeignKey(orm['teleforma.training'], null=False)), + ('course', models.ForeignKey(orm['teleforma.course'], null=False)) + )) + db.create_unique('teleforma_training_courses', ['training_id', 'course_id']) + + # Adding model 'Speciality' + db.create_table('teleforma_speciality', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['Speciality']) + + # Adding model 'Procedure' + db.create_table('teleforma_procedure', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['Procedure']) + + # Adding model 'TeleformaProfile' + db.create_table('user_profiles', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='teleformaprofile', unique=True, to=orm['auth.User'])), + ('address', self.gf('django.db.models.fields.TextField')()), + ('postal_code', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('city', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('country', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('language', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('telephone', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('expiration_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)), + ('init_password', self.gf('django.db.models.fields.BooleanField')(default=False)), + )) + db.send_create_signal('teleforma', ['TeleformaProfile']) + + # Adding model 'OralSpeciality' + db.create_table('teleforma_speciality_oral', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('speciality', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='oralspeciality', null=True, to=orm['teleforma.Speciality'])), + )) + db.send_create_signal('teleforma', ['OralSpeciality']) + + def backwards(self, orm): + # Deleting model 'WrittenSpeciality' + db.delete_table('teleforma_speciality_written') + + # Deleting model 'Training' + db.delete_table('teleforma_training') + + # Removing M2M table for field courses on 'Training' + db.delete_table('teleforma_training_courses') + + # Deleting model 'Speciality' + db.delete_table('teleforma_speciality') + + # Deleting model 'Procedure' + db.delete_table('teleforma_procedure') + + # Deleting model 'TeleformaProfile' + db.delete_table('user_profiles') + + # Deleting model 'OralSpeciality' + db.delete_table('teleforma_speciality_oral') + + 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'}) + }, + 'teleforma.category': { + 'Meta': {'object_name': 'Category'}, + '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.conference': { + 'Meta': {'object_name': 'Conference'}, + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}), + 'date_begin': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'date_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'professor': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Professor']"}), + 'room': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'to': "orm['teleforma.Room']"}), + 'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.course': { + 'Meta': {'object_name': 'Course'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Category']"}), + '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'}), + 'public_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.department': { + 'Meta': {'object_name': 'Department'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.document': { + 'Meta': {'object_name': 'Document'}, + 'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_annal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.iej': { + 'Meta': {'object_name': 'IEJ'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.media': { + 'Meta': {'object_name': 'Media'}, + 'conference': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'media'", 'to': "orm['teleforma.Conference']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_live': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.oralspeciality': { + 'Meta': {'object_name': 'OralSpeciality', 'db_table': "'teleforma_speciality_oral'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'oralspeciality'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}) + }, + '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.procedure': { + 'Meta': {'object_name': 'Procedure'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.professor': { + 'Meta': {'object_name': 'Professor'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.room': { + 'Meta': {'object_name': 'Room'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.speciality': { + 'Meta': {'object_name': 'Speciality'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.student': { + 'Meta': {'object_name': 'Student'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.Category']"}), + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iej': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.IEJ']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.teleformaprofile': { + 'Meta': {'object_name': 'TeleformaProfile', 'db_table': "'user_profiles'"}, + 'address': ('django.db.models.fields.TextField', [], {}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'init_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'teleformaprofile'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.training': { + 'Meta': {'object_name': 'Training'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.writtenspeciality': { + 'Meta': {'object_name': 'WrittenSpeciality', 'db_table': "'teleforma_speciality_written'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'writtenspeciality'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}) + }, + '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': "'00:00'", 'blank': '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': "'00:00'", 'blank': 'True'}), + 'author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': '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'}), + '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'}), + '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': '100', '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', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Language']"}), + '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'}), + 'moda_execut': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', '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'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'track': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', '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.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.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/migrations/0012_auto__del_oralspeciality__del_writtenspeciality__add_field_student_tra.py b/teleforma/migrations/0012_auto__del_oralspeciality__del_writtenspeciality__add_field_student_tra.py new file mode 100644 index 00000000..d6005631 --- /dev/null +++ b/teleforma/migrations/0012_auto__del_oralspeciality__del_writtenspeciality__add_field_student_tra.py @@ -0,0 +1,430 @@ +# -*- 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): + # Deleting model 'OralSpeciality' + db.delete_table('teleforma_speciality_oral') + + # Deleting model 'WrittenSpeciality' + db.delete_table('teleforma_speciality_written') + + # Adding field 'Student.training' + db.add_column('teleforma_student', 'training', + self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='student', null=True, to=orm['teleforma.Training']), + keep_default=False) + + # Adding field 'Student.procedure' + db.add_column('teleforma_student', 'procedure', + self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='student', null=True, to=orm['teleforma.Procedure']), + keep_default=False) + + # Adding field 'Student.oral_speciality' + db.add_column('teleforma_student', 'oral_speciality', + self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='student_oral_spe', null=True, to=orm['teleforma.Speciality']), + keep_default=False) + + # Adding field 'Student.written_speciality' + db.add_column('teleforma_student', 'written_speciality', + self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='student_written_spe', null=True, to=orm['teleforma.Speciality']), + keep_default=False) + + # Adding field 'Student.oral_1' + db.add_column('teleforma_student', 'oral_1', + self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True), + keep_default=False) + + # Adding field 'Student.oral_2' + db.add_column('teleforma_student', 'oral_2', + self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True), + keep_default=False) + + # Removing M2M table for field courses on 'Student' + db.delete_table('teleforma_student_courses') + + def backwards(self, orm): + # Adding model 'OralSpeciality' + db.create_table('teleforma_speciality_oral', ( + ('speciality', self.gf('django.db.models.fields.related.ForeignKey')(related_name='oralspeciality', null=True, to=orm['teleforma.Speciality'], blank=True)), + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['OralSpeciality']) + + # Adding model 'WrittenSpeciality' + db.create_table('teleforma_speciality_written', ( + ('speciality', self.gf('django.db.models.fields.related.ForeignKey')(related_name='writtenspeciality', null=True, to=orm['teleforma.Speciality'], blank=True)), + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal('teleforma', ['WrittenSpeciality']) + + # Deleting field 'Student.training' + db.delete_column('teleforma_student', 'training_id') + + # Deleting field 'Student.procedure' + db.delete_column('teleforma_student', 'procedure_id') + + # Deleting field 'Student.oral_speciality' + db.delete_column('teleforma_student', 'oral_speciality_id') + + # Deleting field 'Student.written_speciality' + db.delete_column('teleforma_student', 'written_speciality_id') + + # Deleting field 'Student.oral_1' + db.delete_column('teleforma_student', 'oral_1') + + # Deleting field 'Student.oral_2' + db.delete_column('teleforma_student', 'oral_2') + + # Adding M2M table for field courses on 'Student' + db.create_table('teleforma_student_courses', ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('student', models.ForeignKey(orm['teleforma.student'], null=False)), + ('course', models.ForeignKey(orm['teleforma.course'], null=False)) + )) + db.create_unique('teleforma_student_courses', ['student_id', 'course_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'}) + }, + 'teleforma.category': { + 'Meta': {'object_name': 'Category'}, + '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.conference': { + 'Meta': {'object_name': 'Conference'}, + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}), + 'date_begin': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'date_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'professor': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Professor']"}), + 'room': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'to': "orm['teleforma.Room']"}), + 'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.course': { + 'Meta': {'object_name': 'Course'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Category']"}), + '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'}), + 'public_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.department': { + 'Meta': {'object_name': 'Department'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.document': { + 'Meta': {'object_name': 'Document'}, + 'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_annal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.iej': { + 'Meta': {'object_name': 'IEJ'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.media': { + 'Meta': {'object_name': 'Media'}, + 'conference': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'media'", 'to': "orm['teleforma.Conference']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_live': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + '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.procedure': { + 'Meta': {'object_name': 'Procedure'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.professor': { + 'Meta': {'object_name': 'Professor'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.room': { + 'Meta': {'object_name': 'Room'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.speciality': { + 'Meta': {'object_name': 'Speciality'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.student': { + 'Meta': {'object_name': 'Student'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.Category']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iej': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.IEJ']"}), + 'oral_1': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'oral_2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'oral_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_oral_spe'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}), + 'procedure': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'to': "orm['teleforma.Procedure']"}), + 'training': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'to': "orm['teleforma.Training']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'written_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_written_spe'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}) + }, + 'teleforma.teleformaprofile': { + 'Meta': {'object_name': 'TeleformaProfile', 'db_table': "'user_profiles'"}, + 'address': ('django.db.models.fields.TextField', [], {}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'init_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'teleformaprofile'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.training': { + 'Meta': {'object_name': 'Training'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + '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': "'00:00'", 'blank': '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': "'00:00'", 'blank': 'True'}), + 'author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': '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'}), + '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'}), + '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': '100', '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', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Language']"}), + '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'}), + 'moda_execut': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', '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'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'track': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', '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.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.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/migrations/0013_auto__del_teleformaprofile__add_profile.py b/teleforma/migrations/0013_auto__del_teleformaprofile__add_profile.py new file mode 100644 index 00000000..d83c8abb --- /dev/null +++ b/teleforma/migrations/0013_auto__del_teleformaprofile__add_profile.py @@ -0,0 +1,385 @@ +# -*- 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): + # Deleting model 'TeleformaProfile' + db.delete_table('user_profiles') + + # Adding model 'Profile' + db.create_table('teleforma_profiles', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='profile', unique=True, to=orm['auth.User'])), + ('address', self.gf('django.db.models.fields.TextField')()), + ('postal_code', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('city', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('country', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('language', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('telephone', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('expiration_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)), + ('init_password', self.gf('django.db.models.fields.BooleanField')(default=False)), + )) + db.send_create_signal('teleforma', ['Profile']) + + def backwards(self, orm): + # Adding model 'TeleformaProfile' + db.create_table('user_profiles', ( + ('init_password', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('telephone', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('postal_code', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='teleformaprofile', unique=True, to=orm['auth.User'])), + ('address', self.gf('django.db.models.fields.TextField')()), + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('city', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('language', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('country', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('expiration_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)), + )) + db.send_create_signal('teleforma', ['TeleformaProfile']) + + # Deleting model 'Profile' + db.delete_table('teleforma_profiles') + + 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'}) + }, + 'teleforma.category': { + 'Meta': {'object_name': 'Category'}, + '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.conference': { + 'Meta': {'object_name': 'Conference'}, + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Course']"}), + 'date_begin': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'date_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'professor': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference'", 'to': "orm['teleforma.Professor']"}), + 'room': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference'", 'null': 'True', 'to': "orm['teleforma.Room']"}), + 'session': ('django.db.models.fields.CharField', [], {'default': "'1'", 'max_length': '16'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.course': { + 'Meta': {'object_name': 'Course'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'course'", 'to': "orm['teleforma.Category']"}), + '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'}), + 'public_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.department': { + 'Meta': {'object_name': 'Department'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'department'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.document': { + 'Meta': {'object_name': 'Document'}, + 'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'course': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'document'", 'to': "orm['teleforma.Course']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_annal': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.iej': { + 'Meta': {'object_name': 'IEJ'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'teleforma.media': { + 'Meta': {'object_name': 'Media'}, + 'conference': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'media'", 'to': "orm['teleforma.Conference']"}), + 'credits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_live': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'media'", 'null': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + '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.procedure': { + 'Meta': {'object_name': 'Procedure'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.professor': { + 'Meta': {'object_name': 'Professor'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'professor'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'professor'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.profile': { + 'Meta': {'object_name': 'Profile', 'db_table': "'teleforma_profiles'"}, + 'address': ('django.db.models.fields.TextField', [], {}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'init_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}) + }, + 'teleforma.room': { + 'Meta': {'object_name': 'Room'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'organization': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'room'", 'to': "orm['teleforma.Organization']"}) + }, + 'teleforma.speciality': { + 'Meta': {'object_name': 'Speciality'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'teleforma.student': { + 'Meta': {'object_name': 'Student'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.Category']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iej': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'to': "orm['teleforma.IEJ']"}), + 'oral_1': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'oral_2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'oral_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_oral_spe'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}), + 'procedure': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'to': "orm['teleforma.Procedure']"}), + 'training': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student'", 'null': 'True', 'to': "orm['teleforma.Training']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'student'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'written_speciality': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'student_written_spe'", 'null': 'True', 'to': "orm['teleforma.Speciality']"}) + }, + 'teleforma.training': { + 'Meta': {'object_name': 'Training'}, + 'courses': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'training'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['teleforma.Course']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + }, + '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': "'00:00'", 'blank': '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': "'00:00'", 'blank': 'True'}), + 'author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': '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'}), + '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'}), + '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': '100', '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', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Language']"}), + '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'}), + 'moda_execut': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', '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'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'track': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', '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.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.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.py b/teleforma/models.py index 23a441f0..1a19ade9 100755 --- a/teleforma/models.py +++ b/teleforma/models.py @@ -48,8 +48,7 @@ from django.forms import ModelForm, TextInput, Textarea from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User from django.core.exceptions import ValidationError - -from south.modelsinspector import add_introspection_rules +from teleforma.fields import * app_label = 'teleforma' @@ -164,36 +163,6 @@ class Conference(Model): verbose_name = _('conference') -class IEJ(Model): - - name = CharField(_('name'), max_length=255) - description = CharField(_('description'), max_length=255, blank=True) - - def __str__(self): - return self.name - - class Meta: - db_table = app_label + '_' + 'iej' - verbose_name = _('IEJ') - verbose_name_plural = _('IEJ') - - -class Student(Model): - - user = ForeignKey(User, related_name='student', verbose_name=_('user'), unique=True ) - category = ForeignKey('Category', related_name='student', verbose_name=_('category')) - iej = ForeignKey('IEJ', related_name='student', verbose_name=_('iej')) - courses = ManyToManyField('Course', related_name="student", verbose_name=_('courses'), - blank=True, null=True) - - def __str__(self): - return self.user.username - - class Meta: - db_table = app_label + '_' + 'student' - verbose_name = _('student') - - class MediaBase(Model): "Base media resource" @@ -268,13 +237,99 @@ class Media(MediaBase): db_table = app_label + '_' + 'media' +# STUDENT + +class IEJ(Model): + + name = CharField(_('name'), max_length=255) + description = CharField(_('description'), max_length=255, blank=True) + + def __str__(self): + return self.name + + class Meta: + db_table = app_label + '_' + 'iej' + verbose_name = _('IEJ') + verbose_name_plural = _('IEJ') + + +class Training(Model): + + name = CharField(_('name'), max_length=255, blank=True) + courses = ManyToManyField('Course', related_name="training", verbose_name=_('courses'), + blank=True, null=True) + + def __str__(self): + return self.name + + class Meta: + db_table = app_label + '_' + 'training' + verbose_name = _('training') + + +class Procedure(Model): -class ShortTextField(models.TextField): + name = CharField(_('name'), max_length=255, blank=True) + + def __str__(self): + return self.name + + class Meta: + db_table = app_label + '_' + 'procedure' + verbose_name = _('procedure') + + +class Speciality(Model): + + name = CharField(_('name'), max_length=255, blank=True) + + def __str__(self): + return self.name - def formfield(self, **kwargs): - kwargs.update( - {"widget": Textarea(attrs={'rows':3, 'cols':30})} - ) - return super(ShortTextField, self).formfield(**kwargs) + class Meta: + db_table = app_label + '_' + 'speciality' + verbose_name = _('speciality') + + +class Student(Model): + + user = ForeignKey(User, related_name='student', verbose_name=_('user'), unique=True ) + category = ForeignKey('Category', related_name='student', verbose_name=_('category')) + iej = ForeignKey('IEJ', related_name='student', verbose_name=_('iej')) + training = ForeignKey('Training', related_name='student', + verbose_name='training', blank=True, null=True) + procedure = ForeignKey('Procedure', related_name='student', + verbose_name='procedure', blank=True, null=True) + oral_speciality = ForeignKey('Speciality', related_name='student_oral_spe', + verbose_name='oral speciality', blank=True, null=True) + written_speciality = ForeignKey('Speciality', related_name='student_written_spe', + verbose_name='written speciality', blank=True, null=True) + oral_1 = CharField(_('oral 1'), max_length=255, blank=True) + oral_2 = CharField(_('oral 2'), max_length=255, blank=True) + + + def __str__(self): + return self.user.username + + class Meta: + db_table = app_label + '_' + 'student' + verbose_name = _('student') + + +class Profile(models.Model): + "User profile extension" + + user = ForeignKey(User, related_name='profile', verbose_name=_('user'), unique=True) + address = TextField(_('Address')) + postal_code = CharField(_('Postal code'), max_length=255) + city = CharField(_('City'), max_length=255) + country = CharField(_('Country'), max_length=255, blank=True) + language = CharField(_('Language'), max_length=255, blank=True) + telephone = CharField(_('Telephone'), max_length=255, blank=True) + expiration_date = DateField(_('Expiration_date'), blank=True, null=True) + init_password = BooleanField(_('Password initialization')) + + class Meta: + db_table = app_label + '_' + 'profiles' + verbose_name = _('profile') -add_introspection_rules([], ["^teleforma\.models\.ShortTextField"]) -- 2.39.5