This approach uses part of sqlalchemy example history_meta code

adapted to recording inserts and updates.

This removes need to manually create history tables.

Our code still remains in control of when history records are
created.
This commit is contained in:
Adam Shimali
2016-04-14 15:09:59 +01:00
parent 16553af133
commit a6a18c1a6f
10 changed files with 442 additions and 54 deletions

View File

@@ -1,7 +1,14 @@
import uuid
from app import db
from app.models import Service
from sqlalchemy import asc
from app.dao.dao_utils import (
transactional,
versioned
)
def dao_fetch_all_services():
return Service.query.order_by(asc(Service.created_at)).all()
@@ -19,22 +26,20 @@ def dao_fetch_service_by_id_and_user(service_id, user_id):
return Service.query.filter(Service.users.any(id=user_id)).filter_by(id=service_id).one()
@transactional
@versioned
def dao_create_service(service, user):
try:
from app.dao.permissions_dao import permission_dao
service.users.append(user)
permission_dao.add_default_service_permissions_for_user(user, service)
db.session.add(service)
except Exception as e:
db.session.rollback()
raise e
else:
db.session.commit()
from app.dao.permissions_dao import permission_dao
service.users.append(user)
permission_dao.add_default_service_permissions_for_user(user, service)
service.id = uuid.uuid4() # must be set now so version history model can use same id
db.session.add(service)
@transactional
@versioned
def dao_update_service(service):
db.session.add(service)
db.session.commit()
def dao_add_user_to_service(service, user, permissions=[]):