Permalink
Browse files

Merge branch 'mdn' into master-mdn-merge

Conflicts:
	Vagrantfile
	apps/actioncounters/migrations/__init__.py
	apps/contentflagging/migrations/__init__.py
	apps/devmo/tests/test_views.py
	apps/taggit_extras/__init__.py
	apps/taggit_extras/tests/__init__.py
	configs/htaccess
	lib/taggit_extras/__init__.py
	lib/taggit_extras/tests/__init__.py
	puppet/files/etc/httpd/conf.d/mozilla-kuma-apache.conf
	puppet/files/vagrant/settings_local.py
	puppet/manifests/classes/site-config.pp
	scripts/build.sh
	scripts/update_site.py
	templates/403.html
  • Loading branch information...
2 parents b2f4a68 + 7e76a7b commit 6b0bc8eb89a3d3ded6a4836215bbf83b6ab4d13c @lmorchard lmorchard committed Sep 2, 2011
Showing with 4,604 additions and 974 deletions.
  1. +4 −13 README-vagrant.md
  2. +12 −0 apps/actioncounters/cron.py
  3. +116 −0 apps/actioncounters/migrations/0001_initial.py
  4. +92 −0 apps/actioncounters/migrations/0002_unique_hash_index.py
  5. +110 −0 apps/actioncounters/migrations/0003_update_unique_hashes.py
  6. 0 apps/actioncounters/migrations/__init__.py
  7. +30 −37 apps/actioncounters/models.py
  8. +23 −15 apps/actioncounters/tests.py
  9. +20 −16 apps/actioncounters/utils.py
  10. +95 −0 apps/contentflagging/migrations/0001_initial.py
  11. +91 −0 apps/contentflagging/migrations/0002_unique_hash_index.py
  12. +87 −0 apps/contentflagging/migrations/0003_update_unique_hashes.py
  13. 0 apps/contentflagging/migrations/__init__.py
  14. +24 −22 apps/contentflagging/models.py
  15. +18 −12 apps/contentflagging/tests.py
  16. +19 −17 apps/contentflagging/utils.py
  17. +19 −24 apps/demos/__init__.py
  18. +8 −5 apps/demos/forms.py
  19. +6 −5 apps/demos/helpers.py
  20. +2 −0 apps/demos/templates/demos/detail.html
  21. +77 −36 apps/demos/templates/demos/devderby_landing.html
  22. +1 −1 apps/demos/templates/demos/elements/profile_link.html
  23. +1 −1 apps/demos/templates/demos/elements/submission_creator.html
  24. +7 −4 apps/demos/templates/demos/elements/submission_listing.html
  25. +6 −6 apps/demos/tests/test_views.py
  26. +28 −34 apps/demos/views.py
  27. +2 −0 apps/devmo/__init__.py
  28. +3 −3 apps/devmo/fixtures/Mozillapeopleevents.csv
  29. +1 −1 apps/devmo/fixtures/bad_date.csv
  30. 0 apps/devmo/fixtures/{initial_data.json → devmo_calendar.json}
  31. +1 −0 apps/devmo/fixtures/user_docs_activity_feed.xml
  32. +1 −1 apps/devmo/fixtures/xss.csv
  33. +16 −4 apps/devmo/forms.py
  34. +113 −0 apps/devmo/migrations/0009_auto__chg_field_event_description__chg_field_event_people.py
  35. +108 −0 apps/devmo/migrations/0010_irc_nickname_in_profile.py
  36. +81 −29 apps/devmo/models.py
  37. +10 −10 apps/devmo/templates/devmo/calendar.html
  38. +42 −193 apps/devmo/templates/devmo/profile.html
  39. +14 −47 apps/devmo/templates/devmo/profile_edit.html
  40. +5 −0 apps/devmo/tests/test_misc.py
  41. +24 −5 apps/devmo/tests/test_models.py
  42. +69 −3 apps/devmo/tests/test_views.py
  43. +23 −5 apps/devmo/views.py
  44. +1 −0 apps/feeder/fixtures/test_data.json
  45. +6 −0 apps/landing/templates/landing/addons.html
  46. +47 −0 apps/landing/templates/landing/discussion.html
  47. +15 −0 apps/landing/templates/landing/forum_archive.html
  48. +31 −19 apps/landing/templates/landing/home.html
  49. +1 −5 apps/landing/templates/landing/learn.html
  50. +1 −5 apps/landing/templates/landing/learn_css.html
  51. +5 −0 apps/landing/templates/landing/learn_fineprint.html
  52. +1 −5 apps/landing/templates/landing/learn_html.html
  53. +1 −6 apps/landing/templates/landing/learn_javascript.html
  54. +8 −1 apps/landing/templates/landing/mobile.html
  55. +7 −1 apps/landing/templates/landing/mozilla.html
  56. +2 −2 apps/landing/templates/landing/promote_buttons.html
  57. +7 −1 apps/landing/templates/landing/web.html
  58. +100 −0 apps/landing/test_views.py
  59. +2 −0 apps/landing/urls.py
  60. +8 −0 apps/landing/views.py
  61. +2 −2 apps/sumo/helpers.py
  62. +80 −0 apps/taggit_extras/utils.py
  63. +0 −3 media/css/demos.css
  64. +4 −2 media/css/devderby.css
  65. +36 −12 media/css/mdn-screen.css
  66. +6 −6 media/css/promote.css
  67. BIN media/img/balloons.png
  68. BIN media/img/beast-403.png
  69. BIN media/img/beast-404.png
  70. BIN media/img/beast-500.png
  71. BIN media/img/devderby/judges/benward.jpg
  72. BIN media/img/devderby/judges/chriswanstrath.jpg
  73. BIN media/img/devderby/judges/jeffmalkin.jpg
  74. BIN media/img/devderby/judges/mikedavies.jpg
  75. BIN media/img/devderby/judges/ryangrove.jpg
  76. BIN media/img/webfwd-promo-banner.png
  77. BIN media/img/webfwd-promo-square.png
  78. +206 −0 media/js/libs/jquery.gmap-1.1.0.js
  79. +22 −31 media/js/mdn/calendar.js
  80. +0 −179 media/js/mdn/geocode.js
  81. +130 −0 media/js/mdn/profile.js
  82. +12 −3 media/template/profile-edit-blank.php
  83. +42 −19 media/template/profile-edit.php
  84. +9 −0 media/template/profile-partial.php
  85. +28 −19 media/template/profile.php
  86. +4 −0 migrations/09-contentflagging-convert-to-south.sql
  87. +4 −0 migrations/10-actioncounters-convert-to-south.sql
  88. +35 −0 migrations/south/constance/0001_initial.py
  89. 0 migrations/south/constance/__init__.py
  90. +1 −0 puppet/files/etc/httpd/conf.d/mozilla-kuma-apache.conf
  91. +6 −0 puppet/files/tmp/init.sql
  92. +2,000 −0 puppet/files/tmp/phpbb.sql
  93. +7 −10 puppet/files/vagrant/settings_local.py
  94. +17 −0 puppet/files/var/www/phpbb/config.php
  95. +74 −0 puppet/manifests/classes/phpbb.pp
  96. +8 −6 puppet/manifests/dev-vagrant-mdn.pp
  97. +13 −0 puppet/manifests/mozilla_kuma.pp
  98. +2 −2 scripts/build.sh
  99. +8 −3 scripts/update_site.py
  100. +49 −4 settings.py
  101. +47 −29 templates/403.html
  102. +24 −8 templates/404.html
  103. +25 −9 templates/500.html
  104. +3 −3 templates/base.html
  105. +47 −29 templates/handlers/403.html
  106. +1 −1 templates/includes/login.html
