From 11685f36b29690dbe2e3dd5dd181768e6460f576 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 09:10:46 -0400 Subject: [PATCH 001/294] start project --- readme.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..a47806ca --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +## About this project + +This is a third generation site for Knowledge Commons DC. + +contact@knowledgecommonsdc.org + From 6cf5260c2f4d00c230956fc24b488e185bf13a98 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 09:24:24 -0400 Subject: [PATCH 002/294] add static file structure --- www/assets/css/style.min.css | 1 + www/assets/images/index.html | 1 + www/assets/js/index.html | 1 + www/assets/js/script.js | 1 + www/assets/js/script.min.js | 1 + www/assets/sass/style.sass | 1 + www/static/index.html | 1 + www/uploads/index.html | 1 + 8 files changed, 8 insertions(+) create mode 100644 www/assets/css/style.min.css create mode 100644 www/assets/images/index.html create mode 100644 www/assets/js/index.html create mode 100644 www/assets/js/script.js create mode 100644 www/assets/js/script.min.js create mode 100644 www/assets/sass/style.sass create mode 100644 www/static/index.html create mode 100644 www/uploads/index.html diff --git a/www/assets/css/style.min.css b/www/assets/css/style.min.css new file mode 100644 index 00000000..04bca164 --- /dev/null +++ b/www/assets/css/style.min.css @@ -0,0 +1 @@ +/* compiled CSS file */ \ No newline at end of file diff --git a/www/assets/images/index.html b/www/assets/images/index.html new file mode 100644 index 00000000..d5daa30b --- /dev/null +++ b/www/assets/images/index.html @@ -0,0 +1 @@ +design and user interface images \ No newline at end of file diff --git a/www/assets/js/index.html b/www/assets/js/index.html new file mode 100644 index 00000000..38153ba4 --- /dev/null +++ b/www/assets/js/index.html @@ -0,0 +1 @@ +libraries and scripts \ No newline at end of file diff --git a/www/assets/js/script.js b/www/assets/js/script.js new file mode 100644 index 00000000..6b09ffd4 --- /dev/null +++ b/www/assets/js/script.js @@ -0,0 +1 @@ +/* local scripts */ \ No newline at end of file diff --git a/www/assets/js/script.min.js b/www/assets/js/script.min.js new file mode 100644 index 00000000..056044e2 --- /dev/null +++ b/www/assets/js/script.min.js @@ -0,0 +1 @@ +/* minified javascript */ \ No newline at end of file diff --git a/www/assets/sass/style.sass b/www/assets/sass/style.sass new file mode 100644 index 00000000..b1c5a243 --- /dev/null +++ b/www/assets/sass/style.sass @@ -0,0 +1 @@ +/* uncompiled SASS/Compass styles */ \ No newline at end of file diff --git a/www/static/index.html b/www/static/index.html new file mode 100644 index 00000000..49dbc5ee --- /dev/null +++ b/www/static/index.html @@ -0,0 +1 @@ +files served as-is \ No newline at end of file diff --git a/www/uploads/index.html b/www/uploads/index.html new file mode 100644 index 00000000..3ebed38f --- /dev/null +++ b/www/uploads/index.html @@ -0,0 +1 @@ +uploaded site content: images, PDFs, video, and audio \ No newline at end of file From af91ae666da0614382b527e3f9e6de414ebb12bb Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 09:24:37 -0400 Subject: [PATCH 003/294] add existing experimental Django app --- kcdc3/classes/__init__.py | 0 kcdc3/classes/__init__.pyc | Bin 0 -> 177 bytes kcdc3/classes/admin.py | 73 +++++++++ kcdc3/classes/admin.pyc | Bin 0 -> 4170 bytes kcdc3/classes/migrations/0001_initial.py | 40 +++++ kcdc3/classes/migrations/0001_initial.pyc | Bin 0 -> 2271 bytes ...o__add_field_event_location_description.py | 35 ++++ ...__add_field_event_location_description.pyc | Bin 0 -> 2140 bytes ...3_auto__add_field_event_waitlist_status.py | 36 ++++ ..._auto__add_field_event_waitlist_status.pyc | Bin 0 -> 2182 bytes ..._registration__add_field_event_teachers.py | 88 ++++++++++ ...registration__add_field_event_teachers.pyc | Bin 0 -> 4619 bytes .../0005_auto__del_field_event_teachers.py | 89 ++++++++++ .../0005_auto__del_field_event_teachers.pyc | Bin 0 -> 4636 bytes kcdc3/classes/migrations/__init__.py | 0 kcdc3/classes/migrations/__init__.pyc | Bin 0 -> 188 bytes kcdc3/classes/models.py | 21 +++ kcdc3/classes/models.pyc | Bin 0 -> 1772 bytes kcdc3/classes/tests.py | 16 ++ kcdc3/classes/views.py | 1 + kcdc3/django.db | Bin 0 -> 155648 bytes kcdc3/kcdc3/__init__.py | 0 kcdc3/kcdc3/__init__.pyc | Bin 0 -> 175 bytes kcdc3/kcdc3/settings.py | 154 ++++++++++++++++++ kcdc3/kcdc3/settings.pyc | Bin 0 -> 3103 bytes kcdc3/kcdc3/urls.py | 12 ++ kcdc3/kcdc3/urls.pyc | Bin 0 -> 525 bytes kcdc3/kcdc3/wsgi.py | 28 ++++ kcdc3/kcdc3/wsgi.pyc | Bin 0 -> 1067 bytes kcdc3/manage.py | 10 ++ 30 files changed, 603 insertions(+) create mode 100644 kcdc3/classes/__init__.py create mode 100644 kcdc3/classes/__init__.pyc create mode 100644 kcdc3/classes/admin.py create mode 100644 kcdc3/classes/admin.pyc create mode 100644 kcdc3/classes/migrations/0001_initial.py create mode 100644 kcdc3/classes/migrations/0001_initial.pyc create mode 100644 kcdc3/classes/migrations/0002_auto__add_field_event_location_description.py create mode 100644 kcdc3/classes/migrations/0002_auto__add_field_event_location_description.pyc create mode 100644 kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.py create mode 100644 kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.pyc create mode 100644 kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.py create mode 100644 kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.pyc create mode 100644 kcdc3/classes/migrations/0005_auto__del_field_event_teachers.py create mode 100644 kcdc3/classes/migrations/0005_auto__del_field_event_teachers.pyc create mode 100644 kcdc3/classes/migrations/__init__.py create mode 100644 kcdc3/classes/migrations/__init__.pyc create mode 100644 kcdc3/classes/models.py create mode 100644 kcdc3/classes/models.pyc create mode 100644 kcdc3/classes/tests.py create mode 100644 kcdc3/classes/views.py create mode 100644 kcdc3/django.db create mode 100644 kcdc3/kcdc3/__init__.py create mode 100644 kcdc3/kcdc3/__init__.pyc create mode 100644 kcdc3/kcdc3/settings.py create mode 100644 kcdc3/kcdc3/settings.pyc create mode 100644 kcdc3/kcdc3/urls.py create mode 100644 kcdc3/kcdc3/urls.pyc create mode 100644 kcdc3/kcdc3/wsgi.py create mode 100644 kcdc3/kcdc3/wsgi.pyc create mode 100755 kcdc3/manage.py diff --git a/kcdc3/classes/__init__.py b/kcdc3/classes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/kcdc3/classes/__init__.pyc b/kcdc3/classes/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fada719cead3315ed8bcbba7b050e8028cf830d4 GIT binary patch literal 177 zcmZSn%*z$u$sCZ(00oRd+5w1*S%5?e14FO|NW@PANHCxg#Zf>p{m|mnqGJ8TqQu<% zV*P@m{H)aEl45;tXBTJvl&r+O^!)hLih|Ul%-qzxl6XV??BtYWV~~(xd`^CHVh%(= qKRG9{xHz>~KR!M)FS8^*Uaz3Cgac^2O>TZlX-=vg$PvXr%m4tEpetDb literal 0 HcmV?d00001 diff --git a/kcdc3/classes/admin.py b/kcdc3/classes/admin.py new file mode 100644 index 00000000..22c3ff9f --- /dev/null +++ b/kcdc3/classes/admin.py @@ -0,0 +1,73 @@ +from classes.models import Event +from django import forms +from django.contrib import admin +from django.contrib.admin.sites import site +from django.contrib.admin.widgets import ManyToManyRawIdWidget, ForeignKeyRawIdWidget +from django.core.urlresolvers import reverse +from django.utils.encoding import smart_unicode +from django.utils.html import escape + + + +# Human-friendly raw_id_fields +# from EmilStenstrom, http://djangosnippets.org/snippets/2217/ + +class VerboseForeignKeyRawIdWidget(ForeignKeyRawIdWidget): + def label_for_value(self, value): + key = self.rel.get_related_field().name + try: + obj = self.rel.to._default_manager.using(self.db).get(**{key: value}) + change_url = reverse( + "admin:%s_%s_change" % (obj._meta.app_label, obj._meta.object_name.lower()), + args=(obj.pk,) + ) + return ' %s' % (change_url, escape(obj)) + except (ValueError, self.rel.to.DoesNotExist): + return '???' + +class VerboseManyToManyRawIdWidget(ManyToManyRawIdWidget): + def label_for_value(self, value): + values = value.split(',') + str_values = [] + key = self.rel.get_related_field().name + for v in values: + try: + obj = self.rel.to._default_manager.using(self.db).get(**{key: v}) + x = smart_unicode(obj) + change_url = reverse( + "admin:%s_%s_change" % (obj._meta.app_label, obj._meta.object_name.lower()), + args=(obj.pk,) + ) + str_values += ['%s' % (change_url, escape(x))] + except self.rel.to.DoesNotExist: + str_values += [u'???'] + return u', '.join(str_values) + +class ImproveRawIdFieldsForm(admin.ModelAdmin): + def formfield_for_dbfield(self, db_field, **kwargs): + if db_field.name in self.raw_id_fields: + kwargs.pop("request", None) + type = db_field.rel.__class__.__name__ + if type == "ManyToOneRel": + kwargs['widget'] = VerboseForeignKeyRawIdWidget(db_field.rel, site) + elif type == "ManyToManyRel": + kwargs['widget'] = VerboseManyToManyRawIdWidget(db_field.rel, site) + return db_field.formfield(**kwargs) + return super(ImproveRawIdFieldsForm, self).formfield_for_dbfield(db_field, **kwargs) + +# END Human-friendly raw_id_fields + + + +class EventAdmin(ImproveRawIdFieldsForm): + fieldsets = [ + (None, {'fields': ['title', 'date']}), + (None, {'fields': ['summary', 'description']}), + ('Location', {'fields': ['location_description']}), + ('Size and waitlist', {'fields': [('max_students', 'waitlist_status')]}), + ('KCDC people', {'fields': ['teachers']}), + ] + raw_id_fields = ['teachers',] + list_display = ('title', 'date','max_students', 'waitlist_status') + +admin.site.register(Event, EventAdmin) diff --git a/kcdc3/classes/admin.pyc b/kcdc3/classes/admin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcb07d3fe488dae8391c98504b475d348117da2a GIT binary patch literal 4170 zcmcgvO>Z056}`i6QKBTvHXFBTD+_f%w1EhtXoDuI+{Si*z=;x!QY#@)3`U$MdZ-x= zGw)F!iL|M^=%V=%U3Jq<_g(hSblpvXF4}YMkQALbfU~ek&f~oM?%elr@44qr`QNSP zU*Bqe+?VO6jQ`)@vj0I7;pa&rl6unf#AClCNlDVO^vXrQEJ;Pus`RQwzamLZ(z^8O zMZYRZL((PbElJvxUbB$aBw3bpMS3emzb;8j(pBlL7X5}KYm%-@Zyo(5F-3FzvRWuJz%*b7JkFq?qSKTm5<5AJAK-tF5bV_{mCYle!(fKDCTR%K~ zKRSq`fpI$WUY479FnVMbM+!4_JeZpklUq{=TC|&nxeF$vxSvH+aSdW)`{CHQ*KzyU zAHVw3iE-rKgG=(qeDA>XUDoc8x3}M!p$eSIr{b19lN!A$L@5)-JR}q%$A{k z@7}!*kI%7_o5ZmLn*r`aXQJRJHc6yYjKb77jfTvvLo0~PQ8-ClkcOjhU~-MGiH%1C z)rt<)CT#gUd>sv7A#_XVhU0ONgol`L8NKXqX!`(wgK*=Q^RbF5%dm>px~uJH@dDlRW9bjA&yIaM%5v zMWA-WJWMm&9p@QWWxJ2=Ke*qGhB)giFlS?v$0_vH(6vIGurND4a5QP_t@5?%)i-4`k zP%%8cX~}SPj%T13!)r4}{xU(TpyJGyD-mzas{xrU#pcQsowvQV zceB8!zX>J(Hk((C#w|?BHO|n;^M5}@wmLCN%#K~+2n65JWxnPP`ZUn&mO#Is7p z)Zo^VfOGf363F>j2kd}V3pW1Bn=vD1B71#4G1e(J6lv+Bk@3MW47$^zT49JUq%4zk zG~Ow8Z1V6lh^M4yl{CiLSfhC_gE3-7=_?2{$s-qULZk`O=fU}Oj%py&rv-PC(Ch@X z;gg@WV44pqAw-9&*x~6bRy6rXhg0t5@{dnR@VXFpJ~poi62HLAU0idbS_dpvyjyy; zz5xWPU#(2!S#zaUPFdoQ*U#K0vjh9cE#c9_*kVn`>!FydQsIHp5Z0c^YCS zR7nbrG&~Een?xvKtX3woQAk5Kv6ey3l4o;lvN0CO^K&NbKS6D@r>_H+bg^j1a!+5g zqv32B{JKxe=;l6O>|qA|LXN#lGvt!ufQ+*~15-D|odr=0HVe;RW%&IH3)sbFnL=u% zHpt;RzPCzC-d=}%h+;c+L1S(m2Vd{ zC11>}CLFEBo~u)2JnL&#Q8&D{Xf8L~D1dWgvxIMFMU75ApBkIEII-JigjY0F^veGF zZt%?T6PG3h>nqQ1anVHKhuo~9P;;KoqtZCa%>dpq`7893&bw38&bvHr%X3)wif_C4 OueV$6ja%#O<^Ka{S)=0s literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0001_initial.py b/kcdc3/classes/migrations/0001_initial.py new file mode 100644 index 00000000..8385411d --- /dev/null +++ b/kcdc3/classes/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# -*- 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 'Event' + db.create_table('classes_event', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=200)), + ('date', self.gf('django.db.models.fields.DateTimeField')()), + ('summary', self.gf('django.db.models.fields.TextField')(blank=True)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + ('max_students', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)), + )) + db.send_create_signal('classes', ['Event']) + + + def backwards(self, orm): + # Deleting model 'Event' + db.delete_table('classes_event') + + + models = { + 'classes.event': { + 'Meta': {'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0001_initial.pyc b/kcdc3/classes/migrations/0001_initial.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2b051534d4e9d6728b4c1daffa7949b0d4be2f6 GIT binary patch literal 2271 zcmc&#OK;mo5FUz>Y}uBdaonOnfdVbSlO(5rPestyX@R1MQLNnp)rDAbS2Arr1nw%a zf!@*|*BtU|@&nRuhI;tW2tK8vb~!sUJMS5W@4H*--R5rz&3_@@-($Hyuo?UV%7}(F z+@LI=yg|bT1xyPm3n_2Xuvwp*l(i^t)3A+mi)@p|0hu=aP4tH7&*27(yNosgvx}-{{T=#wl6gJ8E znL#|9`+AKTzZBk1?A#ePyqIN~XLII3m5BVrfsI(D!XiF`taZ^Q&rR z{UNxVElfP;a_OYdS;W;SOwMLwWSgk0@(3@I&7qs9|GTr5>+4GArRz_t^2R3K^?yBo zao(?k8QZ(5Mb2PTeA>TFO!6(GPUEahbXFt!bMyQ8Vjj5uU@$n1(<1e$&U({(zX@&Q zvU;s6<2a9Q9~(6~!54UrWse%mE@IoIiw*!Ry9hl{S0j@z6h~0JT*V2q$1dVjla9fp zo-!xa|Kd51!jVpH#q|>$9Gg!K#SxH#Dn}glxX`(kguS$0Kfaz7D|lQXt0S-~ZbQX| zyY|wuZ55Ao#r62;;#RwSg{Os*T(27stM=v+eKr^pl4z8T}Ys}cXh}wJ*^Z=mWIh3>Dcqq{z{dIT{X^^YeW(>-3-f-RiIHUrJhkQv808<$r@P z_)EwUjicTnmr&iIafcE`!2a2)qNWGvG0-X(ljB{r&mN*M8A)>*xe}G zg6ryEd`_|iYUpsNN!0H_AC+ge)-S4At3%Z+;z1t=bz`jaVF&8wbdx!I{Q=AW4PlWp zLKBBZwg}5gN>xJDHcJCzN=K%P)uR~_BATY0?2*}$J)YSnvqML0-i7(j4f9?!?{A)l zySrrWVSjz;0K5Bg38yfB^v>yn&E0n*J%st=w~?YtPT&)mAJGwzHlNZgp>dCjQT7>1 zEg3#uyI99q{u_uubPm5#=%3J~+$(J1pvPsRO5_w$Fq5Ln(50(1VOB>OJ30ybkfqb! zTd(X(y9nVSEUqbq6lJV0+iJ-K`7d!`&h=u}49sK@SsF|$>x>_q+Kcd<)xZQ9JJl-} zkR4LwIJLe|&Ms!*ta`(?9>m1y#XRgmn_Ig?B)OCEQGpdNYGYK{xK+K7{+Uft0nur@ zvf|^pcHU+Ti`cz&Q`Ab-v~`9b65(G%%YXH@^|@|!-S~XjHs`hsKL7dn*>N6=QubnL z+o}cz>PbE?P5CvOo+t*xMMJ)ZDzD$Rt(3Lp_mxyjJogmJLE4BJR( z+O&V@)_8`;bK6sAFL|77c;+&MXXfK3&sT9QM;SkHQZOC`gC;OU(FO9*i*0@ zyOdEguzXlk7Yt~@nFWshp+oT$O%cQKttEO(x0h;eFQu0&BdvNk92VRU!l8f6?%y+G zKP`ft+4j1C#mYGuARaFtRtBx>WdQxE=2-t*-SL@T`{M2iRdCkdcpD7j+knS;-SioE zsr0TA+?A5qRtm3zm9t6}Ojq%Mg^Z+lYwD#mqFyfjb>E40>jtynkzz9Z=MeqQ&el#Z zP159Ua*#a2_X~U>yBR+tNN^7Ybd_v;vkGT;H^w0pKVo@#Sjc}sZlDdh0+9q1EUv|^ VLq%%)Hj?}u6YIIOJz#=w`X8*(7}x*+ literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.py b/kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.py new file mode 100644 index 00000000..f507a6a2 --- /dev/null +++ b/kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Event.waitlist_status' + db.add_column('classes_event', 'waitlist_status', + self.gf('django.db.models.fields.BooleanField')(default=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Event.waitlist_status' + db.delete_column('classes_event', 'waitlist_status') + + + models = { + 'classes.event': { + 'Meta': {'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.pyc b/kcdc3/classes/migrations/0003_auto__add_field_event_waitlist_status.pyc new file mode 100644 index 0000000000000000000000000000000000000000..deced615e527d2ebf261b2dfe5df5fbc382e4bc0 GIT binary patch literal 2182 zcmd5--*4MC5I$M96Q@acQpeM_1fjkXE*K`Gjp}`<$1LhZk7HLN@B^f%Z zO@O_nz+U#(?O)mRu-zRUI~}lKkC9A@cO>tQ-*-pHf9~!4{>S!@Ijo+TzAvcZ&(s1LD_*x2O^$}!NpK^VbTq97hDg@K1})~_rP{x7J=!*dw@%TUnW~@Zk%k9 z>EdsCj+2OnzQeAjVSJayK#(wxu)I?>b>=9 zGPe)rF3Fos2PEB-O*BjD`yb4HwBGxHrw63|_{vi-$pL&q>W5cqvh^qg@F}T3gF_;~ zd=B#nCOyc;$rpq`&Zu%@;Et$aN}UHdBX@HCUui5TT$0!Y9}`JToA1J995KP;gf}1i zJ?e9(5iKhF)>hs#P49H!U4dSq*St9d;%(_!FhI4i6(IDA>x&g$wlOP-lB zcBWhB{Vt6c)-Kgbk@QHBQ3Jn2oi;}0wQI{tvSdD^-~djV)_Pv}T067}pHlQ_-HeU_ zP&Z{lACL}zqfz=3+6GhI=(5Ii+0NEtDY)X z=h_8DxuaXnf(P;Es>DJduakO&afRg$bLc`^S-=LaV}2xn zsngZMa{$I--V{r|mToliE#*V-$-9=6R=T-R3wt4HTo}pHXQPoMd8yBpv(?<6dS;yS zjU7-)Y@FRxT;EsT&TX?fW7Rq*mBp6Pw}x^WrR=aRIg%S=KRVSbTbx^-iroJ1+Riwg zB`5LPr7;Yb2G{+nfaGG4Vo<`SQi6n1bZxZGDwXZCp#$!uyv15wE+w<|a*3NnzI8>O zad~o~BVWY*&R}cMi=#N&j}D@T^nOXNe7gy+5*RowJte9LShxO^F40iZVo5Y_pJnog h$?p3J{y_*4=ww2Xen*LXl6kOMuWD{{wgsCujfw literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.py b/kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.py new file mode 100644 index 00000000..800e588c --- /dev/null +++ b/kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.py @@ -0,0 +1,88 @@ +# -*- 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 'Registration' + db.create_table('classes_registration', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('date_registered', self.gf('django.db.models.fields.DateTimeField')()), + )) + db.send_create_signal('classes', ['Registration']) + + # Adding field 'Event.teachers' + db.add_column('classes_event', 'teachers', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, on_delete=models.SET_NULL, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting model 'Registration' + db.delete_table('classes_registration') + + # Deleting field 'Event.teachers' + db.delete_column('classes_event', 'teachers_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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.pyc b/kcdc3/classes/migrations/0004_auto__add_registration__add_field_event_teachers.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d8c5caa9fee9b376ea4f2865f87c6fcf80e5229 GIT binary patch literal 4619 zcmd5=ZFdvL6}~IU!Uo%MLI@!clR${%#FcCa4rx=GU?8P{L)Ioqox|C)(u~B~`=acO z0H2d@^cVDNeq6uwAM^*L&%Lu+$sEf~zhP@vGxy%P?=NFl|FdxN-~XC@)TQF5itn%R znD6mY_;?f(?Yeb^Vvmvv?N-QRT$SP~B{kZuxqXe|8A|H3TgQHebd7o*sXG0G=q1tL zcTX_8?dA!vj()?>R@1}MR#;TWt>3_UyZclp;lrq(hc?Pmho}RQWJ<@z&S6<%OU;?< zEj;GO8j*(15KSx^+CnTZsua~Js!;?KfK}R1H9RxaheD#MIzbz~Dydn3=L8J8I;oS` zpCUEyunX8N3KpbqkXpk2O;T^+3$&*l(c9Rap^a#UB2c|U>MQ{7k~)X4_r}7V6bL_G zvcCX|_eVM{3wze-BEZM03ML9p$rm&QyB>_&NZoEy$99Hq~Jy#c?UqzLFQT-g8ks{4tU_D`Vwa>D*1bN&qQ6mL0d zFuwU}9R7ksUyWi2Uw)1KI2mspEol>AmuWRpw_Wgxvv)|{J;dT0?8;Y0U$LTv#J`QvBmO70KXnQ)}BdB+d zX2J#Zm^RSc)c4f)Xm^JE?dA{YFkNm~{LJIo#AANN%M$IuRD3G*3)Toym0n_7BZ~!j zJwRqgs5+z26amENB^oN9hb;8SSr#_}%@8a^|0!6W5|;Dy3m7lZIb zlT|}Iva|HE>T#dmZoUQmw(Q$@cjM3)ZGv3)BV%2Il?EIs^C9qRFHHMcOLbbV*|vI- zj+JSBJ+#?fUfNTj8st$D<_E#PKCs-eRcLj=Qs-KkE5~rU4ceV3(T*E;?LsHZ?(`@1 zS{Ne({Yw=kTaS&-Z4JA0 z7{@YHvNXVe(N^0TfID%R?u%0US`UEfg~Ql3`Mi&Z1l7$o+it@S&as4kPk8R+Lv7jZ zMyDz$s0=g-V|x-V= zD72H&+%@gBwYARz_$mtm)^{>z97K}Cg(et$re;c?+C!o%rQ z0G#W^z5cs=;v8PDzh61`I$?KT9Lsteb_7)xs**F`I~YLHqig8Xdi~@ z!A{0+;cni+8RY#>4XN8lI!_{Fa5HQ?@ug>+1zyZH2MG+$BV@JDeaSVelHN!%3X?v& z%G?A^v(e2`%cWrt1{!%i7zA%>dw8ilJRfYNAwcW*amz=kJ-MdxXii!^&~x$77GR6->4V=s$R%#KTpn=*y& zBw-Z0jN>%>{JNw){#b}&(fyjsyIzzVm;B~Ukd0GE3Iv98y1EQ79~~p^R+hy&Or1ck zy~qS%*GA8@ga$if!(LDP$eSVjHRP$noe6{1qQUl~RA!58r5?FMtzW$%EC!gy&yhZM z2|zv?j9qSof`JnMa&9ri@Vxk`!G41|T&QUBskVv_fSQB?HYp5y;l6fJ;2x@lGqxFyBQ{YcQ9=6I5Ll6RO5+c zUUBglO+%k&htHadoi?(Vw49;OLo9KL;UL(dF%!3imfRM68P%L?X5#A8njB+t8)!D9 zmRDDdOo3+OPz!KHzkD*rtY_{;o~i-LF{O9p&};XY=@6HQjH>2<;9ieQ6H53hP< zZgFn5>Q%i(@2t1%tyHSs1+4h@Jk}1n>|H5f3}41`#k&OT8E;A8%K}@)+MQXF@5_P% zeXYszT%3vyB^#6R%}{mR4MKDh$g``y{HuavSvDtex+pK+9lu^vKZ}K5y5zaZ2_s!( J9v;JQ^}mu(Zh`;+ literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0005_auto__del_field_event_teachers.py b/kcdc3/classes/migrations/0005_auto__del_field_event_teachers.py new file mode 100644 index 00000000..1135c897 --- /dev/null +++ b/kcdc3/classes/migrations/0005_auto__del_field_event_teachers.py @@ -0,0 +1,89 @@ +# -*- 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 field 'Event.teachers' + db.delete_column('classes_event', 'teachers_id') + + # Adding M2M table for field teachers on 'Event' + db.create_table('classes_event_teachers', ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('event', models.ForeignKey(orm['classes.event'], null=False)), + ('user', models.ForeignKey(orm['auth.user'], null=False)) + )) + db.create_unique('classes_event_teachers', ['event_id', 'user_id']) + + + def backwards(self, orm): + # Adding field 'Event.teachers' + db.add_column('classes_event', 'teachers', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, on_delete=models.SET_NULL, blank=True), + keep_default=False) + + # Removing M2M table for field teachers on 'Event' + db.delete_table('classes_event_teachers') + + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0005_auto__del_field_event_teachers.pyc b/kcdc3/classes/migrations/0005_auto__del_field_event_teachers.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c362299e8edbe032980545b993c56c304a42130 GIT binary patch literal 4636 zcmd5=S#uLd5bl*^85*a{uR?iekFV-!N_I0Yv_I7z`Ne4QQ~ZcoACXL9vtA@NDy zrdd(XHk|``UsIvve6ECTyny2miDwrF2VUxHzD&UtYwD+vt@OREii#me=D^KkadkKM zGjQ`*%#Vo0=MWlUdaZ8`BG)sg4(XhXxc0~kdy^MI-ovMBAdj~Cdd@}AzQ}`i1LWM9 zQHfp3-yLAXhJ~|q6Wm*f`y_>6e`(YH)$Z^UvFz87{btDj9&)|~c|^3VG!)<7ormx6 z(w%+|5zD*S55RbD?~|56w*Ho=kKp?@hyPLW0J1q)?eXlxLy+@i4RZJhpV-QQSx;>UpV`V;v6_CQ;5lCA>dkE$6wptj_3k0GD2K0`joS8j^uE>V4D4Dl)A(#g zzSc^6>WxZ_Imq@ZAAL5{UKp6;yCu9nSDG^c)v!U=R0<--wjUnUa}t7j``iRTRj1Ygtzr&fvo|Q(-%K0_)k> zhkm4$jhVRMb(8S7uBwU}HdL#qg@h8NSzN^z$%pt}&x-!$iq3NytC=Yn(Axm3up%M8ITBYGIS@B6sj1{zC($uZ!r z%s9k&MC>*!e1SeHF?P$eU33KR81Rz-uG|JztBkT0mqR9Y^&zFNf?}gl3mP>$)NA6A zu4O7>*wluSB7si_(BK%m3?@lxns7jne@R{=@{>)0z@}0ia9VyhGA>^ps*ENJ8jg$~ z1bxKt0qvH1l=*TPORhdx^HyFwed=;;h{hhw1XO|s_awh@3LhUD47ffTesfcBZ~`06 zE>U61S#-vW5~)X7+U-dBrVU1^t!hrzGi7{z0gF*N%InC6jHBstb?*Dp@@qe{#mC98 zH6=~t)`C=F?7#COm9))ksZQ=Oy1tJQeV{z^ldZLsKSjIdbfGX`R-}zQS6Litjay{p zm3tN}n@&ci-ip!2vJhqG&SGy{SuU@oend%|L#1y+rdnyHiQ(EcTOH+jey8I_enUl- z`SZJ20&7bS6nj&dlPXBF0QH}=^*PqJQ{hhW`8mV4VH+yXq-|x;uO(Omx1YxCA76(s3n2Y39o=T3Ptx( z=WA$$Hf_gP5)=bUEng(*Tj~3~I+heM)7wbHL%6#2(1?7i!OMn(&R1)L^HL-)c!5dDBI_ zc$`T-F`Nx1Ks!vNr^!~PERUJRYqvy22NV1);A42I^Q+z<nGjZRtT~qIj^@(dHP`a6g9sa9KfOieRNgpr#w4XSt^#;4+l$ zu#;<98h7Llg_HGQn91scxY)Q{2t31d3m@ge#Pq~u(J4BIoDt z<>ghKjr!e8dN1LHz$$gECv&O=>JLof;Kr00bk-p;j5+mW3d6BIv|xK3yM*)@DZ4*7*mKy=X+#P#?rl`L&TvUg9r=^vJ;5BBCT3;+NC literal 0 HcmV?d00001 diff --git a/kcdc3/classes/models.py b/kcdc3/classes/models.py new file mode 100644 index 00000000..75271583 --- /dev/null +++ b/kcdc3/classes/models.py @@ -0,0 +1,21 @@ +from django.db import models +from django.contrib.auth.models import User + +class Event(models.Model): + title = models.CharField(max_length=200) + date = models.DateTimeField('First meeting') + summary = models.TextField(blank=True) + description = models.TextField(blank=True) + location_description = models.TextField(max_length=200, blank=True) + max_students = models.IntegerField('Max size', blank=True, null=True) + waitlist_status = models.BooleanField('Waitlist', default=True) + teachers = models.ManyToManyField(User, blank=True, null=True) + def __unicode__(self): + return self.title + class Meta: + ordering = ['date'] + +class Registration(models.Model): + date_registered = models.DateTimeField() + + \ No newline at end of file diff --git a/kcdc3/classes/models.pyc b/kcdc3/classes/models.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3b0ff6d4e733658ec4883484bb19b5f54fe77e1 GIT binary patch literal 1772 zcmcgt&2AGh5FT&Rv`PO%EAb;Fjya%26<35%Qz{{p3T?yRURLgUnr!Objn-aB5x4Mg z9C!~NfCqpXJ54KkrcpfceD>Ni-+Z&F{oZW-dfIxMz~WP*-oUjq~{sl&MdRfq2YbAV6L3aFJE3ytMM1Jo*K}2Q7&?e`kx1=3j&qsO(T?yqrmHK>F0U1(qL}m1b+-RM<&aa}rs48z2!HoJ0U>7}Zn2>Own?Tx zmgRAZT7?|12RsWPTWYs!aSf6p}PRA0}ou>Ynf@srNi0`DsuLY+x-^N{a=Ee7r@CB5R vT*~yUD=Rzh`qm9yDLKmlzswz@A)kGh$+#AN?i>0A2W0p!V@K=+54QdS+su^Y literal 0 HcmV?d00001 diff --git a/kcdc3/classes/tests.py b/kcdc3/classes/tests.py new file mode 100644 index 00000000..501deb77 --- /dev/null +++ b/kcdc3/classes/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/kcdc3/classes/views.py b/kcdc3/classes/views.py new file mode 100644 index 00000000..60f00ef0 --- /dev/null +++ b/kcdc3/classes/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/kcdc3/django.db b/kcdc3/django.db new file mode 100644 index 0000000000000000000000000000000000000000..8cd6a72c5d3b2418cbd276ad90622ed4151e5f46 GIT binary patch literal 155648 zcmeI5du$uYdBAu06e*Eo*_PL~Y-=sqXY*vq`yfS9&h^5x=sVkzeAdIZ+y}EFR}w8g z6q1r9-vI^X!y!O`$y&IW;C_m8^5}p^G!=)LdG)JUx-VB@8+XnK}lAYtx;C28FYOdg=MxV5IIj z=;xmrM)i@VZB45(S~MCLvtt@7uNmLxU`;dC%w;j7nM%vgmP<9QRLj)1*0c;WW8;9I zPbSfQe@$I1Xw@=hRLn0|)Ea@alCRdvl`ZGkgN7}0sb?nB!l1JdDKsdM&mbvG$dkgC zwTdu(ZBCe;pPUq)pSe7hnpqI8rWelXV(Qvjrlc0NL19C!WLMP6SveMqm^ln7)4-j@ zh_XUnBL(NwnpVpfHB(P8a$nl-=SN1+%YCfkxjSlUxtvjR#e6AKC@;63AFx-pHF?j~ z%u>7=YLkO?MlIK?T7@=JJGYtirSwdC`eJ(4=xkJ!wl8f`BX?_4n_8@yje1yRThx>n z?`YW?Goz+$)(quFY(-lm#hNW8ift{W>J?oosLO*wwWt;fq!S41rD}e;q~*-^XxO|$ zT0zScwQ5yeCS+)drc5wWKiBK$hlbGhfVIu4WEeB*K@aykwiHd-Ya`{#MKxb))=zS% zpS`cfEC7hP6WGs3B53=f&0JDB()JCD^|O7>M(c^D-BtZOv#M=1t%_R8bhw}zdB`Q8 zwg5GtYnyBNik6|*h(litMlS60@z)}VW8+ly{RKiYLx!a?JI~nbk&*1@z1!iCpH~!g z-^Re&-;4~_sIVgqtAvTf@$zUNR_x8>)R1)GDX5EDp-I+BtXR(NA~HXH`TBgCT#HSO z=Y&B$UnCewhkg8lvI|XXRZXPUNPPcFx1S#vKrd%m-(t53ItZ8tJ$8m>{9egXrFMFX zwZrMPHG0xgzEZ8V4Bu91L#&`ah?GVyK1*Z7+wTHvYPEW|Tp zb!ll(SS*(d=4fKrLQ?4vwL!Xmhve!yxrOTEtCIw)47p*@fuij;V-!N;Gk3@Z)8Squ z_4xSoK&L)oHeE(C4@32P0e1Vkf5zVa`twcI6g19*9eRV2{AN0Zg$1kULN8MU$EA-a1K)uK7 z=TDwQb<5zz+N#+hd=7XUJ!MZ1l=iVJ(LQzsBZ|+*KYMb=I_kYozy8>bA>#gcHW|8Fbv}-3F=c>oYXOa&9wVAVV zrM3a{ZikVdA09^cXPdB_`B<-Mp1K_HHdFV?)!u)s4|oPw>uuSQtSOh%?8+RTFU*mz zRVzW9C669V0ipYp%g0|I-jQyz%EqJ_;xrF_J{s8^yi_EhqgjDLvqO9^Lo!8^b~reo&()K?*51F-|H@t%;*ze^=&}oZ3+6GzW2^fa3lfk2=jA4N;V-(F!jveuG zXV5^SOkIE$#*UJQy<8eyu#{ph!wAMgQI}DonP9{xc{8g~xG7;~H4HHmjI7EbFZVQx zHEc4I&3x28GuFry>7($5Ev6C=oj{OOw)}>PB!Zns4w|BdX-!eXq=x9w0WWu6$4r}~ zDMw9c2nqYW+%Oul6it^Nd`7ACSm-q+j1rlIQ5Zcwy3fmGS*B4RR;E!8R;Jf1(~xMEfDE~2%%I0C(~#E7Gz8hnQMauN zumULxdhmqHY+8z|sTfg-=IJqHyPWkxs0cd>l5zS(=p_z+7ymxa;h*3y;1}`N@Q3jX zeh(hP!SK(+-w%I1{H5?`!ygZSAY2LmMmQB73VTC83%wEgM(CB$CrM`b00AHX1b_e# z00KY&2mk>f00e-*0}(jlK?-v67oE^kj2WTTlXU!$2aTX0oyJ+CkL~xM)5zxW>DQwS z9n6Ju6noGB3ee2#{K#<+x_~-)Z4T?HhJscf3xCvuVyKJiYE3%S=Rw1$)zi|a#~SJy z{*r^tN_HN8@MHAo2}XX46QY~d#6t_W#0HsWt1BYFd(e5*?sVv4b+-8!{CZ}iEIP~g z>6wj~=B(bUXEx&5RNlj2xT!tNQNZfm;tX)Hrgu>pmIu-GfAXV$_y7SQ00e*l5C8%| z00;m9AOHk_01yBIk1zqc{txs2N4SBZYCr%800AHX1b_e#00KY&2mk>f00amDSpSD^ z00e*l5C8%|00;m9AOHk_01yBIK;Y3Q0PFvcej7s#fdCKy0zd!=00AHX1b_e#00KY& z2*CP3^Z_6M1b_e#00KY&2mk>f00e*l5C8&?J^@(&fArfJY6t{?01yBIKmZ5;0U!Vb zfB+Bx0zd%P|Dg{60U!VbfB+Bx0zd!=00AHX1b_e#c=QRt`v0Tf#!y2b00e*l5C8%| z00;m9AOHk_01yBIbp78G`Y4C5hrbjaAqVgQ0zd!=00AHX1b_e#00KY&2mpb%kH8;s zd?*yEpFs$vQZ=nwQ`Q#iy`B)q_wjnPqOj;Wk~X(e(X_S2)!dStsjjGUZ0wXIlFunM zx3zV-D5<$y*{xH#O)+_MsyOw``QcJ_{_5)8TdQ+33%84_i&Klk6JyKyO|h0x@6JVU zR-fV!CySCiBF0B#Q4p2!XmVVPIYia5o7!~1YLm=tx?6U#XzJO?C29Wo#M;yy@zh%C z_O112RHd{a<)$y)tV~{8T3xDb&7B`xO+?Rch%-|Yg@v){R%8Es9=S#9h2AOmHUdl~9 zvr#G+7Z;Vw4i+WGV`D8A(Wv@46ylEX{L`#C6-BM6#d38*-N@%==uuAH(B7Lbs>}J3 zTG^^;m5Q1#jb_V5CxGSKtCucsmM1T7RPv|pTouo+J^x&MA$op2cjZbxsyBPgk_% ze6?0lYx#01TTrW2t!j-r6!3CtTYVoQ~n)%Y^L z&w7aAr-!oTQjI7OYFlfXaZC@Zmg8PGQQgf@OBe8?CC#^92^S4UQa*YNMNpnz)=rBf*c(OUHd)!ab$BB_`@E) z51F0<-$Bpue$?V2@E-G=9zqsJfYmAB33>YZP{SYK4tx4|cE&sbt^=OFlkBuP{b%d{ z2>Utg5C7%cjSchz0U!VbfB+Bx0zd!=00AHX1b_e#cyk2M#8mxqN|K^Ws*+t)HBl84 zYHmqM#Fd1iCX>lTG8vPn=d$8LaY3A(n~L5pP8V($FXgA@se23euE(aIo!XqbIaA+o zd8f8t*j3fkoixd~lApS_8l5UmuUwm3-n=%kaChp??ZVW=bbfkn{@(40<;~l77GzR{ zyg>eLPrN^sDoLBE*_9jVLUJW{Yo>flxp6Oe`_`4Eh2o_NASc&z&s|wt$j4ZQ$>Noj1-VvOEY94UT$MI%KYOEky_t6+c;mXXv~cT&s9s7+ zS^37+ExE9oy*@LUx;4KZ)c^56F(N8-dk3}`z^Ew4f00e*l5O|0PoN`a0-Mk(yV()2HQe)X{Jee4i$A~{fA?}bwE}qM& zQDsrl7RQYB{~vJp2Mf00e*l5C8%|V9x}OA`dq-q;0Cj zwSq=pHDEcU`~MvZraAm|{JVGskK>;3zl47$JRR;1{cY%_(0hCSyXT8NcYC7UKkoj+ z?&pL575pR-h7S+`0zd!=00AHX1c1QfP2lFC0GC1tlmC4+Uoj;KVr*QL$EEnFIF^tV z5xJvmM{3u_6}7ai<%Bh|A=lk(A_a?8|WX)lUz9ncjYaX=wPN8@5rk>kiM>DzDbMf1h| zy5=Et-U>N79!riZW21?&F-4A|fRd)$nF;JIai;p3re;^PN_F&N?+!}jQBjI1VsbYn zseQVV0S8Ou*r-fiG?t8`fNWTDx7=<=3U^Ww9T%0+q!^2n9<#HGa0eBNJT4|iB}IuV z(k?1Oom7b9iZ~iiNKsl5Nv{ZbrCfVOp6O|*knF7@C0N&wCKS?G z7s6<&yP>0{WvLEvR7xmfl(g)QW&|55TFsEgW723mDU*1c3I{U+4IQm!NaNA5(WsJ0 z#>Q+q8dtK}z0zF`6>*aWd!t}1J|0s>$&z(4DLb}FQQgc`YwJ1EcdMh%`gJu!s8!9_ zcr-Sel*n(_2~@|fZc}v5rz_%7$ZijN!y)OZk`gCZqdqX9bKV`KMRJA7amgHQ&^b>h zY5E$#(O5JdrMmSY1d;9c*$_F@W=VWpijKNy7W8)t$Aef8-8hYOp3=P zTMtJ>11rTT2N~AnghXB!X>CHb{_hRHz>(em*YQyJZ^$8hfB+Bx0zd!=00AHX1b_e# z00KY&2)va9F4K+hXH&*LdZH-CGGynvawe103K`}i$*?{2G7a~FIfW;_#VGNvjK>nA zu|z^jNWV_D&F{Z!Q57{*skvOny5)Z+Lt}PSPW%F{79MBeF&YN?S$LF%M`+k}n1wtG z57E%y$HIdwJU~O=eirt!a32l5n1x{$hG^*NVPQ85gEVvpXo$LK=<>4|AB*v_7!Qka zvlthPL3IAl?R$(G391SNfB+Bx0zd!=00AHX1b_e#00KbZF(d%<|HrV=p~^r22mk>f z00e*l5C8%|00;m9An@1`p!@&rce^>a+jGz}>#cgf?7QZB$^XY)WWRzysyp1B>Y3^J zXy|>RPlP8!7sKxf|259EL)s1_KR-N-?$6fL#ezoujbkOVrd5jhYL)!QLd&V^;!HX< zmlozy&rGI;!IsoP;cQSKpTT@?P{@~R+Ok#=rmxKj)AN&)!t*nir&2Qu!qxP`IbDqI z8Z#(ts1>rCM&)cwjF`fPK(hbZJTFPMi}yn3h0be?RPVmdTkrAu`I9G6J=-!;G)D(trx9VVqkw&MOjrg- zLBDK+5yj`@pFQ~i7p6Ysv5V2aea7$SQz>+Rp;?FZs#eLcpn37@Bc5YQmqQ&L1@~HK zrsV&1;A@oVH15rI`S|73j(8nwZH#@6X@UB^fS(^3LHEzJ;AgF4fv%qiJE7K--)g{2 z>jPewOqLknbU(3RHC2*3$+Cn;vt zo$g-_Q>k2;TOV4iwSut8FNlPZ8(=MPfw(8k+pf^9VTA2PC5pKYtx;CsPjhOhmx*R*WdGmpZ`r_ z8*w6&rTtEN={s16gD0aeVdZnqazloZhDUW5TU&MRXtc#<;+$=`y(0Asr`Zn+wtJb2 z&e<&I*pqg5owJbP=`tN-4gb5%+bA@7wh3B{ZA*)6r%w6#GiT6Csdnpa_MFt5$Jbhl$j?j{EtiM^Ig27g?+0IHN_Q^^F7iFJ%0z8r3rWNlh`oTw(jA zu8>_=%atwX*n{?}I17Yjss{;6S9 zA7N}-emO+Z#Kr7b>rb%yj5-@bOs8D>kkXP$FBt237Ij=l>PPylV>HX6ud7obcv zH6~@1taI`q2ctUcu-MinL`~EqnQbQy>9(bth}yDbBu$i}*~F5wZTth-*3hw=ZA~UR zytBNYpG~3q<)(pbh-N`kxSCm7T*`{crRI8L+ixO{I2gLKE{m~_f)pl8U@S)u>!!}{ zW@>{4j6$g^@L-cjBCl)YLcF8XNHdICJZ^7 zV7n?9DP76&T})`?>udtk!!W$q@8>T>P+h0cST598PcvCLmX)(|!XACXUc5cg%%c}> zPo%ZCE`&zv+%an-7}Dm_p4qKi69ybjXwPRe!c4X|!tVDFHc+;jAnam7V}R{!Lif00e*l5C8%|;O!;=^Z&P-Fz5#YKmZ5;0U!VbfB+Bx0zd!=00AKI&J&>X ze}uos;qT$UdgrYH3xEI+00KY&2mk>f00e*l5C8%|00;nqjs$*97A1K^OpJ(%AS&as zJRXxrMJXZ1W!DLJ3OOdraXA`u(fR)&{33^cfq#mBgnx+Nz^~)i@Hg>S@mKJx_!ay) z{2Bad{3-k~{1N;i`~kd8gy91OfB+Bx0zd!=00AHX1b_e#00KY&2s|(WuNxtBh=qMD zJjlWWEZon+UKZ|SA!cEig&`L9u&|qjK^6vB*u_FW3w z`G0`T{{w9PA7JzU0Gs~@*!(}h=KldU{|~VFe}K*Z18n{uVDo=BoBzAn{NK&y{{c4t z53u=v0MYmVb>S~__~-a1WcB~w@VCj@|KE`a_y7SQ00e*l5C8%|00;m9AOHk_01yBI z4-Eldmxm)>1dq?pzFj^a{dReLUiR(wdDu7dx#>6Z_+0GU?L+L_Md$zAK90lR!GH45 zR0<3M0zd!=00AHX1b_e#00KY&2mk>f@R$=gBf}AdQt)v-pWSfA7oEW3O|A+Pe$GlTP^??8o00KY&2mk>f00e*l z5C8%|;LQ+-pdg!hBL!LJ-px(;nv-w$lkQ+>hzo^~!XaZizf#dO&fKt%$wuSjV$$`b zE68U4RJJ+y_j|~yzT4BKf4ltbn=Jq9-)^t|jXdlddEEN9+ogZI*zf<{xX$5kk$wK^ zZ>GAC2M7QGAOHk_01yBIKmZ5;0U!VbfB+EKl|aND2n`|T0f z@Qx8+dkV7s|J-cf@X!*V^M4PU|GU`ypKJt3-!fo%|DT8L|L>1394>h#3Gb?;2|^f^wPt7%JHdhrPwiUU+`>eRg$rmCeFO=a05DU|918pXSI)#`Ay>n7nZ z@^knDynS*V%_J~G|FYQT-I<|hfc5pYy$!m+k{{h*aZmI$iO%hJS_6;E?$bo3~EwFpIXgFF6 zE)5hJ;W9{n{reL6Mb0@IQgF&A^$j`CtJEbfTs$Gc*DoVSbZ?YmJreRk*Jly5&e zI=QoR^dLJ<+tVl6_H(`y{=C=jy!rfui=9)m=*u*TB-fHWA|J_P@=>$rs6XM3rqhs} zy7p0|VjztfOZZV#aBY;QX`X3aTKWsT*gG|_$Q~CW&NHD^#Jv(%5&Q!)q8MvkoPLb? zQHA@QWJfdkrfNb*7;hP#yF}|1*>hY>(Vb|5r(1EcU*al)sSz|sT_>8$-_P*w8T@cI*^d%by@YJd9jQ`Tl*EuJYB*M8GKWD()JRU4t~+pPm+%if zIp2z|f-}=7PJW0oyvhX$P%Ls24Jk@kW`KIko03b&btGatn?@6?FL4o}d5ci4VH(Jt zd4Nt6$xu!zh<~G_G|6zKrv8!M(4^C^SgDlH|FA)nN3OcWf4c#=>U-&`l4z=iM&Dh( zm~kp5!+dejld3{|vp=+T-waEXdMfBf-*P-Et-kK)J=685v<%(XU+A7$LcY~E!(iZ; zatmc_-RT`5YuFtaCe@i|p;F5rHTWC|t=-4Y07hFq_++gF z4_upS-t%?e>XuZ+Jckuoy&Xz$-?B|FG%WO2HKZzX-*OBU2g#aU*Yv}e=4+B&WWXNi z#B)VCV;P2RzS3Qc$i_De27Lk1%DWJab_dQr3BU4sR;Uk$w$()k2M#4;p^;osS;l<& zx^0_=;`QhVsDDzX>_HFTX1z*7LJ1H*;q*5>)#!WJ!hWn;ywIj6bP(UAIh!T?`?|9B z3r>w%W2v#+SgP0RwbjM{;-sDtTY<5TZbC%m(>il@{e#GIafczr)y)a)TlIH Ns+amV=DQ8F^gBcLd3*o> literal 0 HcmV?d00001 diff --git a/kcdc3/kcdc3/urls.py b/kcdc3/kcdc3/urls.py new file mode 100644 index 00000000..8201a827 --- /dev/null +++ b/kcdc3/kcdc3/urls.py @@ -0,0 +1,12 @@ +from django.conf.urls import patterns, include, url + +# Uncomment the next two lines to enable the admin: +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + + url(r'^admin/doc/', include('django.contrib.admindocs.urls')), + url(r'^admin/', include(admin.site.urls)), + +) diff --git a/kcdc3/kcdc3/urls.pyc b/kcdc3/kcdc3/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2e9a9282af8962c46bce4f2869030438890a2128 GIT binary patch literal 525 zcmY*VJx{|h5Ix&XTgrzjX4o^us#p=KR5m1p0xTJ*f^ATO9Y?lI~}n==WIg0OSnr(>XS+e(5` zLU&Sy810-+Nz6(RN@=PlAOU}f@HA*Ht>FF~wXDnL)n>vr!Bx-M5XGR+u!#4u@_6Gm zU7!fdy*n>MT8r4PR#slvcjdwa4PON{kk~N95t00@mZF4z z@DC{YqgT%J(v`+~-a1<=5j?-yTyOZU>sEcV%2h@+VY}jQLW+xMt+v{VQtylrW7Dkt Z9RBB}v9i?b;K}Ys~%hR znWWzyyX&zi91ob@W5s}74_Jf)c1LmhA!vHIAFzJ*7>mD8&&D83xllPQjD;H^#apPX zS)uSr9M6`@L1ARAFak?+s5-q-ldF?@Y;M$qEQ2EkB z!EcZ<5PR?jEXl(~3%OYuYDFvZeY}nGOVUf!&YJ>EiBuH#pt(m&4bhm>iW+DddL0T~ zOW+eVA8&b4X(ALV5lstJ>6>1)4JUR|YTR&(&{C%;5^}D}(54P=SHhN1`Jb$2LCr8U zL^fVn>fy%N8cw_c3+VjemNPP3|r8YW*V&uqn;iOn_`0NDAh)A g-8woOGAGs6KP2FH?I-yD8LeG#>_?A#&j$z59}G!PkpKVy literal 0 HcmV?d00001 diff --git a/kcdc3/manage.py b/kcdc3/manage.py new file mode 100755 index 00000000..a156c417 --- /dev/null +++ b/kcdc3/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kcdc3.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) From cd2aba82300d8f87aa29edca7c8f95257bdbacfb Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 09:31:45 -0400 Subject: [PATCH 004/294] Ignore static content files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..07003443 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +www/static +www/uploads \ No newline at end of file From d7f43363f9ed62a65c54917361a9022695b452cf Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 09:44:52 -0400 Subject: [PATCH 005/294] Add licensing and contact information --- readme.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a47806ca..625d9895 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,8 @@ ## About this project -This is a third generation site for Knowledge Commons DC. +This is a third generation site for [Knowledge Commons DC](http://knowledgecommonsdc.org), ([contact@knowledgecommonsdc.org](mailto:contact@knowledgecommonsdc.org)). -contact@knowledgecommonsdc.org +## License + +2012-07-21: Original work in this project is copyright Knowledge Commons DC and contributors, and available under a Creative Commons *Attribution-NonCommercial-ShareAlike 3.0 Unported License*. From 0b5baa92fc42a093ed27de067173faf6b7fd23dc Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 21 Jul 2012 12:14:27 -0400 Subject: [PATCH 006/294] update readme --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 625d9895..be36d2c5 100644 --- a/readme.md +++ b/readme.md @@ -2,6 +2,8 @@ This is a third generation site for [Knowledge Commons DC](http://knowledgecommonsdc.org), ([contact@knowledgecommonsdc.org](mailto:contact@knowledgecommonsdc.org)). +Working notes are in KCDC Google Docs or in [this repository's wiki](https://github.com/knowledgecommonsdc/kcdc3/wiki). + ## License 2012-07-21: Original work in this project is copyright Knowledge Commons DC and contributors, and available under a Creative Commons *Attribution-NonCommercial-ShareAlike 3.0 Unported License*. From 9ed3b2867ba08cae39c149cae27cb01eefb9285e Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sun, 22 Jul 2012 23:26:16 -0400 Subject: [PATCH 007/294] make paths relative --- .gitignore | 3 ++- kcdc3/kcdc3/settings.py | 6 +++++- kcdc3/kcdc3/settings.pyc | Bin 3103 -> 3136 bytes 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 07003443..be965c0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ www/static -www/uploads \ No newline at end of file +www/uploads +*.tmproj \ No newline at end of file diff --git a/kcdc3/kcdc3/settings.py b/kcdc3/kcdc3/settings.py index 1191f196..b6d69df5 100644 --- a/kcdc3/kcdc3/settings.py +++ b/kcdc3/kcdc3/settings.py @@ -1,5 +1,9 @@ # Django settings for kcdc3 project. +# set up relative paths +import os +PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) + DEBUG = True TEMPLATE_DEBUG = DEBUG @@ -12,7 +16,7 @@ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '/Users/aramos/projects/KCDC/django_experiment_1/kcdc3_exp1_local/kcdc3/django.db', # Or path to database file if using sqlite3. + 'NAME': PROJECT_ROOT + "/../django.db", # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD': '', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. diff --git a/kcdc3/kcdc3/settings.pyc b/kcdc3/kcdc3/settings.pyc index b7fbdf3fd490c8a80762785cd5e14d457455c895..550a61fd44395a93a2b5dd01b5fe6cbe48bd9c70 100644 GIT binary patch delta 560 zcmX|7%TC)+5Ixs+>?C#)NK;5j3hf5crX)Pwr_@SSH(4}@vKpzfLdG->l$X73gjlg{ zKA`_V*u$b<(BJ5i51?ZwCY+#mCa9K5+57(heIsW# delta 501 zcmaJ;OHKko5Pi)IGr)l2f6zoXeh?HybX44U0z=}))Mi4ckqjUhbz$6)cmNZ_0lb4O zTx#OdwWo0D1+1ANF72e=OTDgsRo(q=KidQCCzHDPOw^kguaxkK#7#{B9zY770>!|4 zAPt@d(%~!k1{h!khhP*a203y zV|m5llPaqEux+grxZUWr`mT3(P=UtqX*+V rrZ0)h=r#GG)OldD{J+ic(JI Date: Mon, 23 Jul 2012 00:45:55 -0400 Subject: [PATCH 008/294] get intermediate registration model working --- kcdc3/classes/admin.py | 7 +- kcdc3/classes/admin.pyc | Bin 4170 -> 4425 bytes ...udent__add_field_registration_event__ad.py | 107 ++++++++++++++++++ ...dent__add_field_registration_event__ad.pyc | Bin 0 -> 5017 bytes ..._chg_field_registration_date_registered.py | 81 +++++++++++++ ...chg_field_registration_date_registered.pyc | Bin 0 -> 4550 bytes ..._chg_field_registration_date_registered.py | 81 +++++++++++++ ...chg_field_registration_date_registered.pyc | Bin 0 -> 4531 bytes kcdc3/classes/models.py | 9 +- kcdc3/classes/models.pyc | Bin 1772 -> 1934 bytes kcdc3/django.db | Bin 155648 -> 167936 bytes 11 files changed, 281 insertions(+), 4 deletions(-) create mode 100644 kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.py create mode 100644 kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.pyc create mode 100644 kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.py create mode 100644 kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.pyc create mode 100644 kcdc3/classes/migrations/0008_auto__chg_field_registration_date_registered.py create mode 100644 kcdc3/classes/migrations/0008_auto__chg_field_registration_date_registered.pyc diff --git a/kcdc3/classes/admin.py b/kcdc3/classes/admin.py index 22c3ff9f..41058216 100644 --- a/kcdc3/classes/admin.py +++ b/kcdc3/classes/admin.py @@ -1,4 +1,4 @@ -from classes.models import Event +from classes.models import Event, Registration from django import forms from django.contrib import admin from django.contrib.admin.sites import site @@ -58,6 +58,10 @@ def formfield_for_dbfield(self, db_field, **kwargs): # END Human-friendly raw_id_fields +class RegistrationInline(admin.TabularInline): + model = Registration + extra = 0 + fields = ('student', 'date_registered', 'waitlist', 'attended') class EventAdmin(ImproveRawIdFieldsForm): fieldsets = [ @@ -68,6 +72,7 @@ class EventAdmin(ImproveRawIdFieldsForm): ('KCDC people', {'fields': ['teachers']}), ] raw_id_fields = ['teachers',] + inlines = (RegistrationInline,) list_display = ('title', 'date','max_students', 'waitlist_status') admin.site.register(Event, EventAdmin) diff --git a/kcdc3/classes/admin.pyc b/kcdc3/classes/admin.pyc index dcb07d3fe488dae8391c98504b475d348117da2a..abfe91734f178b98bc1ed179b7c4f368b32c7c10 100644 GIT binary patch delta 1533 zcmah}&5j#I5U#d8Gxqp@H|uz_*PfubED|&BnyTurW~#rc@(+XWudd2} zHp5?kZhSC<=T{k@Z{yMz8Gyha0|k&Wh!~_Lh)Tf7TLM*vv;tA3u*;x4NPUR>!mfY{ zAgw}FEo=`|4bl*z5YjqC^}_3~Ks6w3LewlA0jL(FZHU^1T?N&FvTX$v=3FN~jqR#oc3>8PhLvSKj0?mTNSt!$h-~nJqVl?5Vxp_@X5}ni(8>(Sj(j-!=9;K0(;YPmMBrgVNkc<~1~3 zxr^^gqxq|Zpbt38634r?e>bnZT<19zz!jl`ieKun9^1xyw^U;__WsEAeG9i-BS}4W z2i6=tz#R*ey_m<@(SnyyH3Tl~@obTqJh{*5-_KmK&su%^d&_4P`&aAQiiVq0u%Rhi zN91z6%vCP+LLJLob1IqHIYlf@qV!m1vxP{qBR8z3`||cfld58FUCR&Y9i+WS)tZPj z$@o4st7)S6FuuQ3ab7g1BaPp&-?Rs3sCryEu=}0v0rAme9d|!}2EAr)Yq!1Y^&0;I Dm4`8N delta 1298 zcmbtTOK;Oa5T3Q;B(~!`+9ahd&7%*9dPs>-g?a#$11CfU%K_m-trBmGgY8tYTlIn} zQLadcz3>k>a)=NT{{SvL{s;#o#0_TbQXx(e*x4^L-_Gprw=;gf_@Q;IezS~MSB%?z zIDJ(7-^3C9KydNLzy}Bz*bEr?3it{HD%fi3tKerK(7@JGKLdUif*jbn)YrhzL!g7L zLtubyq-+*^6N17q*oBnHfp0-j1iP5}dGJdRl))~euY)jPmw{`*Q-BkI`*sCf6NH|y zg)?>vTnmH-gXv_Vcs5Z5w*;b^u;nwh)=PqOFsOrIAZl=;;C2*) z2!o*)c66fV2DW)zQ{)aB=Cn(p9`FZ?!-cmvH;2W7(K8k%x7-)*)q zhqnp->p~XC@A8~6OIpUoO}dbnWI0aX--#l};Vs%BQA%yi7ZH+(-Qg(M^@Q&xb&U?N zW_(q~#uA&8FO9WHOWI)T(lnR@2sM; ztmR+?W)&XG1ePreQcP5o|v7{(*-0axUg(h^hU_tHw1nvQF-U2bpFiDT-{)9{1X z^P{c^`$N|Y_c--(T={$YVI25r4=1%u%1B*$Yv>C9x*K>Qr@P}D@@=^_snP{GTba_% OVP08Ys#Mi--TVb)mK)Rn diff --git a/kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.py b/kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.py new file mode 100644 index 00000000..f023b3c5 --- /dev/null +++ b/kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Registration.student' + db.add_column('classes_registration', 'student', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True), + keep_default=False) + + # Adding field 'Registration.event' + db.add_column('classes_registration', 'event', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['classes.Event'], null=True), + keep_default=False) + + # Adding field 'Registration.waitlist' + db.add_column('classes_registration', 'waitlist', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding field 'Registration.attended' + db.add_column('classes_registration', 'attended', + self.gf('django.db.models.fields.NullBooleanField')(null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Registration.student' + db.delete_column('classes_registration', 'student_id') + + # Deleting field 'Registration.event' + db.delete_column('classes_registration', 'event_id') + + # Deleting field 'Registration.waitlist' + db.delete_column('classes_registration', 'waitlist') + + # Deleting field 'Registration.attended' + db.delete_column('classes_registration', 'attended') + + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'students': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'students'", 'to': "orm['auth.User']", 'through': "orm['classes.Registration']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'teachers'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'attended': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'event': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['classes.Event']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'waitlist': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.pyc b/kcdc3/classes/migrations/0006_auto__add_field_registration_student__add_field_registration_event__ad.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3436a168e3ceecbe40acb30f9fb3bb001b8aa111 GIT binary patch literal 5017 zcmd5=+jlj- z!QmGw@$Z1+-BPC&5zjhZ1o>E1A>>jegmrum$1jUzmnR3lUrPRf)D@@dFTvX?t!;~l zDMMDVT4C|w;niPZwZh`+3@knZ(+t%+r8+>aP^Sy-iVR!}^4ihlYakzC({+$%Yki|y z1!%vnK)VTYWy~zcu2*{}vEg80FMW*FTfqG!MOglgbNeTU;U{9=Pr>`yl>J5I{1)UH zXgO{OzJ1sazr&`_OCJKuFEF13;~mVLVW4f0x{LWe=dAmrzN~ns!WaTr$KPY^2pzww z1U4l>pt|~llUp2KB!oMKB|QL3741%cCjSxS%G=mmc>5v9o4|2i;`dJz03XdX^3T}f zBEiAyWA5?@fNeQzopOBcHdbe#Tx}{KnrwQEO_j2f(EJ+Yzqnj)kov20`Zq4ucbw`^ zNPP<~t~V73lazl7@(g8;;QsDtA)N97t)m*N?`i1KPLuqtc8HqT=Mu}$2|OEk%uje( zqGt$y{MP74jDb>}USisyAMtL|c|?!}iE5~ewm~oJo;TTa;;2mv|6|i)x#^^wv?OA2 zTO1+(RLQz5tfC64?O}ybtST9yFo194aSa@PObS6WA!Xd zhgnDUI_^s83?dyX)5&!lTCFPww;f)m~uaijc#+~2;Jy- z0Q`xvJmKR>UgjSdbr~4b4f8O`Om~!L&vf6K?t_iH8{NIW>fZ?BtRKd1+%16VCgmk> zx@&7|>j5Cnf`FA0j~wt~PMozcF4J;?GGVXh1tYR<8~wI%PeH(xK`=VZL% zRr$fTNq*eLU=r#zdWn{2GDl7vm?Jd~%$qWo$mG6d)8~K@yh|G*B^o-FBjvM-K1Y*) z?fkHVOEZOfk=@A@j3TJ#wd@HFy9aMinNW?u@W|R!`!79`)Hg-e?!o7 zsNY%>S0&*OL9ElE-F5j6)lByojmqNjFiiKiGk%M7a~6A$FHc%hKOX5kiHt#C+j{Er z!T#%biT-9kf%SQWH1XN@&ZvstNF0lhA>(FlgQwlst9IN>Pn3A0zl)5=OBLHIA>3Z@O!OsiO1^7jT0p zH!cMX$HXLNBu!v3hl_Ll|9^dO7Dgrr`!;&6#V42<8x95nAWy~sYRuOfI}+EYMX4S} zseI3psbnRW#%tGaiHH&I*cXT!%elu}g9+9~IG8AouP#oeNCkM(V%%U3-$d?a;R=rKaWQI1yLgIIwFqmf4*gyh#R?LI2Nt1kUm50DuK_9g5bi*Uv>xqq3jgkrimlh&%;l7e(~)tm<#iqL^N<|@}J$`5;fstOoR(w56-+>w() z=%7-)z=k~lBtckKMgh+CecTfi+gyd2nus3?h1;BYf_@+#4+6=RAb^;0jI!&qbv}#p zrCE~ZFH1&pdBYaL`W3&hea>*cqRj}ex!S_nh2^?e_m;i4y%le@R`=e)h(8xFcGMN` zN81nRnK)q qqMcBlU-#vIN9@_Eo(uM3MjPZ;9Bwi1GZ#R&IcTIfE&(2V>i-4ahr^-( literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.py b/kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.py new file mode 100644 index 00000000..508da3dd --- /dev/null +++ b/kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'Registration.date_registered' + db.alter_column('classes_registration', 'date_registered', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True)) + + def backwards(self, orm): + + # Changing field 'Registration.date_registered' + db.alter_column('classes_registration', 'date_registered', self.gf('django.db.models.fields.DateTimeField')()) + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'students': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'students'", 'to': "orm['auth.User']", 'through': "orm['classes.Registration']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'teachers'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'attended': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'date_registered': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'event': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['classes.Event']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'waitlist': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.pyc b/kcdc3/classes/migrations/0007_auto__chg_field_registration_date_registered.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80f15a8bb372e93ef94287041970f1c5f9fec6fe GIT binary patch literal 4550 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 v$ERw#t0h~-B z^DlT1L_B-)U+^IQ5wbVEc=NqcL5lnx&%t@`jqd}%0ag3s z{KMN5*#|j*Gj!4zR0mGSpe7)FkVB9TC|Y$bQWKD@n@&N7@Ejn$1abs&3^L;B8Nl6i z2I3@{n3s6}whriuMwOXXa#dvymF^RvRhDm5)9M~iHch=&>4lEIjIf5_fnWZ#k$6z%eDKeT;7{XIAh z?PSFEBb_Z=g2cXf=c^q4Vcn==T^*?>!ix8Zvw{5fT(Do7k5G>&0x>tw+{?Gbf>{pn zaaQP(($Z}1@wO}v>bg`}W$m+yOlwt1C4X5?DzIJqZ;s13yTdWG{49@Ln_+-~iM?YS N{>SNs`Q+_m^b^u6kwE|e delta 604 zcmbVIyH3L}6unN{q)nSf4Xt>d;2OD z@h(YiJu$YJ^IUkGt-4Y2Ppa6DOFbD#CJT@uXd!Wjs7{0cRYBVCMd@K8uLUoYL=^{- zl4saSF4y#O@hwo(TN%YYnP%L^Do)?z-nhwk*-R5PO2K^-pP0;JF2Z9=Y?ZYT6+_kV zg3E4_sWei_a1fI@ErysTO;07}%Rm~?FHo{!k%FbFpoH{qPToLGQ6d5->!j$um?@b` eF=zXJeGSb#L>{sJGLKs%&E+>Se4SYe2KY)$&0(@kcQZdrCU zJ4u8J+qEjbSv7VZ+CtGj2tvUY-S(vf5mE3Vf|M#gRPiB*Xdm(*1uti2chh8>*y@uD z=bSzBf8Y1t&YU^D!k)gwoeei%B?zJqk6t_|JhE@?m*HyZ_{YcL@?NT)8FFYI26nMO zvv0Bt^BGfOhOQmi{Rh2oxSb_*0JIlGNf4z0K^u@{UQm*XlvEQ@O-*Q$>ijYQe0R8p z9DD$&B%(@8RAk8!qR=T0x7DC^qH-*$$kDiz&@>TPX=KsL*?ej#@4Pqwj}=S4R<0UM zN#5!M6Qx)*ro>{Bx|vAorfHe{yfv38*z;*Slh5&y@y)yZ^hs;Rjzsx~B8xTXu~031 zqb>?5DaWGmn4D1Kz>1ad$8y%AM{z8;leC!BRV5me65>6CJn`IC`yF7zz|8nFb=9*JrZnLcuBsf)F>-3wGWxW=_l*vl%OE z8k_5Bm}%RpKC$L4v#umsQj()uTvh~ilCBfhwi7OHbm}3>v813z6Y+#9$n$863x_2 z!gsylBY)ig4ZXnd%-3v+z0Ez#eY=YZj5cviUm}aTNxn~VBv%&B!gtWtXp&cghYrD+ z9y>jqwTwc3!9HQ+tR>^zGPE?-?c4eejF0H45k934kB;z>I&(b2_eRpTZRPM`kMPs^ ze0Dz{SxRT@EG}jQ`+EG*eL3gP1F8?8;~zaZe_ntP2+rz7XxW23*Q%Sr!DMo_HD}E` z`DNJW+$-)w*Nc|4OxdV;Mg5ci^k-vMXM)@IN0O=Ymh+otD9s zdC9G8(NLt>Sw)qs>iKq0F2)&{WO%JOcyQE6jq8Ue^aH7<#||5*k%`oH&mvn|vK@l& zo#NdvUeUYhU{4Rcs@v)Ejkh5IQ z#&q^$z8@&B37j{xT#dAb!S^s}9nxMYn8T#NYc{; aY;}Jm9zA&UVaQKa2vi~e%VsogYR2E|*)W#? delta 608 zcmaiwO-NKx6vywm_kGQ?d1qe87zjE;)0a4SXC8y1(55C@1R_c;Q|W<%7z2JRCTJc+ zYi*Q^QXt`?ML{9;W;v@UD3~B*3>WIkm1EE%BB=Z3rL++*-1CRS@1FbrpVFFHszw&t zZI2LgQQo6-W3k%-&l`O^3hSLLZsvuafb_;t%r@zrxLE6gc7MDJo~xE>6$yUASv+sO zw~8A!pS1kqRd_tqBWKx4g(wyEjn=1q)n|=_@g*`6shhXWt(JRdjOZ=Pv_7KCzSCFG z@c9CK1MztgOi_3SE57j*@?a&CdRs0Bo;x!(KIMwS6KEB?Wf&+IT9V>n8B(IY3Ms#` z1TQu8PNm^WF!%R07RLud-;tSYeiKD)kSe0ofJb5f@V~w)ygyKClW7dB68wpWxQ{zn z#~OaXs(k(eMHT7gl*SYS0E$MN$~0&yjRs4N5rSLzTH@ Date: Tue, 31 Jul 2012 18:55:45 -0400 Subject: [PATCH 009/294] get basic reg working --- kcdc3/classes/admin.py | 5 +- kcdc3/classes/admin.pyc | Bin 4425 -> 4519 bytes .../0009_auto__add_field_event_slug.py | 84 ++++++++++++++++ .../0009_auto__add_field_event_slug.pyc | Bin 0 -> 4509 bytes .../0010_auto__add_unique_event_slug.py | 82 +++++++++++++++ .../0010_auto__add_unique_event_slug.pyc | Bin 0 -> 4401 bytes ...ncelled__add_field_registration_date_ca.py | 94 ++++++++++++++++++ ...celled__add_field_registration_date_ca.pyc | Bin 0 -> 4907 bytes kcdc3/classes/models.py | 11 +- kcdc3/classes/models.pyc | Bin 1934 -> 2087 bytes kcdc3/classes/urls.py | 11 ++ kcdc3/classes/urls.pyc | Bin 0 -> 633 bytes kcdc3/classes/views.py | 22 +++- kcdc3/classes/views.pyc | Bin 0 -> 1661 bytes kcdc3/django.db | Bin 167936 -> 167936 bytes kcdc3/kcdc3/settings.py | 3 +- kcdc3/kcdc3/settings.pyc | Bin 3136 -> 3153 bytes kcdc3/kcdc3/urls.py | 1 + kcdc3/kcdc3/urls.pyc | Bin 525 -> 551 bytes kcdc3/templates/base.html | 11 ++ kcdc3/templates/classes/event_list.html | 12 +++ .../templates/classes/register-response.html | 4 + kcdc3/templates/classes/single.html | 7 ++ 23 files changed, 340 insertions(+), 7 deletions(-) create mode 100644 kcdc3/classes/migrations/0009_auto__add_field_event_slug.py create mode 100644 kcdc3/classes/migrations/0009_auto__add_field_event_slug.pyc create mode 100644 kcdc3/classes/migrations/0010_auto__add_unique_event_slug.py create mode 100644 kcdc3/classes/migrations/0010_auto__add_unique_event_slug.pyc create mode 100644 kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.py create mode 100644 kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.pyc create mode 100644 kcdc3/classes/urls.py create mode 100644 kcdc3/classes/urls.pyc create mode 100644 kcdc3/classes/views.pyc create mode 100644 kcdc3/templates/base.html create mode 100644 kcdc3/templates/classes/event_list.html create mode 100644 kcdc3/templates/classes/register-response.html create mode 100644 kcdc3/templates/classes/single.html diff --git a/kcdc3/classes/admin.py b/kcdc3/classes/admin.py index 41058216..383507d3 100644 --- a/kcdc3/classes/admin.py +++ b/kcdc3/classes/admin.py @@ -61,11 +61,11 @@ def formfield_for_dbfield(self, db_field, **kwargs): class RegistrationInline(admin.TabularInline): model = Registration extra = 0 - fields = ('student', 'date_registered', 'waitlist', 'attended') + fields = ('student', 'date_registered', 'waitlist', 'cancelled', 'attended') class EventAdmin(ImproveRawIdFieldsForm): fieldsets = [ - (None, {'fields': ['title', 'date']}), + (None, {'fields': ['title', 'date','slug']}), (None, {'fields': ['summary', 'description']}), ('Location', {'fields': ['location_description']}), ('Size and waitlist', {'fields': [('max_students', 'waitlist_status')]}), @@ -74,5 +74,6 @@ class EventAdmin(ImproveRawIdFieldsForm): raw_id_fields = ['teachers',] inlines = (RegistrationInline,) list_display = ('title', 'date','max_students', 'waitlist_status') + prepopulated_fields = {"slug": ("title",)} admin.site.register(Event, EventAdmin) diff --git a/kcdc3/classes/admin.pyc b/kcdc3/classes/admin.pyc index abfe91734f178b98bc1ed179b7c4f368b32c7c10..865313ee645191fc1566eb194512340346ade9c7 100644 GIT binary patch delta 382 zcmY+9u}i~16vp2rxl3Y_Hd>GtL_wDfI=EzWX$JQe91cN3?-Bw>4dyyKJIamz0nXAv zM>i4N{3qO99DRvZDhD6${l4!#-o5VMAGr2swDEN|d~lxvLd|oq=QH3GCey?*6ky7+)c;L%nqrbSPXyB?XSVJH#^wB!z+iXCV5(-7X%t2c+C@d+&6p2T1EHSzp!*g;V09sH75&ISHn_8G7S( dY72!~BeG2f_(qmbe8QGD{Ubs$^BCWf=o`h?OrQV& delta 270 zcmZ3kd{T*>`7uWq4*>`X=vP?d}Ezily5XH(66s*BE`31Kb9|r>iLt;ruYF3@JPenLv_(A%&44orxiZiNP!lNI^uI8B$n~MOndW z*%;D+I-m;K!9u*qLR?@WZX}^}pre3hfrX-27*d5;8PXUTqSzQx_!y$tL9XSW{D4=C zDadg%BOeg=@V-jN&V-yBLNhVH4&dtyHbr~6*CW{JA HWaI$=;!-d? diff --git a/kcdc3/classes/migrations/0009_auto__add_field_event_slug.py b/kcdc3/classes/migrations/0009_auto__add_field_event_slug.py new file mode 100644 index 00000000..888011cb --- /dev/null +++ b/kcdc3/classes/migrations/0009_auto__add_field_event_slug.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Event.slug' + db.add_column('classes_event', 'slug', + self.gf('django.db.models.fields.SlugField')(default='test', max_length=50), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Event.slug' + db.delete_column('classes_event', 'slug') + + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}), + 'students': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'students'", 'to': "orm['auth.User']", 'through': "orm['classes.Registration']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'teachers'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'attended': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'event': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['classes.Event']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'waitlist': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0009_auto__add_field_event_slug.pyc b/kcdc3/classes/migrations/0009_auto__add_field_event_slug.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c3ac9ed77108416c3096662a69ef33dc5635a0e GIT binary patch literal 4509 zcmc&&YkN~g5Z+wcaw#|EDp>9&MNC4GauE?I7ZItL7L+0$PqLfz&~u4rH$b1qZ}=bm zA^re;XXfN2@HFw8wB3`P+1c5dcP@L<(%-vw{G|>(ZmaC4gwLB8_9-43e+3mPwI=hT z3JWSKsQANKD)nq_hSaT8XP`Rx z2S3Zz0;aA=N3~?W2lJKox{3TpK{xeXki@bujfE)DCbVulruk}aIcdF(VNXseWneRo zR&+G1#j!LgsbE?KWffov%#vEvWsE7+g+Xkoo>7aPlG5A2-p*{uO)I?v^iHK`Wpx** z-Mk9XJxcEdy-(?n@B!J6MQA^$18OmtQURn6Dt!oy!%82)$0x(Xf%GVr#_Dn=Zc$7+tnx%XE; z$7+tn`7v000iiLb*9PVQxy+n8q;ocK&Df2t*%!dx!lwnW$6I|dUj=Ai=Ac~yJ9lPW zU>Ebf!`u*9C`y;HdIh-8ssPJZCG6MUhhHg@{R*nu-vfPLV)(7n4{{YF*$us9`gd5{!t{r^!YQsB zc%;7##PVnyTtRz7Isu1@d%Du zZ_^R#og{tjr`nQ>mhL!JoGr{1^2m^N9GU%?j7H|I+`%hVl2~rC_v9jbCpb_raA6u} zGALw?*v;J}it#_YOj*+M+Z*ijJ`k3Ip^6-x`)Shext*Ys7QyYseq=aMkBsvtCeSSa zEeS+Gtfqa#dU|OP`RS&&VKzAp0zFa7(z>6D7K%ha4t|FoGVn^HNx@=U$S7L}H7=P` z6Z+2R+9N;STutc7I_*L1L83jcAS>2uk4+i{*5du9@`BHBNt1G#?Y5f{JWm5;7$egP z{dhw>%C}k08P?S$;Oq_Tu2$Mf>`-@}+w2*nUa#kce#?ZF^C#Y0;tCYDHsn-go-;B@ zwMm1xYmbw@cNM-XetzE3>zd%?xuk2{x=FeGhTd^~U1&5|cN;HojNduz`!D?NC8-Iz z@k6u8rZ9AwcjTO{Es3kEAb=r(H|jitdZ}T_L`JEXL&tIC0zW&!jys6rY7iNT-T{&X z$AMGJCvoz+Nx8zYA+Gl_31Xw|sR@ejMt%@Vo>6jLzQi%cD{m08(H9$xVJAqf)PSW* z8Kw@`2|T8QCG_^pgyU`}Nof374x|DMtmn5~@XByZKw0N^It(BYeE`)*_hTc_%N<%> zH;DPQn@KK9YC9JeuCR(88vbkKjoS+*ZS{s&Tb3Xu2cFL7Xb{IzQ9Z8^Zg7XX*WLWi zAm+qkT{Ul<_(UB;8{1BU9(`Znj9Wm)QOl$*O-x)9xxhrU9-w@>CTj!KOyYhRGB$Jr zS=UDfJ3G;`{5ETnOI)Uv!Nv-!%31_BI7^@ngZl)yR9@Jl17>!$)S9LnSSR0z02bYo zZXI>sU1xv?`gy_jBWincvNJxuPo=iPas!Idc7em~Kn3#J#}xW06Kddk{PxXM^W)*?At+^h0#;CWWU-4WLQQLf){FsK?hj zeBn5JfUCSo4S?*nDIU|s?K9h_N`+Ekci|A;U*?OY!ZFO~_bBGVohzKpc*LK>I9oV{ z)dPjS%%5Z4HOwz!$i6wOk>niHr&$hExk_hq9#AS#SC%?R=yKI9c>`kmnDc6($^UDh fc;#8kh_WM9us;BZZ1Qyp^$iLycf?t^jNj6~n{GJG literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0010_auto__add_unique_event_slug.py b/kcdc3/classes/migrations/0010_auto__add_unique_event_slug.py new file mode 100644 index 00000000..556f8a84 --- /dev/null +++ b/kcdc3/classes/migrations/0010_auto__add_unique_event_slug.py @@ -0,0 +1,82 @@ +# -*- 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 unique constraint on 'Event', fields ['slug'] + db.create_unique('classes_event', ['slug']) + + + def backwards(self, orm): + # Removing unique constraint on 'Event', fields ['slug'] + db.delete_unique('classes_event', ['slug']) + + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'students': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'students'", 'to': "orm['auth.User']", 'through': "orm['classes.Registration']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'teachers'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'attended': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'event': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['classes.Event']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'waitlist': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0010_auto__add_unique_event_slug.pyc b/kcdc3/classes/migrations/0010_auto__add_unique_event_slug.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82959dd074818a80b79da9ca4d50542f5e4bfc14 GIT binary patch literal 4401 zcmc&%Yg-dX6rLpsh~lkP(Q4zBCRmyTsAz3#RTOJ2)CRN_Yqy)sBrNPD-I<7dw!f@@ zsXw57&za38@Q{4y7l92k=bSm0_grR^`{(%4zYEjPn`MNkmoxY!)Wz93Xyv>YMF#a}|a7vk0C1gTpuPe8T* zFMig_4whz&Of~HKB-ZQAEfspJemn7uA4irk4n`PD6=*YwWyZ}sC#?_h=yE{_1)pJB zkZE`ev$V(we_Z%^;e!QYPAthho`Pt@A@)>Gh^1Ce$Ri+6G8uB?LLSBbn2=MJdmOtH z%!TMlAx~j{TF8&^53(Oyp)=T>6-$0W_>ej$aBQ-28(pZ0tz zvU>9AGRPxcg_0|o67umX%%9-MuJsLG?`ggvD(Uw`oKp?Z=W?0-j$o(AL z42!uTSbPDYA+A???f|*eohqa=GH^}FwZqBtARiLb0?5O?Ud*@v?aK_bTOen_3`^`% zcD7#|78c6VZE)`Z_bK6n{gqAo-GlH8L9$;%_M3tD)5`f4{NYg4rvR<&!5qS;dtQK%Kt%aXJeh!o;xVnGt!&@H+az6y?IAZI> zg1>>i?J~gm!bWSIBfBrb9g>6WPzq81&@VWYIomJXUqOClCqZ7wOwGb%XsuOK8z6C zXb$|1k@$N%^ViEHv}TUuvl)0=EA6VcDl#Td2ZL_AOq%L=gcVAZXO!EG{6D*jc~(*d zEkml}BrKCKe`ri>QGKCRqN`rwg|V)7l6YG+jjldhezaWOY0BoJ8^ld7ufmyh>Dnx|5YvFWTFP>65kVb2x*VdtE|-Y*n7CB=oh$TSn;( zTQf1kvEl{VhN1UD0Fn5pIOa40FWRvIW@j~*5G!mGj`|*qluOMxGUyD~>~$1MvD0w_ zuc3m{+?4|?#?z9eqR2|KT%d6xRpLi&eVO#_SGZq%Zq`snEo`od+sbUIgn{da$o)27 ztFi7T-lZ7Cn>aTtwLK75;zarF=$YDMR~WxEItor#mTjmT*Z{~Ws2mKQk-b&ZLJz@Z%9ux#5S(rtmCDf?`0aWQ!=?HPl~HwY+X%I7P&Cw_`t2QePXP|8eN~ zfvrB81GjH+s__!)2kiTzt-+R`Xxkb3G{pL4#NC6ysdQ}x=o=%3Xl&(<;Z*)yKg+^wbF!4j)VE1k!l zCeZrHeF0obZ}i0;F}-mrb=CH@vENYu7S*2FLi@M37~r0MX6SB6!_Znb%ELFDM3-2u zw_~)8Z*XZ)pX_>ALO+#)>1sW2;a2R0OI%XlLOp z1{xL7z+BPP_9YviJ2+h|jI!YxuL1D5o_n*FLABS_c^prV*_k!4;T)w7m#K+49G9!X zb-C?a7iziz26>$<)XBR#4Ga606NeqX?GX#-;X~Z;b(#Q_SDoNvd~C8XS;#p#=Y%uu z6rI_zoO1~)`n`y?r52r;lt%O-o*CyFxM!VHOfP~~bnarkh{v8Qf=7}?-d|@q?DA!@ z&B#$L(RAjGj_IbA4f{^W{xRk4LY=?<6P#JuGNc?x8RQRvBK!P}P4+!XFwev(#EjqE Ef2furRR910 literal 0 HcmV?d00001 diff --git a/kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.py b/kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.py new file mode 100644 index 00000000..4b23a406 --- /dev/null +++ b/kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Registration.cancelled' + db.add_column('classes_registration', 'cancelled', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding field 'Registration.date_cancelled' + db.add_column('classes_registration', 'date_cancelled', + self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Registration.cancelled' + db.delete_column('classes_registration', 'cancelled') + + # Deleting field 'Registration.date_cancelled' + db.delete_column('classes_registration', 'date_cancelled') + + + 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'}) + }, + 'classes.event': { + 'Meta': {'ordering': "['date']", 'object_name': 'Event'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location_description': ('django.db.models.fields.TextField', [], {'max_length': '200', 'blank': 'True'}), + 'max_students': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'students': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'students'", 'to': "orm['auth.User']", 'through': "orm['classes.Registration']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'teachers': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'teachers'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'waitlist_status': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + 'classes.registration': { + 'Meta': {'object_name': 'Registration'}, + 'attended': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'cancelled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_cancelled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'date_registered': ('django.db.models.fields.DateTimeField', [], {}), + 'event': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['classes.Event']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'student': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'waitlist': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + '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'}) + } + } + + complete_apps = ['classes'] \ No newline at end of file diff --git a/kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.pyc b/kcdc3/classes/migrations/0011_auto__add_field_registration_cancelled__add_field_registration_date_ca.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6d109488c2e833024cc40183ea671a998325b56 GIT binary patch literal 4907 zcmd5=Yj+bz60MPB8x!-$CJ+*`PC~*;PFTr?#bL9AO)!uLiJXu2g2o`*8s zg7}>MM!xUQ+aHo2kiAts51C{6@DbZH>aMP?uDW%*y5;6?CyxK`!MXb(6+caUeu2k) zkC(!qM={ZkYd0wNC~446gFGH9KIa|Gn z$2^`R((oBe6E6*Ku`D;56wOoAq6k9}Hfde8@XXN&4vD8~f!2pjQpX@(6fyMXNgYT3 zHBw7%^aOe*WfZEXNS#Liby9!82XxNi`c(V{b3TW723k%V zhHt!>hreUe7iA8C<(KH!WW0&q#?&bDx#r3(^jz4Oahuc~^uKbc{F>A^=s8PMB!_v9 z;9HCx62aZd;GAq91g8Gs>=v#S+r_QImhM5N+6yi^7H>jaaRGA+F8mYX`#^b7*!^7% zZ+|MtgAi;@TdG;L4Y8w-%jUsJ52{g@vG37$TNBzpIEY+C?Cg&iosqa|Qh{qd=^-Xn z5!Qa~K>Wy+j~1zaIUYTB<>TKjUZ2!Y(BcwSAy-$C0OA?W9HKoq+z3~Zkk(P)m7Y%z($W@!4V|X_3n4j>nL{G4z@YkUKpbeCo^c>w5Sv2HW;6~H)YSsBtbwN~* zk;QV0{C-Xi#86B?HQ(wS$0D2dO}xW6Fh(0c*Q3Z-cT~vH5C&n8emDp}nW|*e?Yqc`&fruMJ;3!tgDqZbylB zmRrzFCvj}&&=|x)y4T@W9}ig$CQ!-`vv`uEat@A$qIoBXjRpWj+xbLy7-#7j9S;Eq zQI;nie2~1%f6?kaFgiEAAPDkeUECBj=S-k=V|=&hpJr7&uP}0a zzZnGKos1GkWJF)=ZThi*H(qjN$`sw>vUvyg|FG_Rn0KM zJ~1<5r8%DVif}v2mCmDdWZq+Y z2Mr!nzqDeRdJZh#W+QEPbuMt#fyu63TU`~~AuhTC-N%?WE14y9cd}eZqx7!c7gq$e zB03JvbT?e6+vos3-iFh`3!Yb34ZA2PjVtIRg;G{ty5N~J>@iYmQ3AVFBh8-mnJ|(Y zDH2bzC`F0B!0Izf^z9^wVn;SEfS+C!`s1rX6pPbW9OZ^lZrmm?uS2b7jcgP|%nQ5J zzx;{7doVJ75ZdUemYkqxY%m-OfZUk?s0nJWBoc>_MS&efshmO5m3_&@ZSC?kF)_x8 z^$fhRT!eV4Ut?`VgN2fKUSG1o62tZFQJZl?I9%~=KLvLsJuEzO$8PIitOJothSDa? zqcMN462@HyUM4}eSiu{mD~ivz9OpSlhJEI!%oF82LsR{$>U%Yd0AT>IS0 zRtNarnVYugl|4b*Miz$&Z;)pJnz(K-73{>SRT+w1Nk)D=z?{BXW-@I}B9RO!9UE#02JKN(JBr!7_P z(u#STd!6=y;^@lZ3ThhDX{xly&TqR&aqQOB)d8voz6}O|QJ7tpTY=YI%+A4FG0l~& zsg7i;aJVCNgn{yf7rrkW(Dz|x5~G&)xeD~(;FsK+Bu7~?miqu=k&L|JcYr>Z4UW+~ z#cRH?xU_hz={3ER-dngitu&h6yJ+$6d9kDs~dR))l4$AmMRs(m{5+6nK^m1SRo5T67_%0ccU^)=L W;-E`-*By;+Fmv zVTQGA@s^?m6#b_IYO}1K^?>-V9iSMFfs2N>*&U!n9@!G;?LlhK@logl!1Q2zI5qYX zzu2($JziicW-Aqgk2Y6dk2*JRzyV)j&}YzzfVeapR85BG@AJvl*c7C@LbVxQvn0QPC!CLznTB-B!&?%8|6u6^u<8&Zpp zDaLGa`gj+6xQY+4t8~Q95u5uw#!a^Jv;FA3c_~Ze5h9q_tu=9@Z2~DUye|-(f#Rj` zylNb$Wn8);AgKna+~!lTzr6dnY=3(XR+gBpq)+0`-%ZTkxU9^?kY2S<{Pnd;Lbvjw uG_KE4elRjcVW^U}T*x(LbANY5>R)6l#p`olJ&fE*?GOJIMm&W>O#T3mB6ySl delta 585 zcmZWlze^lZ5T4oFA9uIA?%wGg!a>9|9+p;iLIfL0iszxYjUJho^MWYsK7TbaaH$1( zU@2IoNM&nfYoGrlHZ~zMFNt8X@O`}bzVFSO*{}IU7S(>F&ByP_WpwL3!R6h`c?47g zU55!^(FE(EX;2<%JMyn` zxuX)HOenW$u)8G9Lu_NlXyYvQu!HlsfDKQ@Y`tf=PddF}RGaoD*gEG;kSi51^vlx%LKg+7*2W--!?hDPs{dNi(#E;XrFV$_*V phGVnOs{Izews|n<%8c??DtRyD**lnEVn0OhFy{R>ZCvkR_6r@oV%Gow diff --git a/kcdc3/classes/urls.py b/kcdc3/classes/urls.py new file mode 100644 index 00000000..9ba213a7 --- /dev/null +++ b/kcdc3/classes/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import patterns, include, url +from django.views.generic import ListView +from classes.models import Event, Registration + +urlpatterns = patterns('classes.views', + + url(r'^$', ListView.as_view(model=Event,)), + url(r'^(?P[A-Za-z0-9_-]+)/$', 'single'), + url(r'^(?P[A-Za-z0-9_-]+)/register$', 'register'), + +) diff --git a/kcdc3/classes/urls.pyc b/kcdc3/classes/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d90c84234362e538e418644c0162a26cdb37c64 GIT binary patch literal 633 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 delta 1686 zcmbtUU1(fI6rMBp?!CJ=y?c_HvN7amX=0O=#@xMk|236uvXq*nHOZ#5AZ|C=8x=y8 z=BGlHc2ggGDrr-CDJE@-6^fRYCXl31lc3-a_z+QQq^6Y$@yK2zGcEybb!f z=@Mf|Fa3o0bY0Ka0YEZ2Xb%ipZ}m){`*a(~d8GQ-=kq5qza4b)w9ogVKv`qI-W;hi z4ZmR}OfwNSO(SSF7}178Di}$GLsN^g;RaL*s@|LIoGI@%Xlc*yP6mUazO2>TleLYk z5zFTKtXR~FS=o3z9*f7r=GfVXHTC&n>S`Z3`ebnA&xI<(S})`|!;G4tu!gq@;0(bT zyv@%37+WBDrNAW{-wy7SzR7>4@H^Fak2y47wc#nEj{i@#0PH)m@yPM!jXJb*0lt}YLo^xGS zV#@dGklXM6)|2)uYx}exH@WpTujc(4ZE2ooTzh_N1+)4PQ@u`<>@Vt(!V>CXQ1?{*3^MO{)nOa!eKa3GMMe@x1Hc= zD0NoG;5(V`&d!~IYfAYgj>y~GA#9xW?P9Cw8;5fC+X8vXIsj@5yD@;-_Pq9 zN!F^qx;l6-Ihb`;KY&W8b(C?ab~?u41t&5ATbxVda9RkJn3UPp3AkZ0*R2p-!Oz&; z-@u(a3g(P8{L3c6m=QH;m6U`Hw}p$S#)_!G{f>H~YG9#@8Sz9ucX|FA0Z*SRBV;#@dIQYGsw9l7vvnxmZnoMR6-y zD;1K?g=4g8UnLbQix8meZ!k}QceNLnFM50@lip5PC71@nw?01pNvk6r`14i-rb z+lL1I>DLe2HYMww3-b3LiYAPBfO@bRkV9M6ut(mcUF#|=0X3~eFj@y5y_#^S^J*il zF4OR5)~Y3ff8c|)#@=ErTVgfLiN?E{-7blVQu$03F}uXf)hHnG@1TjIyM3f S^3xgw)*%1YDm(t4RsIJ2baL|m diff --git a/kcdc3/kcdc3/settings.py b/kcdc3/kcdc3/settings.py index b6d69df5..449e6711 100644 --- a/kcdc3/kcdc3/settings.py +++ b/kcdc3/kcdc3/settings.py @@ -48,7 +48,7 @@ USE_L10N = True # If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True +USE_TZ = False # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/home/media/media.lawrence.com/media/" @@ -113,6 +113,7 @@ # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. + PROJECT_ROOT + "/../templates" ) INSTALLED_APPS = ( diff --git a/kcdc3/kcdc3/settings.pyc b/kcdc3/kcdc3/settings.pyc index 550a61fd44395a93a2b5dd01b5fe6cbe48bd9c70..36aa7e71f37a2255d3a516b9c3d627b926801154 100644 GIT binary patch delta 300 zcmXX>J5Iw;5FE>i6$}Y-_{78kO8zzpV8Ap~2pU91v0cPGAxlO=a#{oh7l?cXZr~b; znvSzjP|&b3S?%mfSn>Fl&mN==I*^5GE>?31 zoQEuf$B+(q0`b8%WCc8hbio7?fL%xr3?Qp8b+Ctytbu2cb)?E$;09vjft!d^3)SJOnpXQAN9w<9h9FO=zBE3qnYwxx!z?$&mHS&<&%WD^TPs>~gFoBNI}88- delta 283 zcmXv}y-osQ5S;Ua6AzRKC?}`Vfq#I49Ey#Fv9_|}4|y;lr-Q?F~ar_UVOkX=wY7jr)50+@yD zfj(p(>_CcO4&s70kOS}*QUXg55A-01U>9-(-a(GhPl7vO1%6NltML04ba?`v!snUd zd=(lz@B*yG>AO}mXB}*)Tq>^qYwDI~_3M6MgH3fU#dS2cQYQLH{Fub@(P)zTvckam X-Abx^d>ssf@FhJn8}?>c&NTl3Gjld2 diff --git a/kcdc3/kcdc3/urls.py b/kcdc3/kcdc3/urls.py index 8201a827..1016d925 100644 --- a/kcdc3/kcdc3/urls.py +++ b/kcdc3/kcdc3/urls.py @@ -6,6 +6,7 @@ urlpatterns = patterns('', + url(r'^classes/', include('classes.urls')), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), diff --git a/kcdc3/kcdc3/urls.pyc b/kcdc3/kcdc3/urls.pyc index 2e9a9282af8962c46bce4f2869030438890a2128..5a94a41402798a4db649bbfbd03846741a030f83 100644 GIT binary patch delta 135 zcmeBWSm{=&n&B74H z$&kXy5Ujy9ae}iPCs1iza!z7#acZ%CF%OUj<>-|b + +Knowledge Commons DC / {% block title %}{% endblock %} + + + + +{% block content %}{% endblock %} + + + \ No newline at end of file diff --git a/kcdc3/templates/classes/event_list.html b/kcdc3/templates/classes/event_list.html new file mode 100644 index 00000000..a1752959 --- /dev/null +++ b/kcdc3/templates/classes/event_list.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + + +{% block content %} + + + +{% endblock %} \ No newline at end of file diff --git a/kcdc3/templates/classes/register-response.html b/kcdc3/templates/classes/register-response.html new file mode 100644 index 00000000..b5f06e53 --- /dev/null +++ b/kcdc3/templates/classes/register-response.html @@ -0,0 +1,4 @@ +{% if event %} +

