Fix issues with delete-cascade

The important tables `xml` and `registration` were not properly set for their `CASCADE` behavior, in addiiton `XML` needed to have the `single_parent` option enabled to allow for cascading-deletes (since otherwise a single entry could be referenced by an entry and a error.
select-best-date
Mike Benowitz 2019-08-05 14:41:27 -04:00
parent 4b1c0b5f1d
commit 0a8fb1cde4
2 changed files with 16 additions and 5 deletions

View File

@ -39,7 +39,11 @@ class CCE(Core, Base):
volume_id = Column(Integer, ForeignKey('volume.id')) volume_id = Column(Integer, ForeignKey('volume.id'))
registrations = relationship('Registration', backref='cce') registrations = relationship(
'Registration',
backref='cce',
cascade='all, delete-orphan'
)
lccns = relationship('LCCN', backref='cce', cascade='all, delete-orphan') lccns = relationship('LCCN', backref='cce', cascade='all, delete-orphan')
authors = relationship('Author', authors = relationship('Author',
backref='cce', cascade='all, delete-orphan') backref='cce', cascade='all, delete-orphan')

View File

@ -14,9 +14,11 @@ from sqlalchemy import (
from model.core import Base, Core from model.core import Base, Core
@compiles(String, 'postgresql') @compiles(String, 'postgresql')
def compile_xml(type_, compiler, **kw): def compile_xml(type_, compiler, **kw):
return "XML" return 'XML'
ENTRY_XML = Table( ENTRY_XML = Table(
'entry_xml', 'entry_xml',
@ -32,19 +34,24 @@ ERROR_XML = Table(
Column('xml_id', Integer, ForeignKey('xml.id'), index=True) Column('xml_id', Integer, ForeignKey('xml.id'), index=True)
) )
class XML(Core, Base): class XML(Core, Base):
__tablename__ = 'xml' __tablename__ = 'xml'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
xml_source = Column(String) xml_source = Column(String)
entry = relationship( entry = relationship(
'CCE', 'CCE',
secondary=ENTRY_XML, secondary=ENTRY_XML,
backref='xml_sources' backref='xml_sources',
single_parent=True,
cascade='all, delete-orphan'
) )
error_entry = relationship( error_entry = relationship(
'ErrorCCE', 'ErrorCCE',
secondary=ERROR_XML, secondary=ERROR_XML,
backref='xml_sources' backref='xml_sources',
single_parent=True,
cascade='all, delete-orphan'
) )