View
@@ -19,13 +19,9 @@ reasons.
sudo gem update
sudo gem install vagrant
- # Clone a Kuma repo, switch to my vagrant branch (for now)
- git clone git://github.com/mozilla/kuma.git
- cd kuma
-
# Fire up the VM and install everything, go take a bike ride (approx. 15 min)
# Clone a Kuma repo, switch to "mdn" branch (for now)
- git clone git://github.com/lmorchard/kuma.git
+ git clone git://github.com/mozilla/kuma.git
cd kuma
git submodule update --init --recursive
@@ -35,17 +31,12 @@ reasons.
# If the process fails with an error, try running the Puppet setup again.
# (Not sure why yet, but usually this just works.)
vagrant provision
-
- # Optional: Download and import data extracted from the production site
- # This can take a long while, since there's over 500MB of data
- vagrant ssh
- sudo puppet apply /vagrant/puppet/manifests/dev-vagrant-mdn-import.pp
- # Add dev-kuma.developer.mozilla.org to /etc/hosts
- echo '192.168.10.50 dev-kuma.developer.mozilla.org' >> /etc/hosts
+ # Add developer-kumadev.mozilla.org to /etc/hosts
+ echo '192.168.10.50 developer-kumadev.mozilla.org' >> /etc/hosts
# Everything should be working now.
- curl 'http://dev-kuma.developer.mozilla.org'
+ curl 'http://developer-kumadev.mozilla.org'
# Edit files as usual on your host machine; the current directory is
# mounted via NFS at /vagrant within the VM.
@@ -5,6 +5,7 @@
import cronjobs
# TODO: Figure out a way to do this per-class? Would need to break up some of the SQL calls.
+ACTIONCOUNTERS_ANON_GC_WINDOW = getattr(settings, "ACTIONCOUNTERS_ANON_GC_WINDOW", "2 MONTH")
ACTIONCOUNTERS_RECENT_COUNT_WINDOW = getattr(settings, "ACTIONCOUNTERS_RECENT_COUNT_WINDOW", "14 DAY")
@cronjobs.register
@@ -27,6 +28,17 @@ def get_update(ct_pk, obj_pk):
cursor = connection.cursor()
+ # Garbage collect any counters for anonymous users over a certain age.
+ cursor.execute("""
+ DELETE
+ FROM actioncounters_actioncounterunique
+ WHERE
+ user_id IS NULL AND
+ modified < date_sub(now(), INTERVAL %(interval)s)
+ """ % dict(
+ interval=ACTIONCOUNTERS_ANON_GC_WINDOW
+ ))
+
# Any counters too old for the window should be set to 0
cursor.execute("""
SELECT content_type_id, object_pk, name
@@ -0,0 +1,116 @@
+# 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 'TestModel'
+ db.create_table('actioncounters_testmodel', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('title', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
+ ('views_total', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('views_recent', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('boogs_total', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('boogs_recent', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('likes_total', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('likes_recent', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('frobs_total', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ('frobs_recent', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True, blank=True)),
+ ))
+ db.send_create_signal('actioncounters', ['TestModel'])
+
+ # Adding model 'ActionCounterUnique'
+ db.create_table('actioncounters_actioncounterunique', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='content_type_set_for_actioncounterunique', to=orm['contenttypes.ContentType'])),
+ ('object_pk', self.gf('django.db.models.fields.CharField')(max_length=32)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=64, db_index=True)),
+ ('total', self.gf('django.db.models.fields.IntegerField')()),
+ ('ip', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=40, null=True, blank=True)),
+ ('session_key', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=40, null=True, blank=True)),
+ ('user_agent', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=128, null=True, blank=True)),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
+ ('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ))
+ db.send_create_signal('actioncounters', ['ActionCounterUnique'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'TestModel'
+ db.delete_table('actioncounters_testmodel')
+
+ # Deleting model 'ActionCounterUnique'
+ db.delete_table('actioncounters_actioncounterunique')
+
+
+ models = {
+ 'actioncounters.actioncounterunique': {
+ 'Meta': {'object_name': 'ActionCounterUnique'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_actioncounterunique'", 'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}),
+ 'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}),
+ 'total': ('django.db.models.fields.IntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'user_agent': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'})
+ },
+ 'actioncounters.testmodel': {
+ 'Meta': {'object_name': 'TestModel'},
+ 'boogs_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'boogs_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'frobs_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'frobs_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'likes_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'likes_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'views_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'views_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['actioncounters']
@@ -0,0 +1,92 @@
+# 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):
+
+ # Deleting field 'ActionCounterUnique.session_key'
+ db.delete_column('actioncounters_actioncounterunique', 'session_key')
+
+ # Adding field 'ActionCounterUnique.unique_hash'
+ db.add_column('actioncounters_actioncounterunique', 'unique_hash', self.gf('django.db.models.fields.CharField')(blank=True, max_length=32, null=True, db_index=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Adding field 'ActionCounterUnique.session_key'
+ db.add_column('actioncounters_actioncounterunique', 'session_key', self.gf('django.db.models.fields.CharField')(blank=True, max_length=40, null=True, db_index=True), keep_default=False)
+
+ # Deleting field 'ActionCounterUnique.unique_hash'
+ db.delete_column('actioncounters_actioncounterunique', 'unique_hash')
+
+
+ models = {
+ 'actioncounters.actioncounterunique': {
+ 'Meta': {'object_name': 'ActionCounterUnique'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_actioncounterunique'", 'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}),
+ 'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'total': ('django.db.models.fields.IntegerField', [], {}),
+ 'unique_hash': ('django.db.models.fields.CharField', [], {'default': "''", 'unique': 'True', 'max_length': '32', 'db_index': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'user_agent': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'})
+ },
+ 'actioncounters.testmodel': {
+ 'Meta': {'object_name': 'TestModel'},
+ 'boogs_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'boogs_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'frobs_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'frobs_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'likes_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'likes_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'views_recent': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}),
+ 'views_total': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['actioncounters']
Oops, something went wrong.

0 comments on commit 6b0bc8e

Please sign in to comment.