Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'oxford_stable' into thebigcleanup

Conflicts:
	requirements/core.txt
  • Loading branch information...
commit fde3f0f5364fa040dda42af3122860f182a89965 2 parents 5b02ac9 + 545321f
@cnorthwood cnorthwood authored
Showing with 2,367 additions and 702 deletions.
  1. +2 −0  README.creole
  2. +39 −0 demos/molly_oxford/apps/river_status/migrations/0001_initial.py
  3. 0  demos/molly_oxford/apps/river_status/migrations/__init__.py
  4. +6 −5 demos/molly_oxford/settings.py
  5. +11 −11 demos/molly_oxford/site_media/site/css/svg.css
  6. +66 −0 molly/apps/external_media/migrations/0001_initial.py
  7. 0  molly/apps/external_media/migrations/__init__.py
  8. +51 −0 molly/apps/feature_vote/migrations/0001_initial.py
  9. 0  molly/apps/feature_vote/migrations/__init__.py
  10. +234 −0 molly/apps/feeds/migrations/0001_initial.py
  11. 0  molly/apps/feeds/migrations/__init__.py
  12. +56 −0 molly/apps/home/migrations/0001_initial.py
  13. 0  molly/apps/home/migrations/__init__.py
  14. +1 −1  molly/apps/home/views.py
  15. +178 −0 molly/apps/places/migrations/0001_initial.py
  16. 0  molly/apps/places/migrations/__init__.py
  17. +124 −0 molly/apps/podcasts/migrations/0001_initial.py
  18. 0  molly/apps/podcasts/migrations/__init__.py
  19. +1 −0  molly/apps/podcasts/models.py
  20. +0 −8 molly/apps/podcasts/templates/podcasts/index.html
  21. +35 −0 molly/apps/url_shortener/migrations/0001_initial.py
  22. 0  molly/apps/url_shortener/migrations/__init__.py
  23. +73 −0 molly/apps/weather/migrations/0001_initial.py
  24. 0  molly/apps/weather/migrations/__init__.py
  25. +43 −0 molly/apps/webcams/migrations/0001_initial.py
  26. 0  molly/apps/webcams/migrations/__init__.py
  27. +214 −0 molly/auth/migrations/0001_initial.py
  28. 0  molly/auth/migrations/__init__.py
  29. +53 −0 molly/batch_processing/migrations/0001_initial.py
  30. 0  molly/batch_processing/migrations/__init__.py
  31. +43 −0 molly/geolocation/migrations/0001_initial.py
  32. 0  molly/geolocation/migrations/__init__.py
  33. +2 −10 molly/osm/management/commands/generate_markers.py
  34. +142 −0 molly/osm/migrations/0001_initial.py
  35. 0  molly/osm/migrations/__init__.py
  36. +57 −0 molly/stats/migrations/0001_initial.py
  37. 0  molly/stats/migrations/__init__.py
  38. +1 −1  molly/utils/logconfig.py
  39. +1 −1  molly/utils/ox_dates.py
  40. +5 −1 molly/utils/views.py
  41. +29 −1 molly/wurfl/local_patch.xml
  42. +898 −663 molly/wurfl/wurfl_data.py
  43. +1 −0  scripts/deploy-molly.sh
  44. +1 −0  scripts/update-molly.sh
