From 3a331e51e9f42238dfb749b26d1895339e09873e Mon Sep 17 00:00:00 2001 From: Jelena Kutalovskaja Date: Fri, 29 Jan 2016 10:36:37 +0200 Subject: [PATCH 1/2] Compatibility with Django 1.8. Migrations --- webmachine/migrations/0001_initial.py | 52 +++++++++++++++++++ .../migrations/0002_auto_20160129_0014.py | 19 +++++++ webmachine/migrations/__init__.py | 0 3 files changed, 71 insertions(+) create mode 100644 webmachine/migrations/0001_initial.py create mode 100644 webmachine/migrations/0002_auto_20160129_0014.py create mode 100644 webmachine/migrations/__init__.py diff --git a/webmachine/migrations/0001_initial.py b/webmachine/migrations/0001_initial.py new file mode 100644 index 0000000..d5b871b --- /dev/null +++ b/webmachine/migrations/0001_initial.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Consumer', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('name', models.CharField(max_length=255)), + ('key', models.CharField(max_length=32)), + ('secret', models.CharField(max_length=32)), + ('description', models.TextField()), + ('status', models.SmallIntegerField(default=1, choices=[(1, 'Pending'), (2, 'Accepted'), (3, 'Canceled'), (4, 'Rejected')])), + ('user', models.ForeignKey(related_name='consumers_user', blank=True, to=settings.AUTH_USER_MODEL, null=True)), + ], + ), + migrations.CreateModel( + name='Nonce', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('token_key', models.CharField(max_length=32)), + ('consumer_key', models.CharField(max_length=32)), + ('key', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Token', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('key', models.CharField(max_length=32)), + ('secret', models.CharField(max_length=32)), + ('token_type', models.SmallIntegerField(choices=[(1, 'Access'), (2, 'Request')])), + ('callback', models.CharField(max_length=2048)), + ('callback_confirmed', models.BooleanField(default=False)), + ('verifier', models.CharField(max_length=16)), + ('timestamp', models.IntegerField(default=1454054828.411826)), + ('is_approved', models.BooleanField(default=False)), + ('consumer', models.ForeignKey(related_name='tokens_consumer', to='webmachine.Consumer')), + ('user', models.ForeignKey(related_name='tokens_user', blank=True, to=settings.AUTH_USER_MODEL, null=True)), + ], + ), + ] diff --git a/webmachine/migrations/0002_auto_20160129_0014.py b/webmachine/migrations/0002_auto_20160129_0014.py new file mode 100644 index 0000000..e9e020e --- /dev/null +++ b/webmachine/migrations/0002_auto_20160129_0014.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('webmachine', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='token', + name='timestamp', + field=models.IntegerField(default=1454055261.499175), + ), + ] diff --git a/webmachine/migrations/__init__.py b/webmachine/migrations/__init__.py new file mode 100644 index 0000000..e69de29 From d0c43f451674cd18714988300a7f437e12dcd294 Mon Sep 17 00:00:00 2001 From: Jelena Kutalovskaja Date: Fri, 29 Jan 2016 13:06:30 +0200 Subject: [PATCH 2/2] migrations shouldn't contain default value as time.time --- ...2_auto_20160129_0014.py => 0002_auto_20160129_0247.py} | 3 ++- webmachine/models.py | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) rename webmachine/migrations/{0002_auto_20160129_0014.py => 0002_auto_20160129_0247.py} (76%) diff --git a/webmachine/migrations/0002_auto_20160129_0014.py b/webmachine/migrations/0002_auto_20160129_0247.py similarity index 76% rename from webmachine/migrations/0002_auto_20160129_0014.py rename to webmachine/migrations/0002_auto_20160129_0247.py index e9e020e..513c8f0 100644 --- a/webmachine/migrations/0002_auto_20160129_0014.py +++ b/webmachine/migrations/0002_auto_20160129_0247.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.db import models, migrations +import webmachine.models class Migration(migrations.Migration): @@ -14,6 +15,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='token', name='timestamp', - field=models.IntegerField(default=1454055261.499175), + field=models.IntegerField(default=webmachine.models.generate_time), ), ] diff --git a/webmachine/models.py b/webmachine/models.py index 3b6de2e..3179b33 100644 --- a/webmachine/models.py +++ b/webmachine/models.py @@ -15,6 +15,11 @@ from webmachine.managers import ConsumerManager, TokenManager + +def generate_time(): + return time.time() + + def generate_random(length=SECRET_SIZE): return User.objects.make_random_password(length=length) @@ -41,6 +46,7 @@ def __str__(self): return urllib.urlencode(data) + class Token(models.Model): key = models.CharField(max_length=KEY_SIZE) secret = models.CharField(max_length=SECRET_SIZE) @@ -50,7 +56,7 @@ class Token(models.Model): verifier = models.CharField(max_length=VERIFIER_SIZE) consumer = models.ForeignKey(Consumer, related_name="tokens_consumer") - timestamp = models.IntegerField(default=time.time()) + timestamp = models.IntegerField(default=generate_time) user = models.ForeignKey(User, null=True, blank=True, related_name="tokens_user") is_approved = models.BooleanField(default=False)