{{ event.title }}

+

Registered.

+{% endif %} \ No newline at end of file diff --git a/kcdc3/templates/classes/single.html b/kcdc3/templates/classes/single.html new file mode 100644 index 00000000..ed3992c4 --- /dev/null +++ b/kcdc3/templates/classes/single.html @@ -0,0 +1,7 @@ +{% if event %} +

{{ event.title }}

+

Cap: {{ event.max_students }}

+

Students registered: {{ registration_count }}

+

Students on waitlist: {{ waitlist_count }}

+

register

+{% endif %} \ No newline at end of file From 4d716064bdb10e06e2233da590ed0292927ba08a Mon Sep 17 00:00:00 2001 From: David Ramos Date: Wed, 1 Aug 2012 00:54:20 -0400 Subject: [PATCH 010/294] get registration and cancellation and waitlists up --- kcdc3/classes/admin.pyc | Bin 4519 -> 4519 bytes kcdc3/classes/models.py | 2 + kcdc3/classes/models.pyc | Bin 2087 -> 2291 bytes kcdc3/classes/urls.py | 6 +- kcdc3/classes/urls.pyc | Bin 633 -> 763 bytes kcdc3/classes/views.py | 88 ++++++++++++++++++---- kcdc3/classes/views.pyc | Bin 1661 -> 2919 bytes kcdc3/django.db | Bin 167936 -> 184320 bytes kcdc3/templates/classes/event_detail.html | 28 +++++++ kcdc3/templates/classes/single.html | 7 -- 10 files changed, 107 insertions(+), 24 deletions(-) create mode 100644 kcdc3/templates/classes/event_detail.html delete mode 100644 kcdc3/templates/classes/single.html diff --git a/kcdc3/classes/admin.pyc b/kcdc3/classes/admin.pyc index 865313ee645191fc1566eb194512340346ade9c7..004a8723abd3f26549dce9d0162352b9385a8267 100644 GIT binary patch delta 15 XcmZ3kyj+=$`7CtI<3vj(XE*^_6o#WMx*fz(d+VdoSE>1SgU1wtM$6k?Q^oW_0- E0P*!7kN^Mx delta 110 zcmew?xLkmZ`7f93X-fNN5O6=41C3Dd7jQ yQxZ#3[A-Za-z0-9_-]+)/$', 'single'), + url(r'^(?P[A-Za-z0-9_-]+)/$', EventDetailView.as_view(model=Event,)), url(r'^(?P[A-Za-z0-9_-]+)/register$', 'register'), + url(r'^(?P[A-Za-z0-9_-]+)/cancel$', 'cancel'), ) diff --git a/kcdc3/classes/urls.pyc b/kcdc3/classes/urls.pyc index 8d90c84234362e538e418644c0162a26cdb37c64..3de4ff25520b2f71fda04dfd3b800c4b7c8651a9 100644 GIT binary patch delta 365 zcmZvWy-LJD6ot>7{A@NRYYLUfx`iN^YOU-AwGojefz>tZy;9U zd-(uXV&lZDVBx@>IrqEg4(HSUa>mw2=s&!~vjVH*nfJ()d|i&G_qB`61#y5|s0OG# zWM1FfsD`M0WIjj`xC3E__<+MrMT0)8cVSfc$FeY=%hc8H U^tcfjzC&9SQN&ypQ%nJU176Na-~a#s delta 239 zcmey(`jbVP`7K!AQqrd5bNYrrX~R%AXA1>fKiNz KjY)!$hY 0): + context['user_is_waitlisted'] = True + else: + context['user_is_waitlisted'] = False + + if (Registration.objects.filter(event=self.object, student=self.request.user, waitlist=False, cancelled=False).count() > 0): + context['user_is_registered'] = True + else: + context['user_is_registered'] = False + + return context + + + def register(request, slug): - event = Event.objects.get(slug=slug) - r = Registration(student=request.user, event=event, date_registered=datetime.now(), waitlist=False) - r.save() - return render_to_response('classes/register-response.html', {'event': event}) + e = Event.objects.get(slug=slug) + registration_count = Registration.objects.filter(event=e, waitlist=False, cancelled=False).count() + curr_user_registration_count = Registration.objects.filter(event=e, student=request.user, cancelled=False).count() + + if registration_count >= e.max_students: + waitlist = True + else: + waitlist = False + + # if there are no non-cancelled registrations for this user and event + if curr_user_registration_count == 0: + r = Registration(student=request.user, event=e, date_registered=datetime.now(), waitlist=waitlist) + r.save() + if waitlist == False: + return HttpResponseRedirect("/classes/registered") + else: + return HttpResponseRedirect("/classes/waitlisted") + else: + return HttpResponseRedirect("/classes/error") + + + +def cancel(request, slug): + + e = Event.objects.get(slug=slug) + registration_count = Registration.objects.filter(event=e, waitlist=False, cancelled=False).count() + curr_user_registration_count = Registration.objects.filter(event=e, student=request.user, cancelled=False).count() + + if registration_count >= e.max_students: + waitlist = True + else: + waitlist = False + + if curr_user_registration_count > 0: + for r in Registration.objects.filter(event=e, student=request.user, cancelled=False)[:1]: + r.date_cancelled=datetime.now() + r.cancelled=True + r.save() + if waitlist==True and r.waitlist==False: + for n in Registration.objects.filter(event=e, waitlist=True, cancelled=False)[:1]: + n.waitlist=False + n.save() + return HttpResponseRedirect("/classes/cancelled") + else: + return HttpResponseRedirect("/classes/error") diff --git a/kcdc3/classes/views.pyc b/kcdc3/classes/views.pyc index 13a716059a3a32acd05e49ec0189884f6e0e82da..e6855ec57b45482910d016dcbc7e82a2e565bb47 100644 GIT binary patch literal 2919 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 m>|q;i#mKpa;wj>KS?*UnR}Kz5EANs3 diff --git a/kcdc3/templates/classes/event_detail.html b/kcdc3/templates/classes/event_detail.html new file mode 100644 index 00000000..fd533ed8 --- /dev/null +++ b/kcdc3/templates/classes/event_detail.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} + +{% block content %} + +

