Revert "Refactored service permissisons data model"

This commit is contained in:
kentsanggds
2017-05-22 16:05:31 +01:00
committed by GitHub
parent 39f23c6189
commit f5d3eed7e0
4 changed files with 19 additions and 64 deletions

View File

@@ -3,7 +3,6 @@ import uuid
import datetime
from flask import url_for, current_app
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.dialects.postgresql import (
UUID,
@@ -145,9 +144,9 @@ class DVLAOrganisation(db.Model):
INTERNATIONAL_SMS_TYPE = 'international_sms'
INBOUND_SMS_TYPE = 'inbound_sms'
INCOMING_SMS_TYPE = 'incoming_sms'
SERVICE_PERMISSION_TYPES = [EMAIL_TYPE, SMS_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, INBOUND_SMS_TYPE]
SERVICE_PERMISSION_TYPES = [EMAIL_TYPE, SMS_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, INCOMING_SMS_TYPE]
class ServicePermissionTypes(db.Model):
@@ -156,6 +155,18 @@ class ServicePermissionTypes(db.Model):
name = db.Column(db.String(255), primary_key=True)
class ServicePermission(db.Model):
__tablename__ = "service_permissions"
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'),
primary_key=True, index=True, nullable=False)
service = db.relationship('Service')
permission = db.Column(db.String(255), db.ForeignKey('service_permission_types.name'),
index=True, primary_key=True, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
class Service(db.Model, Versioned):
__tablename__ = 'services'
@@ -206,8 +217,7 @@ class Service(db.Model, Versioned):
nullable=False,
default=BRANDING_GOVUK
)
association_proxy('permissions', 'service_permission_types')
permissions = db.relationship('ServicePermission')
# This is only for backward compatibility and will be dropped when the columns are removed from the data model
def set_permissions(self):
@@ -216,22 +226,6 @@ class Service(db.Model, Versioned):
self.can_send_international_sms = INTERNATIONAL_SMS_TYPE in [p.permission for p in self.permissions]
class ServicePermission(db.Model):
__tablename__ = "service_permissions"
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'),
primary_key=True, index=True, nullable=False)
permission = db.Column(db.String(255), db.ForeignKey('service_permission_types.name'),
index=True, primary_key=True, nullable=False)
service = db.relationship("Service")
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
service_permission_types = db.relationship(Service, backref=db.backref("permissions"))
def __repr__(self):
return '<{} has service permission: {}>'.format(self.service_id, self.permission)
MOBILE_TYPE = 'mobile'
EMAIL_TYPE = 'email'