1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Fixed #27996 -- Added RandomUUID function and CryptoExtension to contrib.postgres.

This commit is contained in:
Paolo Melchiorre
2017-03-29 23:52:42 +02:00
committed by Tim Graham
parent 98ee57e343
commit fcb5dbfec0
9 changed files with 81 additions and 5 deletions

View File

@@ -4,13 +4,14 @@ from django.db import migrations
try:
from django.contrib.postgres.operations import (
BtreeGinExtension, CITextExtension, CreateExtension, HStoreExtension,
TrigramExtension, UnaccentExtension,
BtreeGinExtension, CITextExtension, CreateExtension, CryptoExtension,
HStoreExtension, TrigramExtension, UnaccentExtension,
)
except ImportError:
BtreeGinExtension = mock.Mock()
CITextExtension = mock.Mock()
CreateExtension = mock.Mock()
CryptoExtension = mock.Mock()
HStoreExtension = mock.Mock()
TrigramExtension = mock.Mock()
UnaccentExtension = mock.Mock()
@@ -24,6 +25,7 @@ class Migration(migrations.Migration):
# Ensure CreateExtension quotes extension names by creating one with a
# dash in its name.
CreateExtension('uuid-ossp'),
CryptoExtension(),
HStoreExtension(),
TrigramExtension(),
UnaccentExtension(),

View File

@@ -191,6 +191,13 @@ class Migration(migrations.Migration):
('when', models.DateTimeField(null=True, default=None)),
]
),
migrations.CreateModel(
name='UUIDTestModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('uuid', models.UUIDField(default=None, null=True)),
]
),
migrations.CreateModel(
name='RangesModel',
fields=[

View File

@@ -171,3 +171,7 @@ class StatTestModel(models.Model):
class NowTestModel(models.Model):
when = models.DateTimeField(null=True, default=None)
class UUIDTestModel(models.Model):
uuid = models.UUIDField(default=None, null=True)

View File

@@ -1,10 +1,11 @@
import uuid
from datetime import datetime
from time import sleep
from django.contrib.postgres.functions import TransactionNow
from django.contrib.postgres.functions import RandomUUID, TransactionNow
from . import PostgreSQLTestCase
from .models import NowTestModel
from .models import NowTestModel, UUIDTestModel
class TestTransactionNow(PostgreSQLTestCase):
@@ -26,3 +27,15 @@ class TestTransactionNow(PostgreSQLTestCase):
self.assertIsInstance(m1.when, datetime)
self.assertEqual(m1.when, m2.when)
class TestRandomUUID(PostgreSQLTestCase):
def test_random_uuid(self):
m1 = UUIDTestModel.objects.create()
m2 = UUIDTestModel.objects.create()
UUIDTestModel.objects.update(uuid=RandomUUID())
m1.refresh_from_db()
m2.refresh_from_db()
self.assertIsInstance(m1.uuid, uuid.UUID)
self.assertNotEqual(m1.uuid, m2.uuid)