{{ event.title }}

+

Cap: {{ event.max_students }}

+

Students registered: {{ registration_count }}

+

Students on waitlist: {{ waitlist_count }}

+

Is user registered: {{ user_is_registered }}

+

Is user waitlisted: {{ user_is_waitlisted }}

+

Message: {{ message }}

+ + {% if not user_is_registered and not user_is_waitlisted %} +
+ {% csrf_token %} + +
+ {% else %} +
+ {% csrf_token %} + +
+ {% endif %} + +

classes

+ +{% endblock %} + diff --git a/kcdc3/templates/classes/single.html b/kcdc3/templates/classes/single.html deleted file mode 100644 index ed3992c4..00000000 --- a/kcdc3/templates/classes/single.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if event %} -

{{ event.title }}

-

Cap: {{ event.max_students }}

-

Students registered: {{ registration_count }}

-

Students on waitlist: {{ waitlist_count }}

-

register

-{% endif %} \ No newline at end of file From d781841333f9be37e3878d0053262c6ebac4cf08 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Wed, 1 Aug 2012 09:26:25 -0400 Subject: [PATCH 011/294] minor admin cleanup --- kcdc3/classes/admin.py | 2 ++ kcdc3/classes/admin.pyc | Bin 4519 -> 4552 bytes 2 files changed, 2 insertions(+) diff --git a/kcdc3/classes/admin.py b/kcdc3/classes/admin.py index 383507d3..ea17387c 100644 --- a/kcdc3/classes/admin.py +++ b/kcdc3/classes/admin.py @@ -62,6 +62,8 @@ class RegistrationInline(admin.TabularInline): model = Registration extra = 0 fields = ('student', 'date_registered', 'waitlist', 'cancelled', 'attended') + can_delete = False + #readonly_fields = ('student','date_registered',) class EventAdmin(ImproveRawIdFieldsForm): fieldsets = [ diff --git a/kcdc3/classes/admin.pyc b/kcdc3/classes/admin.pyc index 004a8723abd3f26549dce9d0162352b9385a8267..6882909eb1aa096c24c57385eb6f37b044fd6c83 100644 GIT binary patch delta 104 zcmZ3kd_tLx`7)fvcg+Wem1jgirLvYB8%GpiUc0A*eiw*UYD From c274d3823803b943c9c07c622c1a649952064960 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Wed, 1 Aug 2012 16:55:09 -0400 Subject: [PATCH 012/294] clean up class views - writer helper class --- kcdc3/classes/views.py | 79 +++++++++++------- kcdc3/classes/views.pyc | Bin 2919 -> 3524 bytes kcdc3/django.db | Bin 184320 -> 184320 bytes kcdc3/templates/classes/event_detail.html | 16 ++-- .../templates/classes/register-response.html | 4 - 5 files changed, 57 insertions(+), 42 deletions(-) delete mode 100644 kcdc3/templates/classes/register-response.html diff --git a/kcdc3/classes/views.py b/kcdc3/classes/views.py index a5c5631e..eb473096 100644 --- a/kcdc3/classes/views.py +++ b/kcdc3/classes/views.py @@ -2,9 +2,10 @@ from datetime import datetime from django.views.generic import DetailView from classes.models import Event, Registration + + - - +# display an event class EventDetailView(DetailView): context_object_name = "event" @@ -30,22 +31,17 @@ def get_context_data(self, **kwargs): +# handle registration/waitlist form def register(request, slug): e = Event.objects.get(slug=slug) - registration_count = Registration.objects.filter(event=e, waitlist=False, cancelled=False).count() - curr_user_registration_count = Registration.objects.filter(event=e, student=request.user, cancelled=False).count() - - if registration_count >= e.max_students: - waitlist = True - else: - waitlist = False + r = RegistrationHelper(e,request.user) # if there are no non-cancelled registrations for this user and event - if curr_user_registration_count == 0: - r = Registration(student=request.user, event=e, date_registered=datetime.now(), waitlist=waitlist) - r.save() - if waitlist == False: + if r.user_is_registered==False and r.user_is_waitlisted==False: + t = Registration(student=request.user, event=e, date_registered=datetime.now(), waitlist=r.add_to_waitlist) + t.save() + if r.add_to_waitlist == False: return HttpResponseRedirect("/classes/registered") else: return HttpResponseRedirect("/classes/waitlisted") @@ -54,26 +50,49 @@ def register(request, slug): +# handle cancel form def cancel(request, slug): e = Event.objects.get(slug=slug) - registration_count = Registration.objects.filter(event=e, waitlist=False, cancelled=False).count() - curr_user_registration_count = Registration.objects.filter(event=e, student=request.user, cancelled=False).count() - - if registration_count >= e.max_students: - waitlist = True - else: - waitlist = False - - if curr_user_registration_count > 0: - for r in Registration.objects.filter(event=e, student=request.user, cancelled=False)[:1]: - r.date_cancelled=datetime.now() - r.cancelled=True - r.save() - if waitlist==True and r.waitlist==False: - for n in Registration.objects.filter(event=e, waitlist=True, cancelled=False)[:1]: - n.waitlist=False - n.save() + r = RegistrationHelper(e,request.user) + + if r.user_is_registered or r.user_is_waitlisted: + for t in Registration.objects.filter(event=e, student=request.user, cancelled=False)[:1]: + t.date_cancelled=datetime.now() + t.cancelled=True + t.save() + if r.add_to_waitlist==True and e.waitlist_status==True: + for w in Registration.objects.filter(event=e, waitlist=True, cancelled=False)[:1]: + w.waitlist=False + w.save() return HttpResponseRedirect("/classes/cancelled") else: return HttpResponseRedirect("/classes/error") + + +# provide information about an event's registration status +# relative to a particular event and user +class RegistrationHelper: + + def __init__(self, event, student): + + self.e = event + self.s = student + + registration_count = Registration.objects.filter(event=self.e, waitlist=False, cancelled=False).count() + waitlist_count = Registration.objects.filter(event=self.e, waitlist=True, cancelled=False).count() + + if registration_count >= self.e.max_students: + self.add_to_waitlist = True + else: + self.add_to_waitlist = False + + self.user_is_waitlisted = False + self.user_is_registered = False + if (Registration.objects.filter(event=self.e, student=self.s, waitlist=False, cancelled=False).count() > 0): + self.user_is_registered = True + elif (Registration.objects.filter(event=self.e, student=self.s, waitlist=True, cancelled=False).count() > 0): + self.user_is_waitlisted = True + + + \ No newline at end of file diff --git a/kcdc3/classes/views.pyc b/kcdc3/classes/views.pyc index e6855ec57b45482910d016dcbc7e82a2e565bb47..f6d83eadcc42414bf41adbe0ca79f9d1b5641d32 100644 GIT binary patch literal 3524 zcmb_f+io015UrlQ*t@n9#~~((AVP%8CL&%TB&0}IgyIB6iipq{h*$}YCOaK7>)Bmr zx;HkG{gk{R9^nHJAHWar6MO?-0Ix`JPWA4NlURZWJDGA-Pj&UB&Z#Na{#t4O^3$cy z`!fBh;rAza-1iU}{u?PohDLfuhLQ9lF&vGgsL8MT%hh|z}FhCDWsHRZX;Gm)=*Ey)&W^xBdws*2A3sk&z)c_$#!Q2`^o>oPbY%r zmmuzWzZcsl6YIQxZEm~0@yOZOW_fA*zGLXU2$7}U`g~}^NE;(}tWWdetK9B~m<^2G zeQHPEFGGv%PVRh}`g}a{XJ@afIrA&y3b*mNHz6!egEK-#VsSrp-XM?Ika)XV#&VfH zXY#^Zc<$qIS1{u7-^d}ZD3U=Whem!7If}&BWKfqug8}h&&}0_;f@C$yXHpw1@>UNc z$?CFsvN!JbRqw`$-c4PkEd!(k>r^xAVI5>{w=U&xe8n{vWpmW#PNv2Q8+a*Xwe=T6 zu9|7c*71-q5P7@9#65@?AT_J|Y3>W;2~$M+>8Nju!e)LAR(ULeNq;;+Ue927He))( zNX}0(8TDCJm?Lg<3y=F10$dyzvXGoJpqB|m1QJQX zIyrh&lS5FmA-Mb9NXnnpT&PUo6buUfpda~BCu;_6@)dQF)0d#vkLq#=iZ65Agwbix zAH}b*ay~P%O$~&HM#8}W?_p#DcJNdW0vd|RPONoIxxxa*3Yb*bjhP_FOw3bUy?k-J z;(=r0=l-@V$7P2@nz{HKG!S3muSANEaqylkNRf;5)+vNf%(|}Rh_$YB@@TxT1vkyI z#E<7B497~J+L(2-!(_#;Q@jO%l8NH0vQ+6S+?)dDwbsmT=PH(RtS}N?Fl)6d=7wpT zv!)%b1Q^ZWwMD;nDCz$nM((BpqABIyauBm-aBjd5paTFY@&blX_5q-`?tIe`fCns7 zAQ45$GOs^u~AReW^A;}u$ zV7kEX@^FN7oS$Ko+RFgdjA;!I2qkKBCNMyfS38H;yr!RoJVg*|h9WP1n;Nro3}h9) z7&g`!L|Xg~gnkf|7V~A|b-v_|;`b=tr5o8Z<3Qqk>L*UO8j#3*S4fQCr%Ck1*B}&( z`=<*=E*LiaF*J7>LZKL~nJ$3XGH1*c^8tRJ11R-E`gGwBZ}~PJN2=Ocv+`W~6*MS( z-LFBAUAzRv@C^*3`~i50HW*ZlcmPLxl4(PtZ6S&`APUKb1oaB73(ONe!}tHVC(2)d zHxRxkyA3IyYe#|QS~6-eESH`uD1TvO>7*qPP0Kgimugq_uq&{J?aLpt_)9Xn`(Ht- z4Zj%VngL0ND4tl2b3CG5gW^Qd;X?gmM&b&j7ibcU+Kmp=0{~Ck z6sMRBg_CtORKiPiXQ>aA;%6*olYF|!TSUYp$w#?QlFy(|vDY%K=(@QM{4GbV2$s2N zmhotF62HN{usM!Dgs3*8+9?!gMY#6QBz7};5SAeG_3wmikdAi78{hKJ1&oQZHhgYa z4yLa|d$VIlw#@r6IiS^H+Wl;3L*l|`PCq@$`s)n0L2(u0^pB?Boz2iT-6A=)3a*<~ O{9A9VUv8amUHBI@v9WOg delta 1111 zcmcgrO>5Lp6utK)c{9l*Gt<(>X;Y!L+K#2@(vO7*m9AtcZ;*meham}N(vo75(IPWe z=w2xK19k06aO2KJe}&?@KS11jZ&F8!;?jhBa^B5*_rAPya^{`8p7!0b&OWxbe7LwY zdOoB`4^O;TTDNU|c>h*IC%>K=K+g6UGL_k}D7yQDq5x0+Mqs z5=<7B?JAI25Y@N~wH|R(eJo)lA+kA%l%hhs{tILd1XVaj=rS`47F(3|Ah3#20MKpM z=+iox&L6lx+|74tb5_=%QP9uAUfz%`ipQ=pD5a(uW*BA}TKT)$Z0IuO!=eoX#0M|S zV*MAPLQ1sx4Am8eMS_fTp|Y4R5ctC+=?&8`=_TRrAkC6~HaLiT{=qQL6iZSpNb;}p z>78pdOy>ze%;GApi3XZNYBsK+g*IBkDOKZT92*qrGt93V^Z!LQ9g;0PRR56w!YDxn z79Z`jfwY?lN+R}b_5%~A(6nA?`ur1Yv#v*GA?zly+>Kv4Z{p#`9}UTY=5Je;-R59S z_8~)6px0oGF3PXqc1*|IoVbNp>6XGDtW<}kLtt}=0p=&wTSrrrR_q#8uq9@H^$5RM zW|;UyU8iAICn!AT_hUcY-wy-Df10|%!0MImDcHn4YK33WmRwM)lZkC&g-v3zN#`#A z!)4KX#8TecCBq0CZzEX;>*(P+J*UVzowl8SvweA!Cad-QRDY76I@3*?hAuYgc6E2o GZ2bhAt*~AI diff --git a/kcdc3/django.db b/kcdc3/django.db index 816ae9a415e1bfffce682ea06f8e274a336f0d19..1146c6e57261dbeddf4713961c0db7906cf5bb4b 100644 GIT binary patch delta 959 zcmaKq&1w`u6osoQGr`z1(U?IHe>WjUlHyj~Tfg9<2>1XZZj3Pc8ls(E1h;0@=qd|w zse>Sc8wcFDbm1}&;VW1plXj*D)2nX!@ZEdPJ%=a7;Yso4Iv*V0*yn?4cr@f+hT{Dv zj&*k=Zg=|M`;Y6pBSBZzyTxgLv-h+2ymzbEFRoquT@OcMcl>T725X(-HBaNuU&Vc1 zZdctk#yL-%F}}(*D7^=M57ZrHqoIgKdWFg^MKL{-bfs7YexK_@J3ohYfM_U>-UXYYE`M`}DHW zvX%LoO?5bpTYI!#w-FePl9U1UgKy$j=h8>^uzt2FuGTmaFFK6nPrV_wrf)mr(}~!+ F{0IH+uFU`d delta 375 zcmYk0u}T9$6h&vAE7=f|D2Ztdngm3XVwjzooi|emg5U?(3-J%^MTmusl~xaeMG9+O z1X)aB%9Ius7XE`DVC80$1)B%=a^JakG^vaxmAh@u?%T(lT@P=D{B;PA&wN1Z3G4>- zr}`HiBw*+wfdP#YXr|-rl!Mwl7^g39aLB1Qg$`9)5K?yv-7pqTp)$Hq9yOw0Dl4>? z*2lRjSrHrOBI-<`M@L&LKnaDEm}PSNr&(}OXl*iB{!0)4d@D^XSA8hZ86U42P{{ event.title }}

