added get_next_value to SequenceField
This commit is contained in:
parent
5e94637adc
commit
731d8fc6be
@ -1465,6 +1465,17 @@ class SequenceField(BaseField):
|
||||
upsert=True)
|
||||
return self.value_decorator(counter['next'])
|
||||
|
||||
def get_next_value(self):
|
||||
sequence_name = self.get_sequence_name()
|
||||
sequence_id = "%s.%s" % (sequence_name, self.name)
|
||||
collection = get_db(alias=self.db_alias)[self.collection_name]
|
||||
data = collection.find_one({"_id": sequence_id})
|
||||
|
||||
if data:
|
||||
return data['next']
|
||||
|
||||
return 1
|
||||
|
||||
def get_sequence_name(self):
|
||||
if self.sequence_name:
|
||||
return self.sequence_name
|
||||
|
@ -1917,6 +1917,23 @@ class FieldTest(unittest.TestCase):
|
||||
c = self.db['mongoengine.counters'].find_one({'_id': 'person.id'})
|
||||
self.assertEqual(c['next'], 1000)
|
||||
|
||||
|
||||
def test_sequence_field_get_next_value(self):
|
||||
class Person(Document):
|
||||
id = SequenceField(primary_key=True)
|
||||
name = StringField()
|
||||
|
||||
self.db['mongoengine.counters'].drop()
|
||||
Person.drop_collection()
|
||||
|
||||
for x in xrange(10):
|
||||
Person(name="Person %s" % x).save()
|
||||
|
||||
self.assertEqual(Person.id.get_next_value(), 10)
|
||||
self.db['mongoengine.counters'].drop()
|
||||
|
||||
self.assertEqual(Person.id.get_next_value(), 1)
|
||||
|
||||
def test_sequence_field_sequence_name(self):
|
||||
class Person(Document):
|
||||
id = SequenceField(primary_key=True, sequence_name='jelly')
|
||||
|
Loading…
x
Reference in New Issue
Block a user