mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-05 10:42:41 -05:00
Merge pull request #257 from alphagov/version-history-tweak
Only record history for specified class
This commit is contained in:
@@ -7,12 +7,12 @@ from app.models import ApiKey
|
|||||||
|
|
||||||
from app.dao.dao_utils import (
|
from app.dao.dao_utils import (
|
||||||
transactional,
|
transactional,
|
||||||
versioned
|
version_class
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@transactional
|
@transactional
|
||||||
@versioned
|
@version_class(ApiKey)
|
||||||
def save_model_api_key(api_key, update_dict={}):
|
def save_model_api_key(api_key, update_dict={}):
|
||||||
if update_dict:
|
if update_dict:
|
||||||
update_dict.pop('id', None)
|
update_dict.pop('id', None)
|
||||||
|
|||||||
@@ -18,13 +18,16 @@ def transactional(func):
|
|||||||
return commit_or_rollback
|
return commit_or_rollback
|
||||||
|
|
||||||
|
|
||||||
def versioned(func):
|
def version_class(model_class):
|
||||||
@wraps(func)
|
def versioned(func):
|
||||||
def record_version(*args, **kwargs):
|
@wraps(func)
|
||||||
from app import db
|
def record_version(*args, **kwargs):
|
||||||
func(*args, **kwargs)
|
from app import db
|
||||||
history_objects = [create_history(obj) for obj in
|
func(*args, **kwargs)
|
||||||
versioned_objects(itertools.chain(db.session.new, db.session.dirty))]
|
history_objects = [create_history(obj) for obj in
|
||||||
for h_obj in history_objects:
|
versioned_objects(itertools.chain(db.session.new, db.session.dirty))
|
||||||
db.session.add(h_obj)
|
if isinstance(obj, model_class)]
|
||||||
return record_version
|
for h_obj in history_objects:
|
||||||
|
db.session.add(h_obj)
|
||||||
|
return record_version
|
||||||
|
return versioned
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from sqlalchemy import asc
|
|||||||
|
|
||||||
from app.dao.dao_utils import (
|
from app.dao.dao_utils import (
|
||||||
transactional,
|
transactional,
|
||||||
versioned
|
version_class
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ def dao_fetch_service_by_id_and_user(service_id, user_id):
|
|||||||
|
|
||||||
|
|
||||||
@transactional
|
@transactional
|
||||||
@versioned
|
@version_class(Service)
|
||||||
def dao_create_service(service, user):
|
def dao_create_service(service, user):
|
||||||
from app.dao.permissions_dao import permission_dao
|
from app.dao.permissions_dao import permission_dao
|
||||||
service.users.append(user)
|
service.users.append(user)
|
||||||
@@ -37,7 +37,7 @@ def dao_create_service(service, user):
|
|||||||
|
|
||||||
|
|
||||||
@transactional
|
@transactional
|
||||||
@versioned
|
@version_class(Service)
|
||||||
def dao_update_service(service):
|
def dao_update_service(service):
|
||||||
db.session.add(service)
|
db.session.add(service)
|
||||||
|
|
||||||
|
|||||||
@@ -111,3 +111,18 @@ def test_should_not_allow_duplicate_key_names_per_service(notify_api,
|
|||||||
fail("should throw IntegrityError")
|
fail("should throw IntegrityError")
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_save_api_key_should_not_create_new_service_history(notify_api, notify_db, notify_db_session, sample_service):
|
||||||
|
|
||||||
|
from app.models import Service
|
||||||
|
|
||||||
|
assert Service.query.count() == 1
|
||||||
|
assert Service.get_history_model().query.count() == 1
|
||||||
|
|
||||||
|
api_key = ApiKey(**{'service': sample_service,
|
||||||
|
'name': sample_service.name,
|
||||||
|
'created_by': sample_service.created_by})
|
||||||
|
save_model_api_key(api_key)
|
||||||
|
|
||||||
|
assert Service.get_history_model().query.count() == 1
|
||||||
|
|||||||
Reference in New Issue
Block a user