diff --git a/pinry/core/migrations/0001_initial.py b/pinry/core/migrations/0001_initial.py index f2e2fce..aa7b8d6 100644 --- a/pinry/core/migrations/0001_initial.py +++ b/pinry/core/migrations/0001_initial.py @@ -1,98 +1,51 @@ # -*- 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 'Pin' - db.create_table(u'core_pin', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('submitter', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('url', self.gf('django.db.models.fields.URLField')(max_length=200, null=True)), - ('origin', self.gf('django.db.models.fields.URLField')(max_length=200, null=True)), - ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), - ('image', self.gf('django.db.models.fields.related.ForeignKey')(related_name='pin', to=orm['django_images.Image'])), - ('published', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), - )) - db.send_create_signal(u'core', ['Pin']) - - - def backwards(self, orm): - # Deleting model 'Pin' - db.delete_table(u'core_pin') - - - models = { - u'auth.group': { - 'Meta': {'object_name': 'Group'}, - u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - u'auth.permission': { - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - u'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - u'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'}), - u'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'}) - }, - u'core.pin': { - 'Meta': {'object_name': 'Pin'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'image': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pin'", 'to': u"orm['django_images.Image']"}), - 'origin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}), - 'published': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'submitter': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}), - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}) - }, - u'django_images.image': { - 'Meta': {'object_name': 'Image'}, - 'height': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255'}), - 'width': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) - }, - u'taggit.tag': { - 'Meta': {'object_name': 'Tag'}, - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '100'}) - }, - u'taggit.taggeditem': { - 'Meta': {'object_name': 'TaggedItem'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'taggit_taggeditem_tagged_items'", 'to': u"orm['contenttypes.ContentType']"}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'object_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}), - 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'taggit_taggeditem_items'", 'to': u"orm['taggit.Tag']"}) - } - } - - complete_apps = ['core'] \ No newline at end of file +from __future__ import unicode_literals + +from django.db import models, migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('taggit', '0002_auto_20150616_2121'), + ('users', '__first__'), + ('django_images', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='Pin', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('url', models.URLField(null=True)), + ('origin', models.URLField(null=True)), + ('description', models.TextField(null=True, blank=True)), + ('published', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Image', + fields=[ + ], + options={ + 'proxy': True, + }, + bases=('django_images.image',), + ), + migrations.AddField( + model_name='pin', + name='image', + field=models.ForeignKey(related_name='pin', to='core.Image'), + ), + migrations.AddField( + model_name='pin', + name='submitter', + field=models.ForeignKey(to='users.User'), + ), + migrations.AddField( + model_name='pin', + name='tags', + field=taggit.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', help_text='A comma-separated list of tags.', verbose_name='Tags'), + ), + ] diff --git a/pinry/settings/__init__.py b/pinry/settings/__init__.py index a0ac614..c315a46 100644 --- a/pinry/settings/__init__.py +++ b/pinry/settings/__init__.py @@ -79,7 +79,6 @@ INSTALLED_APPS = ( 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'south', 'taggit', 'compressor', 'django_images', diff --git a/pinry/users/auth/backends.py b/pinry/users/auth/backends.py index f4c95c1..f79c005 100644 --- a/pinry/users/auth/backends.py +++ b/pinry/users/auth/backends.py @@ -1,8 +1,16 @@ -from django.core.validators import email_re +import re from pinry.core.models import Pin from pinry.users.models import User +email_re = re.compile( + r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom + # quoted-string, see also http://tools.ietf.org/html/rfc2822#section-3.2.5 + r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"' + r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)$)' + # domain + r'|\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$', re.IGNORECASE) # literal form, ipv4 address (SMTP 4.1.3) + class CombinedAuthBackend(object): def authenticate(self, username=None, password=None): diff --git a/pinry/users/migrations/0001_initial.py b/pinry/users/migrations/0001_initial.py new file mode 100644 index 0000000..1ef1f11 --- /dev/null +++ b/pinry/users/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.contrib.auth.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0006_require_contenttypes_0002'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ], + options={ + 'proxy': True, + }, + bases=('auth.user',), + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/pinry/users/migrations/__init__.py b/pinry/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt index 2387051..763e801 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,12 @@ # core -Django<1.6 +Django>=1.8 Pillow -South requests django-taggit django-images django-braces django_compressor -django-tastypie==0.9.14 +django-tastypie==0.12.2 # testing mock