mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-05 02:41:14 -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 (
|
||||
transactional,
|
||||
versioned
|
||||
version_class
|
||||
)
|
||||
|
||||
|
||||
@transactional
|
||||
@versioned
|
||||
@version_class(ApiKey)
|
||||
def save_model_api_key(api_key, update_dict={}):
|
||||
if update_dict:
|
||||
update_dict.pop('id', None)
|
||||
|
||||
@@ -18,13 +18,16 @@ def transactional(func):
|
||||
return commit_or_rollback
|
||||
|
||||
|
||||
def versioned(func):
|
||||
@wraps(func)
|
||||
def record_version(*args, **kwargs):
|
||||
from app import db
|
||||
func(*args, **kwargs)
|
||||
history_objects = [create_history(obj) for obj in
|
||||
versioned_objects(itertools.chain(db.session.new, db.session.dirty))]
|
||||
for h_obj in history_objects:
|
||||
db.session.add(h_obj)
|
||||
return record_version
|
||||
def version_class(model_class):
|
||||
def versioned(func):
|
||||
@wraps(func)
|
||||
def record_version(*args, **kwargs):
|
||||
from app import db
|
||||
func(*args, **kwargs)
|
||||
history_objects = [create_history(obj) for obj in
|
||||
versioned_objects(itertools.chain(db.session.new, db.session.dirty))
|
||||
if isinstance(obj, model_class)]
|
||||
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 (
|
||||
transactional,
|
||||
versioned
|
||||
version_class
|
||||
)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ def dao_fetch_service_by_id_and_user(service_id, user_id):
|
||||
|
||||
|
||||
@transactional
|
||||
@versioned
|
||||
@version_class(Service)
|
||||
def dao_create_service(service, user):
|
||||
from app.dao.permissions_dao import permission_dao
|
||||
service.users.append(user)
|
||||
@@ -37,7 +37,7 @@ def dao_create_service(service, user):
|
||||
|
||||
|
||||
@transactional
|
||||
@versioned
|
||||
@version_class(Service)
|
||||
def dao_update_service(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")
|
||||
except:
|
||||
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