Message: {{ message }}

{% if not user_is_registered and not user_is_waitlisted %} -
- {% csrf_token %} - -
+
+ {% csrf_token %} + +
{% else %} -
- {% csrf_token %} - -
+
+ {% csrf_token %} + +
{% endif %}

classes

diff --git a/kcdc3/templates/classes/register-response.html b/kcdc3/templates/classes/register-response.html deleted file mode 100644 index b5f06e53..00000000 --- a/kcdc3/templates/classes/register-response.html +++ /dev/null @@ -1,4 +0,0 @@ -{% if event %} -

{{ event.title }}

-

Registered.

-{% endif %} \ No newline at end of file From 86404803ab583d86d14498d0453b534dc6d13332 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Wed, 1 Aug 2012 17:33:10 -0400 Subject: [PATCH 013/294] add message handling --- kcdc3/classes/urls.py | 3 ++- kcdc3/classes/urls.pyc | Bin 763 -> 859 bytes kcdc3/classes/views.py | 31 +++++++++++++++++++++----- kcdc3/classes/views.pyc | Bin 3524 -> 4297 bytes kcdc3/django.db | Bin 184320 -> 184320 bytes kcdc3/templates/classes/response.html | 9 ++++++++ 6 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 kcdc3/templates/classes/response.html diff --git a/kcdc3/classes/urls.py b/kcdc3/classes/urls.py index 6a363c8b..43dd35c1 100644 --- a/kcdc3/classes/urls.py +++ b/kcdc3/classes/urls.py @@ -1,11 +1,12 @@ from django.conf.urls import patterns, include, url from classes.models import Event, Registration from django.views.generic import ListView -from classes.views import EventDetailView +from classes.views import EventDetailView, ResponseTemplateView urlpatterns = patterns('classes.views', url(r'^$', ListView.as_view(model=Event,)), + url(r'^response/(?P[A-Za-z0-9_-]+)$', ResponseTemplateView.as_view()), url(r'^(?P[A-Za-z0-9_-]+)/$', EventDetailView.as_view(model=Event,)), url(r'^(?P[A-Za-z0-9_-]+)/register$', 'register'), url(r'^(?P[A-Za-z0-9_-]+)/cancel$', 'cancel'), diff --git a/kcdc3/classes/urls.pyc b/kcdc3/classes/urls.pyc index 3de4ff25520b2f71fda04dfd3b800c4b7c8651a9..a7d40cd7ab6be16d9a44f638069aef0fad151942 100644 GIT binary patch delta 255 zcmey(dYes}`7xcJaS=@5xrZiXms2F6rIh7?wYRAz=0HilFV zhAf_mjUw*cK$@YMfuWfREW^o=$^{ZhVP{BX1&T95#km+#xM6C5vb-R6GaEw`FGC6+ zL$C(_#8Zj7Oh5}u_<@9LS!!O1OKM4CW=>dUYI%tWP%J35xFA2TI5i|Sw;(66Bz3Yq zqXwTcP$I4fDx*L7Afp7cO0o3hy^OMxTNyJM`6j<-tYivepPb6nBqjt@E5j(pD8MMj P#Kt7SD8wki$ioN#&XYBl delta 190 zcmcc3_M26j`7OK%iM5U!qGw|DGaV|(!$V}jPfzz`7Tgvba z(MEy;S2PE%=9F_}B~tDY68wZnIY!Doha924-iIynSgF44?y9M&uKK?Db@}bea_O(y zRJ^^k*{0#I#QzuB><=%O*ZUnwElENX=`v-L)TvObLY)0!q-@rx?ykc{+kQ{%WAX^xm7T^%3srbb)QK7M)no_|q5FMqz!40!LR7``$t zNwaIIdE~0Ry<$4|v&5O5lK4r8O7TnZN=z1)OG`o)_e$@?TyeJCnw`MYfKE@FOwASB z9KO=Z*YP^jEM(-OAqp ztw{y8zT{cQ#=U=^@i*bMb~FL780_(Cxvb(F!OWZ%j0 z3l%z`P^3BzIL6=`K59~IUE&^CU%kRTBA}T7P5?e*a78=(zVCdg!-0&L0BVeR zj7(p!`3V>%B-4~JAT2yCOQg1#VH|)fd_3dRcU>oIBM0;V`R#~9p|9+H>%=O7@6)|L>3vtA75F5y!V4bbQ!X&1vs)25wxL!SJ^A-= zu0cG5>%9lZADZSZW4g^*<9PVCO)0kYVJt;4ikTw`qh_i_O~AFpkr1>f-ojalRT& zkIPr*@ReDFa&E9$uuKLU;4ww}ir=dj*A*_{)iPw>Y5#q)1NC_Upx5doU=4t)t5r^X Zwb-uB??)FKVpcRnW1?{|tcMGY`UfZWDp~*l delta 843 zcmZuvzl#$=7@gT;=)v%F+O#SM&C6gK|Q6k>nm3`()sgaX<#ad=mFU!hLc~$e=`cU`d&96RZ$k!tx~{4+myZ zCij!-{L7t)nx3j;;I>d{mM?D5kCgiQm-B{t`bD8dUH!K3jn?$AIH(no>>3y!agno{ z-mg7yn5Vn$?^(r!nU93X08f=ToQhE&<`TPtr`~DC2VD zbiSBQkERJi3^Ldm0}8H;gi>{)-+PTl6B{<=ELaub>hIpJcMf!GvEhH9vn_BaWma=& zSOy!GBI|~&L=Mx*P~`dlwb(OOTG(Z@=m6F-mI@Fi6&>Kqnh6Oz~! zz_xxKHoI_-L1N;8Er$WS3P=Fg^r!IHVV%X#$}>8%)7dK93Ug-WA&H$BRSNAS!^gB% zo)XwV3_29D$LZ5UsUCANQIc(A%MJzUiLGuSwzd;@$zf$Zi4OE5-_^Y+p!f8xC@Eh+ z;zhtsT%4vg>#kW#IN~|`7=$EM{Uh4zTW?P8O5a{Lx%}?-Ol!k+lg;{oj_Eh5LsCp@ N<{!K9`EWCA`~}%{maG5( diff --git a/kcdc3/django.db b/kcdc3/django.db index 1146c6e57261dbeddf4713961c0db7906cf5bb4b..9895a5eff9c6c224e2b7580abb0ba9dfe839ce28 100644 GIT binary patch delta 166 zcmZozz}>KbdxA8h_(U0JM)Agk)&$0_2~11YGn!0i-N2N=e3fhB_JR#e4xCI3kEd_i z$#mb{v5}3Ffsv8Xk&(fXk(JTNz|ct7z(Uu+P{GjL%Gk)t#8}VN!qCLj0E?8lp1GO1 ssfoE`BkOdvof`?GBMM$FfubTHQ6q?o9Vd-08?Wr2LJ#7 delta 115 zcmZozz}>KbdxA8h$V3@uMv=yZ)&$0_2~11YGa654-N2N=_DuT}+D8message:

+

{{ message }}

+ +{% endblock %} \ No newline at end of file From 4433a65685033a86d1b049952b79bb0352425389 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Thu, 2 Aug 2012 12:59:13 -0400 Subject: [PATCH 014/294] improve admin (add Grappelli); add email confirmations --- kcdc3/admin/css/base.css | 835 + kcdc3/admin/css/changelists.css | 289 + kcdc3/admin/css/dashboard.css | 30 + kcdc3/admin/css/forms.css | 358 + kcdc3/admin/css/ie.css | 63 + kcdc3/admin/css/login.css | 57 + kcdc3/admin/css/rtl.css | 245 + kcdc3/admin/css/widgets.css | 562 + kcdc3/admin/img/changelist-bg.gif | Bin 0 -> 58 bytes kcdc3/admin/img/changelist-bg_rtl.gif | Bin 0 -> 75 bytes kcdc3/admin/img/chooser-bg.gif | Bin 0 -> 199 bytes kcdc3/admin/img/chooser_stacked-bg.gif | Bin 0 -> 212 bytes kcdc3/admin/img/default-bg-reverse.gif | Bin 0 -> 843 bytes kcdc3/admin/img/default-bg.gif | Bin 0 -> 844 bytes kcdc3/admin/img/deleted-overlay.gif | Bin 0 -> 45 bytes kcdc3/admin/img/gis/move_vertex_off.png | Bin 0 -> 711 bytes kcdc3/admin/img/gis/move_vertex_on.png | Bin 0 -> 506 bytes kcdc3/admin/img/icon-no.gif | Bin 0 -> 176 bytes kcdc3/admin/img/icon-unknown.gif | Bin 0 -> 130 bytes kcdc3/admin/img/icon-yes.gif | Bin 0 -> 299 bytes kcdc3/admin/img/icon_addlink.gif | Bin 0 -> 119 bytes kcdc3/admin/img/icon_alert.gif | Bin 0 -> 145 bytes kcdc3/admin/img/icon_calendar.gif | Bin 0 -> 192 bytes kcdc3/admin/img/icon_changelink.gif | Bin 0 -> 119 bytes kcdc3/admin/img/icon_clock.gif | Bin 0 -> 390 bytes kcdc3/admin/img/icon_deletelink.gif | Bin 0 -> 181 bytes kcdc3/admin/img/icon_error.gif | Bin 0 -> 319 bytes kcdc3/admin/img/icon_searchbox.png | Bin 0 -> 667 bytes kcdc3/admin/img/icon_success.gif | Bin 0 -> 341 bytes kcdc3/admin/img/inline-delete-8bit.png | Bin 0 -> 477 bytes kcdc3/admin/img/inline-delete.png | Bin 0 -> 781 bytes kcdc3/admin/img/inline-restore-8bit.png | Bin 0 -> 447 bytes kcdc3/admin/img/inline-restore.png | Bin 0 -> 623 bytes kcdc3/admin/img/inline-splitter-bg.gif | Bin 0 -> 102 bytes kcdc3/admin/img/nav-bg-grabber.gif | Bin 0 -> 116 bytes kcdc3/admin/img/nav-bg-reverse.gif | Bin 0 -> 186 bytes kcdc3/admin/img/nav-bg-selected.gif | Bin 0 -> 265 bytes kcdc3/admin/img/nav-bg.gif | Bin 0 -> 273 bytes kcdc3/admin/img/selector-icons.gif | Bin 0 -> 2771 bytes kcdc3/admin/img/selector-search.gif | Bin 0 -> 552 bytes kcdc3/admin/img/sorting-icons.gif | Bin 0 -> 369 bytes kcdc3/admin/img/tool-left.gif | Bin 0 -> 197 bytes kcdc3/admin/img/tool-left_over.gif | Bin 0 -> 203 bytes kcdc3/admin/img/tool-right.gif | Bin 0 -> 198 bytes kcdc3/admin/img/tool-right_over.gif | Bin 0 -> 200 bytes kcdc3/admin/img/tooltag-add.gif | Bin 0 -> 932 bytes kcdc3/admin/img/tooltag-add_over.gif | Bin 0 -> 336 bytes kcdc3/admin/img/tooltag-arrowright.gif | Bin 0 -> 351 bytes kcdc3/admin/img/tooltag-arrowright_over.gif | Bin 0 -> 354 bytes kcdc3/admin/js/LICENSE-JQUERY.txt | 20 + kcdc3/admin/js/SelectBox.js | 111 + kcdc3/admin/js/SelectFilter2.js | 165 + kcdc3/admin/js/actions.js | 135 + kcdc3/admin/js/actions.min.js | 135 + kcdc3/admin/js/admin/DateTimeShortcuts.js | 3 + kcdc3/admin/js/admin/RelatedObjectLookups.js | 179 + kcdc3/admin/js/admin/ordering.js | 4 + kcdc3/admin/js/calendar.js | 3 + kcdc3/admin/js/collapse.js | 3 + kcdc3/admin/js/collapse.min.js | 3 + kcdc3/admin/js/compress.py | 47 + kcdc3/admin/js/compress.pyc | Bin 0 -> 2169 bytes kcdc3/admin/js/core.js | 211 + kcdc3/admin/js/dateparse.js | 3 + kcdc3/admin/js/getElementsBySelector.js | 167 + kcdc3/admin/js/inlines.js | 3 + kcdc3/admin/js/inlines.min.js | 3 + kcdc3/admin/js/jquery.init.js | 3 + kcdc3/admin/js/jquery.js | 3 + kcdc3/admin/js/jquery.min.js | 3 + kcdc3/admin/js/json.min.js | 29 + kcdc3/admin/js/prepopulate.js | 34 + kcdc3/admin/js/prepopulate.min.js | 34 + kcdc3/admin/js/timeparse.js | 3 + kcdc3/admin/js/urlify.js | 140 + kcdc3/classes/admin.py | 71 +- kcdc3/classes/admin.pyc | Bin 4552 -> 2451 bytes ..._chg_field_registration_date_registered.py | 84 + ...chg_field_registration_date_registered.pyc | Bin 0 -> 4750 bytes kcdc3/classes/models.py | 2 +- kcdc3/classes/models.pyc | Bin 2291 -> 2314 bytes kcdc3/classes/raw_id.pyc | Bin 0 -> 3316 bytes kcdc3/classes/views.py | 15 +- kcdc3/classes/views.pyc | Bin 4297 -> 5093 bytes kcdc3/django.db | Bin 184320 -> 196608 bytes .../images/backgrounds/changelist-results.png | Bin 0 -> 244 bytes .../images/backgrounds/loading-small.gif | Bin 0 -> 3027 bytes .../images/backgrounds/messagelist.png | Bin 0 -> 1247 bytes .../images/backgrounds/nav-grabber.gif | Bin 0 -> 116 bytes .../backgrounds/ui-sortable-placeholder.png | Bin 0 -> 259 bytes kcdc3/grappelli/images/icons-s4a437305c0.png | Bin 0 -> 8572 bytes .../images/icons-small-s9045a82f03.png | Bin 0 -> 799 bytes .../grappelli/images/icons-small/add-link.png | Bin 0 -> 986 bytes .../images/icons-small/add-link_hover.png | Bin 0 -> 986 bytes .../images/icons-small/change-link.png | Bin 0 -> 963 bytes .../images/icons-small/change-link_hover.png | Bin 0 -> 963 bytes .../images/icons-small/delete-link.png | Bin 0 -> 979 bytes .../images/icons-small/link-external.png | Bin 0 -> 1030 bytes .../icons-small/link-external_hover.png | Bin 0 -> 1030 bytes .../images/icons-small/link-internal.png | Bin 0 -> 1020 bytes .../icons-small/link-internal_hover.png | Bin 0 -> 1022 bytes .../images/icons-small/sort-remove.png | Bin 0 -> 979 bytes kcdc3/grappelli/images/icons/add-another.png | Bin 0 -> 1000 bytes .../images/icons/add-another_hover.png | Bin 0 -> 1000 bytes kcdc3/grappelli/images/icons/back-link.png | Bin 0 -> 1009 bytes .../images/icons/back-link_hover.png | Bin 0 -> 1009 bytes kcdc3/grappelli/images/icons/breadcrumbs.png | Bin 0 -> 1098 bytes .../images/icons/breadcrumbs_hover.png | Bin 0 -> 1094 bytes .../images/icons/date-hierarchy-back.png | Bin 0 -> 1018 bytes .../icons/date-hierarchy-back_hover.png | Bin 0 -> 1018 bytes kcdc3/grappelli/images/icons/datepicker.png | Bin 0 -> 256 bytes .../images/icons/datepicker_hover.png | Bin 0 -> 265 bytes kcdc3/grappelli/images/icons/datetime-now.png | Bin 0 -> 1181 bytes .../images/icons/datetime-now_hover.png | Bin 0 -> 1136 bytes kcdc3/grappelli/images/icons/form-select.png | Bin 0 -> 289 bytes .../images/icons/object-tools-add-link.png | Bin 0 -> 1056 bytes .../icons/object-tools-viewsite-link.png | Bin 0 -> 1082 bytes .../images/icons/pulldown-handler.png | Bin 0 -> 225 bytes .../images/icons/pulldown-handler_hover.png | Bin 0 -> 228 bytes .../icons/pulldown-handler_selected.png | Bin 0 -> 228 bytes .../images/icons/related-lookup-m2m.png | Bin 0 -> 375 bytes .../images/icons/related-lookup-m2m_hover.png | Bin 0 -> 368 bytes .../grappelli/images/icons/related-lookup.png | Bin 0 -> 374 bytes .../images/icons/related-lookup_hover.png | Bin 0 -> 377 bytes .../grappelli/images/icons/related-remove.png | Bin 0 -> 1107 bytes .../images/icons/related-remove_hover.png | Bin 0 -> 1106 bytes kcdc3/grappelli/images/icons/searchbox.png | Bin 0 -> 3136 bytes .../icons/selector-add-m2m-horizontal.png | Bin 0 -> 2991 bytes .../selector-add-m2m-horizontal_hover.png | Bin 0 -> 2995 bytes .../icons/selector-add-m2m-vertical.png | Bin 0 -> 3023 bytes .../icons/selector-add-m2m-vertical_hover.png | Bin 0 -> 3023 bytes .../images/icons/selector-filter.png | Bin 0 -> 247 bytes .../icons/selector-remove-m2m-horizontal.png | Bin 0 -> 2998 bytes .../selector-remove-m2m-horizontal_hover.png | Bin 0 -> 3003 bytes .../icons/selector-remove-m2m-vertical.png | Bin 0 -> 3009 bytes .../selector-remove-m2m-vertical_hover.png | Bin 0 -> 3009 bytes kcdc3/grappelli/images/icons/sort-remove.png | Bin 0 -> 1130 bytes .../images/icons/sort-remove_hover.png | Bin 0 -> 1130 bytes .../images/icons/sorted-ascending.png | Bin 0 -> 1150 bytes .../images/icons/sorted-descending.png | Bin 0 -> 1148 bytes kcdc3/grappelli/images/icons/status-no.png | Bin 0 -> 323 bytes .../grappelli/images/icons/status-unknown.png | Bin 0 -> 406 bytes kcdc3/grappelli/images/icons/status-yes.png | Bin 0 -> 396 bytes kcdc3/grappelli/images/icons/th-ascending.png | Bin 0 -> 243 bytes .../grappelli/images/icons/th-descending.png | Bin 0 -> 240 bytes kcdc3/grappelli/images/icons/timepicker.png | Bin 0 -> 466 bytes .../images/icons/timepicker_hover.png | Bin 0 -> 463 bytes .../images/icons/tools-add-handler.png | Bin 0 -> 226 bytes .../images/icons/tools-add-handler_hover.png | Bin 0 -> 196 bytes .../images/icons/tools-arrow-down-handler.png | Bin 0 -> 228 bytes .../icons/tools-arrow-down-handler_hover.png | Bin 0 -> 225 bytes .../images/icons/tools-arrow-up-handler.png | Bin 0 -> 217 bytes .../icons/tools-arrow-up-handler_hover.png | Bin 0 -> 217 bytes .../images/icons/tools-close-handler.png | Bin 0 -> 256 bytes .../icons/tools-close-handler_hover.png | Bin 0 -> 270 bytes .../images/icons/tools-delete-handler.png | Bin 0 -> 210 bytes .../icons/tools-delete-handler_hover.png | Bin 0 -> 237 bytes .../images/icons/tools-drag-handler.png | Bin 0 -> 253 bytes .../images/icons/tools-drag-handler_hover.png | Bin 0 -> 221 bytes .../images/icons/tools-open-handler.png | Bin 0 -> 274 bytes .../images/icons/tools-open-handler_hover.png | Bin 0 -> 274 bytes .../images/icons/tools-remove-handler.png | Bin 0 -> 180 bytes .../icons/tools-remove-handler_hover.png | Bin 0 -> 161 bytes .../images/icons/tools-trash-handler.png | Bin 0 -> 269 bytes .../icons/tools-trash-handler_hover.png | Bin 0 -> 277 bytes .../icons/tools-trash-list-toggle-handler.png | Bin 0 -> 263 bytes .../tools-trash-list-toggle-handler_hover.png | Bin 0 -> 219 bytes .../images/icons/tools-viewsite-link.png | Bin 0 -> 251 bytes .../icons/tools-viewsite-link_hover.png | Bin 0 -> 208 bytes .../images/icons/ui-datepicker-next.png | Bin 0 -> 1007 bytes .../images/icons/ui-datepicker-next_hover.png | Bin 0 -> 1007 bytes .../images/icons/ui-datepicker-prev.png | Bin 0 -> 1009 bytes .../images/icons/ui-datepicker-prev_hover.png | Bin 0 -> 1009 bytes .../grappelli/jquery/i18n/ui.datepicker-de.js | 20 + .../grappelli/jquery/i18n/ui.datepicker-fr.js | 19 + kcdc3/grappelli/jquery/jquery-1.7.2.min.js | 4 + kcdc3/grappelli/jquery/jquery.cookie.min.js | 7 + kcdc3/grappelli/jquery/jquery.form.js | 899 + .../images/ui-bg_flat_0_888888_40x100.png | Bin 0 -> 179 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_25_e1f0f5_1x400.png | Bin 0 -> 114 bytes .../images/ui-bg_glass_55_444444_1x400.png | Bin 0 -> 121 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../ui-bg_inset-soft_95_fef1ec_1x100.png | Bin 0 -> 123 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_309bbf_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_bf3030_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../custom-theme/jquery-ui-1.8.18.custom.css | 565 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 167 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui/js/jquery-ui-1.8.18.custom.min.js | 356 + kcdc3/grappelli/js/grappelli.js | 154 + kcdc3/grappelli/js/grappelli.min.js | 1 + .../js/jquery.grp_autocomplete_fk.js | 132 + .../js/jquery.grp_autocomplete_generic.js | 163 + .../js/jquery.grp_autocomplete_m2m.js | 181 + kcdc3/grappelli/js/jquery.grp_collapsible.js | 35 + .../js/jquery.grp_collapsible_group.js | 54 + kcdc3/grappelli/js/jquery.grp_inline.js | 179 + kcdc3/grappelli/js/jquery.grp_related_fk.js | 56 + .../js/jquery.grp_related_generic.js | 77 + kcdc3/grappelli/js/jquery.grp_related_m2m.js | 54 + kcdc3/grappelli/js/jquery.grp_timepicker.js | 161 + .../stylesheets/mueller/grid/output.css | 1 + .../grappelli/stylesheets/mueller/screen.css | 0 .../stylesheets/partials/custom/tinymce.css | 1 + kcdc3/grappelli/stylesheets/screen.css | 1 + kcdc3/grappelli/tinymce/changelog.txt | 1528 ++ .../tinymce/examples/accessibility.html | 101 + .../tinymce/examples/css/content.css | 105 + kcdc3/grappelli/tinymce/examples/css/word.css | 53 + .../tinymce/examples/custom_formats.html | 111 + kcdc3/grappelli/tinymce/examples/full.html | 101 + kcdc3/grappelli/tinymce/examples/index.html | 10 + .../tinymce/examples/lists/image_list.js | 9 + .../tinymce/examples/lists/link_list.js | 10 + .../tinymce/examples/lists/media_list.js | 14 + .../tinymce/examples/lists/template_list.js | 9 + .../grappelli/tinymce/examples/media/logo.jpg | Bin 0 -> 2729 bytes .../tinymce/examples/media/logo_over.jpg | Bin 0 -> 6473 bytes .../tinymce/examples/media/sample.avi | Bin 0 -> 82944 bytes .../tinymce/examples/media/sample.dcr | Bin 0 -> 6774 bytes .../tinymce/examples/media/sample.flv | Bin 0 -> 88722 bytes .../tinymce/examples/media/sample.mov | Bin 0 -> 55622 bytes .../tinymce/examples/media/sample.ram | 1 + .../tinymce/examples/media/sample.rm | Bin 0 -> 17846 bytes .../tinymce/examples/media/sample.swf | Bin 0 -> 6118 bytes kcdc3/grappelli/tinymce/examples/menu.html | 18 + kcdc3/grappelli/tinymce/examples/simple.html | 47 + kcdc3/grappelli/tinymce/examples/skins.html | 216 + .../tinymce/examples/templates/layout1.htm | 15 + .../tinymce/examples/templates/snippet1.htm | 1 + kcdc3/grappelli/tinymce/examples/word.html | 72 + .../tinymce/jscripts/tiny_mce/langs/de.js | 1 + .../tinymce/jscripts/tiny_mce/langs/en.js | 1 + .../tinymce/jscripts/tiny_mce/license.txt | 504 + .../tiny_mce/plugins/advhr/css/advhr.css | 5 + .../tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 57 + .../tiny_mce/plugins/advhr/js/rule.js | 43 + .../tiny_mce/plugins/advhr/langs/de_dlg.js | 1 + .../tiny_mce/plugins/advhr/langs/en_dlg.js | 1 + .../jscripts/tiny_mce/plugins/advhr/rule.htm | 58 + .../plugins/advimage/css/advimage.css | 13 + .../plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 50 + .../tiny_mce/plugins/advimage/image.htm | 222 + .../tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes .../tiny_mce/plugins/advimage/js/image.js | 462 + .../tiny_mce/plugins/advimage/langs/de_dlg.js | 1 + .../tiny_mce/plugins/advimage/langs/en_dlg.js | 1 + .../plugins/advimage_orig/css/advimage.css | 13 + .../plugins/advimage_orig/editor_plugin.js | 1 + .../advimage_orig/editor_plugin_src.js | 50 + .../tiny_mce/plugins/advimage_orig/image.htm | 235 + .../plugins/advimage_orig/img/sample.gif | Bin 0 -> 1624 bytes .../plugins/advimage_orig/js/image.js | 462 + .../plugins/advimage_orig/langs/de_dlg.js | 1 + .../plugins/advimage_orig/langs/en_dlg.js | 1 + .../tiny_mce/plugins/advlink/css/advlink.css | 8 + .../tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 61 + .../tiny_mce/plugins/advlink/js/advlink.js | 539 + .../tiny_mce/plugins/advlink/langs/de_dlg.js | 1 + .../tiny_mce/plugins/advlink/langs/en_dlg.js | 1 + .../tiny_mce/plugins/advlink/link.htm | 371 + .../plugins/advlink_orig/css/advlink.css | 8 + .../plugins/advlink_orig/editor_plugin.js | 1 + .../plugins/advlink_orig/editor_plugin_src.js | 61 + .../plugins/advlink_orig/js/advlink.js | 539 + .../plugins/advlink_orig/langs/de_dlg.js | 1 + .../plugins/advlink_orig/langs/en_dlg.js | 1 + .../tiny_mce/plugins/advlink_orig/link.htm | 338 + .../tiny_mce/plugins/advlist/editor_plugin.js | 1 + .../plugins/advlist/editor_plugin_src.js | 176 + .../plugins/autolink/editor_plugin.js | 1 + .../plugins/autolink/editor_plugin_src.js | 174 + .../plugins/autoresize/editor_plugin.js | 1 + .../plugins/autoresize/editor_plugin_src.js | 119 + .../plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 431 + .../tiny_mce/plugins/autosave/langs/en.js | 4 + .../tiny_mce/plugins/bbcode/editor_plugin.js | 1 + .../plugins/bbcode/editor_plugin_src.js | 120 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 161 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 82 + .../plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 43 + .../tiny_mce/plugins/emotions/emotions.htm | 42 + .../plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 342 bytes .../plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 343 bytes .../emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 323 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 0 -> 344 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 338 bytes .../emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/img/smiley-wink.gif | Bin 0 -> 350 bytes .../plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes .../tiny_mce/plugins/emotions/js/emotions.js | 43 + .../tiny_mce/plugins/emotions/langs/de_dlg.js | 1 + .../tiny_mce/plugins/emotions/langs/en_dlg.js | 1 + .../tiny_mce/plugins/example/dialog.htm | 22 + .../tiny_mce/plugins/example/editor_plugin.js | 1 + .../plugins/example/editor_plugin_src.js | 84 + .../tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes .../tiny_mce/plugins/example/js/dialog.js | 19 + .../tiny_mce/plugins/example/langs/en.js | 3 + .../tiny_mce/plugins/example/langs/en_dlg.js | 3 + .../example_dependency/editor_plugin.js | 1 + .../example_dependency/editor_plugin_src.js | 50 + .../plugins/fullpage/css/fullpage.css | 143 + .../plugins/fullpage/editor_plugin.js | 1 + .../plugins/fullpage/editor_plugin_src.js | 405 + .../tiny_mce/plugins/fullpage/fullpage.htm | 259 + .../tiny_mce/plugins/fullpage/js/fullpage.js | 232 + .../tiny_mce/plugins/fullpage/langs/de_dlg.js | 1 + .../tiny_mce/plugins/fullpage/langs/en_dlg.js | 1 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 159 + .../plugins/fullscreen/fullscreen.htm | 110 + .../plugins/grappelli/editor_plugin.js | 1 + .../plugins/grappelli/editor_plugin_src.js | 202 + .../plugins/grappelli/img/show_advanced.png | Bin 0 -> 320 bytes .../plugins/grappelli/img/visualchars.png | Bin 0 -> 285 bytes .../tiny_mce/plugins/grappelli/langs/de.js | 4 + .../tiny_mce/plugins/grappelli/langs/en.js | 4 + .../tiny_mce/plugins/grappelli/langs/fr.js | 4 + .../tiny_mce/plugins/grappelli/langs/pl.js | 4 + .../tiny_mce/plugins/grappelli/langs/ru.js | 4 + .../grappelli_contextmenu/editor_plugin.js | 1 + .../editor_plugin_src.js | 250 + .../plugins/grappelli_contextmenu/langs/de.js | 20 + .../plugins/grappelli_contextmenu/langs/en.js | 20 + .../plugins/grappelli_contextmenu/langs/fr.js | 10 + .../plugins/grappelli_contextmenu/langs/pl.js | 19 + .../plugins/grappelli_contextmenu/langs/ru.js | 20 + .../tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 54 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 699 + .../skins/clearlooks2/img/alert.gif | Bin 0 -> 810 bytes .../skins/clearlooks2/img/button.gif | Bin 0 -> 272 bytes .../skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes .../skins/clearlooks2/img/confirm.gif | Bin 0 -> 907 bytes .../skins/clearlooks2/img/corners.gif | Bin 0 -> 909 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes .../skins/clearlooks2/img/vertical.gif | Bin 0 -> 84 bytes .../inlinepopups/skins/clearlooks2/window.css | 90 + .../plugins/inlinepopups/template.htm | 387 + .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 83 + .../tiny_mce/plugins/layer/editor_plugin.js | 1 + .../plugins/layer/editor_plugin_src.js | 262 + .../plugins/legacyoutput/editor_plugin.js | 1 + .../plugins/legacyoutput/editor_plugin_src.js | 139 + .../tiny_mce/plugins/lists/editor_plugin.js | 1 + .../plugins/lists/editor_plugin_src.js | 951 + .../tiny_mce/plugins/media/css/media.css | 18 + .../tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 890 + .../tiny_mce/plugins/media/js/embed.js | 73 + .../tiny_mce/plugins/media/js/media.js | 470 + .../tiny_mce/plugins/media/langs/de_dlg.js | 1 + .../tiny_mce/plugins/media/langs/en_dlg.js | 1 + .../jscripts/tiny_mce/plugins/media/media.htm | 819 + .../tiny_mce/plugins/media/moxieplayer.swf | Bin 0 -> 19980 bytes .../tiny_mce/plugins/media_orig/css/media.css | 17 + .../plugins/media_orig/editor_plugin.js | 1 + .../plugins/media_orig/editor_plugin_src.js | 890 + .../tiny_mce/plugins/media_orig/js/embed.js | 73 + .../tiny_mce/plugins/media_orig/js/media.js | 470 + .../plugins/media_orig/langs/de_dlg.js | 1 + .../plugins/media_orig/langs/en_dlg.js | 1 + .../tiny_mce/plugins/media_orig/media.htm | 922 + .../plugins/media_orig/moxieplayer.swf | Bin 0 -> 19980 bytes .../plugins/nonbreaking/editor_plugin.js | 1 + .../plugins/nonbreaking/editor_plugin_src.js | 54 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 438 + .../plugins/pagebreak/editor_plugin.js | 1 + .../plugins/pagebreak/editor_plugin_src.js | 74 + .../tiny_mce/plugins/paste/css/pasteword.css | 3 + .../tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 871 + .../tiny_mce/plugins/paste/js/pastetext.js | 36 + .../tiny_mce/plugins/paste/js/pasteword.js | 51 + .../tiny_mce/plugins/paste/langs/de_dlg.js | 1 + .../tiny_mce/plugins/paste/langs/en_dlg.js | 1 + .../tiny_mce/plugins/paste/pastetext.htm | 34 + .../tiny_mce/plugins/paste/pasteword.htm | 22 + .../plugins/paste_orig/editor_plugin.js | 1 + .../plugins/paste_orig/editor_plugin_src.js | 871 + .../plugins/paste_orig/js/pastetext.js | 36 + .../plugins/paste_orig/js/pasteword.js | 51 + .../plugins/paste_orig/langs/de_dlg.js | 1 + .../plugins/paste_orig/langs/en_dlg.js | 1 + .../tiny_mce/plugins/paste_orig/pastetext.htm | 27 + .../tiny_mce/plugins/paste_orig/pasteword.htm | 21 + .../tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 53 + .../tiny_mce/plugins/preview/example.html | 28 + .../plugins/preview/jscripts/embed.js | 73 + .../tiny_mce/plugins/preview/preview.html | 17 + .../tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 34 + .../tiny_mce/plugins/save/editor_plugin.js | 1 + .../plugins/save/editor_plugin_src.js | 101 + .../searchreplace/css/searchreplace.css | 6 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 61 + .../plugins/searchreplace/js/searchreplace.js | 142 + .../plugins/searchreplace/langs/de_dlg.js | 1 + .../plugins/searchreplace/langs/en_dlg.js | 1 + .../plugins/searchreplace/searchreplace.htm | 101 + .../searchreplace_orig/css/searchreplace.css | 6 + .../searchreplace_orig/editor_plugin.js | 1 + .../searchreplace_orig/editor_plugin_src.js | 61 + .../searchreplace_orig/js/searchreplace.js | 142 + .../searchreplace_orig/langs/de_dlg.js | 1 + .../searchreplace_orig/langs/en_dlg.js | 1 + .../searchreplace_orig/searchreplace.htm | 100 + .../plugins/spellchecker/css/content.css | 1 + .../plugins/spellchecker/editor_plugin.js | 1 + .../plugins/spellchecker/editor_plugin_src.js | 436 + .../plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes .../tiny_mce/plugins/style/css/props.css | 14 + .../tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 71 + .../tiny_mce/plugins/style/js/props.js | 709 + .../tiny_mce/plugins/style/langs/de_dlg.js | 1 + .../tiny_mce/plugins/style/langs/en_dlg.js | 1 + .../jscripts/tiny_mce/plugins/style/props.htm | 845 + .../tiny_mce/plugins/style/readme.txt | 19 + .../plugins/tabfocus/editor_plugin.js | 1 + .../plugins/tabfocus/editor_plugin_src.js | 122 + .../jscripts/tiny_mce/plugins/table/cell.htm | 180 + .../tiny_mce/plugins/table/css/cell.css | 17 + .../tiny_mce/plugins/table/css/row.css | 25 + .../tiny_mce/plugins/table/css/table.css | 13 + .../tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1428 ++ .../tiny_mce/plugins/table/js/cell.js | 319 + .../tiny_mce/plugins/table/js/merge_cells.js | 27 + .../jscripts/tiny_mce/plugins/table/js/row.js | 237 + .../tiny_mce/plugins/table/js/table.js | 489 + .../tiny_mce/plugins/table/langs/de_dlg.js | 1 + .../tiny_mce/plugins/table/langs/en_dlg.js | 1 + .../tiny_mce/plugins/table/merge_cells.htm | 32 + .../jscripts/tiny_mce/plugins/table/row.htm | 158 + .../jscripts/tiny_mce/plugins/table/table.htm | 188 + .../tiny_mce/plugins/template/blank.htm | 12 + .../plugins/template/css/template.css | 23 + .../plugins/template/editor_plugin.js | 1 + .../plugins/template/editor_plugin_src.js | 159 + .../tiny_mce/plugins/template/js/template.js | 106 + .../tiny_mce/plugins/template/langs/de_dlg.js | 1 + .../tiny_mce/plugins/template/langs/en_dlg.js | 1 + .../tiny_mce/plugins/template/template.htm | 45 + .../tiny_mce/plugins/template_orig/blank.htm | 12 + .../plugins/template_orig/css/template.css | 23 + .../plugins/template_orig/editor_plugin.js | 1 + .../template_orig/editor_plugin_src.js | 159 + .../plugins/template_orig/js/template.js | 106 + .../plugins/template_orig/langs/de_dlg.js | 1 + .../plugins/template_orig/langs/en_dlg.js | 1 + .../plugins/template_orig/template.htm | 31 + .../plugins/visualblocks/css/visualblocks.css | 19 + .../plugins/visualblocks/editor_plugin.js | 1 + .../plugins/visualblocks/editor_plugin_src.js | 63 + .../plugins/visualchars/editor_plugin.js | 1 + .../plugins/visualchars/editor_plugin_src.js | 83 + .../plugins/wordcount/editor_plugin.js | 1 + .../plugins/wordcount/editor_plugin_src.js | 122 + .../tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 + .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 + .../plugins/xhtmlxtras/attributes.htm | 149 + .../tiny_mce/plugins/xhtmlxtras/cite.htm | 142 + .../plugins/xhtmlxtras/css/attributes.css | 11 + .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 + .../tiny_mce/plugins/xhtmlxtras/del.htm | 162 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 132 + .../tiny_mce/plugins/xhtmlxtras/ins.htm | 162 + .../tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 + .../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 + .../plugins/xhtmlxtras/js/attributes.js | 111 + .../tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 + .../tiny_mce/plugins/xhtmlxtras/js/del.js | 53 + .../plugins/xhtmlxtras/js/element_common.js | 229 + .../tiny_mce/plugins/xhtmlxtras/js/ins.js | 53 + .../plugins/xhtmlxtras/langs/de_dlg.js | 1 + .../plugins/xhtmlxtras/langs/en_dlg.js | 1 + .../tiny_mce/themes/advanced/about.htm | 52 + .../tiny_mce/themes/advanced/anchor.htm | 26 + .../tiny_mce/themes/advanced/charmap.htm | 55 + .../tiny_mce/themes/advanced/color_picker.htm | 74 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1467 ++ .../tiny_mce/themes/advanced/image.htm | 80 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 2584 bytes .../tiny_mce/themes/advanced/img/flash.gif | Bin 0 -> 239 bytes .../tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11982 bytes .../tiny_mce/themes/advanced/img/iframe.gif | Bin 0 -> 600 bytes .../themes/advanced/img/pagebreak.gif | Bin 0 -> 325 bytes .../themes/advanced/img/quicktime.gif | Bin 0 -> 301 bytes .../themes/advanced/img/realmedia.gif | Bin 0 -> 439 bytes .../themes/advanced/img/shockwave.gif | Bin 0 -> 384 bytes .../tiny_mce/themes/advanced/img/trans.gif | Bin 0 -> 43 bytes .../tiny_mce/themes/advanced/img/video.gif | Bin 0 -> 597 bytes .../themes/advanced/img/windowsmedia.gif | Bin 0 -> 415 bytes .../tiny_mce/themes/advanced/js/about.js | 73 + .../tiny_mce/themes/advanced/js/anchor.js | 44 + .../tiny_mce/themes/advanced/js/charmap.js | 363 + .../themes/advanced/js/color_picker.js | 345 + .../tiny_mce/themes/advanced/js/image.js | 251 + .../tiny_mce/themes/advanced/js/link.js | 153 + .../themes/advanced/js/source_editor.js | 78 + .../tiny_mce/themes/advanced/langs/de.js | 1 + .../tiny_mce/themes/advanced/langs/de_dlg.js | 1 + .../tiny_mce/themes/advanced/langs/en.js | 1 + .../tiny_mce/themes/advanced/langs/en_dlg.js | 1 + .../tiny_mce/themes/advanced/link.htm | 57 + .../tiny_mce/themes/advanced/shortcuts.htm | 47 + .../themes/advanced/skins/default/content.css | 51 + .../themes/advanced/skins/default/dialog.css | 117 + .../advanced/skins/default/img/buttons.png | Bin 0 -> 3133 bytes .../advanced/skins/default/img/items.gif | Bin 0 -> 64 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes .../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/default/img/tabs.gif | Bin 0 -> 1322 bytes .../themes/advanced/skins/default/ui.css | 215 + .../advanced/skins/grappelli/content.css | 27 + .../advanced/skins/grappelli/content_base.css | 56 + .../grappelli/content_documentstructure.css | 72 + .../content_documentstructure_de.css | 17 + .../content_documentstructure_en.css | 17 + .../content_documentstructure_pl.css | 17 + .../advanced/skins/grappelli/content_grid.css | 85 + .../skins/grappelli/content_typography.css | 101 + .../advanced/skins/grappelli/dialog.css | 55 + .../grappelli/img/buttons/blockquote.png | Bin 0 -> 330 bytes .../skins/grappelli/img/buttons/bold.png | Bin 0 -> 274 bytes .../skins/grappelli/img/buttons/bullist.png | Bin 0 -> 205 bytes .../skins/grappelli/img/buttons/charmap.png | Bin 0 -> 324 bytes .../skins/grappelli/img/buttons/cleanup.png | Bin 0 -> 345 bytes .../skins/grappelli/img/buttons/code.png | Bin 0 -> 435 bytes .../grappelli/img/buttons/fullscreen.png | Bin 0 -> 252 bytes .../skins/grappelli/img/buttons/image.png | Bin 0 -> 325 bytes .../skins/grappelli/img/buttons/italic.png | Bin 0 -> 239 bytes .../skins/grappelli/img/buttons/link.png | Bin 0 -> 280 bytes .../skins/grappelli/img/buttons/media.png | Bin 0 -> 301 bytes .../skins/grappelli/img/buttons/numlist.png | Bin 0 -> 286 bytes .../skins/grappelli/img/buttons/pasteword.png | Bin 0 -> 351 bytes .../skins/grappelli/img/buttons/redo.png | Bin 0 -> 295 bytes .../skins/grappelli/img/buttons/search.png | Bin 0 -> 414 bytes .../grappelli/img/buttons/show_advanced.png | Bin 0 -> 320 bytes .../skins/grappelli/img/buttons/table.png | Bin 0 -> 299 bytes .../skins/grappelli/img/buttons/template.png | Bin 0 -> 299 bytes .../skins/grappelli/img/buttons/underline.png | Bin 0 -> 252 bytes .../skins/grappelli/img/buttons/undo.png | Bin 0 -> 297 bytes .../skins/grappelli/img/buttons/unlink.png | Bin 0 -> 287 bytes .../grappelli/img/buttons/visualchars.png | Bin 0 -> 301 bytes .../img/icons/icon-fb_show-hover.png | Bin 0 -> 3312 bytes .../grappelli/img/icons/icon-fb_show.png | Bin 0 -> 3305 bytes .../grappelli/img/icons/icon-mceResize.png | Bin 0 -> 266 bytes .../skins/grappelli/img/menu/icon-mceOpen.png | Bin 0 -> 182 bytes .../themes/advanced/skins/grappelli/ui.css | 494 + .../advanced/skins/highcontrast/content.css | 25 + .../advanced/skins/highcontrast/dialog.css | 105 + .../themes/advanced/skins/highcontrast/ui.css | 102 + .../themes/advanced/skins/o2k7/content.css | 49 + .../themes/advanced/skins/o2k7/dialog.css | 117 + .../advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 2766 bytes .../skins/o2k7/img/button_bg_black.png | Bin 0 -> 651 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 0 -> 2084 bytes .../themes/advanced/skins/o2k7/ui.css | 218 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + .../themes/advanced/source_editor.htm | 26 + .../tiny_mce/themes/simple/editor_template.js | 1 + .../themes/simple/editor_template_src.js | 84 + .../tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 806 bytes .../tiny_mce/themes/simple/langs/de.js | 1 + .../tiny_mce/themes/simple/langs/en.js | 1 + .../themes/simple/skins/default/content.css | 25 + .../themes/simple/skins/default/ui.css | 32 + .../themes/simple/skins/o2k7/content.css | 17 + .../simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes .../tiny_mce/themes/simple/skins/o2k7/ui.css | 35 + .../tinymce/jscripts/tiny_mce/tiny_mce.js | 1 + .../jscripts/tiny_mce/tiny_mce_popup.js | 5 + .../tinymce/jscripts/tiny_mce/tiny_mce_src.js | 17396 ++++++++++++++++ .../tiny_mce/utils/editable_selects.js | 70 + .../jscripts/tiny_mce/utils/form_utils.js | 210 + .../tinymce/jscripts/tiny_mce/utils/mctabs.js | 162 + .../jscripts/tiny_mce/utils/validate.js | 252 + .../grappelli/tinymce_setup/tinymce_setup.js | 145 + kcdc3/kcdc3/settings.py | 3 + kcdc3/kcdc3/settings.pyc | Bin 3153 -> 3251 bytes kcdc3/kcdc3/urls.py | 1 + kcdc3/kcdc3/urls.pyc | Bin 551 -> 606 bytes kcdc3/templates/classes/email_cancelled.txt | 1 + kcdc3/templates/classes/email_promoted.txt | 1 + kcdc3/templates/classes/email_registered.txt | 1 + kcdc3/templates/classes/email_waitlisted.txt | 1 + 632 files changed, 59457 insertions(+), 57 deletions(-) create mode 100755 kcdc3/admin/css/base.css create mode 100755 kcdc3/admin/css/changelists.css create mode 100755 kcdc3/admin/css/dashboard.css create mode 100755 kcdc3/admin/css/forms.css create mode 100755 kcdc3/admin/css/ie.css create mode 100755 kcdc3/admin/css/login.css create mode 100755 kcdc3/admin/css/rtl.css create mode 100755 kcdc3/admin/css/widgets.css create mode 100755 kcdc3/admin/img/changelist-bg.gif create mode 100755 kcdc3/admin/img/changelist-bg_rtl.gif create mode 100755 kcdc3/admin/img/chooser-bg.gif create mode 100755 kcdc3/admin/img/chooser_stacked-bg.gif create mode 100755 kcdc3/admin/img/default-bg-reverse.gif create mode 100755 kcdc3/admin/img/default-bg.gif create mode 100755 kcdc3/admin/img/deleted-overlay.gif create mode 100755 kcdc3/admin/img/gis/move_vertex_off.png create mode 100755 kcdc3/admin/img/gis/move_vertex_on.png create mode 100755 kcdc3/admin/img/icon-no.gif create mode 100755 kcdc3/admin/img/icon-unknown.gif create mode 100755 kcdc3/admin/img/icon-yes.gif create mode 100755 kcdc3/admin/img/icon_addlink.gif create mode 100755 kcdc3/admin/img/icon_alert.gif create mode 100755 kcdc3/admin/img/icon_calendar.gif create mode 100755 kcdc3/admin/img/icon_changelink.gif create mode 100755 kcdc3/admin/img/icon_clock.gif create mode 100755 kcdc3/admin/img/icon_deletelink.gif create mode 100755 kcdc3/admin/img/icon_error.gif create mode 100755 kcdc3/admin/img/icon_searchbox.png create mode 100755 kcdc3/admin/img/icon_success.gif create mode 100755 kcdc3/admin/img/inline-delete-8bit.png create mode 100755 kcdc3/admin/img/inline-delete.png create mode 100755 kcdc3/admin/img/inline-restore-8bit.png create mode 100755 kcdc3/admin/img/inline-restore.png create mode 100755 kcdc3/admin/img/inline-splitter-bg.gif create mode 100755 kcdc3/admin/img/nav-bg-grabber.gif create mode 100755 kcdc3/admin/img/nav-bg-reverse.gif create mode 100755 kcdc3/admin/img/nav-bg-selected.gif create mode 100755 kcdc3/admin/img/nav-bg.gif create mode 100755 kcdc3/admin/img/selector-icons.gif create mode 100755 kcdc3/admin/img/selector-search.gif create mode 100755 kcdc3/admin/img/sorting-icons.gif create mode 100755 kcdc3/admin/img/tool-left.gif create mode 100755 kcdc3/admin/img/tool-left_over.gif create mode 100755 kcdc3/admin/img/tool-right.gif create mode 100755 kcdc3/admin/img/tool-right_over.gif create mode 100755 kcdc3/admin/img/tooltag-add.gif create mode 100755 kcdc3/admin/img/tooltag-add_over.gif create mode 100755 kcdc3/admin/img/tooltag-arrowright.gif create mode 100755 kcdc3/admin/img/tooltag-arrowright_over.gif create mode 100755 kcdc3/admin/js/LICENSE-JQUERY.txt create mode 100755 kcdc3/admin/js/SelectBox.js create mode 100755 kcdc3/admin/js/SelectFilter2.js create mode 100755 kcdc3/admin/js/actions.js create mode 100755 kcdc3/admin/js/actions.min.js create mode 100755 kcdc3/admin/js/admin/DateTimeShortcuts.js create mode 100755 kcdc3/admin/js/admin/RelatedObjectLookups.js create mode 100755 kcdc3/admin/js/admin/ordering.js create mode 100755 kcdc3/admin/js/calendar.js create mode 100755 kcdc3/admin/js/collapse.js create mode 100755 kcdc3/admin/js/collapse.min.js create mode 100755 kcdc3/admin/js/compress.py create mode 100755 kcdc3/admin/js/compress.pyc create mode 100755 kcdc3/admin/js/core.js create mode 100755 kcdc3/admin/js/dateparse.js create mode 100755 kcdc3/admin/js/getElementsBySelector.js create mode 100755 kcdc3/admin/js/inlines.js create mode 100755 kcdc3/admin/js/inlines.min.js create mode 100755 kcdc3/admin/js/jquery.init.js create mode 100755 kcdc3/admin/js/jquery.js create mode 100755 kcdc3/admin/js/jquery.min.js create mode 100755 kcdc3/admin/js/json.min.js create mode 100755 kcdc3/admin/js/prepopulate.js create mode 100755 kcdc3/admin/js/prepopulate.min.js create mode 100755 kcdc3/admin/js/timeparse.js create mode 100755 kcdc3/admin/js/urlify.js create mode 100644 kcdc3/classes/migrations/0012_auto__chg_field_registration_date_registered.py create mode 100644 kcdc3/classes/migrations/0012_auto__chg_field_registration_date_registered.pyc create mode 100644 kcdc3/classes/raw_id.pyc create mode 100755 kcdc3/grappelli/images/backgrounds/changelist-results.png create mode 100755 kcdc3/grappelli/images/backgrounds/loading-small.gif create mode 100755 kcdc3/grappelli/images/backgrounds/messagelist.png create mode 100755 kcdc3/grappelli/images/backgrounds/nav-grabber.gif create mode 100755 kcdc3/grappelli/images/backgrounds/ui-sortable-placeholder.png create mode 100755 kcdc3/grappelli/images/icons-s4a437305c0.png create mode 100755 kcdc3/grappelli/images/icons-small-s9045a82f03.png create mode 100755 kcdc3/grappelli/images/icons-small/add-link.png create mode 100755 kcdc3/grappelli/images/icons-small/add-link_hover.png create mode 100755 kcdc3/grappelli/images/icons-small/change-link.png create mode 100755 kcdc3/grappelli/images/icons-small/change-link_hover.png create mode 100755 kcdc3/grappelli/images/icons-small/delete-link.png create mode 100755 kcdc3/grappelli/images/icons-small/link-external.png create mode 100755 kcdc3/grappelli/images/icons-small/link-external_hover.png create mode 100755 kcdc3/grappelli/images/icons-small/link-internal.png create mode 100755 kcdc3/grappelli/images/icons-small/link-internal_hover.png create mode 100755 kcdc3/grappelli/images/icons-small/sort-remove.png create mode 100755 kcdc3/grappelli/images/icons/add-another.png create mode 100755 kcdc3/grappelli/images/icons/add-another_hover.png create mode 100755 kcdc3/grappelli/images/icons/back-link.png create mode 100755 kcdc3/grappelli/images/icons/back-link_hover.png create mode 100755 kcdc3/grappelli/images/icons/breadcrumbs.png create mode 100755 kcdc3/grappelli/images/icons/breadcrumbs_hover.png create mode 100755 kcdc3/grappelli/images/icons/date-hierarchy-back.png create mode 100755 kcdc3/grappelli/images/icons/date-hierarchy-back_hover.png create mode 100755 kcdc3/grappelli/images/icons/datepicker.png create mode 100755 kcdc3/grappelli/images/icons/datepicker_hover.png create mode 100755 kcdc3/grappelli/images/icons/datetime-now.png create mode 100755 kcdc3/grappelli/images/icons/datetime-now_hover.png create mode 100755 kcdc3/grappelli/images/icons/form-select.png create mode 100755 kcdc3/grappelli/images/icons/object-tools-add-link.png create mode 100755 kcdc3/grappelli/images/icons/object-tools-viewsite-link.png create mode 100755 kcdc3/grappelli/images/icons/pulldown-handler.png create mode 100755 kcdc3/grappelli/images/icons/pulldown-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/pulldown-handler_selected.png create mode 100755 kcdc3/grappelli/images/icons/related-lookup-m2m.png create mode 100755 kcdc3/grappelli/images/icons/related-lookup-m2m_hover.png create mode 100755 kcdc3/grappelli/images/icons/related-lookup.png create mode 100755 kcdc3/grappelli/images/icons/related-lookup_hover.png create mode 100755 kcdc3/grappelli/images/icons/related-remove.png create mode 100755 kcdc3/grappelli/images/icons/related-remove_hover.png create mode 100755 kcdc3/grappelli/images/icons/searchbox.png create mode 100755 kcdc3/grappelli/images/icons/selector-add-m2m-horizontal.png create mode 100755 kcdc3/grappelli/images/icons/selector-add-m2m-horizontal_hover.png create mode 100755 kcdc3/grappelli/images/icons/selector-add-m2m-vertical.png create mode 100755 kcdc3/grappelli/images/icons/selector-add-m2m-vertical_hover.png create mode 100755 kcdc3/grappelli/images/icons/selector-filter.png create mode 100755 kcdc3/grappelli/images/icons/selector-remove-m2m-horizontal.png create mode 100755 kcdc3/grappelli/images/icons/selector-remove-m2m-horizontal_hover.png create mode 100755 kcdc3/grappelli/images/icons/selector-remove-m2m-vertical.png create mode 100755 kcdc3/grappelli/images/icons/selector-remove-m2m-vertical_hover.png create mode 100755 kcdc3/grappelli/images/icons/sort-remove.png create mode 100755 kcdc3/grappelli/images/icons/sort-remove_hover.png create mode 100755 kcdc3/grappelli/images/icons/sorted-ascending.png create mode 100755 kcdc3/grappelli/images/icons/sorted-descending.png create mode 100755 kcdc3/grappelli/images/icons/status-no.png create mode 100755 kcdc3/grappelli/images/icons/status-unknown.png create mode 100755 kcdc3/grappelli/images/icons/status-yes.png create mode 100755 kcdc3/grappelli/images/icons/th-ascending.png create mode 100755 kcdc3/grappelli/images/icons/th-descending.png create mode 100755 kcdc3/grappelli/images/icons/timepicker.png create mode 100755 kcdc3/grappelli/images/icons/timepicker_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-add-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-add-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-arrow-down-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-arrow-down-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-arrow-up-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-arrow-up-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-close-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-close-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-delete-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-delete-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-drag-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-drag-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-open-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-open-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-remove-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-remove-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-trash-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-trash-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-trash-list-toggle-handler.png create mode 100755 kcdc3/grappelli/images/icons/tools-trash-list-toggle-handler_hover.png create mode 100755 kcdc3/grappelli/images/icons/tools-viewsite-link.png create mode 100755 kcdc3/grappelli/images/icons/tools-viewsite-link_hover.png create mode 100755 kcdc3/grappelli/images/icons/ui-datepicker-next.png create mode 100755 kcdc3/grappelli/images/icons/ui-datepicker-next_hover.png create mode 100755 kcdc3/grappelli/images/icons/ui-datepicker-prev.png create mode 100755 kcdc3/grappelli/images/icons/ui-datepicker-prev_hover.png create mode 100755 kcdc3/grappelli/jquery/i18n/ui.datepicker-de.js create mode 100755 kcdc3/grappelli/jquery/i18n/ui.datepicker-fr.js create mode 100755 kcdc3/grappelli/jquery/jquery-1.7.2.min.js create mode 100755 kcdc3/grappelli/jquery/jquery.cookie.min.js create mode 100755 kcdc3/grappelli/jquery/jquery.form.js create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_flat_0_888888_40x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_flat_75_ffffff_40x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_glass_25_e1f0f5_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_glass_55_444444_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-icons_222222_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-icons_309bbf_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-icons_454545_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-icons_bf3030_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/images/ui-icons_ffffff_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/custom-theme/jquery-ui-1.8.18.custom.css create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-icons_222222_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100755 kcdc3/grappelli/jquery/ui/js/jquery-ui-1.8.18.custom.min.js create mode 100755 kcdc3/grappelli/js/grappelli.js create mode 100755 kcdc3/grappelli/js/grappelli.min.js create mode 100755 kcdc3/grappelli/js/jquery.grp_autocomplete_fk.js create mode 100755 kcdc3/grappelli/js/jquery.grp_autocomplete_generic.js create mode 100755 kcdc3/grappelli/js/jquery.grp_autocomplete_m2m.js create mode 100755 kcdc3/grappelli/js/jquery.grp_collapsible.js create mode 100755 kcdc3/grappelli/js/jquery.grp_collapsible_group.js create mode 100755 kcdc3/grappelli/js/jquery.grp_inline.js create mode 100755 kcdc3/grappelli/js/jquery.grp_related_fk.js create mode 100755 kcdc3/grappelli/js/jquery.grp_related_generic.js create mode 100755 kcdc3/grappelli/js/jquery.grp_related_m2m.js create mode 100755 kcdc3/grappelli/js/jquery.grp_timepicker.js create mode 100755 kcdc3/grappelli/stylesheets/mueller/grid/output.css create mode 100755 kcdc3/grappelli/stylesheets/mueller/screen.css create mode 100755 kcdc3/grappelli/stylesheets/partials/custom/tinymce.css create mode 100755 kcdc3/grappelli/stylesheets/screen.css create mode 100755 kcdc3/grappelli/tinymce/changelog.txt create mode 100755 kcdc3/grappelli/tinymce/examples/accessibility.html create mode 100755 kcdc3/grappelli/tinymce/examples/css/content.css create mode 100755 kcdc3/grappelli/tinymce/examples/css/word.css create mode 100755 kcdc3/grappelli/tinymce/examples/custom_formats.html create mode 100755 kcdc3/grappelli/tinymce/examples/full.html create mode 100755 kcdc3/grappelli/tinymce/examples/index.html create mode 100755 kcdc3/grappelli/tinymce/examples/lists/image_list.js create mode 100755 kcdc3/grappelli/tinymce/examples/lists/link_list.js create mode 100755 kcdc3/grappelli/tinymce/examples/lists/media_list.js create mode 100755 kcdc3/grappelli/tinymce/examples/lists/template_list.js create mode 100755 kcdc3/grappelli/tinymce/examples/media/logo.jpg create mode 100755 kcdc3/grappelli/tinymce/examples/media/logo_over.jpg create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.avi create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.dcr create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.flv create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.mov create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.ram create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.rm create mode 100755 kcdc3/grappelli/tinymce/examples/media/sample.swf create mode 100755 kcdc3/grappelli/tinymce/examples/menu.html create mode 100755 kcdc3/grappelli/tinymce/examples/simple.html create mode 100755 kcdc3/grappelli/tinymce/examples/skins.html create mode 100755 kcdc3/grappelli/tinymce/examples/templates/layout1.htm create mode 100755 kcdc3/grappelli/tinymce/examples/templates/snippet1.htm create mode 100755 kcdc3/grappelli/tinymce/examples/word.html create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/langs/de.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/license.txt create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/css/advimage.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/image.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/img/sample.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/js/image.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advimage_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/css/advlink.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/js/advlink.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlink_orig/link.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/img/show_advanced.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/img/visualchars.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/langs/de.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/langs/fr.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/langs/pl.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli/langs/ru.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/langs/de.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/langs/fr.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/langs/pl.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/grappelli_contextmenu/langs/ru.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/css/media.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/js/media.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/media.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/css/media.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/js/embed.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/js/media.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/media.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/media_orig/moxieplayer.swf create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/js/pastetext.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/js/pasteword.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/pastetext.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/paste_orig/pasteword.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/preview/example.html create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/preview/preview.html create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/css/searchreplace.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/js/searchreplace.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/searchreplace_orig/searchreplace.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/css/props.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/js/props.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/props.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/style/readme.txt create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/cell.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/css/row.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/css/table.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/js/row.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/js/table.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/row.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/table/table.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/blank.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/css/template.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/js/template.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template/template.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/blank.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/css/template.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/js/template.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/template_orig/template.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/about.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/image.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/link.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_base.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_documentstructure.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_documentstructure_de.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_documentstructure_en.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_documentstructure_pl.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_grid.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/content_typography.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/dialog.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/blockquote.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/bold.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/bullist.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/charmap.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/cleanup.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/code.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/fullscreen.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/image.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/italic.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/link.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/media.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/numlist.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/pasteword.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/redo.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/search.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/show_advanced.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/table.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/template.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/underline.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/undo.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/unlink.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/buttons/visualchars.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/icons/icon-fb_show-hover.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/icons/icon-fb_show.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/icons/icon-mceResize.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/img/menu/icon-mceOpen.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/grappelli/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/tiny_mce.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/tiny_mce_popup.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/tiny_mce_src.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/utils/editable_selects.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/utils/form_utils.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/utils/mctabs.js create mode 100755 kcdc3/grappelli/tinymce/jscripts/tiny_mce/utils/validate.js create mode 100755 kcdc3/grappelli/tinymce_setup/tinymce_setup.js create mode 100644 kcdc3/templates/classes/email_cancelled.txt create mode 100644 kcdc3/templates/classes/email_promoted.txt create mode 100644 kcdc3/templates/classes/email_registered.txt create mode 100644 kcdc3/templates/classes/email_waitlisted.txt diff --git a/kcdc3/admin/css/base.css b/kcdc3/admin/css/base.css new file mode 100755 index 00000000..5e5fc58a --- /dev/null +++ b/kcdc3/admin/css/base.css @@ -0,0 +1,835 @@ +/* + DJANGO Admin styles +*/ + +body { + margin: 0; + padding: 0; + font-size: 12px; + font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; + color: #333; + background: #fff; +} + +/* LINKS */ + +a:link, a:visited { + color: #5b80b2; + text-decoration: none; +} + +a:hover { + color: #036; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: white; + text-decoration: none; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + font-size: 18px; + color: #666; + padding: 0 6px 0 0; + margin: 0 0 .2em 0; +} + +h2 { + font-size: 16px; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 14px; + margin: .8em 0 .3em 0; + color: #666; + font-weight: bold; +} + +h4 { + font-size: 12px; + margin: 1em 0 .8em 0; + padding-bottom: 3px; +} + +h5 { + font-size: 10px; + margin: 1.5em 0 .5em 0; + color: #666; + text-transform: uppercase; + letter-spacing: 1px; +} + +ul li { + list-style-type: square; + padding: 1px 0; +} + +ul.plainlist { + margin-left: 0 !important; +} + +ul.plainlist li { + list-style-type: none; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 11px; + line-height: 14px; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +blockquote { + font-size: 11px; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; + background: inherit; + color: #666; + font-size: 11px; +} + +pre.literal-block { + margin: 10px; + background: #eee; + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: #eee; + background-color: #eee; + height: 1px; + border: none; + margin: 0; + padding: 0; + font-size: 1px; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 11px; +} + +.tiny { + font-size: 10px; +} + +p.tiny { + margin-top: -2px; +} + +.mini { + font-size: 9px; +} + +p.mini { + margin-top: -3px; +} + +.help, p.help { + font-size: 10px !important; + color: #999; +} + +img.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: #999 !important; + font-weight: normal !important; +} + +.quiet strong { + font-weight: bold !important; +} + +.float-right { + float: right; +} + +.float-left { + float: left; +} + +.clear { + clear: both; +} + +.align-left { + text-align: left; +} + +.align-right { + text-align: right; +} + +.example { + margin: 10px 0; + padding: 5px 10px; + background: #efefef; +} + +.nowrap { + white-space: nowrap; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: #ccc; +} + +td, th { + font-size: 11px; + line-height: 13px; + border-bottom: 1px solid #eee; + vertical-align: top; + padding: 5px; + font-family: "Lucida Grande", Verdana, Arial, sans-serif; +} + +th { + text-align: left; + font-size: 12px; + font-weight: bold; +} + +thead th, +tfoot td { + color: #666; + padding: 2px 5px; + font-size: 11px; + background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; + border-left: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} + +tfoot td { + border-bottom: none; + border-top: 1px solid #ddd; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none !important; +} + +thead th.optional { + font-weight: normal !important; +} + +fieldset table { + border-right: 1px solid #eee; +} + +tr.row-label td { + font-size: 9px; + padding-top: 2px; + padding-bottom: 0; + border-bottom: none; + color: #666; + margin-top: -1px; +} + +tr.alt { + background: #f6f6f6; +} + +.row1 { + background: #EDF3FE; +} + +.row2 { + background: white; +} + +/* SORTABLE TABLES */ + +thead th { + padding: 2px 5px; + line-height: normal; +} + +thead th a:link, thead th a:visited { + color: #666; +} + +thead th.sorted { + background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x; +} + +table thead th .text span { + padding: 2px 5px; + display:block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 2px 5px; +} + +table thead th.sortable:hover { + background: white url(../img/nav-bg-reverse.gif) 0 -5px repeat-x; +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 4px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: top; +} + +table thead th.sorted .sortoptions a { + width: 14px; + height: 12px; + display: inline-block; +} + +table thead th.sorted .sortoptions a.sortremove { + background: url(../img/sorting-icons.gif) -4px -5px no-repeat; +} + +table thead th.sorted .sortoptions a.sortremove:hover { + background: url(../img/sorting-icons.gif) -4px -27px no-repeat; +} + +table thead th.sorted .sortoptions a.ascending { + background: url(../img/sorting-icons.gif) -5px -50px no-repeat; +} + +table thead th.sorted .sortoptions a.ascending:hover { + background: url(../img/sorting-icons.gif) -5px -72px no-repeat; +} + +table thead th.sorted .sortoptions a.descending { + background: url(../img/sorting-icons.gif) -5px -94px no-repeat; +} + +table thead th.sorted .sortoptions a.descending:hover { + background: url(../img/sorting-icons.gif) -5px -115px no-repeat; +} + +/* ORDERABLE TABLES */ + +table.orderable tbody tr td:hover { + cursor: move; +} + +table.orderable tbody tr td:first-child { + padding-left: 14px; + background-image: url(../img/nav-bg-grabber.gif); + background-repeat: repeat-y; +} + +table.orderable-initalized .order-cell, body>tr>td.order-cell { + display: none; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + font-size: 11px; +} + +textarea { + vertical-align: top !important; +} + +input[type=text], input[type=password], textarea, select, .vTextField { + border: 1px solid #ccc; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input { + background: white url(../img/nav-bg.gif) bottom repeat-x; + padding: 3px 5px; + color: black; + border: 1px solid #bbb; + border-color: #ddd #aaa #aaa #ddd; +} + +.button:active, input[type=submit]:active, input[type=button]:active { + background-image: url(../img/nav-bg-reverse.gif); + background-position: top; +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + background-image: url(../img/nav-bg.gif); + background-position: bottom; + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: 2px solid #5b80b2; + background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x; + font-weight: bold; + color: white; + float: right; +} + +.button.default:active, input[type=submit].default:active { + background-image: url(../img/default-bg-reverse.gif); + background-position: top; +} + +.button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default { + background-image: url(../img/default-bg.gif); + background-position: bottom; + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: 1px solid #ccc; + margin-bottom: 5px; + background: white; +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 11px; + text-align: left; + font-weight: bold; + background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x; + color: white; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0 0 5px 0; + margin: 0; +} + +ul.messagelist li { + font-size: 12px; + display: block; + padding: 4px 5px 4px 25px; + margin: 0 0 3px 0; + border-bottom: 1px solid #ddd; + color: #666; + background: #ffc url(../img/icon_success.gif) 5px .3em no-repeat; +} + +ul.messagelist li.warning{ + background-image: url(../img/icon_alert.gif); +} + +ul.messagelist li.error{ + background-image: url(../img/icon_error.gif); +} + +.errornote { + font-size: 12px !important; + display: block; + padding: 4px 5px 4px 25px; + margin: 0 0 3px 0; + border: 1px solid red; + color: red; + background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat; +} + +ul.errorlist { + margin: 0 !important; + padding: 0 !important; +} + +.errorlist li { + font-size: 12px !important; + display: block; + padding: 4px 5px 4px 25px; + margin: 0 0 3px 0; + border: 1px solid red; + color: white; + background: red url(../img/icon_alert.gif) 5px .3em no-repeat; +} + +.errorlist li a { + color: white; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0 !important; + padding: 0 !important; +} + +td ul.errorlist li { + margin: 0 !important; +} + +.errors { + background: #ffc; +} + +.errors input, .errors select, .errors textarea { + border: 1px solid red; +} + +div.system-message { + background: #ffc; + margin: 10px; + padding: 6px 8px; + font-size: .8em; +} + +div.system-message p.system-message-title { + padding: 4px 5px 4px 25px; + margin: 0; + color: red; + background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat; +} + +.description { + font-size: 12px; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; + padding: 2px 8px 3px 8px; + font-size: 11px; + color: #999; + border-top: 1px solid white; + border-bottom: 1px solid #ccc; + text-align: left; +} + +/* ACTION ICONS */ + +.addlink { + padding-left: 12px; + background: url(../img/icon_addlink.gif) 0 .2em no-repeat; +} + +.changelink { + padding-left: 12px; + background: url(../img/icon_changelink.gif) 0 .2em no-repeat; +} + +.deletelink { + padding-left: 12px; + background: url(../img/icon_deletelink.gif) 0 .25em no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; +} + +a.deletelink:hover { + color: #993333; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 10px; + font-weight: bold; + font-family: Arial,Helvetica,sans-serif; + padding-left: 0; + float: right; + position: relative; + margin-top: -2.4em; + margin-bottom: -2em; +} + +.form-row .object-tools { + margin-top: 5px; + margin-bottom: 5px; + float: none; + height: 2em; + padding-left: 3.5em; +} + +.object-tools li { + display: block; + float: left; + background: url(../img/tool-left.gif) 0 0 no-repeat; + padding: 0 0 0 8px; + margin-left: 2px; + height: 16px; +} + +.object-tools li:hover { + background: url(../img/tool-left_over.gif) 0 0 no-repeat; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + color: white; + padding: .1em 14px .1em 8px; + height: 14px; + background: #999 url(../img/tool-right.gif) 100% 0 no-repeat; +} + +.object-tools a:hover, .object-tools li:hover a { + background: #5b80b2 url(../img/tool-right_over.gif) 100% 0 no-repeat; +} + +.object-tools a.viewsitelink, .object-tools a.golink { + background: #999 url(../img/tooltag-arrowright.gif) top right no-repeat; + padding-right: 28px; +} + +.object-tools a.viewsitelink:hover, .object-tools a.golink:hover { + background: #5b80b2 url(../img/tooltag-arrowright_over.gif) top right no-repeat; +} + +.object-tools a.addlink { + background: #999 url(../img/tooltag-add.gif) top right no-repeat; + padding-right: 28px; +} + +.object-tools a.addlink:hover { + background: #5b80b2 url(../img/tooltag-add_over.gif) top right no-repeat; +} + +/* OBJECT HISTORY */ + +table#change-history { + width: 100%; +} + +table#change-history tbody th { + width: 16em; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 760px; + padding: 0; +} + +#content { + margin: 10px 15px; +} + +#header { + width: 100%; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 18em; + position: relative; + margin-right: -19em; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 20em !important; +} + +.colSM { + margin-left: 20em !important; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -19em; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: 95%; +} + +.subcol { + float: left; + width: 46%; + margin-right: 15px; +} + +.dashboard #content { + width: 500px; +} + +/* HEADER */ + +#header { + background: #417690; + color: #ffc; + overflow: hidden; +} + +#header a:link, #header a:visited { + color: white; +} + +#header a:hover { + text-decoration: underline; +} + +#branding h1 { + padding: 0 10px; + font-size: 18px; + margin: 8px 0; + font-weight: normal; + color: #f4f379; +} + +#branding h2 { + padding: 0 10px; + font-size: 14px; + margin: -8px 0 8px 0; + font-weight: normal; + color: #ffc; +} + +#user-tools { + position: absolute; + top: 0; + right: 0; + padding: 1.2em 10px; + font-size: 11px; + text-align: right; +} + +/* SIDEBAR */ + +#content-related h3 { + font-size: 12px; + color: #666; + margin-bottom: 3px; +} + +#content-related h4 { + font-size: 11px; +} + +#content-related .module h2 { + background: #eee url(../img/nav-bg.gif) bottom left repeat-x; + color: #666; +} + diff --git a/kcdc3/admin/css/changelists.css b/kcdc3/admin/css/changelists.css new file mode 100755 index 00000000..3c1a8c16 --- /dev/null +++ b/kcdc3/admin/css/changelists.css @@ -0,0 +1,289 @@ +/* CHANGELISTS */ + +#changelist { + position: relative; + width: 100%; +} + +#changelist table { + width: 100%; +} + +.change-list .hiddenfields { display:none; } + +.change-list .filtered table { + border-right: 1px solid #ddd; +} + +.change-list .filtered { + min-height: 400px; +} + +.change-list .filtered { + background: white url(../img/changelist-bg.gif) top right repeat-y !important; +} + +.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { + margin-right: 160px !important; + width: auto !important; +} + +.change-list .filtered table tbody th { + padding-right: 1em; +} + +#changelist .toplinks { + border-bottom: 1px solid #ccc !important; +} + +#changelist .paginator { + color: #666; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; + background: white url(../img/nav-bg.gif) 0 180% repeat-x; + overflow: hidden; +} + +.change-list .filtered .paginator { + border-right: 1px solid #ddd; +} + +/* CHANGELIST TABLES */ + +#changelist table thead th { + padding: 0; + white-space: nowrap; + vertical-align: middle; +} + +#changelist table thead th.action-checkbox-column { + width: 1.5em; + text-align: center; +} + +#changelist table tbody td, #changelist table tbody th { + border-left: 1px solid #ddd; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-left: 0; + border-right: 1px solid #ddd; +} + +#changelist table tbody td.action-checkbox { + text-align:center; +} + +#changelist table tfoot { + color: #666; +} + +/* TOOLBAR */ + +#changelist #toolbar { + padding: 3px; + border-bottom: 1px solid #ddd; + background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; + color: #666; +} + +#changelist #toolbar form input { + font-size: 11px; + padding: 1px 2px; +} + +#changelist #toolbar form #searchbar { + padding: 2px; +} + +#changelist #changelist-search img { + vertical-align: middle; +} + +/* FILTER COLUMN */ + +#changelist-filter { + position: absolute; + top: 0; + right: 0; + z-index: 1000; + width: 160px; + border-left: 1px solid #ddd; + background: #efefef; + margin: 0; +} + +#changelist-filter h2 { + font-size: 11px; + padding: 2px 5px; + border-bottom: 1px solid #ddd; +} + +#changelist-filter h3 { + font-size: 12px; + margin-bottom: 0; +} + +#changelist-filter ul { + padding-left: 0; + margin-left: 10px; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + color: #999; +} + +#changelist-filter a:hover { + color: #036; +} + +#changelist-filter li.selected { + border-left: 5px solid #ccc; + padding-left: 5px; + margin-left: -10px; +} + +#changelist-filter li.selected a { + color: #5b80b2 !important; +} + +/* DATE DRILLDOWN */ + +.change-list ul.toplinks { + display: block; + background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; + border-top: 1px solid white; + float: left; + padding: 0 !important; + margin: 0 !important; + width: 100%; +} + +.change-list ul.toplinks li { + padding: 3px 6px; + font-weight: bold; + list-style-type: none; + display: inline-block; +} + +.change-list ul.toplinks .date-back a { + color: #999; +} + +.change-list ul.toplinks .date-back a:hover { + color: #036; +} + +/* PAGINATOR */ + +.paginator { + font-size: 11px; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid #ddd; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + border: solid 1px #ccc; + background: white; + text-decoration: none; +} + +.paginator a.showall { + padding: 0 !important; + border: none !important; +} + +.paginator a.showall:hover { + color: #036 !important; + background: transparent !important; +} + +.paginator .end { + border-width: 2px !important; + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 13px; + vertical-align: top; +} + +.paginator a:hover { + color: white; + background: #5b80b2; + border-color: #036; +} + +/* ACTIONS */ + +.filtered .actions { + margin-right: 160px !important; + border-right: 1px solid #ddd; +} + +#changelist table input { + margin: 0; +} + +#changelist table tbody tr.selected { + background-color: #FFFFCC; +} + +#changelist .actions { + color: #999; + padding: 3px; + border-top: 1px solid #fff; + border-bottom: 1px solid #ddd; + background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; +} + +#changelist .actions.selected { + background: #fffccf; + border-top: 1px solid #fffee8; + border-bottom: 1px solid #edecd6; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 11px; + margin: 0 0.5em; + display: none; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + border: 1px solid #aaa; + margin-left: 0.5em; + padding: 1px 2px; +} + +#changelist .actions label { + font-size: 11px; + margin-left: 0.5em; +} + +#changelist #action-toggle { + display: none; +} + +#changelist .actions .button { + font-size: 11px; + padding: 1px 2px; +} diff --git a/kcdc3/admin/css/dashboard.css b/kcdc3/admin/css/dashboard.css new file mode 100755 index 00000000..ceefe152 --- /dev/null +++ b/kcdc3/admin/css/dashboard.css @@ -0,0 +1,30 @@ +/* DASHBOARD */ + +.dashboard .module table th { + width: 100%; +} + +.dashboard .module table td { + white-space: nowrap; +} + +.dashboard .module table td a { + display: block; + padding-right: .6em; +} + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { + margin-left: 0; +} + +ul.actionlist li { + list-style-type: none; +} + +ul.actionlist li.changelink { + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} \ No newline at end of file diff --git a/kcdc3/admin/css/forms.css b/kcdc3/admin/css/forms.css new file mode 100755 index 00000000..0ecfca78 --- /dev/null +++ b/kcdc3/admin/css/forms.css @@ -0,0 +1,358 @@ +@import url('widgets.css'); + +/* FORM ROWS */ + +.form-row { + overflow: hidden; + padding: 8px 12px; + font-size: 11px; + border-bottom: 1px solid #eee; +} + +.form-row img, .form-row input { + vertical-align: middle; +} + +form .form-row p { + padding-left: 0; + font-size: 11px; +} + +/* FORM LABELS */ + +form h4 { + margin: 0 !important; + padding: 0 !important; + border: none !important; +} + +label { + font-weight: normal !important; + color: #666; + font-size: 12px; +} + +.required label, label.required { + font-weight: bold !important; + color: #333 !important; +} + +/* RADIO BUTTONS */ + +form ul.radiolist li { + list-style-type: none; +} + +form ul.radiolist label { + float: none; + display: inline; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 3px 10px 0 0; + float: left; + width: 8em; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned p, form .aligned ul { + margin-left: 7em; + padding-left: 30px; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +form .aligned p.help { + padding-left: 38px; +} + +.aligned .vCheckboxLabel { + float: none !important; + display: inline; + padding-left: 4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +.checkbox-row p.help { + margin-left: 0; + padding-left: 0 !important; +} + +fieldset .field-box { + float: left; + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 15em !important; +} + +form .wide p { + margin-left: 15em; +} + +form .wide p.help { + padding-left: 38px; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block !important; +} + +fieldset.collapsed h2 { + background-image: url(../img/nav-bg.gif); + background-position: bottom left; + color: #999; +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline !important; +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 5px 7px; + text-align: right; + background: white url(../img/nav-bg.gif) 0 100% repeat-x; + border: 1px solid #ccc; + margin: 5px 0; + overflow: hidden; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + margin: 0 0 0 5px; +} + +.submit-row p { + margin: 0.3em; +} + +.submit-row p.deletelink-box { + float: left; +} + +.submit-row .deletelink { + background: url(../img/icon_deletelink.gif) 0 50% no-repeat; + padding-left: 14px; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top !important; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vTextField { + width: 20em; +} + +.vIntegerField { + width: 5em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + border: 1px solid #ccc; + margin: 10px 0; +} + +.inline-group .aligned label { + width: 8em; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: #666; + padding: 3px 5px; + font-size: 11px; + background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; + border-bottom: 1px solid #ddd; +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 11px; +} + +.inline-related fieldset { + margin: 0; + background: #fff; + border: none; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 11px; + text-align: left; + font-weight: bold; + background: #bcd; + color: #fff; +} + +.inline-group .tabular fieldset.module { + border: none; + border-bottom: 1px solid #ddd; +} + +.inline-related.tabular fieldset.module table { + width: 100%; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 7px; + overflow: hidden; + font-size: 9px; + font-weight: bold; + color: #666; + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: #666; + padding: 3px 5px; + border-bottom: 1px solid #ddd; + background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; +} + +.inline-group .tabular tr.add-row td { + padding: 4px 5px 3px; + border-bottom: none; +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon_addlink.gif) 0 50% no-repeat; + padding-left: 14px; + font-size: 11px; + outline: 0; /* Remove dotted border around link */ +} + +.empty-form { + display: none; +} diff --git a/kcdc3/admin/css/ie.css b/kcdc3/admin/css/ie.css new file mode 100755 index 00000000..fd00f7f2 --- /dev/null +++ b/kcdc3/admin/css/ie.css @@ -0,0 +1,63 @@ +/* IE 6 & 7 */ + +/* Proper fixed width for dashboard in IE6 */ + +.dashboard #content { + *width: 768px; +} + +.dashboard #content-main { + *width: 535px; +} + +/* IE 6 ONLY */ + +/* Keep header from flowing off the page */ + +#container { + _position: static; +} + +/* Put the right sidebars back on the page */ + +.colMS #content-related { + _margin-right: 0; + _margin-left: 10px; + _position: static; +} + +/* Put the left sidebars back on the page */ + +.colSM #content-related { + _margin-right: 10px; + _margin-left: -115px; + _position: static; +} + +.form-row { + _height: 1%; +} + +/* Fix right margin for changelist filters in IE6 */ + +#changelist-filter ul { + _margin-right: -10px; +} + +/* IE ignores min-height, but treats height as if it were min-height */ + +.change-list .filtered { + _height: 400px; +} + +/* IE doesn't know alpha transparency in PNGs */ + +.inline-deletelink { + background: transparent url(../img/inline-delete-8bit.png) no-repeat; +} + +/* IE7 doesn't support inline-block */ +.change-list ul.toplinks li { + zoom: 1; + *display: inline; +} \ No newline at end of file diff --git a/kcdc3/admin/css/login.css b/kcdc3/admin/css/login.css new file mode 100755 index 00000000..8872ade7 --- /dev/null +++ b/kcdc3/admin/css/login.css @@ -0,0 +1,57 @@ +/* LOGIN FORM */ + +body.login { + background: #eee; +} + +.login #container { + background: white; + border: 1px solid #ccc; + width: 28em; + min-width: 300px; + margin-left: auto; + margin-right: auto; + margin-top: 100px; +} + +.login #content-main { + width: 100%; +} + +.login form { + margin-top: 1em; +} + +.login .form-row { + padding: 4px 0; + float: left; + width: 100%; +} + +.login .form-row label { + float: left; + width: 9em; + padding-right: 0.5em; + line-height: 2em; + text-align: right; + font-size: 1em; + color: #333; +} + +.login .form-row #id_username, .login .form-row #id_password { + width: 14em; +} + +.login span.help { + font-size: 10px; + display: block; +} + +.login .submit-row { + clear: both; + padding: 1em 0 0 9.4em; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/kcdc3/admin/css/rtl.css b/kcdc3/admin/css/rtl.css new file mode 100755 index 00000000..82d16024 --- /dev/null +++ b/kcdc3/admin/css/rtl.css @@ -0,0 +1,245 @@ +body { + direction: rtl; +} + +/* LOGIN */ + +.login .form-row { + float: right; +} + +.login .form-row label { + float: right; + padding-left: 0.5em; + padding-right: 0; + text-align: left; +} + +.login .submit-row { + clear: both; + padding: 1em 9.4em 0 0; +} + +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.addlink, .changelink { + padding-left: 0px; + padding-right: 12px; + background-position: 100% 0.2em; +} + +.deletelink { + padding-left: 0px; + padding-right: 12px; + background-position: 100% 0.25em; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: 1px solid #ddd !important; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -19em; + margin-right: auto; +} + +.colMS { + margin-left: 20em !important; + margin-right: 10px !important; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 12px; +} + +/* changelists styles */ + +.change-list .filtered { + background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important; +} + +.change-list .filtered table { + border-left: 1px solid #ddd; + border-right: 0px none; +} + +#changelist-filter { + right: auto; + left: 0; + border-left: 0px none; + border-right: 1px solid #ddd; +} + +.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { + margin-right: 0px !important; + margin-left: 160px !important; +} + +#changelist-filter li.selected { + border-left: 0px none; + padding-left: 0px; + margin-left: 0; + border-right: 5px solid #ccc; + padding-right: 5px; + margin-right: -10px; +} + +.filtered .actions { + border-left:1px solid #DDDDDD; + margin-left:160px !important; + border-right: 0 none; + margin-right:0 !important; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: 0; + border-left: 1px solid #ddd; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; + float: right; +} + +.submit-row { + text-align: left +} + +.submit-row p.deletelink-box { + float: right; +} + +.submit-row .deletelink { + background: url(../img/icon_deletelink.gif) 0 50% no-repeat; + padding-right: 14px; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +input[type=submit].default, .submit-row input.default { + float: left; +} + +fieldset .field-box { + float: right; + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% .3em; + padding: 4px 25px 4px 5px; +} + +.errornote { + background-position: 100% .3em; + padding: 4px 25px 4px 5px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 0; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 0; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.inline-deletelink { + float: left; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} + +/* IE7 specific bug fixes */ + +div.colM { + position: relative; +} + +.submit-row input { + float: left; +} \ No newline at end of file diff --git a/kcdc3/admin/css/widgets.css b/kcdc3/admin/css/widgets.css new file mode 100755 index 00000000..2989f2f4 --- /dev/null +++ b/kcdc3/admin/css/widgets.css @@ -0,0 +1,562 @@ +/* SELECTOR (FILTER INTERFACE) */ + +.selector { + width: 580px; + float: left; +} + +.selector select { + width: 270px; + height: 17.2em; +} + +.selector-available, .selector-chosen { + float: left; + width: 270px; + text-align: center; + margin-bottom: 5px; +} + +.selector-chosen select { + border-top: none; +} + +.selector-available h2, .selector-chosen h2 { + border: 1px solid #ccc; +} + +.selector .selector-available h2 { + background: white url(../img/nav-bg.gif) bottom left repeat-x; + color: #666; +} + +.selector .selector-filter { + background: white; + border: 1px solid #ccc; + border-width: 0 1px; + padding: 3px; + color: #999; + font-size: 10px; + margin: 0; + text-align: left; +} + +.selector .selector-filter label { + width: 16px; + padding: 2px; +} + +.selector .selector-available input { + width: 230px; +} + +.selector ul.selector-chooser { + float: left; + width: 22px; + height: 50px; + background: url(../img/chooser-bg.gif) top center no-repeat; + margin: 10em 5px 0 5px; + padding: 0; +} + +.selector-chooser li { + margin: 0; + padding: 3px; + list-style-type: none; +} + +.selector select { + margin-bottom: 10px; + margin-top: 0; +} + +.selector-add, .selector-remove { + width: 16px; + height: 16px; + display: block; + text-indent: -3000px; + overflow: hidden; +} + +.selector-add { + background: url(../img/selector-icons.gif) 0 -161px no-repeat; + cursor: default; + margin-bottom: 2px; +} + +.active.selector-add { + background: url(../img/selector-icons.gif) 0 -187px no-repeat; + cursor: pointer; +} + +.selector-remove { + background: url(../img/selector-icons.gif) 0 -109px no-repeat; + cursor: default; +} + +.active.selector-remove { + background: url(../img/selector-icons.gif) 0 -135px no-repeat; + cursor: pointer; +} + +a.selector-chooseall, a.selector-clearall { + display: inline-block; + text-align: left; + margin-left: auto; + margin-right: auto; + font-weight: bold; + color: #666; +} + +a.selector-chooseall { + padding: 3px 18px 3px 0; +} + +a.selector-clearall { + padding: 3px 0 3px 18px; +} + +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + color: #036; +} + +a.selector-chooseall { + background: url(../img/selector-icons.gif) right -263px no-repeat; + cursor: default; +} + +a.active.selector-chooseall { + background: url(../img/selector-icons.gif) right -289px no-repeat; + cursor: pointer; +} + +a.selector-clearall { + background: url(../img/selector-icons.gif) left -211px no-repeat; + cursor: default; +} + +a.active.selector-clearall { + background: url(../img/selector-icons.gif) left -237px no-repeat; + cursor: pointer; +} + +/* STACKED SELECTORS */ + +.stacked { + float: left; + width: 500px; +} + +.stacked select { + width: 480px; + height: 10.1em; +} + +.stacked .selector-available, .stacked .selector-chosen { + width: 480px; +} + +.stacked .selector-available { + margin-bottom: 0; +} + +.stacked .selector-available input { + width: 442px; +} + +.stacked ul.selector-chooser { + height: 22px; + width: 50px; + margin: 0 0 3px 40%; + background: url(../img/chooser_stacked-bg.gif) top center no-repeat; +} + +.stacked .selector-chooser li { + float: left; + padding: 3px 3px 3px 5px; +} + +.stacked .selector-chooseall, .stacked .selector-clearall { + display: none; +} + +.stacked .selector-add { + background: url(../img/selector-icons.gif) 0 -57px no-repeat; + cursor: default; +} + +.stacked .active.selector-add { + background: url(../img/selector-icons.gif) 0 -83px no-repeat; + cursor: pointer; +} + +.stacked .selector-remove { + background: url(../img/selector-icons.gif) 0 -5px no-repeat; + cursor: default; +} + +.stacked .active.selector-remove { + background: url(../img/selector-icons.gif) 0 -31px no-repeat; + cursor: pointer; +} + +/* DATE AND TIME */ + +p.datetime { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.datetime span { + font-size: 11px; + color: #ccc; + font-weight: normal; + white-space: nowrap; +} + +table p.datetime { + font-size: 10px; + margin-left: 0; + padding-left: 0; +} + +/* FILE UPLOADS */ + +p.file-upload { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.file-upload a { + font-weight: normal; +} + +.file-upload .deletelink { + margin-left: 5px; +} + +span.clearable-file-input label { + color: #333; + font-size: 11px; + display: inline; + float: none; +} + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { + margin: 5px auto; + font-size: 11px; + width: 16em; + text-align: center; + background: white; + position: relative; +} + +.clockbox { + width: auto; +} + +.calendar { + margin: 0; + padding: 0; +} + +.calendar table { + margin: 0; + padding: 0; + border-collapse: collapse; + background: white; + width: 100%; +} + +.calendar caption, .calendarbox h2 { + margin: 0; + font-size: 11px; + text-align: center; + border-top: none; +} + +.calendar th { + font-size: 10px; + color: #666; + padding: 2px 3px; + text-align: center; + background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; + border-bottom: 1px solid #ddd; +} + +.calendar td { + font-size: 11px; + text-align: center; + padding: 0; + border-top: 1px solid #eee; + border-bottom: none; +} + +.calendar td.selected a { + background: #C9DBED; +} + +.calendar td.nonday { + background: #efefef; +} + +.calendar td.today a { + background: #ffc; +} + +.calendar td a, .timelist a { + display: block; + font-weight: bold; + padding: 4px; + text-decoration: none; + color: #444; +} + +.calendar td a:hover, .timelist a:hover { + background: #5b80b2; + color: white; +} + +.calendar td a:active, .timelist a:active { + background: #036; + color: white; +} + +.calendarnav { + font-size: 10px; + text-align: center; + color: #ccc; + margin: 0; + padding: 1px 3px; +} + +.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { + color: #999; +} + +.calendar-shortcuts { + background: white; + font-size: 10px; + line-height: 11px; + border-top: 1px solid #eee; + padding: 3px 0 4px; + color: #ccc; +} + +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + display: block; + position: absolute; + font-weight: bold; + font-size: 12px; + background: #C9DBED url(../img/default-bg.gif) bottom left repeat-x; + padding: 1px 4px 2px 4px; + color: white; +} + +.calendarnav-previous:hover, .calendarnav-next:hover { + background: #036; +} + +.calendarnav-previous { + top: 0; + left: 0; +} + +.calendarnav-next { + top: 0; + right: 0; +} + +.calendar-cancel { + margin: 0 !important; + padding: 0 !important; + font-size: 10px; + background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; + border-top: 1px solid #ddd; +} + +.calendar-cancel:hover { + background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x; +} + +.calendar-cancel a { + color: black; + display: block; +} + +ul.timelist, .timelist li { + list-style-type: none; + margin: 0; + padding: 0; +} + +.timelist a { + padding: 2px; +} + +/* INLINE ORDERER */ + +ul.orderer { + position: relative; + padding: 0 !important; + margin: 0 !important; + list-style-type: none; +} + +ul.orderer li { + list-style-type: none; + display: block; + padding: 0; + margin: 0; + border: 1px solid #bbb; + border-width: 0 1px 1px 0; + white-space: nowrap; + overflow: hidden; + background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y; +} + +ul.orderer li:hover { + cursor: move; + background-color: #ddd; +} + +ul.orderer li a.selector { + margin-left: 12px; + overflow: hidden; + width: 83%; + font-size: 10px !important; + padding: 0.6em 0; +} + +ul.orderer li a:link, ul.orderer li a:visited { + color: #333; +} + +ul.orderer li .inline-deletelink { + position: absolute; + right: 4px; + margin-top: 0.6em; +} + +ul.orderer li.selected { + background-color: #f8f8f8; + border-right-color: #f8f8f8; +} + +ul.orderer li.deleted { + background: #bbb url(../img/deleted-overlay.gif); +} + +ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { + color: #888; +} + +ul.orderer li.deleted .inline-deletelink { + background-image: url(../img/inline-restore.png); +} + +ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { + cursor: default; +} + +/* EDIT INLINE */ + +.inline-deletelink { + float: right; + text-indent: -9999px; + background: transparent url(../img/inline-delete.png) no-repeat; + width: 15px; + height: 15px; + border: 0px none; + outline: 0; /* Remove dotted border around link */ +} + +.inline-deletelink:hover { + background-position: -15px 0; + cursor: pointer; +} + +.editinline button.addlink { + border: 0px none; + color: #5b80b2; + font-size: 100%; + cursor: pointer; +} + +.editinline button.addlink:hover { + color: #036; + cursor: pointer; +} + +.editinline table .help { + text-align: right; + float: right; + padding-left: 2em; +} + +.editinline tfoot .addlink { + white-space: nowrap; +} + +.editinline table thead th:last-child { + border-left: none; +} + +.editinline tr.deleted { + background: #ddd url(../img/deleted-overlay.gif); +} + +.editinline tr.deleted .inline-deletelink { + background-image: url(../img/inline-restore.png); +} + +.editinline tr.deleted td:hover { + cursor: default; +} + +.editinline tr.deleted td:first-child { + background-image: none !important; +} + +/* EDIT INLINE - STACKED */ + +.editinline-stacked { + min-width: 758px; +} + +.editinline-stacked .inline-object { + margin-left: 210px; + background: white; +} + +.editinline-stacked .inline-source { + float: left; + width: 200px; + background: #f8f8f8; +} + +.editinline-stacked .inline-splitter { + float: left; + width: 9px; + background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat; + border-right: 1px solid #ccc; +} + +.editinline-stacked .controls { + clear: both; + background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; + padding: 3px 4px; + font-size: 11px; + border-top: 1px solid #ddd; +} + diff --git a/kcdc3/admin/img/changelist-bg.gif b/kcdc3/admin/img/changelist-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..7f4699470adc8c021740023dcd4f0a1bd5f50b84 GIT binary patch literal 58 zcmZ?wbhEHbT*$!0(7?d({{8#Acke3xWMKdS9S{MMVPF#E>05dFE&t*vt?bv=6id7ONcO70{{r%8=U|E literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/chooser-bg.gif b/kcdc3/admin/img/chooser-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..30e83c2518b0e5ee5f4bda6ce790b47f6dbdbfbb GIT binary patch literal 199 zcmZ?wbhEHb6l2h5*v!E2@87@o@85s?`0?-Gzu&)q|NQy$j~_oiefsp_!-t2MMY9TZUv9~%Sp!>_)cW&ci3#* zUhC5m*S~nZz=*>R=VoO!-wlwA$Z`-01 q@~q#j3=%veq*@rvq^WHhU}-`1SSm{{H^+^Yi-p`uF$u@bK{c{r&s< z`||Sg^z`)c@$vTd_5c6?A^8LV00000EC2ui05AX-000DmFvuy15jgA3yCGB Oo}Zwd4gw#T5db^5xM#Bf literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/default-bg-reverse.gif b/kcdc3/admin/img/default-bg-reverse.gif new file mode 100755 index 0000000000000000000000000000000000000000..0873281e51bdcfd1e7eb5bbfbde3a09c4cbc943e GIT binary patch literal 843 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 literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon-no.gif b/kcdc3/admin/img/icon-no.gif new file mode 100755 index 0000000000000000000000000000000000000000..1b4ee5814570885705399533f1182f8b0491c5fb GIT binary patch literal 176 zcmZ?wbhEHb`H-TFR%!C^)o_GDj!gPtK1gc27Dv@$SQ0{~`FJvsmY literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon-unknown.gif b/kcdc3/admin/img/icon-unknown.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfd2b02ad91b3677dbe59111faaf4f437c362cb8 GIT binary patch literal 130 zcmV-|0Db>QNk%w1VF~~W0J9GO^z`(anwr7E!O_vts;a8Fxw+ur;K|9!=;-Lh#l`#k z`?0aH)z#IOmX?c)i~s-sA^8LW000jFEC2ui015yK000Cp@IAI#TTH&>x=&LlD2fp{ kltU;-pbSpsb&B9v9)J|xHP4tFtdrsVKoW`tBZ&Y2J8`5w82|tP literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon-yes.gif b/kcdc3/admin/img/icon-yes.gif new file mode 100755 index 0000000000000000000000000000000000000000..73992827403791d6c1a75a079880e41dce7e0214 GIT binary patch literal 299 zcmZ?wbhEHbb?NhTQ$x_deWPc4O)NkN2|oXRf%p{M+wuUw(Z# z`TWGXJ8Mf07p=Or^7yl3mtJ2C+~V)C-fh~&DX}}E_C4PF@Y93ee}B)tGUw-?pC_Il zZ#vO%{oS?y|Nqw=uUUR`+4?){5_iQh&Q{xM6OkFieY2o T4)tf0@^WEj=4)bdWUvMRbX#E6 literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_addlink.gif b/kcdc3/admin/img/icon_addlink.gif new file mode 100755 index 0000000000000000000000000000000000000000..ee70e1adba52480cc6aedbee650000c5d55b0088 GIT binary patch literal 119 zcmZ?wbhEHb(s)E@aY^3 F)&O8RB1ZrK literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_alert.gif b/kcdc3/admin/img/icon_alert.gif new file mode 100755 index 0000000000000000000000000000000000000000..a1dde2625445b76d041ae02ccfcb83481ca63c5e GIT binary patch literal 145 zcmV;C0B-+BNk%w1VGsZi0J9GO|G@+Q!3O`;RR7pu|IkAJ%Ps%YPXF0v|INcdJ{u&=}=IXLDhr+J%S1nrq(gCL;wIgri4F* literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_calendar.gif b/kcdc3/admin/img/icon_calendar.gif new file mode 100755 index 0000000000000000000000000000000000000000..7587b305a4ee702cbed3bee1ae17c78feb85d00b GIT binary patch literal 192 zcmV;x06+gnNk%w1VGsZi0J8u9nVFf2iHY^~_4)bv@bK{4+uQ&D|FN{U?d|Qf&F0D5 z?Wd=w{QUgs>FMX^=l}ozA^8LW000jFEC2ui01yBW000DS@X1N*1UPGamH(iU1QH+` z43ii};vPZqm~L$+una7G@AI)4YnU1cj)Wk=I*&Aa=g_Vl48 zmH)wj0Spv>vM@3*@G|Itcpx(vSX4HgyeYC&>*nrB_bxSQsBGn6*)YRRaLr}Q6>6LJ P$Rx*~-FRR+2ZJ>L#Kbnb literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_clock.gif b/kcdc3/admin/img/icon_clock.gif new file mode 100755 index 0000000000000000000000000000000000000000..ff2d57e0a3b6373b7bd9540e688b1b4c71081cb7 GIT binary patch literal 390 zcmV;10eSvMNk%w1VGsZi0M$DH{QUg>{{H#-`S$kq$lLA4+3fD_?(*{T{{H>?`uXqg z@BaV(?CkCH^Yi-p`u6wt#Mtch_4dHk>iGEh^7Hca^z*{j>crRU`1twz{QT_e?DqEc z$J*@b>gvMQ>+|&V$lC14+wAM>>;3)w@9*%!*X#51^1;{Z`}_OH+U@-O`^ehu#MkWU z>FEFe{^{xI#n|ld@$l~N@5kBgv9!0z+wHW?=G)ubr>Cd?|NohpnY8A@0000000000 z00000A^8LW0027xEC2ui01yBW000J~z@2cXD;jmfB(YW_ga{xGQmJF&uGa!=Dy-IU zx$q)@gRrJva4tXt05Uks30VcZ5F=VbfDzy%IyZGW2r3RV4+8@cI5vSg1UL%-4ihvL z4F?pBk1IFOZ1vml&CJGE4FE})gH$(*xI2#8t kA}zwiLpm2FSXaY=R2~vG+}zkoL`Ox%;6gX&=t@BVI|kg>kN^Mx literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_deletelink.gif b/kcdc3/admin/img/icon_deletelink.gif new file mode 100755 index 0000000000000000000000000000000000000000..72523e3a3ba1446c8f768c157cea642119a02741 GIT binary patch literal 181 zcmZ?wbhEHbc&kkH2hg{xUB9fxq8%JG(R5 zT3?Eao`!{eDJnj1U~tLY{9|s;X>G0VWo1vp!yowhEs~V{|NlP&4xspxg^__loIwX9 z53-Yi)#yQKi;S#{{sX6 zi;Dh#`0#&e>3>Vh|D2rv=gC*q|>i-WM_<#QV|C1;G zS5*8rF!=rZ_kUyK|3JV%TcG%pg^__lo4aiRnY%vG=3p{kB40{i-Of=+@`~3X;@bK{O@9+Kn{rLF!_xJbl@$pSfP5S!!_4W1n`T6YZ?B3qqPft(K z(9rAa>(gwwA^YilZ@=HrgUS3{FNlEth_IP-BSy@@<=jZ6? z=$e|EaBy(V&CR>JyVcdz;o;$EXlUQx-&9moTU%RKS68&OwCU;T!NJ+t*-}zc&)b92AH zzpJaOZfvlTPVlRhn*D zzYj!ubf8e2}%QyRfsr*SWe%Rb`=>R1ae%6%2~5|TAxeL zzADQysO81>*ZZYCyl6@$BdV$biI?uic&0bzMrFb%Aq1#ZUv-+v+w0VD#)3jAg-{rn zQK{SBuPmhC5$}W{D84q?yXp06=7SUzUxd5@c^_-Jtgg3OcgI0-bjam_F)Z9$Uf=5< z*hz6@lo{ZZu*P|f^TenPFmQjgIBP%6a@>yq0{~})9l-cU)g%A_002ovPDHLkV1oH8 BY;phq literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/icon_success.gif b/kcdc3/admin/img/icon_success.gif new file mode 100755 index 0000000000000000000000000000000000000000..5cf90a15aa6731798b025a238fa47a1658510fff GIT binary patch literal 341 zcmZ?wbhEHb6krfwxXJ(m|NsC0@cYBBf4?q$zBut-@A?;OHoRQB_4TGbZ+4yjc=Gy} zYu7$sefa&slkbn8{dih+uDI?}MdP*V#;eu+_qwJ$=-=~p=Y>z_u719puq!NScSPpF zg#4pv1xM2>&lOf*D6TwP`0>{VkG0l*8=OKmdxUNAj@;&(aUeGLNb=vme}Ptmoj^XJ z_>+Z^fkBHw2V?}uPYi5D4pR#}bfiS5bS&9qz$LFSv4l%VM0VNAuq7M$%x`OYevyni z6y)sQCFr(n`AWsDVxcXCnHqNfPZgaKf;1I5H8q8UQ?&$wdD=UoSe-bM`a7e(;ev*DhVUbne`_Q>RWHJ$m%u z!GnAE?%ld|>&A^6SFT*SV8MbJGiFSgGG)Sq2|YbM4Gj%I(@xu~L;ww!E(!7r26Ax# z26Yo|Q=l@=0*}aI1_rJVAk65r#$*OiP`<=9q9iy!t)x7$D3!rCF}Wx|H#H?QQNb;< zD78GlD7#p}Vr#~w3ZT-9o-U3d5>s0PZ;Q1kaJcNw6<2ol{`H?fR&lq@+fNPd=`slo zkNq2-l{wAX{kw31#NjUjI#s<#Uj@rXCa>o{s1qmoLR|UF+{q6*%d3Ul-XEy+RoY#| zkfg@p<7MzuzoD2R^0?fz%GC`Vt9o~eIX#}ba7TVWzqWIsT+0Qozj6zvZ?O^|iOvau45i`%PE+DBAs)9(WdP);)FE4qk(op#PgM^?h(mhZn$bMx7!ED!$ll-yWMuFR9Y9iY1q7x+Tho7W2RcIw$bnR z2Z2D~y5@l64y0TzH$=tFKLOu2^C00_)Ch$_LD)3MqdNl)v!b&k++3HA!8QF=ku#b%{yJ#wK~|XDwD}%Ih)Ns*K9MH z%(HYly{5CB)Ym{qon_8#Hk*fGCw9C2rdkss8}e+bO6J_@bS`v6TrSr|wI)OwBZmQm zHE@-oO(YTz5V;=1&QvJr=y6WMe@$|)b-+D_HXIJ8d%fN;>`aB04(d23;lD2}`^z_f zWD`6<7Ey3_>h*ewj@6o=j&q`$*PTb){4yf-uu`dfren1xsNE;uf~-qQ~+a-GFR@J$@b>Hh94o@B%i?F()B=ob5MjVEX~Af^TCZ zpt}o>$R?)bE~vB3v9|mNm(eM3QreV7{t3JXuf|(;ev*DhVUbne`_qeqV(Ja};L z-o0D5Zr!+XNxJHx&=ckpFCl;kL_$DS7<>#iRWF{)OWfrBD=NDxcD_CsJ zxKsgDy5G~qF+^f&>qJMfW(6J><{J?Kf>R&;&5u&^T)oP_O3;r=6p7) zlfNAI+AzN1yld9iPbOE?zDn^FWNWTzVg8q;tMyQH#xB2CjJMamULv=ffzPT{LG9m{ z3!RZZYz+J_R$O4Tn}6ZyW@b)?Zsy_zb<*cm_zc-z$!)fZ;AeP{VB3kMP1FLBYMl`sP8M=cy-s(-<#^LNPFbS VZ>oP-s}J-FgQu&X%Q~loCIHeD(U1TD literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/inline-restore.png b/kcdc3/admin/img/inline-restore.png new file mode 100755 index 0000000000000000000000000000000000000000..efdd92ac39d12c2f84fbd22d05d7b495e2206bf4 GIT binary patch literal 623 zcmV-#0+9WQP)V!KQp&Gv#VQ{rTw<)x~~1Dk?(c~!+vyQpqu`J3b+L~ zR`ZDG!5ruVF7OO4z$y5w^TqAKF*#fWUI*hZ;0T(M%?=EJb>Mf<-hn;vz<0pKoOhsG zlFpOKWZcFGeU*W=oyt4~z9F4M8?n(2flbiMCtYkj4Ls7hVHi$Z+y!QpxfL)doj1_- zgSEON5MRGa0deQ)bh_3T3I#0~42F6BfCG^m^!3}IjXPJgF{Y(F*a1(q;}n-rM^R@F=3jf=JWZqL?XfSLgqn_(8ii* zd0u$rK$hW~oS-1&G0<4f=kxiv+wJDZ_bU1_)5hd6(3oi>ingRCVUgFUx)angnT)37 zKv9fM@WF#BmfOQv#2a57-S&KT*C(G{DQl+NNW9y=`fHnu-v==- Ot=>b+CQo8uum%9*_Ae;_ literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/nav-bg-reverse.gif b/kcdc3/admin/img/nav-bg-reverse.gif new file mode 100755 index 0000000000000000000000000000000000000000..f11029f90fc965141b8815a78ac2651759099475 GIT binary patch literal 186 zcmV;r07d^tNk%w1VG#fy0J8u9|NsB^`1t<*{`U6v@$vEd`}^(f?dRv`;^N}{{r&3d z>hA9DU$B!R9e*F0P^XD&Kym`~Lm=e{4X9 z0SG{LF|hV2sP&~}&dXS}F6Z^GaGmodx!1$iy|0P;dtku_cTK7O6OU3(=2%Uiw4%hT z*KOU6HQ%^iR_%ZAF4;$K_VK literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/nav-bg.gif b/kcdc3/admin/img/nav-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..f8402b809dc1efec80db6e466d789f88429a79a8 GIT binary patch literal 273 zcmZ?wbhEHb6l9QRIKsg2{rmT~Z{I$D{`}ReSAYNh{q^hDhYue(@t*9{u_A=gpfpKY#xG_U+rVXV3oq`}hC||i=Q&8(m$()z5YF*CjUEw001<4;4tjrTwH+&%FA_x~E6rskH`CdQ7= zuI>)uzWxal`(>Zw+Pr1!Chi?O LckSMx$Y2cs9wnNk literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/selector-icons.gif b/kcdc3/admin/img/selector-icons.gif new file mode 100755 index 0000000000000000000000000000000000000000..8809c4fb9acea53623b8e3b8251b72a245aa17e8 GIT binary patch literal 2771 zcmV;^3M}+$#R@9*pI_UiEW z?CP?Ck95?C|R9>g4S7hI*~?c(b5<>~I>>hs{~^5^I0=I80; z=IGz%@8ag`<>lq%*5<_4=+e^C z#nk1*)a1g{=h4y8!qVf<&(F@z&b-j%ywK&%&CR~h<;={?xXN z&E(0+$+peq$jHdI%ip)m;Iz!+w9MqT%HPMw$F$4hwaenO%j2}k;Izu%vdZJM$=|Zc z;j_rz#Kgq1$KA2V-NVDftj6HN!otD9!KlRGz`(%2zrU)&+P=QNr@`C2yu78s+@-+W zroh{!z}uj}25$81 znTg4wKV*_V0SZ({QZjm6}T8>Lu zxjGjJ)+xulI<9B;qVJnt{R*M#&-Y#bxc995vnxO+na5sZdb#&&u1=qRmR%x-M3#sxVCMpF zM)_t4c82h#EK=5a=bwS9!2+Lmh7dxTW=hHBop%bsr7UTxAq1q7a#@O-V_v!d4{KVP zr4Xc&%0j7s=B=|F-c zK>^HRP9tb=A*~?X*zo{Cb_@eY8{Br=#w+&yb=oDHs5S!M>yn1Bo=p=wh%g8vwPz!3OK2&oU50>;X_7L=3TT*kpXd2@U|| zzzH-UgA6wKNQ2JFZsccxDd4oMPaN%ZBl8p-G`Jj% z!Xz!s6@Vx$Otk~qAx-e$zfEprRTWH%Oow9jPh8 z1m3CnV1VVRVZK`2id^Qo0RTv#I_8(frida+Fa-cpn7{6N>9W&KhwXC5Mh8%;t8RO2 zn#AV20U#K!i1CV{^7`vwfbjhDlL20OW~*Vg8RCjeKKb&83v@RsqKA%(YX!mGJ1TX% z?f(1lGgQMQ!renoAu;r|(vAV(bxFp%-Y;(rJ{gEC?ykUGS|MQ1SAGh$SO z`xWAXPPo7YH&}@5bO=LEFu({nbfIUQ;T~1f0#h!)!a`83KmM4(K z$ic%{Fl7Wlj0F$>$zh=(l4BAgG~y8JPy_OqXA&}4j}D{5KL*8uLCO%IK*sY7t65Ep z1+1dglyQ#%8f1R;yI=m|$Hq3s4+&9X3zc|akPuuV6QpWE3nZ0^OE6#{A&>>DT9v9* z5fW8>+y@dep(X~jU`&~4K`GRv1_m%7Q)=j=Ah~48PF`|LnE(`9w&cl93PFyt7-c0( z$$(6TGL>ynR0ulh%21X~)kfJQsE zvX+74Wih*%%u-+go5?I^I~!WhWFR!36>T3!bDA(#;WVfTL~35F8rHP753YF)Y+@r@ zLCl6WdUP|JNKL9z3lf7sKm!_qhyg+fpax)wp$J6~12EJ;0E4K35;e)e5h$UCg3KTp zUP$W^Brt=tCSwK!Q3NQc0)(;XfGVI+1VOAZ3r4Jf0Du(&D+X(gy*A?y82~H+l#qxkpsX!!5Wy=>p*6(4T*qa3J3^-M79A}f~Wx&T&hA4PFvQ3P}LZ8=m{N+ z!BvF+%s>&;poSt!yVTzL_P4#U0Vc#D4ouhpAqkM0FZQqpUx>pF2{4Eqd=ZA~Vxb9P z@P)bvVgqq7cMn*ozz&!zj^hpl6TZL%CYq3d1nfY)=_QCb(rbhECZGwv$geo$I}J>5 zz`jkGhJg2bUU`UP8arq&7KkekOmJ5o0-i<~?kiw^xt(K0HGWe3p!hdNxXX?bKL8&QBj8J?XD3l~Ic!Z5=ll-6NG+o2uB Zpam_8(T+!#coX3W$0kPo=cNV&06TG~#AN^g literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/selector-search.gif b/kcdc3/admin/img/selector-search.gif new file mode 100755 index 0000000000000000000000000000000000000000..6d5f4c74923af2daba13baa484364380fb1614b9 GIT binary patch literal 552 zcmZ?wbhEHb6krfwc*ekR;r}fg8=Jp>|9X0Qe){yu!NI}X+uO&-$I8koH8s`3!otqZ z?(W^YSy@?TW@e{PpT2zg^6J&ABO)T)-Q5!s60Tjl=Ire3>gqaW%9PsL+PQP*Ha9mX zCnrZoN9W|^#K*^f{rYv@ym@clym|8E$=&V_@LPJBVtE(?uxDXW;RaaLxbLLEYd;7Mww%N01*VNRUKY#wgg9n+J znUg0^j*E-y=;*j{51X2rQc_ZG-@bkS{(VPBM~0yT6o0ZXf?TTuB0zD%z~0)x z(A3=0+M*~cF2*k1)@;Hotjo#FYS$;lCc@9cB5K1e*(T4%&$OJ0N1L&YotI^~f{vr% zn$~qnssdI5qW0Tb4Ak_r)E!)0jSnm~~hECZvY5o%BVqvfb0K*)eZU6uP literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/sorting-icons.gif b/kcdc3/admin/img/sorting-icons.gif new file mode 100755 index 0000000000000000000000000000000000000000..451aae59874c795763cee9b044bf2c487f15a853 GIT binary patch literal 369 zcmZ?wbhEHb6k}*%IKsg2;>C++&z_w!(hg+Pin}?%lgLZrnIy)1g(XR`svm zGk^a4IdkUBoH=vGj2X$3R|a-2{Qv(y1JOY7CkrDxgCK(rNC(JH2G(~8Dt#%L^DAd!+Lo{0I{PlaWBPvS zl4w&vYiXCFU#`t13Om+FTO9ns`tXZiGLm(GX1Uw7}z rTlY@?-zz3A8IKJL+X^m4Dfq0|aN9iZ(F((o&leUP?N)YTV6X-NKX0r` literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tool-left.gif b/kcdc3/admin/img/tool-left.gif new file mode 100755 index 0000000000000000000000000000000000000000..011490ff3a0100bea63eca7d8a3f821edecf6d3f GIT binary patch literal 197 zcmV;$06PCiNk%w1VF>^d0K@+9+1 z>Fn(6>gwvFqods1+`_`bsi~>N#Kh<4=efDLot>Sks;aTEvEJU^(b3W4lL@fC0syEMTS%hy>Zm!0PcpEpJwG;hh<#5^Y_P4;QTzJF~^?;ZNVo;-~tj z3GxIURaQ?9NK-h~-O_%Ehr|6W>p_W03|&Y3moVBW-4OX{v_eKqd6L;=PDTc60DL-S AivR!s literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tool-right.gif b/kcdc3/admin/img/tool-right.gif new file mode 100755 index 0000000000000000000000000000000000000000..cdc140cc590a56bf45ceef6eaeebf47e4a699ac3 GIT binary patch literal 198 zcmV;%06G6hNk%w1VF>^d0K@+9+1 z>Fn(6>gwvFqods1+`_`bsi~>N#Kh<4=efDLot>Sks;aTEvEJU^(b3W4R literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tool-right_over.gif b/kcdc3/admin/img/tool-right_over.gif new file mode 100755 index 0000000000000000000000000000000000000000..4db977e838dd97ae4f59524a764cf8298f19ccc5 GIT binary patch literal 200 zcmZ?wbhEHblL@fC0syEMTS%hy>Zm!0M`SJhE@w+}Rz8zHMDu50@FVv!<=}o0a$2j_;|E wNJ^Lce8rW`28j}!f$kDtvUrX>)$-C{u;f$x#4um1{ZvBtsg!MMAsh_W0PS95AOHXW literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tooltag-add.gif b/kcdc3/admin/img/tooltag-add.gif new file mode 100755 index 0000000000000000000000000000000000000000..8b53d49ae58dbc324ca7fb318198b187fc124c09 GIT binary patch literal 932 zcmZ?wbhEHb6lM@)_|Cxa`}glZfBv+zw0!^m{n4XG%aU|5d-nPB=MNq{xOeZ~wr$(``}?0g zdp3Xm{Fg6Zwzjt3y?giHzkgr9e*ORde?vn9!zdUHfx#C7ia%Mvj?w{lD0p`BHNuZH8`gv5jGtilW#8Ul-s@(Rm3u`n_%YH1afFWM53xbWyi0reSoZU`=F zW>B;|HRonfOG771<|UO1;}pj!{KgMbG6N3=Of=;-YN#}Nd4NeFEUKo%!I@!YFuRjN h0z*m|qaatng9}?1vhrtKUbNTY0V7A3A`=sXH2_xRgyR4J literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tooltag-add_over.gif b/kcdc3/admin/img/tooltag-add_over.gif new file mode 100755 index 0000000000000000000000000000000000000000..bfc52f10de75998687154585752513a27a02e5c4 GIT binary patch literal 336 zcmZ?wbhEHb6lM@)xXQp_AKmol&!20zAN~IQ+b5;fJ+bBa>km(!zx7XVkIL_<>s=I* z-Fg4<%i9m06*kQ}fA#LqpFhjm=B8Ioc1vhpx_)m~&D4mz?loHv1!s0R#56sA{$|&q zv$L0NTfOzr<~=7olUmZNro(_t( z{<*|8FIl(u()IiQ|Npm*YGNP-DE?#tE7t*$AU`p%OuD z64&(xJYQ3LjTSFY75~+{EbMWTq?Tj+^`lM+ch;D9HZb0eJO28D|1uloD@pFe*-apJ^Hn>L+2d-m?#yFEQU|Ni~^ z`t|Go|Nk2r8W_k0ia%MvT6I7q$WIJxH4gmQ9x7=Hf&p1aV>r7mD6wA%agA(z(Y9-o zn{Z!7=F3()sh$@ap>8_^S=AZ45`|}1urBhDn)0zi%$1R$zCpXHxz#1VpeR78J1{*n zKx$GzLbz~Ucw``(R#|u;i#+q?x}l#o5$^*7-1rs_)vpOO{(vYlW{PgEasf C+m{mn literal 0 HcmV?d00001 diff --git a/kcdc3/admin/img/tooltag-arrowright_over.gif b/kcdc3/admin/img/tooltag-arrowright_over.gif new file mode 100755 index 0000000000000000000000000000000000000000..7163189604a638ee170f093cd042075a7da48c7a GIT binary patch literal 354 zcmZ?wbhEHb6lM@)xXQp_AKmol&!20zAN~IQ+b5;fJ+bBa>km(!zx7XVkIL_<>s=I* z-Fg4<%i9m06*kQ}fA#LqpFhjm=B8Ioc1vhpx_)m~&D4mz?loHv1!s0R#56sA{$|&q zv$L0NTfOzr<~=7olUmZNro(_t( z{<*|8FIl(u()IiQ|Npm*YGNP-DE?#tE7t*$AU`p%)jRO!c&Mb=iC%tqw1%_mf>OuD z64%5AjkaH#++@37WWH>5lj_LG3QgM?$)(Pyl_<=6_Sxb99hOrSl|Hhr49pEp`qi!N zF8KvT0m8k3>6rnFQvwpgW$MEt13C4|!UI|47?&<{5fc~Cj$Ol`%&8*1!G}pzckjNv NA{t6st9%_9tO2syk|zKF literal 0 HcmV?d00001 diff --git a/kcdc3/admin/js/LICENSE-JQUERY.txt b/kcdc3/admin/js/LICENSE-JQUERY.txt new file mode 100755 index 00000000..a4c5bd76 --- /dev/null +++ b/kcdc3/admin/js/LICENSE-JQUERY.txt @@ -0,0 +1,20 @@ +Copyright (c) 2010 John Resig, http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/kcdc3/admin/js/SelectBox.js b/kcdc3/admin/js/SelectBox.js new file mode 100755 index 00000000..f28c8615 --- /dev/null +++ b/kcdc3/admin/js/SelectBox.js @@ -0,0 +1,111 @@ +var SelectBox = { + cache: new Object(), + init: function(id) { + var box = document.getElementById(id); + var node; + SelectBox.cache[id] = new Array(); + var cache = SelectBox.cache[id]; + for (var i = 0; (node = box.options[i]); i++) { + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + var box = document.getElementById(id); + box.options.length = 0; // clear all options + for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) { + var node = SelectBox.cache[id][i]; + if (node.displayed) { + box.options[box.options.length] = new Option(node.text, node.value, false, false); + } + } + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + var tokens = text.toLowerCase().split(/\s+/); + var node, token; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + node.displayed = 1; + for (var j = 0; (token = tokens[j]); j++) { + if (node.text.toLowerCase().indexOf(token) == -1) { + node.displayed = 0; + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + var node, delete_index = null; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + delete_index = i; + break; + } + } + var j = SelectBox.cache[id].length - 1; + for (var i = delete_index; i < j; i++) { + SelectBox.cache[id][i] = SelectBox.cache[id][i+1]; + } + SelectBox.cache[id].length--; + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + var node; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + return true; + } + } + return false; + }, + move: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + if (option.selected && SelectBox.cache_contains(from, option.value)) { + SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option.value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + if (SelectBox.cache_contains(from, option.value)) { + SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option.value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort( function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + try { + if (a > b) return 1; + if (a < b) return -1; + } + catch (e) { + // silently fail on IE 'unknown' exception + } + return 0; + } ); + }, + select_all: function(id) { + var box = document.getElementById(id); + for (var i = 0; i < box.options.length; i++) { + box.options[i].selected = 'selected'; + } + } +} diff --git a/kcdc3/admin/js/SelectFilter2.js b/kcdc3/admin/js/SelectFilter2.js new file mode 100755 index 00000000..fc7baaa0 --- /dev/null +++ b/kcdc3/admin/js/SelectFilter2.js @@ -0,0 +1,165 @@ +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Requires core.js, SelectBox.js and addevent.js. +*/ +(function($) { +function findForm(node) { + // returns the node of the form containing the given node + if (node.tagName.toLowerCase() != 'form') { + return findForm(node.parentNode); + } + return node; +} + +window.SelectFilter = { + init: function(field_id, field_name, is_stacked, admin_media_prefix) { + if (field_id.match(/__prefix__/)){ + // Don't intialize on empty forms. + return; + } + var from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + var ps = from_box.parentNode.getElementsByTagName('p'); + for (var i=0; i, because it just gets in the way. + from_box.parentNode.removeChild(ps[i]); + } else if (ps[i].className.indexOf("help") != -1) { + // Move help text up to the top so it isn't below the select + // boxes or wrapped off on the side to the right of the add + // button: + // from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); + // GRAPPELLI CUSTOM: remove help-text, because trusted editors should know what to do + from_box.parentNode.removeChild(ps[i]); + } + } + + //
or
+ var selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + //
+ var selector_available = quickElement('div', selector_div, ''); + selector_available.className = 'selector-available'; + var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); + // GRAPPELLI CUSTOM: removed help-icon (trusted editors should know what to do) + // quickElement('img', title_available, '', 'src', admin_media_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the "Choose" arrow between the two boxes.'), [field_name])); + + var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); + filter_p.className = 'selector-filter'; + + var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + "_input"); + + var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_media_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name])); + + filter_p.appendChild(document.createTextNode(' ')); + + var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); + filter_input.id = field_id + '_input'; + + selector_available.appendChild(from_box); + var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_all_link'); + choose_all.className = 'selector-chooseall'; + + //