# HG changeset patch # User Amit Sethi # Date 1293186741 -19800 # Node ID 704af5be5fb99e2d8afa17846c795e9aefd96936 # Parent 206a8a72d77c5477328e4f3aaa7a965e2de7f073# Parent a52775d210e3e2cc71726c7b805dd55e991f7c57 Merging heads diff -r 206a8a72d77c -r 704af5be5fb9 buildout.cfg --- a/buildout.cfg Fri Dec 24 15:54:25 2010 +0530 +++ b/buildout.cfg Fri Dec 24 16:02:21 2010 +0530 @@ -1,16 +1,27 @@ [buildout] -parts = django tagging django-robots south +parts = django tagging django-robots south reportlab eggs = Werkzeug PIL docutils + +[versions] +reportlab=2.5 + +[reportlab] +recipe=zc.recipe.egg +eggs= reportlab +find-links= + http://distfiles.minitage.org/public/externals/minitage/ [django] recipe = djangorecipe version = 1.2.1 settings = production -eggs = ${buildout:eggs} +eggs = + ${buildout:eggs} + ${reportlab:eggs} pythonpath = ${tagging:location} ${django-robots:location} diff -r 206a8a72d77c -r 704af5be5fb9 development.cfg --- a/development.cfg Fri Dec 24 15:54:25 2010 +0530 +++ b/development.cfg Fri Dec 24 16:02:21 2010 +0530 @@ -5,4 +5,6 @@ [django] settings = development -eggs = ${buildout:eggs} +eggs = + ${buildout:eggs} + ${reportlab:eggs} diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/admin.py --- a/project/scipycon/registration/admin.py Fri Dec 24 15:54:25 2010 +0530 +++ b/project/scipycon/registration/admin.py Fri Dec 24 16:02:21 2010 +0530 @@ -11,10 +11,11 @@ from .models import Wifi class RegistrationAdmin(admin.ModelAdmin): - list_display = ('registrant', 'full_name', 'laptop', 'slug', - 'email', 'city', 'organisation', 'occupation', - 'postcode', 'tshirt', 'conference', 'tutorial', - 'sprint', 'allow_contact') + list_display = ('registrant', 'full_name', 'phone_num', + 'laptop', 'slug', 'email', 'city', + 'organisation', 'occupation', 'postcode', + 'tshirt', 'conference', 'tutorial', + 'sprint', 'allow_contact') fieldsets = ( ('Details', { 'fields': ('slug', 'registrant', 'organisation', 'occupation', diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/migrations/0002_auto__add_field_payment_acco_confirmed.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/registration/migrations/0002_auto__add_field_payment_acco_confirmed.py Fri Dec 24 16:02:21 2010 +0530 @@ -0,0 +1,117 @@ +# encoding: 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 'Payment.acco_confirmed' + db.add_column('registration_payment', 'acco_confirmed', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Payment.acco_confirmed' + db.delete_column('registration_payment', 'acco_confirmed') + + + 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'}) + }, + 'base.event': { + 'Meta': {'object_name': 'Event'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'scope': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'turn': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + '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'}) + }, + 'registration.accommodation': { + 'Meta': {'object_name': 'Accommodation'}, + 'accommodation_days': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'accommodation_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'sex': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.payment': { + 'Meta': {'object_name': 'Payment'}, + 'acco_confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'details': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.registration': { + 'Meta': {'object_name': 'Registration'}, + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_mod': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'phone_num': ('django.db.models.fields.CharField', [], {'max_length': '14', 'blank': 'True'}), + 'postcode': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'registrant': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'tshirt': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'registration.wifi': { + 'Meta': {'object_name': 'Wifi'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'registration_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wifi': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['registration'] diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/migrations/0003_auto__add_field_payment_date_confirmed.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/registration/migrations/0003_auto__add_field_payment_date_confirmed.py Fri Dec 24 16:02:21 2010 +0530 @@ -0,0 +1,118 @@ +# encoding: 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 'Payment.date_confirmed' + db.add_column('registration_payment', 'date_confirmed', self.gf('django.db.models.fields.DateTimeField')(default=False, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Payment.date_confirmed' + db.delete_column('registration_payment', 'date_confirmed') + + + 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'}) + }, + 'base.event': { + 'Meta': {'object_name': 'Event'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'scope': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'turn': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + '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'}) + }, + 'registration.accommodation': { + 'Meta': {'object_name': 'Accommodation'}, + 'accommodation_days': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'accommodation_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'sex': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.payment': { + 'Meta': {'object_name': 'Payment'}, + 'acco_confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_confirmed': ('django.db.models.fields.DateTimeField', [], {'default': 'False', 'blank': 'True'}), + 'details': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.registration': { + 'Meta': {'object_name': 'Registration'}, + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_mod': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'phone_num': ('django.db.models.fields.CharField', [], {'max_length': '14', 'blank': 'True'}), + 'postcode': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'registrant': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'tshirt': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'registration.wifi': { + 'Meta': {'object_name': 'Wifi'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'registration_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wifi': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['registration'] diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/migrations/0004_auto__chg_field_payment_date_confirmed.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/registration/migrations/0004_auto__chg_field_payment_date_confirmed.py Fri Dec 24 16:02:21 2010 +0530 @@ -0,0 +1,118 @@ +# encoding: 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 'Payment.date_confirmed' + db.alter_column('registration_payment', 'date_confirmed', self.gf('django.db.models.fields.DateTimeField')(null=True)) + + + def backwards(self, orm): + + # Changing field 'Payment.date_confirmed' + db.alter_column('registration_payment', 'date_confirmed', 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'}) + }, + 'base.event': { + 'Meta': {'object_name': 'Event'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'scope': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'turn': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + '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'}) + }, + 'registration.accommodation': { + 'Meta': {'object_name': 'Accommodation'}, + 'accommodation_days': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'accommodation_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'sex': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.payment': { + 'Meta': {'object_name': 'Payment'}, + 'acco_confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_confirmed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'details': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.registration': { + 'Meta': {'object_name': 'Registration'}, + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_mod': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'phone_num': ('django.db.models.fields.CharField', [], {'max_length': '14', 'blank': 'True'}), + 'postcode': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'registrant': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'tshirt': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'registration.wifi': { + 'Meta': {'object_name': 'Wifi'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'registration_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wifi': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['registration'] diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/migrations/0005_auto__add_field_payment_confirmed_mail__add_field_payment_acco_confirm.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/registration/migrations/0005_auto__add_field_payment_confirmed_mail__add_field_payment_acco_confirm.py Fri Dec 24 16:02:21 2010 +0530 @@ -0,0 +1,126 @@ +# encoding: 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 'Payment.confirmed_mail' + db.add_column('registration_payment', 'confirmed_mail', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Payment.acco_confirmed_mail' + db.add_column('registration_payment', 'acco_confirmed_mail', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Payment.confirmed_mail' + db.delete_column('registration_payment', 'confirmed_mail') + + # Deleting field 'Payment.acco_confirmed_mail' + db.delete_column('registration_payment', 'acco_confirmed_mail') + + + 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'}) + }, + 'base.event': { + 'Meta': {'object_name': 'Event'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'scope': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'turn': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + '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'}) + }, + 'registration.accommodation': { + 'Meta': {'object_name': 'Accommodation'}, + 'accommodation_days': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'accommodation_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'sex': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.payment': { + 'Meta': {'object_name': 'Payment'}, + 'acco_confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'acco_confirmed_mail': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed_mail': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_confirmed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'details': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.registration': { + 'Meta': {'object_name': 'Registration'}, + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_mod': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'phone_num': ('django.db.models.fields.CharField', [], {'max_length': '14', 'blank': 'True'}), + 'postcode': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'registrant': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'tshirt': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'registration.wifi': { + 'Meta': {'object_name': 'Wifi'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'registration_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wifi': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['registration'] diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/migrations/0006_auto__add_field_accommodation_accommodation_on_1st__add_field_accommod.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/registration/migrations/0006_auto__add_field_accommodation_accommodation_on_1st__add_field_accommod.py Fri Dec 24 16:02:21 2010 +0530 @@ -0,0 +1,156 @@ +# encoding: 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 'Accommodation.accommodation_on_1st' + db.add_column('registration_accommodation', 'accommodation_on_1st', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Accommodation.accommodation_on_2nd' + db.add_column('registration_accommodation', 'accommodation_on_2nd', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Accommodation.accommodation_on_3rd' + db.add_column('registration_accommodation', 'accommodation_on_3rd', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Accommodation.accommodation_on_4th' + db.add_column('registration_accommodation', 'accommodation_on_4th', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Accommodation.accommodation_on_5th' + db.add_column('registration_accommodation', 'accommodation_on_5th', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + # Adding field 'Accommodation.accommodation_on_6th' + db.add_column('registration_accommodation', 'accommodation_on_6th', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Accommodation.accommodation_on_1st' + db.delete_column('registration_accommodation', 'accommodation_on_1st') + + # Deleting field 'Accommodation.accommodation_on_2nd' + db.delete_column('registration_accommodation', 'accommodation_on_2nd') + + # Deleting field 'Accommodation.accommodation_on_3rd' + db.delete_column('registration_accommodation', 'accommodation_on_3rd') + + # Deleting field 'Accommodation.accommodation_on_4th' + db.delete_column('registration_accommodation', 'accommodation_on_4th') + + # Deleting field 'Accommodation.accommodation_on_5th' + db.delete_column('registration_accommodation', 'accommodation_on_5th') + + # Deleting field 'Accommodation.accommodation_on_6th' + db.delete_column('registration_accommodation', 'accommodation_on_6th') + + + 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'}) + }, + 'base.event': { + 'Meta': {'object_name': 'Event'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'scope': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'turn': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + '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'}) + }, + 'registration.accommodation': { + 'Meta': {'object_name': 'Accommodation'}, + 'accommodation_days': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'accommodation_on_1st': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_on_2nd': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_on_3rd': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_on_4th': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_on_5th': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_on_6th': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'accommodation_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'sex': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.payment': { + 'Meta': {'object_name': 'Payment'}, + 'acco_confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'acco_confirmed_mail': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'confirmed_mail': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date_confirmed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'details': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'registration.registration': { + 'Meta': {'object_name': 'Registration'}, + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_conference': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'final_tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_mod': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'phone_num': ('django.db.models.fields.CharField', [], {'max_length': '14', 'blank': 'True'}), + 'postcode': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'registrant': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'sprint': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'tshirt': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'tutorial': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'registration.wifi': { + 'Meta': {'object_name': 'Wifi'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'registration_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'scope': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['base.Event']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wifi': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['registration'] diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/registration/views.py --- a/project/scipycon/registration/views.py Fri Dec 24 15:54:25 2010 +0530 +++ b/project/scipycon/registration/views.py Fri Dec 24 16:02:21 2010 +0530 @@ -1,3 +1,4 @@ +import csv import datetime import time @@ -8,6 +9,8 @@ from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse +from django.http import HttpResponse +from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.template import loader from django.template import RequestContext @@ -316,18 +319,139 @@ redirect_to, msg = u'You must be a staff on this website to ' 'access this page.') - q = Registration.objects.all() - conf_num = q.filter(conference=True).count() - tut_num = q.filter(tutorial=True).count() - sprint_num = q.filter(sprint=True).count() + reg_q = Registration.objects.all() + conf_num = reg_q.filter(conference=True).count() + tut_num = reg_q.filter(tutorial=True).count() + sprint_num = reg_q.filter(sprint=True).count() + + acco_q = Accommodation.objects.all() + male = acco_q.filter(sex='Male').count() + female = acco_q.filter(sex='Female').count() + + # Day 1 details + day1 = acco_q.filter(accommodation_on_1st=True) + acco_1 = { + 'total': day1.count(), + 'male': day1.filter(sex='Male').count(), + 'female': day1.filter(sex='Female').count() + } + + # Day 2 details + day2 = acco_q.filter(accommodation_on_2nd=True) + acco_2 = { + 'total': day2.count(), + 'male': day2.filter(sex='Male').count(), + 'female': day2.filter(sex='Female').count() + } + + # Day 3 details + day3 = acco_q.filter(accommodation_on_3rd=True) + acco_3 = { + 'total': day3.count(), + 'male': day3.filter(sex='Male').count(), + 'female': day3.filter(sex='Female').count() + } + + # Day 4 details + day4 = acco_q.filter(accommodation_on_4th=True) + acco_4 = { + 'total': day4.count(), + 'male': day4.filter(sex='Male').count(), + 'female': day4.filter(sex='Female').count() + } + + + # Day 5 details + day5 = acco_q.filter(accommodation_on_5th=True) + acco_5 = { + 'total': day5.count(), + 'male': day5.filter(sex='Male').count(), + 'female': day5.filter(sex='Female').count() + } + + # Day 6 details + day6 = acco_q.filter(accommodation_on_6th=True) + acco_6 = { + 'total': day6.count(), + 'male': day6.filter(sex='Male').count(), + 'female': day6.filter(sex='Female').count() + } return render_to_response(template_name, RequestContext(request, {'params': {'scope': scope}, 'conf_num': conf_num, 'tut_num': tut_num, 'sprint_num': sprint_num, + 'male': male, + 'female':female, + 'acco_days': [acco_1, acco_2, acco_3, acco_4, acco_5, acco_6], })) +@login_required +def regstats_download(request, scope): + """Sends a downloadable PDF for registration statistics + """ + + if not request.user.is_staff: + redirect_to = reverse('scipycon_login') + return HttpResponseRedirect(redirect_to) + + filename = 'regstats%s.csv' % datetime.datetime.strftime( + datetime.datetime.now(), '%Y%m%d%H%M%S') + + response = HttpResponse(mimetype='text/csv') + response['Content-Disposition'] = 'attachment; filename=%s' % ( + filename) + + output = csv.writer(response) + + output.writerow(['Name', 'Gender', 'City', + 'Registration Fees Paid', + 'Attending Conference', + 'Attending Tutorial', + 'Attending Sprint', + 'Laptop Identification Number', + 'Accommodation Fees Paid', + 'Accommodation on 12th night', + 'Accommodation on 13th night', + 'Accommodation on 14th night', + 'Accommodation on 15th night', + 'Accommodation on 16th night', + 'Accommodation on 17th night']) + + regs = Registration.objects.order_by( + 'registrant__first_name', 'registrant__last_name') + for reg in regs: + row = [] + + payment, create = reg.registrant.payment_set.get_or_create( + user=reg.registrant, scope=reg.scope) + acco, created = reg.registrant.accommodation_set.get_or_create( + user=reg.registrant, scope=reg.scope) + wifi, create = reg.registrant.wifi_set.get_or_create( + user=reg.registrant, scope=reg.scope) + + row.append('"%s"' % reg.registrant.get_full_name()) + row.append(acco.sex) + row.append(reg.city) + row.append('Yes' if payment.confirmed else 'No') + row.append('Yes' if reg.conference else 'No') + row.append('Yes' if reg.tutorial else 'No') + row.append('Yes' if reg.sprint else 'No') + row.append(wifi.registration_id) + row.append('Yes' if payment.acco_confirmed + else 'No') + row.append('Yes' if acco.accommodation_on_1st else 'No') + row.append('Yes' if acco.accommodation_on_2nd else 'No') + row.append('Yes' if acco.accommodation_on_3rd else 'No') + row.append('Yes' if acco.accommodation_on_4th else 'No') + row.append('Yes' if acco.accommodation_on_5th else 'No') + row.append('Yes' if acco.accommodation_on_6th else 'No') + output.writerow(row) + + #output.writerow() + return response + @login_required def manage_payments(request, scope, diff -r 206a8a72d77c -r 704af5be5fb9 project/scipycon/user/views.py --- a/project/scipycon/user/views.py Fri Dec 24 15:54:25 2010 +0530 +++ b/project/scipycon/user/views.py Fri Dec 24 16:02:21 2010 +0530 @@ -329,6 +329,9 @@ @login_required def badge(request,scope): + + from django.conf import settings + # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=scipybadge.pdf' @@ -341,7 +344,8 @@ # See the ReportLab documentation for the full list of functionality. c.rect(ref,ref,9*cm,6*cm) - im = reportlabImage("project/static/img/scipyshiny_small.png", width=1.75*cm, height=1.75*cm) + img_path = os.path.join(settings.STATIC_ROOT, 'img', 'scipyshiny_small.png') + im = reportlabImage(img_path, width=1.75*cm, height=1.75*cm) im.drawOn(c,(ref+0.8*cm),(ref+4.3*cm)) c.setFont('Helvetica', 6) c.drawString((ref+1.0*cm),(ref+4.2*cm),'scipy.in 2010') diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_flat_0_aaaaaa_40x100.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_flat_0_aaaaaa_40x100.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_flat_75_ffffff_40x100.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_flat_75_ffffff_40x100.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_glass_55_fbf9ee_1x400.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_glass_55_fbf9ee_1x400.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_glass_75_dadada_1x400.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_glass_75_dadada_1x400.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_glass_75_e6e6e6_1x400.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_glass_75_e6e6e6_1x400.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_glass_95_fef1ec_1x400.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_glass_95_fef1ec_1x400.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary file project/static/css/jquery-ui-lightness/images/ui-bg_highlight-soft_75_cccccc_1x100.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-icons_222222_256x240.png Binary file project/static/css/jquery-ui-lightness/images/ui-icons_222222_256x240.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-icons_2e83ff_256x240.png Binary file project/static/css/jquery-ui-lightness/images/ui-icons_2e83ff_256x240.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-icons_454545_256x240.png Binary file project/static/css/jquery-ui-lightness/images/ui-icons_454545_256x240.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-icons_888888_256x240.png Binary file project/static/css/jquery-ui-lightness/images/ui-icons_888888_256x240.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/css/jquery-ui-lightness/images/ui-icons_cd0a0a_256x240.png Binary file project/static/css/jquery-ui-lightness/images/ui-icons_cd0a0a_256x240.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/img/jubilee_html_19fded16.png Binary file project/static/img/jubilee_html_19fded16.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/img/mgbs_html_19fded16.png Binary file project/static/img/mgbs_html_19fded16.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/img/nampally_html_19fded16.png Binary file project/static/img/nampally_html_19fded16.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/static/img/secunderabad_html_19fded16.png Binary file project/static/img/secunderabad_html_19fded16.png has changed diff -r 206a8a72d77c -r 704af5be5fb9 project/templates/_menu.html --- a/project/templates/_menu.html Fri Dec 24 15:54:25 2010 +0530 +++ b/project/templates/_menu.html Fri Dec 24 16:02:21 2010 +0530 @@ -69,28 +69,19 @@
40 rooms have been reserved for the male students
-and faculty on a triple sharing basis. In total we can accommodate 120
-male participants. We also have reserved 10 rooms to female
-participants on twin sharing basis. Thus we can provide accommodation
-for 20 female participants. People who pay the accommodation fee
-through our fee payment process will be alloted accommodation on
-first-come-first-serve basis. For further details visit:
-
+ Forty rooms have been reserved for male students
+and faculty on a triple sharing basis in the hostels at IIIT. In total,
+we can accommodate 120 male participants. We also have reserved 10
+rooms for female participants on twin sharing basis. Thus, we can
+provide accommodation for 20 female participants. People who pay the
+accommodation fee through our fee payment process will be allotted
+accommodation on first-come-first-serve basis. Accommodation cannot
+be assured if the fee is not paid by December 10th, 2010. For further
+details visit:
http://scipy.in/scipyin/2010/about/fees/
Lunch will be provided on all days. Tea/coffee and biscuits will be provided
+twice a day on all days. Participants will have to make their own arrangements
+for breakfast and dinner. They can inform the organizers at the registration
+desk on Day 1 of the conference if opting to eat any meals at the IIITH
+messes/canteens. Informing us in prior will ensure availability of food
+at these places. IIITH offers highly subsidized meals at the rate of Rs.20 for
+breakfast and Rs.30 for dinner.
+
+In addition, please find below a list of some eateries in the vicinity of
+IIITH.We will update this page once we have more information on it.
+
Name | +Type of food | +Distance from IIIT-H | +Address | +Price | +
---|---|---|---|---|
Vennela Mess | +South Indian | +1KM | +Indra Nagar, Gachibowli, Hyderabad | +Full meal is Rs. 55 | +
Nellore Mess | +South Indian | +1 KM | +Opposite DLF Building, Gachibowli, Hyderabad | +Rate for full meal is Rs. 40 | +
Hot Roties | +North Indian | +1KM | +Indra Nagar, Gachibowli, Hyderabad | +Rate for full meal is Rs. 40 | +
Subway | ++ | 0.5 KM | +Indra Nagar, Gachibowli, Hyderabad | ++ |
Domino's Pizza | ++ | 1KM | +Indra Nagar, Gachibowli, Hyderabad | ++ |
Pizza Corner | ++ | 1KM | +Indra Nagar, Gachibowli, Hyderabad | ++ |
The Wonton | +Chinese | +1KM | +Indra Nagar, Gachibowli, Hyderabad | ++ |
Punjabi Rasoi | ++ | 2KM | +Cross Road, Gachibowli, Hyderabad, ph: 040- 65523257 | ++ |
Swagath De Royal | ++ | 4KM | +Kondapur, Kothaguda X Road's,Hyderabad | ++ |
Slizzing Grills | ++ | 4KM | +2nd Floor, Sri Tirumala Subash Arcade, Kothaguda X Roads, Kondapur, Hyderabad | ++ |
F9 Diner | ++ | 4KM | +4th Floor Pavan Priyanka Plaza, Opp Harsha Toyota & Above Kun Hyundai, Kondapur, Hyderabad | ++ |
Dine vally | ++ | 4KM | +Opp Police Commissionerate Office, Gachibowli, Hyderabad | ++ |
Quality INN | ++ | 4KM | +Lumbini Enclave, Opposite Engineering Staff College, Gachibowli, Hyderabad | ++ |
Haveli | ++ | 4KM | +148 Beside Kothaguda Post Office, Commercial Complex, Main Road, Kondapur, Hyderabad | ++ |
+You can hop on to bus no 216 or 217 at MGBS and reach "IIIT, +Hyderabad" bus-stop. From there, there are numerous sharing autos +towards ISB. +
+ + + + + + + + + + + ++You can walk up to paradise stop and hop on to bus no 5 or 49M at +Secunderabad railway station and reach "Mehdipatnam" bus stop. At +Mehedipatnam bus-stop, hop on to bus no. 216 or 217 and reach +"IIIT, Hyderabad" bus-stop. From there, there are numerous sharing +autos towards ISB. +
+ + + + + + + ++You can walk up to paradise stop and hop on to bus no. 49 M and +reach Secunderabad Railway Station. You get trains from the MMTS +platform in the Sec’bad RS to a stop Lingampally. At Lingampally, +hop on to bus no. 216 or 217 and reach "IIIT, Hyderabad" bus-stop. +From there, there are numerous sharing autos towards ISB. +
{% endblock content %} \ No newline at end of file diff -r 206a8a72d77c -r 704af5be5fb9 project/templates/about/sprints.html --- a/project/templates/about/sprints.html Fri Dec 24 15:54:25 2010 +0530 +++ b/project/templates/about/sprints.html Fri Dec 24 16:02:21 2010 +0530 @@ -60,8 +60,7 @@Participants of Sprints who make a significant contribution will be -given swag. The sprint lead, will choose the participants who are -eligible for the swag. +given swag. The sprint lead will choose the participants eligible for swag.
{% endblock content %} diff -r 206a8a72d77c -r 704af5be5fb9 project/templates/about/tutorial.html --- a/project/templates/about/tutorial.html Fri Dec 24 15:54:25 2010 +0530 +++ b/project/templates/about/tutorial.html Fri Dec 24 16:02:21 2010 +0530 @@ -45,85 +45,337 @@This is a rough outline of the topics to be covered in the -tutorials. The exact schedule of the tutorials will be put up in a -short while. -
+ +Any participants using their own laptops should have the required
software installed on their machines, before coming to the venue of
the tutorials. The installation instructions are available here.
diff -r 206a8a72d77c -r 704af5be5fb9 project/templates/about/venue.html
--- a/project/templates/about/venue.html Fri Dec 24 15:54:25 2010 +0530
+++ b/project/templates/about/venue.html Fri Dec 24 16:02:21 2010 +0530
@@ -11,9 +11,9 @@
- The SciPy.in 2010 Conference is being held at
+ The SciPy.in 2010 conference is being held at the
- Khemka Auditorium at
+ Khemka Auditorium of the
Indian School of Business(ISB) in
Hyderabad. ISB is one of India's top management schools and is a
world-renowned (and globally top-ranked) B-school.
@@ -27,8 +27,8 @@
>
- SciPy.in 2010 Tutorial is being held at
- Danube Hall at
+ The SciPy.in 2010 tutorials are being held at the
+ Danube Hall at
Mahindra Satyam Learning World in Hyderabad's famed
HITEC City.
Mahindra Satyam
@@ -44,14 +44,14 @@
- SciPy.in 2010 Sprints are held held in various labs and seminar
+ The SciPy.in 2010 sprints will be held in various labs and seminar
halls at IIIT Hyderabad. The directions to these exact locations
will be updated soon.
IIIT Hyderabad is an autonomous,
research university offering under-graduate and graduate education
in Computer Science, Electronics and Communications, and their
- applications in other domains. have offered a number of labs and seminar
- halls to suit the needs of the sprints.
+ applications in other domains. They have offered a number of labs
+ and seminar halls to suit the needs of the sprints.
Jarrod Millman @@ -327,21 +324,20 @@
Programming is becoming increasingly important to scientific activity. -As its importance grows, the need for better software tools becomes more -and more central to scientific practice. However, many fields of science -rely on badly written, poorly documented, and insufficiently tested -codebases. Moreover, scientific software packages often implement only the -approaches and algorithms needed or promoted by the specific lab where the -software was written. +
Programming is becoming increasingly important to scientific activity. As its +importance grows, the need for better software tools becomes more and more +central to scientific practice. However, many fields of science rely on +badly written, poorly documented, and insufficiently tested codebases. +Moreover, scientific software packages often implement only the approaches +and algorithms needed or promoted by the specific lab where the software +was written.
-In this talk, I will illustrate this situation by discussing some of the +In this talk, I will illustrate this situation by discussing some of the weaknesses of the software ecosystem for neuroimaging analysis circa 2004. I will then describe how several of my colleagues and I are attempting to rectify this situation with a project called Neuroimaging in Python -(http://nipy.org). Specifically, I will -discuss the approach we've taken (e.g., using Python) and the lessons -we've learned. +(http://nipy.org). Specifically, I will discuss the approach we've taken +(e.g., using Python) and the lessons we've learned.
@@ -358,10 +354,10 @@ -Asim Mittal +
Farhat Habib
@@ -369,27 +365,31 @@Gesture recognition has caught on in a big way, but methods of -integrating it with intuitive control still remain largely -expensive and closed source. -
--This talk aims at combining the IR tracking ability of the -Nintendo Wiimote along with a little scientific computing in -Python (Linux) to create a means of intuitively controlling -applications and the operating system, using gestures drawn in 2D -space using your fingers. -
--This talk is an extension of the work that I have done from my -talk at PyCon India. -
--You can find out more about my work and ongoing research on my -blog: http://baniyakiduniya.blogspot.com +
The use of Python as a language for introducing computing is +becoming increasingly widespread. Here we report out findings +from two years of running an introduction to computing course +with Python as the programming language, and building upon it, +using SciPy as a scientific computing language in a course on +scientific computing.
- ++The course is designed as a general computing course for +introducing computing to first year undergraduate students of +science. We find that a large majority of our incoming students +have no prior exposure to programming and none of the students +had any exposure to Python. Thus, the design of the course is +such that it allows everybody to be brought up to speed with +general programming concepts. Later, the students will later +specialize in varied topics from Biology to pure Mathematics, +thus, the course emphasizes general computing concepts over +specialized techniques. At a second course in Scien- tific +Computing numerical methods are introduced with the aid of +Scipy. The introduction to computing course has been taught +twice in Fall 2009 and 2010 to batches of around 100 students +each. In this paper we report our experience with teaching +Python and student and faculty feedback related to the course. +
@@ -1447,4 +1447,39 @@Harikrishna +
+ + + +Bioinformatics applications being complex problem involving +multiple comparisons, alignment, mapping and analysis can be +managed better using workflow solutions. Galaxy is an open web +based platform developed in Python for genomic research. Python +is a light weight dynamic language making Galaxy to be modular +and expandable. Bioinformatics applications being compute and +data intensive scale well in grid computing environments. In +this paper we describe bringing the Galaxy workflow to the +Garuda Grid computing infrastructure for enabling bioinformatics +applications. GAURDA grid is an aggregation of heterogeneous +resources and advanced capabilities for scientific +applications. Here we present the integration of galaxy workflow +tool with GARUDA grid middleware to enable computational +biologists to perform complex problems on the grid environment +through a web browser. +
+ {% endblock content %} diff -r 206a8a72d77c -r 704af5be5fb9 project/urls.py --- a/project/urls.py Fri Dec 24 15:54:25 2010 +0530 +++ b/project/urls.py Fri Dec 24 16:02:21 2010 +0530 @@ -53,6 +53,8 @@ 'edit_registration', name='scipycon_edit_registration'), url(r'^%s/regstats/$'% (SCOPE_ARG_PATTERN), 'regstats', name="scipycon_regstats"), + url(r'^%s/regstats/download$'% (SCOPE_ARG_PATTERN), + 'regstats_download', name="scipycon_regstats_download"), url(r'^%s/manage_payments/$'% (SCOPE_ARG_PATTERN), 'manage_payments', name="scipycon_manage_payments"), ) @@ -158,6 +160,8 @@ url(r'^password-reset-complete/$', 'password_reset_complete'), ) +handler404 = 'django.views.defaults.page_not_found' + # Serve static files in DEBUG = True mode if settings.DEBUG: urlpatterns += patterns('', diff -r 206a8a72d77c -r 704af5be5fb9 scripts/mails.py --- a/scripts/mails.py Fri Dec 24 15:54:25 2010 +0530 +++ b/scripts/mails.py Fri Dec 24 16:02:21 2010 +0530 @@ -10,11 +10,19 @@ from django.template import loader from django.contrib.auth.models import User +from django.utils.translation import ugettext from project.scipycon.registration.models import Registration from project.scipycon.talk.models import Talk +DEF_REMAINDER_REGISTRATION_PAGE_SUBJECT = ugettext( + 'SciPy.in 2010: Registration updates required for confirmation') + +DEF_REMAINDER_ACCO_CONTACT_SUBJECT = ugettext( + 'SciPy.in 2010: Contact details, registration page and other updates') + + def speaker_accepted(): """Sends a mail to each speaker whose talk has been accepted informing them about the same. @@ -60,7 +68,7 @@ regs = Registration.objects.all() for reg in regs: - subject = 'SciPy.in 2010: Registration updates required for confirmation' + subject = DEF_REMAINDER_ACCO_CONTACT_SUBJECT message = loader.render_to_string( template, dictionary={'name': reg.registrant.get_full_name()})