From 8c7255dc077f68b32b35add772c84573e13373f3 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 18 Apr 2017 15:05:09 -0600 Subject: [PATCH 1/2] Added created field to Sessions model --- tests/tests.py | 2 ++ user_sessions/admin.py | 1 + .../migrations/0004_session_created.py | 28 +++++++++++++++++++ user_sessions/models.py | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 user_sessions/migrations/0004_session_created.py diff --git a/tests/tests.py b/tests/tests.py index c6ed2fb..ea814ee 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -201,6 +201,8 @@ def test_save(self): self.assertEqual(session.user_agent, 'Python/2.7') self.assertEqual(session.ip, '127.0.0.1') self.assertEqual(session.user_id, 1) + self.assertAlmostEqual(now(), session.created, + delta=timedelta(seconds=5)) self.assertAlmostEqual(now(), session.last_activity, delta=timedelta(seconds=5)) diff --git a/user_sessions/admin.py b/user_sessions/admin.py index a7825eb..7c50819 100644 --- a/user_sessions/admin.py +++ b/user_sessions/admin.py @@ -53,6 +53,7 @@ class SessionAdmin(admin.ModelAdmin): list_filter = ExpiredFilter, OwnerFilter raw_id_fields = 'user', exclude = 'session_key', + readonly_fields = 'created', 'last_activity', def __init__(self, *args, **kwargs): super(SessionAdmin, self).__init__(*args, **kwargs) diff --git a/user_sessions/migrations/0004_session_created.py b/user_sessions/migrations/0004_session_created.py new file mode 100644 index 0000000..a9d7c5e --- /dev/null +++ b/user_sessions/migrations/0004_session_created.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import datetime + +def set_created(apps, schema_editor): + Session = apps.get_model('user_sessions', 'Session') + + for obj in Session.objects.all(): + obj.created = obj.last_activity + obj.save() + +class Migration(migrations.Migration): + + dependencies = [ + ('user_sessions', '0003_auto_20161205_1516'), + ] + + operations = [ + migrations.AddField( + model_name='session', + name='created', + field=models.DateTimeField(default=datetime.datetime(2017, 4, 18, 12, 11, 0, 286186), auto_now_add=True), + preserve_default=False, + ), + migrations.RunPython(set_created), + ] diff --git a/user_sessions/models.py b/user_sessions/models.py index c66c925..66b3b89 100644 --- a/user_sessions/models.py +++ b/user_sessions/models.py @@ -52,7 +52,7 @@ def get_decoded(self): user_agent = models.CharField(null=True, blank=True, max_length=200) last_activity = models.DateTimeField(auto_now=True) ip = models.GenericIPAddressField(null=True, blank=True, verbose_name='IP') - + created = models.DateTimeField(auto_now_add=True) # At bottom to avoid circular import from .backends.db import SessionStore # noqa: E402 From c5e8678be6de460dcc6254d8db9dabdb92481684 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 19 Apr 2017 00:40:24 -0600 Subject: [PATCH 2/2] Made data migration for created reversible --- user_sessions/migrations/0004_session_created.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_sessions/migrations/0004_session_created.py b/user_sessions/migrations/0004_session_created.py index a9d7c5e..660b097 100644 --- a/user_sessions/migrations/0004_session_created.py +++ b/user_sessions/migrations/0004_session_created.py @@ -24,5 +24,5 @@ class Migration(migrations.Migration): field=models.DateTimeField(default=datetime.datetime(2017, 4, 18, 12, 11, 0, 286186), auto_now_add=True), preserve_default=False, ), - migrations.RunPython(set_created), + migrations.RunPython(set_created, reverse_code=migrations.RunPython.noop), ]