diff --git a/.travis.yml b/.travis.yml index ffdae05..82baebb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,11 @@ sudo: false language: python python: - - "2.6" -env: - - PIP_DOWNLOAD_CACHE="pip_cache" -cache: - directories: - - pip_cache + - "2.7" before_script: - flake8 news - mysql -e 'create database basket;' - - python manage.py syncdb --noinput --migrate + - python manage.py migrate --noinput script: coverage run manage.py test news before_install: - git submodule update --init --recursive diff --git a/news/fields.py b/news/fields.py index 3c6f271..01c0bf5 100644 --- a/news/fields.py +++ b/news/fields.py @@ -3,7 +3,6 @@ from django.forms import TextInput import product_details -from south.modelsinspector import add_introspection_rules class CommaSeparatedEmailField(models.TextField): @@ -46,7 +45,3 @@ def __init__(self, *args, **kwargs): kwargs.setdefault(key, value) return super(LocaleField, self).__init__(*args, **kwargs) - - -add_introspection_rules([], ['^news\.fields\.CommaSeparatedEmailField']) -add_introspection_rules([], ['^news\.fields\.LocaleField']) diff --git a/news/migrations/0001_initial.py b/news/migrations/0001_initial.py index 53f846d..6867a5a 100644 --- a/news/migrations/0001_initial.py +++ b/news/migrations/0001_initial.py @@ -1,61 +1,146 @@ # -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models +from __future__ import unicode_literals +from django.db import models, migrations +import jsonfield.fields +import news.models +import news.fields +import django.utils.timezone -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'Subscriber' - db.create_table('news_subscriber', ( - ('email', self.gf('django.db.models.fields.EmailField')(max_length=75, primary_key=True)), - ('token', self.gf('django.db.models.fields.CharField')(default='b2b2a68b-202e-4519-a39d-e854ff09afd2', max_length=1024)), - )) - db.send_create_signal('news', ['Subscriber']) +class Migration(migrations.Migration): - # Adding model 'Newsletter' - db.create_table('news_newsletter', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50)), - ('title', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('description', self.gf('django.db.models.fields.CharField')(max_length=256, blank=True)), - ('show', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('active', self.gf('django.db.models.fields.BooleanField')(default=True)), - ('welcome', self.gf('django.db.models.fields.CharField')(max_length=64, blank=True)), - ('vendor_id', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('languages', self.gf('django.db.models.fields.CharField')(max_length=200)), - )) - db.send_create_signal('news', ['Newsletter']) + dependencies = [ + ] - - def backwards(self, orm): - # Deleting model 'Subscriber' - db.delete_table('news_subscriber') - - # Deleting model 'Newsletter' - db.delete_table('news_newsletter') - - - models = { - 'news.newsletter': { - 'Meta': {'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'010e36cf-41b8-49e9-ac75-0b081b80f477'", 'max_length': '1024'}) - } - } - - complete_apps = ['news'] \ No newline at end of file + operations = [ + migrations.CreateModel( + name='APIUser', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('name', models.CharField(help_text=b'Descriptive name of this user', max_length=256)), + ('api_key', models.CharField(default=news.models.get_uuid, max_length=40, db_index=True)), + ('enabled', models.BooleanField(default=True)), + ], + options={ + 'verbose_name': 'API User', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='BlockedEmail', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('email_domain', models.CharField(max_length=50)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='FailedTask', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('when', models.DateTimeField(default=django.utils.timezone.now, editable=False)), + ('task_id', models.CharField(unique=True, max_length=255)), + ('name', models.CharField(max_length=255)), + ('args', jsonfield.fields.JSONField(default=[])), + ('kwargs', jsonfield.fields.JSONField(default={})), + ('exc', models.TextField(default=None, help_text='repr(exception)', null=True)), + ('einfo', models.TextField(default=None, help_text='repr(einfo)', null=True)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Interest', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('title', models.CharField(help_text=b'Public name of interest in English', max_length=128)), + ('interest_id', models.SlugField(help_text=b'The ID for the interest that will be used by clients', unique=True)), + ('_welcome_id', models.CharField(help_text=b'The ID of the welcome message sent for this interest. This is the HTML version of the message; append _T to this ID to get the ID of the text-only version. If blank, welcome message ID will be assumed to be the same as the interest_id', max_length=64, verbose_name=b'Welcome ID', blank=True)), + ('default_steward_emails', news.fields.CommaSeparatedEmailField(help_text=b"Comma-separated list of the default / en-US stewards' email addresses.", verbose_name=b'Default / en-US Steward Emails', blank=True)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='LocaleStewards', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('locale', news.fields.LocaleField(max_length=32, choices=[('ach', 'ach (Acholi)'), ('af', 'af (Afrikaans)'), ('ak', 'ak (Akan)'), ('am-et', 'am-et (Amharic)'), ('an', 'an (Aragonese)'), ('ar', 'ar (Arabic)'), ('as', 'as (Assamese)'), ('ast', 'ast (Asturian)'), ('az', 'az (Azerbaijani)'), ('be', 'be (Belarusian)'), ('bg', 'bg (Bulgarian)'), ('bn-BD', 'bn-BD (Bengali (Bangladesh))'), ('bn-IN', 'bn-IN (Bengali (India))'), ('br', 'br (Breton)'), ('bs', 'bs (Bosnian)'), ('ca', 'ca (Catalan)'), ('ca-valencia', 'ca-valencia (Catalan (Valencian))'), ('cs', 'cs (Czech)'), ('csb', 'csb (Kashubian)'), ('cy', 'cy (Welsh)'), ('da', 'da (Danish)'), ('dbg', 'dbg (Debug Robot)'), ('de', 'de (German)'), ('de-AT', 'de-AT (German (Austria))'), ('de-CH', 'de-CH (German (Switzerland))'), ('de-DE', 'de-DE (German (Germany))'), ('dsb', 'dsb (Lower Sorbian)'), ('el', 'el (Greek)'), ('en-AU', 'en-AU (English (Australian))'), ('en-CA', 'en-CA (English (Canadian))'), ('en-GB', 'en-GB (English (British))'), ('en-NZ', 'en-NZ (English (New Zealand))'), ('en-US', 'en-US (English (US))'), ('en-ZA', 'en-ZA (English (South African))'), ('eo', 'eo (Esperanto)'), ('es', 'es (Spanish)'), ('es-AR', 'es-AR (Spanish (Argentina))'), ('es-CL', 'es-CL (Spanish (Chile))'), ('es-ES', 'es-ES (Spanish (Spain))'), ('es-MX', 'es-MX (Spanish (Mexico))'), ('et', 'et (Estonian)'), ('eu', 'eu (Basque)'), ('fa', 'fa (Persian)'), ('ff', 'ff (Fulah)'), ('fi', 'fi (Finnish)'), ('fj-FJ', 'fj-FJ (Fijian)'), ('fr', 'fr (French)'), ('fur-IT', 'fur-IT (Friulian)'), ('fy-NL', 'fy-NL (Frisian)'), ('ga', 'ga (Irish)'), ('ga-IE', 'ga-IE (Irish)'), ('gd', 'gd (Gaelic (Scotland))'), ('gl', 'gl (Galician)'), ('gu', 'gu (Gujarati)'), ('gu-IN', 'gu-IN (Gujarati (India))'), ('he', 'he (Hebrew)'), ('hi', 'hi (Hindi)'), ('hi-IN', 'hi-IN (Hindi (India))'), ('hr', 'hr (Croatian)'), ('hsb', 'hsb (Upper Sorbian)'), ('hu', 'hu (Hungarian)'), ('hy-AM', 'hy-AM (Armenian)'), ('id', 'id (Indonesian)'), ('is', 'is (Icelandic)'), ('it', 'it (Italian)'), ('ja', 'ja (Japanese)'), ('ja-JP-mac', 'ja-JP-mac (Japanese)'), ('ka', 'ka (Georgian)'), ('kk', 'kk (Kazakh)'), ('km', 'km (Khmer)'), ('kn', 'kn (Kannada)'), ('ko', 'ko (Korean)'), ('ku', 'ku (Kurdish)'), ('la', 'la (Latin)'), ('lg', 'lg (Luganda)'), ('lij', 'lij (Ligurian)'), ('lo', 'lo (Lao)'), ('lt', 'lt (Lithuanian)'), ('lv', 'lv (Latvian)'), ('mai', 'mai (Maithili)'), ('mg', 'mg (Malagasy)'), ('mi', 'mi (Maori (Aotearoa))'), ('mk', 'mk (Macedonian)'), ('ml', 'ml (Malayalam)'), ('mn', 'mn (Mongolian)'), ('mr', 'mr (Marathi)'), ('ms', 'ms (Malay)'), ('my', 'my (Burmese)'), ('nb-NO', 'nb-NO (Norwegian (Bokm\xe5l))'), ('ne-NP', 'ne-NP (Nepali)'), ('nl', 'nl (Dutch)'), ('nn-NO', 'nn-NO (Norwegian (Nynorsk))'), ('nr', 'nr (Ndebele, South)'), ('nso', 'nso (Northern Sotho)'), ('oc', 'oc (Occitan (Lengadocian))'), ('or', 'or (Oriya)'), ('pa', 'pa (Punjabi)'), ('pa-IN', 'pa-IN (Punjabi (India))'), ('pl', 'pl (Polish)'), ('pt-BR', 'pt-BR (Portuguese (Brazilian))'), ('pt-PT', 'pt-PT (Portuguese (Portugal))'), ('rm', 'rm (Romansh)'), ('ro', 'ro (Romanian)'), ('ru', 'ru (Russian)'), ('rw', 'rw (Kinyarwanda)'), ('sa', 'sa (Sanskrit)'), ('sah', 'sah (Sakha)'), ('si', 'si (Sinhala)'), ('sk', 'sk (Slovak)'), ('sl', 'sl (Slovenian)'), ('son', 'son (Songhai)'), ('sq', 'sq (Albanian)'), ('sr', 'sr (Serbian)'), ('sr-Cyrl', 'sr-Cyrl (Serbian)'), ('sr-Latn', 'sr-Latn (Serbian)'), ('ss', 'ss (Siswati)'), ('st', 'st (Southern Sotho)'), ('sv-SE', 'sv-SE (Swedish)'), ('sw', 'sw (Swahili)'), ('ta', 'ta (Tamil)'), ('ta-IN', 'ta-IN (Tamil (India))'), ('ta-LK', 'ta-LK (Tamil (Sri Lanka))'), ('te', 'te (Telugu)'), ('th', 'th (Thai)'), ('tn', 'tn (Tswana)'), ('tr', 'tr (Turkish)'), ('ts', 'ts (Tsonga)'), ('tt-RU', 'tt-RU (Tatar)'), ('uk', 'uk (Ukrainian)'), ('ur', 'ur (Urdu)'), ('uz', 'uz (Uzbek)'), ('ve', 've (Venda)'), ('vi', 'vi (Vietnamese)'), ('wo', 'wo (Wolof)'), ('x-testing', 'x-testing (Testing)'), ('xh', 'xh (Xhosa)'), ('zh-CN', 'zh-CN (Chinese (Simplified))'), ('zh-TW', 'zh-TW (Chinese (Traditional))'), ('zu', 'zu (Zulu)')])), + ('emails', news.fields.CommaSeparatedEmailField(help_text=b"Comma-separated list of the stewards' email addresses.")), + ('interest', models.ForeignKey(to='news.Interest')), + ], + options={ + 'verbose_name': 'Locale Steward', + 'verbose_name_plural': 'Locale Stewards', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Newsletter', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('slug', models.SlugField(help_text=b'The ID for the newsletter that will be used by clients', unique=True)), + ('title', models.CharField(help_text=b'Public name of newsletter in English', max_length=128)), + ('description', models.CharField(help_text=b'One-line description of newsletter in English', max_length=256, blank=True)), + ('show', models.BooleanField(default=False, help_text=b'Whether to show this newsletter in lists of newsletters, even to non-subscribers')), + ('active', models.BooleanField(default=True, help_text=b'Whether this newsletter is active. Inactive newsletters are only shown to those who are already subscribed, and might have other differences in behavior.')), + ('welcome', models.CharField(help_text=b'The ID of the welcome message sent for this newsletter. This is the HTML version of the message; append _T to this ID to get the ID of the text-only version. If blank, no welcome is sent', max_length=64, blank=True)), + ('vendor_id', models.CharField(help_text=b"The backend vendor's identifier for this newsletter", max_length=128)), + ('languages', models.CharField(help_text=b'Comma-separated list of the language codes that this newsletter supports', max_length=200)), + ('requires_double_optin', models.BooleanField(default=False, help_text=b'True if subscribing to this newsletter requires someoneto respond to a confirming email.')), + ('order', models.IntegerField(default=0, help_text=b'Order to display the newsletters on the web site. Newsletters with lower order numbers will display first.')), + ('confirm_message', models.CharField(help_text=b"The ID of the confirm message sent for this newsletter.That's the one that says 'please click here to confirm'.If blank, a default message based on the user's language is sent.", max_length=64, blank=True)), + ], + options={ + 'ordering': ['order'], + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='NewsletterGroup', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('slug', models.SlugField(help_text=b'The ID for the group that will be used by clients', unique=True)), + ('title', models.CharField(help_text=b'Public name of group in English', max_length=128)), + ('description', models.CharField(help_text=b'One-line description of group in English', max_length=256, blank=True)), + ('show', models.BooleanField(default=False, help_text=b'Whether to show this group in lists of newsletters and groups, even to non-subscribers')), + ('active', models.BooleanField(default=False, help_text=b'Whether this group should be considered when subscription requests are received.')), + ('newsletters', models.ManyToManyField(related_name='newsletter_groups', to='news.Newsletter')), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='SMSMessage', + fields=[ + ('message_id', models.SlugField(help_text=b'The ID for the message that will be used by clients', serialize=False, primary_key=True)), + ('vendor_id', models.CharField(help_text=b"The backend vendor's identifier for this message", max_length=50)), + ('description', models.CharField(help_text=b'Optional short description of this message', max_length=200, blank=True)), + ], + options={ + 'verbose_name': 'SMS message', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Subscriber', + fields=[ + ('email', models.EmailField(max_length=75, serialize=False, primary_key=True)), + ('token', models.CharField(default=news.models.get_uuid, max_length=40, db_index=True)), + ('fxa_id', models.CharField(db_index=True, max_length=100, null=True, blank=True)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.AlterUniqueTogether( + name='localestewards', + unique_together=set([('interest', 'locale')]), + ), + ] diff --git a/news/migrations/0002_auto.py b/news/migrations/0002_auto.py deleted file mode 100644 index 0d6761b..0000000 --- a/news/migrations/0002_auto.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Changing field 'Subscriber.token' - db.alter_column('news_subscriber', 'token', self.gf('django.db.models.fields.CharField')(max_length=40)) - # Adding index on 'Subscriber', fields ['token'] - db.create_index('news_subscriber', ['token']) - - - def backwards(self, orm): - # Removing index on 'Subscriber', fields ['token'] - db.delete_index('news_subscriber', ['token']) - # Changing field 'Subscriber.token' - db.alter_column('news_subscriber', 'token', self.gf('django.db.models.fields.CharField')(max_length=1024)) - - - models = { - 'news.newsletter': { - 'Meta': {'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'9101c0ce-cac8-4cf4-8126-22df89512f32'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/migrations/0003_auto__add_field_newsletter_requires_double_optin.py b/news/migrations/0003_auto__add_field_newsletter_requires_double_optin.py deleted file mode 100644 index f6e33e0..0000000 --- a/news/migrations/0003_auto__add_field_newsletter_requires_double_optin.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Newsletter.requires_double_optin' - db.add_column('news_newsletter', 'requires_double_optin', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Newsletter.requires_double_optin' - db.delete_column('news_newsletter', 'requires_double_optin') - - - models = { - 'news.newsletter': { - 'Meta': {'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'0b1108ee-4a68-48b3-9481-3e81ec586f9e'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/migrations/0004_auto__add_field_newsletter_order.py b/news/migrations/0004_auto__add_field_newsletter_order.py deleted file mode 100644 index 276f314..0000000 --- a/news/migrations/0004_auto__add_field_newsletter_order.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Newsletter.order' - db.add_column('news_newsletter', 'order', - self.gf('django.db.models.fields.IntegerField')(default=0), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Newsletter.order' - db.delete_column('news_newsletter', 'order') - - - models = { - 'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'3e17e1c3-0543-411b-a6d4-5714e9dd2a48'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0005_auto__add_field_newsletter_confirm_message.py b/news/migrations/0005_auto__add_field_newsletter_confirm_message.py deleted file mode 100644 index b50d465..0000000 --- a/news/migrations/0005_auto__add_field_newsletter_confirm_message.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Newsletter.confirm_message' - db.add_column('news_newsletter', 'confirm_message', - self.gf('django.db.models.fields.CharField')(default='', max_length=64, blank=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Newsletter.confirm_message' - db.delete_column('news_newsletter', 'confirm_message') - - - models = { - 'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'52afba50-b939-4ac7-914f-e5823cafea68'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0006_auto__add_apiuser.py b/news/migrations/0006_auto__add_apiuser.py deleted file mode 100644 index 73982f1..0000000 --- a/news/migrations/0006_auto__add_apiuser.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'APIUser' - db.create_table('news_apiuser', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=256)), - ('api_key', self.gf('django.db.models.fields.CharField')(default='fa8347f2-14fe-45db-a62f-4d6e4d88b62e', max_length=40, db_index=True)), - ('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)), - )) - db.send_create_signal('news', ['APIUser']) - - - def backwards(self, orm): - # Deleting model 'APIUser' - db.delete_table('news_apiuser') - - - models = { - 'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'e420aec3-106f-4b17-9126-43a1356504d8'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - 'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - 'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'f02e8016-94e3-49be-8cd0-8dfa0d0fb5f9'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0007_auto__add_failedtask.py b/news/migrations/0007_auto__add_failedtask.py deleted file mode 100644 index 3177e61..0000000 --- a/news/migrations/0007_auto__add_failedtask.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'FailedTask' - db.create_table(u'news_failedtask', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('when', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)), - ('task_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=255)), - ('args', self.gf('jsonfield.fields.JSONField')(default=[])), - ('kwargs', self.gf('jsonfield.fields.JSONField')(default={})), - ('exc', self.gf('django.db.models.fields.TextField')(default=None, null=True)), - ('einfo', self.gf('django.db.models.fields.TextField')(default=None, null=True)), - )) - db.send_create_signal(u'news', ['FailedTask']) - - - def backwards(self, orm): - # Deleting model 'FailedTask' - db.delete_table(u'news_failedtask') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'ba3fde79-fba3-445f-a65f-5649da6f5cec'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'704868b0-9986-4bb4-acdb-849651f7cc66'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/migrations/0008_auto__add_field_subscriber_fxa_id.py b/news/migrations/0008_auto__add_field_subscriber_fxa_id.py deleted file mode 100644 index 6687e90..0000000 --- a/news/migrations/0008_auto__add_field_subscriber_fxa_id.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Subscriber.fxa_id' - db.add_column(u'news_subscriber', 'fxa_id', - self.gf('django.db.models.fields.CharField')(db_index=True, max_length=100, null=True, blank=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Subscriber.fxa_id' - db.delete_column(u'news_subscriber', 'fxa_id') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'c17bac3d-1abd-4d6c-801e-866671c77dfd'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'b498d69d-441a-46fa-818d-faa447a5acd1'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0009_auto__add_interest.py b/news/migrations/0009_auto__add_interest.py deleted file mode 100644 index 8d6ab1e..0000000 --- a/news/migrations/0009_auto__add_interest.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'Interest' - db.create_table(u'news_interest', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('title', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('interest_id', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50)), - ('_welcome_id', self.gf('django.db.models.fields.CharField')(max_length=64, blank=True)), - )) - db.send_create_signal(u'news', ['Interest']) - - - def backwards(self, orm): - # Deleting model 'Interest' - db.delete_table(u'news_interest') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'78c100a6-859b-4825-b0c6-9eddfd76cabb'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'de9ac5ed-77c5-475c-ad12-c10c64a38ce5'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/migrations/0010_auto__add_field_interest_steward_emails.py b/news/migrations/0010_auto__add_field_interest_steward_emails.py deleted file mode 100644 index 47f2e39..0000000 --- a/news/migrations/0010_auto__add_field_interest_steward_emails.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Interest.steward_emails' - db.add_column(u'news_interest', 'steward_emails', - self.gf('news.fields.CommaSeparatedEmailField')(default='', blank=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Interest.steward_emails' - db.delete_column(u'news_interest', 'steward_emails') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'d44bdff3-d3b8-4816-96d9-00ab54e54310'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'steward_emails': ('news.fields.CommaSeparatedEmailField', [], {'blank': 'True'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'445fe83e-b729-4d6d-b73a-10cdb3555003'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0011_auto__add_localestewards__add_unique_localestewards_interest_locale__d.py b/news/migrations/0011_auto__add_localestewards__add_unique_localestewards_interest_locale__d.py deleted file mode 100644 index 6d7e8e9..0000000 --- a/news/migrations/0011_auto__add_localestewards__add_unique_localestewards_interest_locale__d.py +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'LocaleStewards' - db.create_table(u'news_localestewards', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('interest', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['news.Interest'])), - ('locale', self.gf('news.fields.LocaleField')(max_length=32)), - ('emails', self.gf('news.fields.CommaSeparatedEmailField')()), - )) - db.send_create_signal(u'news', ['LocaleStewards']) - - # Adding unique constraint on 'LocaleStewards', fields ['interest', 'locale'] - db.create_unique(u'news_localestewards', ['interest_id', 'locale']) - - # Renaming field 'Interest.steward_emails' - db.rename_column(u'news_interest', 'steward_emails', 'default_steward_emails') - - - def backwards(self, orm): - # Removing unique constraint on 'LocaleStewards', fields ['interest', 'locale'] - db.delete_unique(u'news_localestewards', ['interest_id', 'locale']) - - # Deleting model 'LocaleStewards' - db.delete_table(u'news_localestewards') - - # Renaming field 'Interest.default_steward_emails' - db.rename_column(u'news_interest', 'default_steward_emails', 'steward_emails') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'b00db0d0-98a6-402e-a149-8627184dd33e'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'default_steward_emails': ('news.fields.CommaSeparatedEmailField', [], {'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.localestewards': { - 'Meta': {'unique_together': "(('interest', 'locale'),)", 'object_name': 'LocaleStewards'}, - 'emails': ('news.fields.CommaSeparatedEmailField', [], {}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['news.Interest']"}), - 'locale': ('news.fields.LocaleField', [], {'max_length': '32'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'740188d2-4d22-4ab6-94cf-17710b8f1e4a'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/migrations/0012_auto__add_newslettergroup.py b/news/migrations/0012_auto__add_newslettergroup.py deleted file mode 100644 index ee823a2..0000000 --- a/news/migrations/0012_auto__add_newslettergroup.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'NewsletterGroup' - db.create_table(u'news_newslettergroup', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50)), - ('title', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('description', self.gf('django.db.models.fields.CharField')(max_length=256, blank=True)), - ('show', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('active', self.gf('django.db.models.fields.BooleanField')(default=False)), - )) - db.send_create_signal(u'news', ['NewsletterGroup']) - - # Adding M2M table for field newsletters on 'NewsletterGroup' - db.create_table(u'news_newslettergroup_newsletters', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('newslettergroup', models.ForeignKey(orm[u'news.newslettergroup'], null=False)), - ('newsletter', models.ForeignKey(orm[u'news.newsletter'], null=False)) - )) - db.create_unique(u'news_newslettergroup_newsletters', ['newslettergroup_id', 'newsletter_id']) - - - def backwards(self, orm): - # Deleting model 'NewsletterGroup' - db.delete_table(u'news_newslettergroup') - - # Removing M2M table for field newsletters on 'NewsletterGroup' - db.delete_table('news_newslettergroup_newsletters') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'1c024aeb-915d-4865-a957-acbac4574c81'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'default_steward_emails': ('news.fields.CommaSeparatedEmailField', [], {'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.localestewards': { - 'Meta': {'unique_together': "(('interest', 'locale'),)", 'object_name': 'LocaleStewards'}, - 'emails': ('news.fields.CommaSeparatedEmailField', [], {}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['news.Interest']"}), - 'locale': ('news.fields.LocaleField', [], {'max_length': '32'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.newslettergroup': { - 'Meta': {'object_name': 'NewsletterGroup'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'newsletters': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'newsletter_groups'", 'symmetrical': 'False', 'to': u"orm['news.Newsletter']"}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'bf8a509f-c81b-40ba-9280-125dad181a17'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0013_auto__add_blockedemail.py b/news/migrations/0013_auto__add_blockedemail.py deleted file mode 100644 index 966ab7b..0000000 --- a/news/migrations/0013_auto__add_blockedemail.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'BlockedEmail' - db.create_table(u'news_blockedemail', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('email_domain', self.gf('django.db.models.fields.CharField')(max_length=50)), - )) - db.send_create_signal(u'news', ['BlockedEmail']) - - - def backwards(self, orm): - # Deleting model 'BlockedEmail' - db.delete_table(u'news_blockedemail') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'d637403e-2efb-4300-9f26-e352d82dc106'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.blockedemail': { - 'Meta': {'object_name': 'BlockedEmail'}, - 'email_domain': ('django.db.models.fields.CharField', [], {'max_length': '50'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'default_steward_emails': ('news.fields.CommaSeparatedEmailField', [], {'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.localestewards': { - 'Meta': {'unique_together': "(('interest', 'locale'),)", 'object_name': 'LocaleStewards'}, - 'emails': ('news.fields.CommaSeparatedEmailField', [], {}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['news.Interest']"}), - 'locale': ('news.fields.LocaleField', [], {'max_length': '32'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.newslettergroup': { - 'Meta': {'object_name': 'NewsletterGroup'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'newsletters': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'newsletter_groups'", 'symmetrical': 'False', 'to': u"orm['news.Newsletter']"}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'f7e6b06b-17cd-46f1-bb17-18c7fe489792'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] \ No newline at end of file diff --git a/news/migrations/0014_auto__add_smsmessage.py b/news/migrations/0014_auto__add_smsmessage.py deleted file mode 100644 index 2678eb4..0000000 --- a/news/migrations/0014_auto__add_smsmessage.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'SMSMessage' - db.create_table(u'news_smsmessage', ( - ('message_id', self.gf('django.db.models.fields.SlugField')(max_length=50, primary_key=True)), - ('vendor_id', self.gf('django.db.models.fields.CharField')(max_length=50)), - ('description', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)), - )) - db.send_create_signal(u'news', ['SMSMessage']) - - - def backwards(self, orm): - # Deleting model 'SMSMessage' - db.delete_table(u'news_smsmessage') - - - models = { - u'news.apiuser': { - 'Meta': {'object_name': 'APIUser'}, - 'api_key': ('django.db.models.fields.CharField', [], {'default': "'3155104b-4ddb-4c29-923d-2c5cb277df41'", 'max_length': '40', 'db_index': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}) - }, - u'news.blockedemail': { - 'Meta': {'object_name': 'BlockedEmail'}, - 'email_domain': ('django.db.models.fields.CharField', [], {'max_length': '50'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - u'news.failedtask': { - 'Meta': {'object_name': 'FailedTask'}, - 'args': ('jsonfield.fields.JSONField', [], {'default': '[]'}), - 'einfo': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - 'exc': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('jsonfield.fields.JSONField', [], {'default': '{}'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) - }, - u'news.interest': { - 'Meta': {'object_name': 'Interest'}, - '_welcome_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'default_steward_emails': ('news.fields.CommaSeparatedEmailField', [], {'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest_id': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.localestewards': { - 'Meta': {'unique_together': "(('interest', 'locale'),)", 'object_name': 'LocaleStewards'}, - 'emails': ('news.fields.CommaSeparatedEmailField', [], {}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interest': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['news.Interest']"}), - 'locale': ('news.fields.LocaleField', [], {'max_length': '32'}) - }, - u'news.newsletter': { - 'Meta': {'ordering': "['order']", 'object_name': 'Newsletter'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'confirm_message': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'requires_double_optin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'welcome': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}) - }, - u'news.newslettergroup': { - 'Meta': {'object_name': 'NewsletterGroup'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'newsletters': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'newsletter_groups'", 'symmetrical': 'False', 'to': u"orm['news.Newsletter']"}), - 'show': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - u'news.smsmessage': { - 'Meta': {'object_name': 'SMSMessage'}, - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}), - 'message_id': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'primary_key': 'True'}), - 'vendor_id': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - u'news.subscriber': { - 'Meta': {'object_name': 'Subscriber'}, - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'primary_key': 'True'}), - 'fxa_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'1bffb7db-a262-4b3c-8131-dea52be0438e'", 'max_length': '40', 'db_index': 'True'}) - } - } - - complete_apps = ['news'] diff --git a/news/models.py b/news/models.py index fd60221..92e020d 100644 --- a/news/models.py +++ b/news/models.py @@ -13,6 +13,11 @@ from news.fields import CommaSeparatedEmailField, LocaleField +def get_uuid(): + """Needed because Django can't make migrations when using lambda.""" + return str(uuid4()) + + class BlockedEmail(models.Model): email_domain = models.CharField(max_length=50) @@ -41,7 +46,7 @@ def get_and_sync(self, email, token, fxa_id=None): class Subscriber(models.Model): email = models.EmailField(primary_key=True) - token = models.CharField(max_length=40, default=lambda: str(uuid4()), + token = models.CharField(max_length=40, default=get_uuid, db_index=True) fxa_id = models.CharField(max_length=100, null=True, blank=True, db_index=True) @@ -174,7 +179,7 @@ class APIUser(models.Model): help_text="Descriptive name of this user" ) api_key = models.CharField(max_length=40, - default=lambda: str(uuid4()), + default=get_uuid, db_index=True) enabled = models.BooleanField(default=True) diff --git a/requirements/dev.txt b/requirements/dev.txt index 44c91f3..be513b2 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,8 +4,8 @@ # to pull in a minimal set of packages to get a running site. pep8==1.4.6 -django-nose==1.2 -nose==1.3.0 +django-nose==1.4.1 +nose==1.3.7 coverage==3.6 mock==1.0.1 flake8==2.0 diff --git a/settings/base.py b/settings/base.py index cdc937d..50d898b 100644 --- a/settings/base.py +++ b/settings/base.py @@ -6,7 +6,12 @@ # Make filepaths relative to settings. ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -path = lambda *a: os.path.join(ROOT, *a) + + +def path(*args): + # makes flake8 happier than a lambda + return os.path.join(ROOT, *args) + DEBUG = True TEMPLATE_DEBUG = DEBUG @@ -84,7 +89,6 @@ 'corsheaders', 'djcelery', - 'south', 'raven.contrib.django.raven_compat', 'product_details', @@ -130,7 +134,7 @@ CELERY_DISABLE_RATE_LIMITS = True CELERY_IGNORE_RESULT = True -import djcelery +import djcelery # noqa djcelery.setup_loader() CACHES = { diff --git a/vendor b/vendor index 9e90147..53a8b94 160000 --- a/vendor +++ b/vendor @@ -1 +1 @@ -Subproject commit 9e90147ddf65b19dc19f85e7bf8cfd7d5defb907 +Subproject commit 53a8b94a2f71947e30534d15feb5194eb2818396