Skip to content

Commit

Permalink
Rename _ModelUtilitiesMixin methods
Browse files Browse the repository at this point in the history
  • Loading branch information
epandurski committed Feb 10, 2019
1 parent 84273d9 commit 6d215e3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
8 changes: 4 additions & 4 deletions flask_signalbus/atomic.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

class _ModelUtilitiesMixin(object):
@classmethod
def _get_instance(cls, instance_or_pk):
def get_instance(cls, instance_or_pk):
"""Return an instance in `db.session` when given any instance or a primary key."""

if isinstance(instance_or_pk, cls):
Expand All @@ -28,17 +28,17 @@ def _get_instance(cls, instance_or_pk):
return cls.query.get(instance_or_pk)

@classmethod
def _lock_instance(cls, instance_or_pk, read=False):
def lock_instance(cls, instance_or_pk, read=False):
"""Return a locked instance in `db.session` when given any instance or a primary key."""

mapper = inspect(cls)
pk_attrs = [mapper.get_property_by_column(c).class_attribute for c in mapper.primary_key]
pk_values = cls._get_pk_values(instance_or_pk)
pk_values = cls.get_pk_values(instance_or_pk)
clause = and_(*[attr == value for attr, value in zip(pk_attrs, pk_values)])
return cls.query.filter(clause).with_for_update(read=read).one_or_none()

@classmethod
def _get_pk_values(cls, instance_or_pk):
def get_pk_values(cls, instance_or_pk):
"""Return a primary key as a tuple when given any instance or primary key."""

if isinstance(instance_or_pk, cls):
Expand Down
26 changes: 13 additions & 13 deletions tests/test_atomic.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,34 +125,34 @@ def test_get_instance(atomic_db, AtomicModel):
db = atomic_db
o = AtomicModel(id=1, name='test', value='1')
assert o not in db.session
assert AtomicModel._get_instance(o) is None
assert AtomicModel.get_instance(o) is None
db.session.add(o)
assert AtomicModel._get_instance(o) is o
assert AtomicModel.get_instance(o) is o
assert o in db.session
pk = o.id
db.session.commit()
assert AtomicModel._get_instance(pk) in db.session
assert AtomicModel._get_instance((pk,)) in db.session
assert AtomicModel._get_instance(o) in db.session
assert AtomicModel.get_instance(pk) in db.session
assert AtomicModel.get_instance((pk,)) in db.session
assert AtomicModel.get_instance(o) in db.session


def test_lock_instance(atomic_db, AtomicModel):
db = atomic_db
o = AtomicModel(id=1, name='test', value='1')
assert o not in db.session
assert AtomicModel._lock_instance(o) is None
assert AtomicModel.lock_instance(o) is None
db.session.add(o)
assert AtomicModel._lock_instance(o) is o
assert AtomicModel.lock_instance(o) is o
assert o in db.session
pk = o.id
db.session.commit()
assert AtomicModel._lock_instance(pk) in db.session
assert AtomicModel._lock_instance((pk,)) in db.session
assert AtomicModel._lock_instance(o) in db.session
assert AtomicModel.lock_instance(pk) in db.session
assert AtomicModel.lock_instance((pk,)) in db.session
assert AtomicModel.lock_instance(o) in db.session


def test_get_pk_values(atomic_db, AtomicModel):
o = AtomicModel(id=1, name='test', value='1')
assert AtomicModel._get_pk_values(o) == (o.id,)
assert AtomicModel._get_pk_values(1) == (1,)
assert AtomicModel._get_pk_values((1,)) == (1,)
assert AtomicModel.get_pk_values(o) == (o.id,)
assert AtomicModel.get_pk_values(1) == (1,)
assert AtomicModel.get_pk_values((1,)) == (1,)

0 comments on commit 6d215e3

Please sign in to comment.