1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #24894 -- Added contrib.postgres.functions.TransactionNow

This commit is contained in:
Adam Chainz
2015-06-01 18:00:34 +01:00
committed by Tim Graham
parent 3872a33132
commit d34d39ade7
8 changed files with 96 additions and 1 deletions

View File

@@ -130,6 +130,13 @@ class Migration(migrations.Migration):
('related_field', models.ForeignKey('postgres_tests.AggregateTestModel', null=True)),
]
),
migrations.CreateModel(
name='NowTestModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('when', models.DateTimeField(null=True, default=None)),
]
),
]
pg_92_operations = [

View File

@@ -109,3 +109,7 @@ class StatTestModel(models.Model):
int1 = models.IntegerField()
int2 = models.IntegerField()
related_field = models.ForeignKey(AggregateTestModel, null=True)
class NowTestModel(models.Model):
when = models.DateTimeField(null=True, default=None)

View File

@@ -0,0 +1,28 @@
from datetime import datetime
from time import sleep
from django.contrib.postgres.functions import TransactionNow
from . import PostgreSQLTestCase
from .models import NowTestModel
class TestTransactionNow(PostgreSQLTestCase):
def test_transaction_now(self):
"""
The test case puts everything under a transaction, so two models
updated with a short gap should have the same time.
"""
m1 = NowTestModel.objects.create()
m2 = NowTestModel.objects.create()
NowTestModel.objects.filter(id=m1.id).update(when=TransactionNow())
sleep(0.1)
NowTestModel.objects.filter(id=m2.id).update(when=TransactionNow())
m1.refresh_from_db()
m2.refresh_from_db()
self.assertIsInstance(m1.when, datetime)
self.assertEqual(m1.when, m2.when)