View
2  README.creole
@@ -1,6 +1,8 @@
= The Molly Project =
As seen at http://mollyproject.org
+Please do Fork our code! We're looking for more contributors to the project.
+
== Intro ==
The Molly Project is a Django based Python application which provides a framework for creating a mobile web portal for higher education institutions.
View
39 demos/molly_oxford/apps/river_status/migrations/0001_initial.py
@@ -0,0 +1,39 @@
+# 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 model 'FlagStatus'
+ db.create_table('river_status_flagstatus', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('order', self.gf('django.db.models.fields.IntegerField')()),
+ ('name', self.gf('django.db.models.fields.TextField')()),
+ ('status', self.gf('django.db.models.fields.CharField')(max_length=6)),
+ ('updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ))
+ db.send_create_signal('river_status', ['FlagStatus'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'FlagStatus'
+ db.delete_table('river_status_flagstatus')
+
+
+ models = {
+ 'river_status.flagstatus': {
+ 'Meta': {'object_name': 'FlagStatus'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'status': ('django.db.models.fields.CharField', [], {'max_length': '6'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['river_status']
View
0  demos/molly_oxford/apps/river_status/migrations/__init__.py
No changes.
View
11 demos/molly_oxford/settings.py
@@ -154,11 +154,11 @@
Provider('molly.providers.apps.podcasts.OPMLPodcastsProvider',
url = 'http://rss.oucs.ox.ac.uk/metafeeds/podcastingnewsfeeds.opml',
),
- Provider('molly.providers.apps.podcasts.RSSPodcastsProvider',
- podcasts = [
- ('top-downloads', 'http://rss.oucs.ox.ac.uk/oxitems/topdownloads.xml'),
- ],
- ),
+ #Provider('molly.providers.apps.podcasts.RSSPodcastsProvider',
+ # podcasts = [
+ # ('top-downloads', 'http://rss.oucs.ox.ac.uk/oxitems/topdownloads.xml'),
+ # ],
+ #),
]
),
@@ -319,6 +319,7 @@
'staticfiles',
'compress',
+ 'south',
# 'debug_toolbar',
)
View
22 demos/molly_oxford/site_media/site/css/svg.css
@@ -1,11 +1,11 @@
-li#menu-contact {background-image:url('../svg/index-icons/contact.svg');}
-li#menu-places {background-image:url('../svg/index-icons/places.svg');}
-li#menu-podcasts {background-image:url('../svg/index-icons/podcasts.svg');}
-li#menu-webcams {background-image:url('../svg/index-icons/webcams.svg');}
-li#menu-news {background-image:url('../svg/index-icons/news.svg');}
-li#menu-events {background-image:url('../svg/index-icons/events.svg');}
-li#menu-results {background-image:url('../svg/index-icons/results.svg');}
-li#menu-library {background-image:url('../svg/index-icons/library.svg');}
-li#menu-weather {background-image:url('../svg/index-icons/weather.svg');}
-li#menu-weblearn {background-image:url('../svg/index-icons/weblearn.svg');}
-li#menu-service_status {background-image:url('../svg/index-icons/service-status.svg');}
+li#menu-contact {background-image:url('../../site/svg/index-icons/contact.svg');}
+li#menu-places {background-image:url('../../site/svg/index-icons/places.svg');}
+li#menu-podcasts {background-image:url('../../site/svg/index-icons/podcasts.svg');}
+li#menu-webcams {background-image:url('../../site/svg/index-icons/webcams.svg');}
+li#menu-news {background-image:url('../../site/svg/index-icons/news.svg');}
+li#menu-events {background-image:url('../../site/svg/index-icons/events.svg');}
+li#menu-results {background-image:url('../../site/svg/index-icons/results.svg');}
+li#menu-library {background-image:url('../../site/svg/index-icons/library.svg');}
+li#menu-weather {background-image:url('../../site/svg/index-icons/weather.svg');}
+li#menu-weblearn {background-image:url('../../site/svg/index-icons/weblearn.svg');}
+li#menu-service_status {background-image:url('../../site/svg/index-icons/service-status.svg');}
View
66 molly/apps/external_media/migrations/0001_initial.py
@@ -0,0 +1,66 @@
+# 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 model 'ExternalImage'
+ db.create_table('external_media_externalimage', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('etag', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('last_modified', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('last_updated', self.gf('django.db.models.fields.DateTimeField')()),
+ ('width', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
+ ('height', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
+ ))
+ db.send_create_signal('external_media', ['ExternalImage'])
+
+ # Adding model 'ExternalImageSized'
+ db.create_table('external_media_externalimagesized', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('external_image', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['external_media.ExternalImage'])),
+ ('width', self.gf('django.db.models.fields.PositiveIntegerField')()),
+ ('height', self.gf('django.db.models.fields.PositiveIntegerField')()),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('content_type', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('external_media', ['ExternalImageSized'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'ExternalImage'
+ db.delete_table('external_media_externalimage')
+
+ # Deleting model 'ExternalImageSized'
+ db.delete_table('external_media_externalimagesized')
+
+
+ models = {
+ 'external_media.externalimage': {
+ 'Meta': {'object_name': 'ExternalImage'},
+ 'etag': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_modified': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'})
+ },
+ 'external_media.externalimagesized': {
+ 'Meta': {'object_name': 'ExternalImageSized'},
+ 'content_type': ('django.db.models.fields.TextField', [], {}),
+ 'external_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['external_media.ExternalImage']"}),
+ 'height': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'width': ('django.db.models.fields.PositiveIntegerField', [], {})
+ }
+ }
+
+ complete_apps = ['external_media']
View
0  molly/apps/external_media/migrations/__init__.py
No changes.
View
51 molly/apps/feature_vote/migrations/0001_initial.py
@@ -0,0 +1,51 @@
+# 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 model 'Feature'
+ db.create_table('feature_vote_feature', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('user_name', self.gf('django.db.models.fields.TextField')()),
+ ('user_email', self.gf('django.db.models.fields.EmailField')(max_length=75)),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('description', self.gf('django.db.models.fields.TextField')()),
+ ('up_vote', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('down_vote', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ('last_commented', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('is_public', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_removed', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('feature_vote', ['Feature'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Feature'
+ db.delete_table('feature_vote_feature')
+
+
+ models = {
+ 'feature_vote.feature': {
+ 'Meta': {'ordering': "('-last_commented', '-created')", 'object_name': 'Feature'},
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'down_vote': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_removed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_commented': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {}),
+ 'up_vote': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'user_name': ('django.db.models.fields.TextField', [], {})
+ }
+ }
+
+ complete_apps = ['feature_vote']
View
0  molly/apps/feature_vote/migrations/__init__.py
No changes.
View
234 molly/apps/feeds/migrations/0001_initial.py
@@ -0,0 +1,234 @@
+# 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 model 'Tag'
+ db.create_table('feeds_tag', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('value', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ))
+ db.send_create_signal('feeds', ['Tag'])
+
+ # Adding model 'Feed'
+ db.create_table('feeds_feed', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('unit', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)),
+ ('rss_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('last_modified', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('ptype', self.gf('django.db.models.fields.CharField')(max_length=1)),
+ ('provider', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ))
+ db.send_create_signal('feeds', ['Feed'])
+
+ # Adding M2M table for field tags on 'Feed'
+ db.create_table('feeds_feed_tags', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('feed', models.ForeignKey(orm['feeds.feed'], null=False)),
+ ('tag', models.ForeignKey(orm['feeds.tag'], null=False))
+ ))
+ db.create_unique('feeds_feed_tags', ['feed_id', 'tag_id'])
+
+ # Adding model 'vCard'
+ db.create_table('feeds_vcard', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('uri', self.gf('django.db.models.fields.TextField')()),
+ ('name', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('address', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('telephone', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('location', self.gf('django.contrib.gis.db.models.fields.PointField')(null=True)),
+ ('entity', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['places.Entity'], null=True, blank=True)),
+ ))
+ db.send_create_signal('feeds', ['vCard'])
+
+ # Adding model 'Series'
+ db.create_table('feeds_series', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('feed', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['feeds.Feed'])),
+ ('guid', self.gf('django.db.models.fields.TextField')()),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('unit', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['feeds.vCard'], null=True, blank=True)),
+ ))
+ db.send_create_signal('feeds', ['Series'])
+
+ # Adding M2M table for field tags on 'Series'
+ db.create_table('feeds_series_tags', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('series', models.ForeignKey(orm['feeds.series'], null=False)),
+ ('tag', models.ForeignKey(orm['feeds.tag'], null=False))
+ ))
+ db.create_unique('feeds_series_tags', ['series_id', 'tag_id'])
+
+ # Adding model 'Item'
+ db.create_table('feeds_item', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('feed', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['feeds.Feed'])),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('guid', self.gf('django.db.models.fields.TextField')()),
+ ('description', self.gf('django.db.models.fields.TextField')()),
+ ('link', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('last_modified', self.gf('django.db.models.fields.DateTimeField')()),
+ ('ptype', self.gf('django.db.models.fields.CharField')(max_length=16)),
+ ('organiser', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='organising_set', null=True, to=orm['feeds.vCard'])),
+ ('speaker', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='speaking_set', null=True, to=orm['feeds.vCard'])),
+ ('venue', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='venue_set', null=True, to=orm['feeds.vCard'])),
+ ('contact', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='contact_set', null=True, to=orm['feeds.vCard'])),
+ ('series', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['feeds.Series'], null=True, blank=True)),
+ ('ordinal', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('track', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('dt_start', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('dt_end', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('dt_has_time', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('feeds', ['Item'])
+
+ # Adding M2M table for field tags on 'Item'
+ db.create_table('feeds_item_tags', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('item', models.ForeignKey(orm['feeds.item'], null=False)),
+ ('tag', models.ForeignKey(orm['feeds.tag'], null=False))
+ ))
+ db.create_unique('feeds_item_tags', ['item_id', 'tag_id'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Tag'
+ db.delete_table('feeds_tag')
+
+ # Deleting model 'Feed'
+ db.delete_table('feeds_feed')
+
+ # Removing M2M table for field tags on 'Feed'
+ db.delete_table('feeds_feed_tags')
+
+ # Deleting model 'vCard'
+ db.delete_table('feeds_vcard')
+
+ # Deleting model 'Series'
+ db.delete_table('feeds_series')
+
+ # Removing M2M table for field tags on 'Series'
+ db.delete_table('feeds_series_tags')
+
+ # Deleting model 'Item'
+ db.delete_table('feeds_item')
+
+ # Removing M2M table for field tags on 'Item'
+ db.delete_table('feeds_item_tags')
+
+
+ models = {
+ 'feeds.feed': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Feed'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'provider': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'ptype': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'rss_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['feeds.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {}),
+ 'unit': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'})
+ },
+ 'feeds.item': {
+ 'Meta': {'ordering': "('-last_modified',)", 'object_name': 'Item'},
+ 'contact': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'contact_set'", 'null': 'True', 'to': "orm['feeds.vCard']"}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'dt_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'dt_has_time': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'dt_start': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'feed': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['feeds.Feed']"}),
+ 'guid': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
+ 'link': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'ordinal': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'organiser': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'organising_set'", 'null': 'True', 'to': "orm['feeds.vCard']"}),
+ 'ptype': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'series': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['feeds.Series']", 'null': 'True', 'blank': 'True'}),
+ 'speaker': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'speaking_set'", 'null': 'True', 'to': "orm['feeds.vCard']"}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['feeds.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {}),
+ 'track': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'venue': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'venue_set'", 'null': 'True', 'to': "orm['feeds.vCard']"})
+ },
+ 'feeds.series': {
+ 'Meta': {'object_name': 'Series'},
+ 'feed': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['feeds.Feed']"}),
+ 'guid': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['feeds.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {}),
+ 'unit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['feeds.vCard']", 'null': 'True', 'blank': 'True'})
+ },
+ 'feeds.tag': {
+ 'Meta': {'object_name': 'Tag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'value': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'feeds.vcard': {
+ 'Meta': {'object_name': 'vCard'},
+ 'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Entity']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'location': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'telephone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'uri': ('django.db.models.fields.TextField', [], {})
+ },
+ 'places.entity': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Entity'},
+ '_identifiers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['places.Identifier']", 'symmetrical': 'False'}),
+ '_metadata': ('django.db.models.fields.TextField', [], {'default': "'{}'"}),
+ 'absolute_url': ('django.db.models.fields.TextField', [], {}),
+ 'all_types': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'all_types_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'geometry': ('django.contrib.gis.db.models.fields.GeometryField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'identifier_scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'identifier_value': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+ 'is_stack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_sublocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'location': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Entity']", 'null': 'True'}),
+ 'primary_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.EntityType']", 'null': 'True'}),
+ 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Source']"}),
+ 'title': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+ },
+ 'places.entitytype': {
+ 'Meta': {'ordering': "('verbose_name',)", 'object_name': 'EntityType'},
+ 'article': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'note': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'show_in_category_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'show_in_nearby_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'subtype_of': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'subtype_of_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'verbose_name': ('django.db.models.fields.TextField', [], {}),
+ 'verbose_name_plural': ('django.db.models.fields.TextField', [], {})
+ },
+ 'places.identifier': {
+ 'Meta': {'object_name': 'Identifier'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
+ },
+ 'places.source': {
+ 'Meta': {'object_name': 'Source'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'module_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ }
+ }
+
+ complete_apps = ['feeds']
View
0  molly/apps/feeds/migrations/__init__.py
No changes.
View
56 molly/apps/home/migrations/0001_initial.py
@@ -0,0 +1,56 @@
+# 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 model 'Config'
+ db.create_table('home_config', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('key', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('value', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('home', ['Config'])
+
+ # Adding model 'UserMessage'
+ db.create_table('home_usermessage', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('session_key', self.gf('django.db.models.fields.TextField')()),
+ ('message', self.gf('django.db.models.fields.TextField')()),
+ ('read', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('when', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ))
+ db.send_create_signal('home', ['UserMessage'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Config'
+ db.delete_table('home_config')
+
+ # Deleting model 'UserMessage'
+ db.delete_table('home_usermessage')
+
+
+ models = {
+ 'home.config': {
+ 'Meta': {'object_name': 'Config'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'key': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'value': ('django.db.models.fields.TextField', [], {})
+ },
+ 'home.usermessage': {
+ 'Meta': {'object_name': 'UserMessage'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'message': ('django.db.models.fields.TextField', [], {}),
+ 'read': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.TextField', [], {}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['home']
View
0  molly/apps/home/migrations/__init__.py
No changes.
View
2  molly/apps/home/views.py
@@ -94,7 +94,7 @@ def handler500(request):
except Exception, e:
pass
- response = render_to_response('500.html', context)
+ response = render_to_response('500.html', context, context_instance=RequestContext(request))
response.status_code = 500
return response
View
178 molly/apps/places/migrations/0001_initial.py
@@ -0,0 +1,178 @@
+# 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 model 'Source'
+ db.create_table('places_source', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('module_name', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ('last_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ))
+ db.send_create_signal('places', ['Source'])
+
+ # Adding model 'EntityType'
+ db.create_table('places_entitytype', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('article', self.gf('django.db.models.fields.CharField')(max_length=2)),
+ ('verbose_name', self.gf('django.db.models.fields.TextField')()),
+ ('verbose_name_plural', self.gf('django.db.models.fields.TextField')()),
+ ('show_in_nearby_list', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('show_in_category_list', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('note', self.gf('django.db.models.fields.TextField')(null=True)),
+ ))
+ db.send_create_signal('places', ['EntityType'])
+
+ # Adding M2M table for field subtype_of on 'EntityType'
+ db.create_table('places_entitytype_subtype_of', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('from_entitytype', models.ForeignKey(orm['places.entitytype'], null=False)),
+ ('to_entitytype', models.ForeignKey(orm['places.entitytype'], null=False))
+ ))
+ db.create_unique('places_entitytype_subtype_of', ['from_entitytype_id', 'to_entitytype_id'])
+
+ # Adding M2M table for field subtype_of_completion on 'EntityType'
+ db.create_table('places_entitytype_subtype_of_completion', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('from_entitytype', models.ForeignKey(orm['places.entitytype'], null=False)),
+ ('to_entitytype', models.ForeignKey(orm['places.entitytype'], null=False))
+ ))
+ db.create_unique('places_entitytype_subtype_of_completion', ['from_entitytype_id', 'to_entitytype_id'])
+
+ # Adding model 'Identifier'
+ db.create_table('places_identifier', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('scheme', self.gf('django.db.models.fields.CharField')(max_length=32)),
+ ('value', self.gf('django.db.models.fields.CharField')(max_length=256)),
+ ))
+ db.send_create_signal('places', ['Identifier'])
+
+ # Adding model 'Entity'
+ db.create_table('places_entity', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('title', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('source', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['places.Source'])),
+ ('primary_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['places.EntityType'], null=True)),
+ ('location', self.gf('django.contrib.gis.db.models.fields.PointField')(null=True)),
+ ('geometry', self.gf('django.contrib.gis.db.models.fields.GeometryField')(null=True)),
+ ('_metadata', self.gf('django.db.models.fields.TextField')(default='{}')),
+ ('absolute_url', self.gf('django.db.models.fields.TextField')()),
+ ('parent', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['places.Entity'], null=True)),
+ ('is_sublocation', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_stack', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('identifier_scheme', self.gf('django.db.models.fields.CharField')(max_length=32)),
+ ('identifier_value', self.gf('django.db.models.fields.CharField')(max_length=256)),
+ ))
+ db.send_create_signal('places', ['Entity'])
+
+ # Adding M2M table for field all_types on 'Entity'
+ db.create_table('places_entity_all_types', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('entity', models.ForeignKey(orm['places.entity'], null=False)),
+ ('entitytype', models.ForeignKey(orm['places.entitytype'], null=False))
+ ))
+ db.create_unique('places_entity_all_types', ['entity_id', 'entitytype_id'])
+
+ # Adding M2M table for field all_types_completion on 'Entity'
+ db.create_table('places_entity_all_types_completion', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('entity', models.ForeignKey(orm['places.entity'], null=False)),
+ ('entitytype', models.ForeignKey(orm['places.entitytype'], null=False))
+ ))
+ db.create_unique('places_entity_all_types_completion', ['entity_id', 'entitytype_id'])
+
+ # Adding M2M table for field _identifiers on 'Entity'
+ db.create_table('places_entity__identifiers', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('entity', models.ForeignKey(orm['places.entity'], null=False)),
+ ('identifier', models.ForeignKey(orm['places.identifier'], null=False))
+ ))
+ db.create_unique('places_entity__identifiers', ['entity_id', 'identifier_id'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Source'
+ db.delete_table('places_source')
+
+ # Deleting model 'EntityType'
+ db.delete_table('places_entitytype')
+
+ # Removing M2M table for field subtype_of on 'EntityType'
+ db.delete_table('places_entitytype_subtype_of')
+
+ # Removing M2M table for field subtype_of_completion on 'EntityType'
+ db.delete_table('places_entitytype_subtype_of_completion')
+
+ # Deleting model 'Identifier'
+ db.delete_table('places_identifier')
+
+ # Deleting model 'Entity'
+ db.delete_table('places_entity')
+
+ # Removing M2M table for field all_types on 'Entity'
+ db.delete_table('places_entity_all_types')
+
+ # Removing M2M table for field all_types_completion on 'Entity'
+ db.delete_table('places_entity_all_types_completion')
+
+ # Removing M2M table for field _identifiers on 'Entity'
+ db.delete_table('places_entity__identifiers')
+
+
+ models = {
+ 'places.entity': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Entity'},
+ '_identifiers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['places.Identifier']", 'symmetrical': 'False'}),
+ '_metadata': ('django.db.models.fields.TextField', [], {'default': "'{}'"}),
+ 'absolute_url': ('django.db.models.fields.TextField', [], {}),
+ 'all_types': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'all_types_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'geometry': ('django.contrib.gis.db.models.fields.GeometryField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'identifier_scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'identifier_value': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+ 'is_stack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_sublocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'location': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Entity']", 'null': 'True'}),
+ 'primary_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.EntityType']", 'null': 'True'}),
+ 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Source']"}),
+ 'title': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+ },
+ 'places.entitytype': {
+ 'Meta': {'ordering': "('verbose_name',)", 'object_name': 'EntityType'},
+ 'article': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'note': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'show_in_category_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'show_in_nearby_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'subtype_of': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'subtype_of_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'verbose_name': ('django.db.models.fields.TextField', [], {}),
+ 'verbose_name_plural': ('django.db.models.fields.TextField', [], {})
+ },
+ 'places.identifier': {
+ 'Meta': {'object_name': 'Identifier'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
+ },
+ 'places.source': {
+ 'Meta': {'object_name': 'Source'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'module_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ }
+ }
+
+ complete_apps = ['places']
View
0  molly/apps/places/migrations/__init__.py
No changes.
View
124 molly/apps/podcasts/migrations/0001_initial.py
@@ -0,0 +1,124 @@
+# 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 model 'PodcastCategory'
+ db.create_table('podcasts_podcastcategory', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('name', self.gf('django.db.models.fields.TextField')()),
+ ('order', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ))
+ db.send_create_signal('podcasts', ['PodcastCategory'])
+
+ # Adding model 'Podcast'
+ db.create_table('podcasts_podcast', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('title', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('description', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('rss_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('last_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ('category', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['podcasts.PodcastCategory'], null=True)),
+ ('most_recent_item_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
+ ('medium', self.gf('django.db.models.fields.CharField')(max_length=8, null=True)),
+ ('provider', self.gf('django.db.models.fields.TextField')()),
+ ('license', self.gf('django.db.models.fields.URLField')(max_length=200, null=True)),
+ ('logo', self.gf('django.db.models.fields.URLField')(max_length=200, null=True)),
+ ))
+ db.send_create_signal('podcasts', ['Podcast'])
+
+ # Adding model 'PodcastItem'
+ db.create_table('podcasts_podcastitem', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('podcast', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['podcasts.Podcast'])),
+ ('title', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('description', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('published_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
+ ('author', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('duration', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
+ ('guid', self.gf('django.db.models.fields.TextField')()),
+ ('order', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('license', self.gf('django.db.models.fields.URLField')(max_length=200, null=True)),
+ ))
+ db.send_create_signal('podcasts', ['PodcastItem'])
+
+ # Adding model 'PodcastEnclosure'
+ db.create_table('podcasts_podcastenclosure', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('podcast_item', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['podcasts.PodcastItem'])),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('length', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('mimetype', self.gf('django.db.models.fields.TextField')(null=True)),
+ ))
+ db.send_create_signal('podcasts', ['PodcastEnclosure'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'PodcastCategory'
+ db.delete_table('podcasts_podcastcategory')
+
+ # Deleting model 'Podcast'
+ db.delete_table('podcasts_podcast')
+
+ # Deleting model 'PodcastItem'
+ db.delete_table('podcasts_podcastitem')
+
+ # Deleting model 'PodcastEnclosure'
+ db.delete_table('podcasts_podcastenclosure')
+
+
+ models = {
+ 'podcasts.podcast': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Podcast'},
+ 'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['podcasts.PodcastCategory']", 'null': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'license': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'logo': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'medium': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True'}),
+ 'most_recent_item_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'provider': ('django.db.models.fields.TextField', [], {}),
+ 'rss_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {'null': 'True'})
+ },
+ 'podcasts.podcastcategory': {
+ 'Meta': {'ordering': "('order', 'name')", 'object_name': 'PodcastCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
+ },
+ 'podcasts.podcastenclosure': {
+ 'Meta': {'object_name': 'PodcastEnclosure'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'length': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'mimetype': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'podcast_item': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['podcasts.PodcastItem']"}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'podcasts.podcastitem': {
+ 'Meta': {'object_name': 'PodcastItem'},
+ 'author': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'duration': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
+ 'guid': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'license': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'podcast': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['podcasts.Podcast']"}),
+ 'published_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {'null': 'True'})
+ }
+ }
+
+ complete_apps = ['podcasts']
View
0  molly/apps/podcasts/migrations/__init__.py
No changes.
View
1  molly/apps/podcasts/models.py
@@ -89,6 +89,7 @@ class Meta:
'video/mpeg': 'MPEG video',
'video/x-m4v': 'MP4 video',
'audio/x-m4a': 'MP4 audio',
+ 'application/epub+zip': 'ePub eBook'
}
class PodcastEnclosure(models.Model):
View
8 molly/apps/podcasts/templates/podcasts/index.html
@@ -45,14 +45,6 @@ <h2 class="invisible">Search Podcasts</h2>
</form>
{# End Podcasts Search #}
-
-
-
-<ul class="stand-alone link-list round-top">
- <li><a href="{% url podcasts:podcast "top-downloads" %}">Top downloads from iTunes U</a></li>
-</ul>
-
-
<div class="section" >
<div class="header">
<h2>By division</h2>
View
35 molly/apps/url_shortener/migrations/0001_initial.py
@@ -0,0 +1,35 @@
+# 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 model 'ShortenedURL'
+ db.create_table('url_shortener_shortenedurl', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('path', self.gf('django.db.models.fields.TextField')()),
+ ('slug', self.gf('django.db.models.fields.TextField')(max_length=7)),
+ ))
+ db.send_create_signal('url_shortener', ['ShortenedURL'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'ShortenedURL'
+ db.delete_table('url_shortener_shortenedurl')
+
+
+ models = {
+ 'url_shortener.shortenedurl': {
+ 'Meta': {'object_name': 'ShortenedURL'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.TextField', [], {}),
+ 'slug': ('django.db.models.fields.TextField', [], {'max_length': '7'})
+ }
+ }
+
+ complete_apps = ['url_shortener']
View
0  molly/apps/url_shortener/migrations/__init__.py
No changes.
View
73 molly/apps/weather/migrations/0001_initial.py
@@ -0,0 +1,73 @@
+# 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 model 'Weather'
+ db.create_table('weather_weather', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('location_id', self.gf('django.db.models.fields.CharField')(max_length=16)),
+ ('ptype', self.gf('django.db.models.fields.CharField')(max_length=1)),
+ ('name', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('outlook', self.gf('django.db.models.fields.CharField')(max_length=3, null=True)),
+ ('published_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
+ ('observed_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
+ ('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ('temperature', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('wind_direction', self.gf('django.db.models.fields.CharField')(max_length=3, null=True)),
+ ('wind_speed', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('humidity', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('pressure', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
+ ('pressure_state', self.gf('django.db.models.fields.CharField')(max_length=1, null=True)),
+ ('visibility', self.gf('django.db.models.fields.CharField')(max_length=2, null=True)),
+ ('location', self.gf('django.contrib.gis.db.models.fields.PointField')(null=True)),
+ ('min_temperature', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('max_temperature', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('uv_risk', self.gf('django.db.models.fields.CharField')(max_length=1, null=True)),
+ ('pollution', self.gf('django.db.models.fields.CharField')(max_length=1, null=True)),
+ ('sunset', self.gf('django.db.models.fields.TimeField')(null=True)),
+ ('sunrise', self.gf('django.db.models.fields.TimeField')(null=True)),
+ ))
+ db.send_create_signal('weather', ['Weather'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Weather'
+ db.delete_table('weather_weather')
+
+
+ models = {
+ 'weather.weather': {
+ 'Meta': {'object_name': 'Weather'},
+ 'humidity': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'location': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True'}),
+ 'location_id': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'max_temperature': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'min_temperature': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'observed_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'outlook': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
+ 'pollution': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True'}),
+ 'pressure': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
+ 'pressure_state': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True'}),
+ 'ptype': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'published_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'sunrise': ('django.db.models.fields.TimeField', [], {'null': 'True'}),
+ 'sunset': ('django.db.models.fields.TimeField', [], {'null': 'True'}),
+ 'temperature': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'uv_risk': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True'}),
+ 'visibility': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True'}),
+ 'wind_direction': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
+ 'wind_speed': ('django.db.models.fields.IntegerField', [], {'null': 'True'})
+ }
+ }
+
+ complete_apps = ['weather']
View
0  molly/apps/weather/migrations/__init__.py
No changes.
View
43 molly/apps/webcams/migrations/0001_initial.py
@@ -0,0 +1,43 @@
+# 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 model 'Webcam'
+ db.create_table('webcams_webcam', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('fetch_period', self.gf('django.db.models.fields.PositiveIntegerField')()),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('description', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('credit', self.gf('django.db.models.fields.TextField')(null=True)),
+ ))
+ db.send_create_signal('webcams', ['Webcam'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Webcam'
+ db.delete_table('webcams_webcam')
+
+
+ models = {
+ 'webcams.webcam': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Webcam'},
+ 'credit': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'fetch_period': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.TextField', [], {}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ }
+ }
+
+ complete_apps = ['webcams']
View
0  molly/apps/webcams/migrations/__init__.py
No changes.
View
214 molly/auth/migrations/0001_initial.py
@@ -0,0 +1,214 @@
+# 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 model 'Permission'
+ db.create_table('auth_permission', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
+ ('codename', self.gf('django.db.models.fields.CharField')(max_length=100)),
+ ))
+ db.send_create_signal('auth', ['Permission'])
+
+ # Adding unique constraint on 'Permission', fields ['content_type', 'codename']
+ db.create_unique('auth_permission', ['content_type_id', 'codename'])
+
+ # Adding model 'Group'
+ db.create_table('auth_group', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=80)),
+ ))
+ db.send_create_signal('auth', ['Group'])
+
+ # Adding M2M table for field permissions on 'Group'
+ db.create_table('auth_group_permissions', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('group', models.ForeignKey(orm['auth.group'], null=False)),
+ ('permission', models.ForeignKey(orm['auth.permission'], null=False))
+ ))
+ db.create_unique('auth_group_permissions', ['group_id', 'permission_id'])
+
+ # Adding model 'User'
+ db.create_table('auth_user', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
+ ('first_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
+ ('last_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
+ ('email', self.gf('django.db.models.fields.EmailField')(max_length=75, blank=True)),
+ ('password', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ('is_superuser', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('date_joined', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ))
+ db.send_create_signal('auth', ['User'])
+
+ # Adding M2M table for field groups on 'User'
+ db.create_table('auth_user_groups', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('user', models.ForeignKey(orm['auth.user'], null=False)),
+ ('group', models.ForeignKey(orm['auth.group'], null=False))
+ ))
+ db.create_unique('auth_user_groups', ['user_id', 'group_id'])
+
+ # Adding M2M table for field user_permissions on 'User'
+ db.create_table('auth_user_user_permissions', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('user', models.ForeignKey(orm['auth.user'], null=False)),
+ ('permission', models.ForeignKey(orm['auth.permission'], null=False))
+ ))
+ db.create_unique('auth_user_user_permissions', ['user_id', 'permission_id'])
+
+ # Adding model 'Message'
+ db.create_table('auth_message', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='_message_set', to=orm['auth.User'])),
+ ('message', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('auth', ['Message'])
+
+ # Adding model 'UserIdentifier'
+ db.create_table('auth_useridentifier', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('namespace', self.gf('django.db.models.fields.CharField')(max_length=32)),
+ ('value', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ('updated', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ))
+ db.send_create_signal('auth', ['UserIdentifier'])
+
+ # Adding model 'UserSession'
+ db.create_table('auth_usersession', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('secure_session_key', self.gf('django.db.models.fields.CharField')(max_length=40)),
+ ('device_name', self.gf('django.db.models.fields.TextField')()),
+ ('last_used', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ))
+ db.send_create_signal('auth', ['UserSession'])
+
+ # Adding model 'ExternalServiceToken'
+ db.create_table('auth_externalservicetoken', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('namespace', self.gf('django.db.models.fields.CharField')(max_length=32)),
+ ('authorized', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('value', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('auth', ['ExternalServiceToken'])
+
+
+ def backwards(self, orm):
+
+ # Removing unique constraint on 'Permission', fields ['content_type', 'codename']
+ db.delete_unique('auth_permission', ['content_type_id', 'codename'])
+
+ # Deleting model 'Permission'
+ db.delete_table('auth_permission')
+
+ # Deleting model 'Group'
+ db.delete_table('auth_group')
+
+ # Removing M2M table for field permissions on 'Group'
+ db.delete_table('auth_group_permissions')
+
+ # Deleting model 'User'
+ db.delete_table('auth_user')
+
+ # Removing M2M table for field groups on 'User'
+ db.delete_table('auth_user_groups')
+
+ # Removing M2M table for field user_permissions on 'User'
+ db.delete_table('auth_user_user_permissions')
+
+ # Deleting model 'Message'
+ db.delete_table('auth_message')
+
+ # Deleting model 'UserIdentifier'
+ db.delete_table('auth_useridentifier')
+
+ # Deleting model 'UserSession'
+ db.delete_table('auth_usersession')
+
+ # Deleting model 'ExternalServiceToken'
+ db.delete_table('auth_externalservicetoken')
+
+
+ models = {
+ 'auth.externalservicetoken': {
+ 'Meta': {'object_name': 'ExternalServiceToken'},
+ 'authorized': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'value': ('django.db.models.fields.TextField', [], {})
+ },
+ '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.message': {
+ 'Meta': {'object_name': 'Message'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'message': ('django.db.models.fields.TextField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'_message_set'", 'to': "orm['auth.User']"})
+ },
+ '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'})
+ },
+ 'auth.useridentifier': {
+ 'Meta': {'object_name': 'UserIdentifier'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'value': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'auth.usersession': {
+ 'Meta': {'ordering': "('user', 'device_name', 'secure_session_key')", 'object_name': 'UserSession'},
+ 'device_name': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_used': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'secure_session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ '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 = ['auth']
View
0  molly/auth/migrations/__init__.py
No changes.
View
53 molly/batch_processing/migrations/0001_initial.py
@@ -0,0 +1,53 @@
+# 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 model 'Batch'
+ db.create_table('batch_processing_batch', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('title', self.gf('django.db.models.fields.TextField')()),
+ ('local_name', self.gf('django.db.models.fields.TextField')()),
+ ('provider_name', self.gf('django.db.models.fields.TextField')()),
+ ('method_name', self.gf('django.db.models.fields.TextField')()),
+ ('cron_stmt', self.gf('django.db.models.fields.TextField')()),
+ ('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ('_metadata', self.gf('django.db.models.fields.TextField')(default='null')),
+ ('last_run', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('pending', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('currently_running', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('log', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ))
+ db.send_create_signal('batch_processing', ['Batch'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Batch'
+ db.delete_table('batch_processing_batch')
+
+
+ models = {
+ 'batch_processing.batch': {
+ 'Meta': {'object_name': 'Batch'},
+ '_metadata': ('django.db.models.fields.TextField', [], {'default': "'null'"}),
+ 'cron_stmt': ('django.db.models.fields.TextField', [], {}),
+ 'currently_running': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_run': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'local_name': ('django.db.models.fields.TextField', [], {}),
+ 'log': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'method_name': ('django.db.models.fields.TextField', [], {}),
+ 'pending': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'provider_name': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.TextField', [], {})
+ }
+ }
+
+ complete_apps = ['batch_processing']
View
0  molly/batch_processing/migrations/__init__.py
No changes.
View
43 molly/geolocation/migrations/0001_initial.py
@@ -0,0 +1,43 @@
+# 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 model 'Geocode'
+ db.create_table('geolocation_geocode', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('lon', self.gf('django.db.models.fields.FloatField')(null=True)),
+ ('lat', self.gf('django.db.models.fields.FloatField')(null=True)),
+ ('query', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('_results', self.gf('django.db.models.fields.TextField')(default='null')),
+ ('updated', self.gf('django.db.models.fields.DateTimeField')()),
+ ('local_name', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('geolocation', ['Geocode'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Geocode'
+ db.delete_table('geolocation_geocode')
+
+
+ models = {
+ 'geolocation.geocode': {
+ 'Meta': {'object_name': 'Geocode'},
+ '_results': ('django.db.models.fields.TextField', [], {'default': "'null'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'lat': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
+ 'local_name': ('django.db.models.fields.TextField', [], {}),
+ 'lon': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
+ 'query': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {})
+ }
+ }
+
+ complete_apps = ['geolocation']
View
0  molly/geolocation/migrations/__init__.py
No changes.
View
12 molly/osm/management/commands/generate_markers.py
@@ -28,11 +28,7 @@ def handle_noargs(self, **options):
f.close()
filename = os.path.join(marker_dir, '%s-%d.png' % (color[0], index))
- subprocess.call([
- 'inkscape',
- 'out.svg',
- '--export-png=%s' % filename,
- ])
+ subprocess.call(['convert', '-background', 'none', 'out.svg', filename])
template = open(os.path.join(os.path.dirname(__file__), 'markers', 'star-base.svg')).read()
@@ -44,8 +40,4 @@ def handle_noargs(self, **options):
f.close()
filename = os.path.join(marker_dir, '%s-star.png' % color[0])
- subprocess.call([
- 'inkscape',
- 'out.svg',
- '--export-png=%s' % filename,
- ])
+ subprocess.call(['convert', '-background', 'none', 'out.svg', filename])
View
142 molly/osm/migrations/0001_initial.py
@@ -0,0 +1,142 @@
+# 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 model 'GeneratedMap'
+ db.create_table('osm_generatedmap', (
+ ('hash', self.gf('django.db.models.fields.CharField')(unique=True, max_length=16, primary_key=True)),
+ ('generated', self.gf('django.db.models.fields.DateTimeField')()),
+ ('last_accessed', self.gf('django.db.models.fields.DateTimeField')()),
+ ('_metadata', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('faulty', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('osm', ['GeneratedMap'])
+
+ # Adding model 'OSMTile'
+ db.create_table('osm_osmtile', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('xtile', self.gf('django.db.models.fields.IntegerField')()),
+ ('ytile', self.gf('django.db.models.fields.IntegerField')()),
+ ('zoom', self.gf('django.db.models.fields.IntegerField')()),
+ ('last_fetched', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ))
+ db.send_create_signal('osm', ['OSMTile'])
+
+ # Adding unique constraint on 'OSMTile', fields ['xtile', 'ytile', 'zoom']
+ db.create_unique('osm_osmtile', ['xtile', 'ytile', 'zoom'])
+
+ # Adding model 'OSMUpdate'
+ db.create_table('osm_osmupdate', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('contributor_name', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('contributor_email', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('contributor_attribute', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('entity', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['places.Entity'])),
+ ('submitted', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ('old', self.gf('django.db.models.fields.TextField')()),
+ ('new', self.gf('django.db.models.fields.TextField')()),
+ ('notes', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('approved', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('osm', ['OSMUpdate'])
+
+
+ def backwards(self, orm):
+
+ # Removing unique constraint on 'OSMTile', fields ['xtile', 'ytile', 'zoom']
+ db.delete_unique('osm_osmtile', ['xtile', 'ytile', 'zoom'])
+
+ # Deleting model 'GeneratedMap'
+ db.delete_table('osm_generatedmap')
+
+ # Deleting model 'OSMTile'
+ db.delete_table('osm_osmtile')
+
+ # Deleting model 'OSMUpdate'
+ db.delete_table('osm_osmupdate')
+
+
+ models = {
+ 'osm.generatedmap': {
+ 'Meta': {'object_name': 'GeneratedMap'},
+ '_metadata': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'faulty': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'generated': ('django.db.models.fields.DateTimeField', [], {}),
+ 'hash': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '16', 'primary_key': 'True'}),
+ 'last_accessed': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'osm.osmtile': {
+ 'Meta': {'unique_together': "(('xtile', 'ytile', 'zoom'),)", 'object_name': 'OSMTile'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_fetched': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'xtile': ('django.db.models.fields.IntegerField', [], {}),
+ 'ytile': ('django.db.models.fields.IntegerField', [], {}),
+ 'zoom': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'osm.osmupdate': {
+ 'Meta': {'object_name': 'OSMUpdate'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'contributor_attribute': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'contributor_email': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'contributor_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Entity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'new': ('django.db.models.fields.TextField', [], {}),
+ 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'old': ('django.db.models.fields.TextField', [], {}),
+ 'submitted': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
+ },
+ 'places.entity': {
+ 'Meta': {'ordering': "('title',)", 'object_name': 'Entity'},
+ '_identifiers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['places.Identifier']", 'symmetrical': 'False'}),
+ '_metadata': ('django.db.models.fields.TextField', [], {'default': "'{}'"}),
+ 'absolute_url': ('django.db.models.fields.TextField', [], {}),
+ 'all_types': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'all_types_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'entities_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'geometry': ('django.contrib.gis.db.models.fields.GeometryField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'identifier_scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'identifier_value': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+ 'is_stack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_sublocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'location': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Entity']", 'null': 'True'}),
+ 'primary_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.EntityType']", 'null': 'True'}),
+ 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['places.Source']"}),
+ 'title': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+ },
+ 'places.entitytype': {
+ 'Meta': {'ordering': "('verbose_name',)", 'object_name': 'EntityType'},
+ 'article': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'note': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'show_in_category_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'show_in_nearby_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'subtype_of': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'subtype_of_completion': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'subtypes_completion'", 'blank': 'True', 'to': "orm['places.EntityType']"}),
+ 'verbose_name': ('django.db.models.fields.TextField', [], {}),
+ 'verbose_name_plural': ('django.db.models.fields.TextField', [], {})
+ },
+ 'places.identifier': {
+ 'Meta': {'object_name': 'Identifier'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'scheme': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
+ },
+ 'places.source': {
+ 'Meta': {'object_name': 'Source'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'module_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ }
+ }
+
+ complete_apps = ['osm']
View
0  molly/osm/migrations/__init__.py
No changes.
View
57 molly/stats/migrations/0001_initial.py
@@ -0,0 +1,57 @@
+# 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 model 'Hit'
+ db.create_table('stats_hit', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('session_key', self.gf('django.db.models.fields.CharField')(max_length=40)),
+ ('user_agent', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('device_id', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('ip_address', self.gf('django.db.models.fields.IPAddressField')(max_length=15)),
+ ('referer', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('full_path', self.gf('django.db.models.fields.TextField')()),
+ ('requested', self.gf('django.db.models.fields.DateTimeField')()),
+ ('response_time', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
+ ('local_name', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('view_name', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('status_code', self.gf('django.db.models.fields.CharField')(max_length=3)),
+ ('redirect_to', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('traceback', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('stats', ['Hit'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Hit'
+ db.delete_table('stats_hit')
+
+
+ models = {
+ 'stats.hit': {
+ 'Meta': {'object_name': 'Hit'},
+ 'device_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'full_path': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'local_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'redirect_to': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'referer': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'requested': ('django.db.models.fields.DateTimeField', [], {}),
+ 'response_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'status_code': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
+ 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'user_agent': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'view_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['stats']
View
0  molly/stats/migrations/__init__.py
No changes.
View
2  molly/utils/logconfig.py
@@ -47,7 +47,7 @@ def emit(self, record):
# two elements of the traceback.
hash = hashlib.sha1()
hash.update('%d' % record.levelno)
- hash.update(record.msg)
+ hash.update(str(record.msg))
hash.update('%d%s' % (record.lineno, record.pathname))
View
2  molly/utils/ox_dates.py
@@ -95,5 +95,5 @@ def ox_date_dict(dt=None):
}
def format_today():
-# return "%(day_name)s, %(week)d%(ordinal)s week, %(term_long)s %(year)d (%(day_number)d %(month)s)" % ox_date_dict()
+ return "%(day_name)s, %(week)d%(ordinal)s week, %(term_long)s %(year)d (%(day_number)d %(month)s)" % ox_date_dict()
return "%(day_name)s, %(day_number)d %(month)s %(year)d" % ox_date_dict()
View
6 molly/utils/views.py
@@ -171,7 +171,11 @@ def render(self, request, context, template_name):
# Stop external sites from grabbing JSON representations of pages
# which contain sensitive user information.
- offsite_referrer = 'HTTP_REFERER' in request.META and request.META['HTTP_REFERER'].split('/')[2] != request.META.get('HTTP_HOST')
+ try:
+ offsite_referrer = 'HTTP_REFERER' in request.META and request.META['HTTP_REFERER'].split('/')[2] != request.META.get('HTTP_HOST')
+ except IndexError:
+ # Malformed referrers (i.e., those not containing a full URL) throw this
+ offsite_referrer = True
for renderer in renderers:
if renderer.format != 'html' and context.get('exposes_user_data') and offsite_referrer:
View
30 molly/wurfl/local_patch.xml
@@ -24,10 +24,38 @@
<!-- Chrome -->
<device user_agent="Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.32 Safari/532.0" fall_back="google_chrome_2" id="google_chrome_3"/>
- <device user_agent="Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.38 Safari/533.4" fall_back="google_chrome_2" id="google_chrome_4"/>
+ <device user_agent="Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.38 Safari/533.4" fall_back="google_chrome_3" id="google_chrome_4"/>
+ <device user_agent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Chrome/8.0.560.0 Safari/534.11" fall_back="google_chrome_4" id="google_chrome_8"/>
<!-- Opera Mobile -->
<device user_agent="Opera/9.80 (S60; SymbOS; Opera Mobi/499; U) Presto/2.4.18 Version/10.009" fall_back="generic_opera_mobi" id="opera_mobi_ver10"/>
+
+
+
+ <!-- IOS 4.2.1, temporary patch until it gets into the main WURFL -->
+ <device id="apple_iphone_ver4_2_1" user_agent="Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en_us) AppleWebKit/533.17.9 (KHTML, like Gecko)" fall_back="apple_iphone_ver4_2">
+ <group id="product_info">
+ <capability name="device_os_version" value="4.2.1"/>
+ <capability name="model_extra_info" value="4.2.1"/>
+ <capability name="release_date" value="2010_november"/>
+ </group>
+ </device>
+
+ <device id="apple_ipad_ver1_sub421" user_agent="Mozilla/5.0 (iPad; U; CPU iPhone OS 4_2_1 like Mac OS X; en_us) AppleWebKit/533.17.9 (KHTML, like Gecko)" fall_back="apple_ipad_ver1_sub42">
+ <group id="product_info">
+ <capability name="device_os_version" value="4.2.1"/>
+ <capability name="release_date" value="2010_november"/>
+ </group>
+ </device>
+
+ <device id="apple_ipod_touch_ver4_2_1" user_agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 4_2_1 like Mac OS X; en_us) AppleWebKit/533.17.9 (KHTML, like Gecko)" fall_back="apple_ipod_touch_ver4_1">
+ <group id="product_info">
+ <capability name="device_os_version" value="4.2.1"/>
+ <capability name="model_extra_info" value="4.2.1"/>
+ <capability name="release_date" value="2010_november"/>
+ </group>
+ </device>
+ <device id="apple_ipod_touch_ver4_2_1_subua" user_agent="Mozilla/5.0 (iPod touch; U; CPU iPhone OS 4_2_1 like Mac OS X; en_us) AppleWebKit/533.17.9 (KHTML, like Gecko)" fall_back="apple_ipod_touch_ver4_2_1"/>
</devices>
View
1,561 molly/wurfl/wurfl_data.py
898 additions, 663 deletions not shown
View
1  scripts/deploy-molly.sh
@@ -39,6 +39,7 @@ if [ -n "$1" ] ; then
# Start server
python manage.py syncdb
+ python manage.py migrate
python manage.py runserver