class PatchComponent(db.Model): __tablename__ = 'patch_components' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) version = db.Column(db.String) patch_id = db.Column(db.Integer, db.ForeignKey('patches.id')) patch = db.relationship('Patch', back_populates='components') criteria = db.relationship( "PatchCompontentCriteria", back_populates="patch_component", cascade='all, delete, delete-orphan') @property def serialize(self): return { 'name': self.name, 'version': self.version, 'criteria': [ criteria.serialize for criteria in self.criteria ] }
class PatchCriteria(db.Model): """Association table for linking sets of criteria to a patch.""" __tablename__ = 'patch_criteria' patch_id = db.Column(db.Integer, db.ForeignKey('patches.id'), primary_key=True) criteria_id = db.Column(db.Integer, db.ForeignKey('criteria.id'), primary_key=True) index = db.Column(db.Integer) patch = db.relationship('Patch', back_populates='capabilities') criteria = db.relationship('Criteria', back_populates='patch') @property def serialize(self): return self.criteria.serialize
class Patch(db.Model): __tablename__ = 'patches' id = db.Column(db.Integer, primary_key=True) version = db.Column(db.String) standalone = db.Column(db.Boolean, default=True) minimum_operating_system = db.Column(db.String) reboot = db.Column(db.Boolean, default=False) release_date = db.Column(db.DateTime) software_title_id = db.Column( db.Integer, db.ForeignKey('software_titles.id')) software_title = db.relationship( 'SoftwareTitle', back_populates='patches') kill_apps = db.relationship( "PatchKillApps", back_populates="patch", cascade='all, delete') components = db.relationship( "PatchComponent", back_populates="patch", cascade='all, delete') capabilities = db.relationship( "PatchCriteria", back_populates="patch", cascade='all, delete, delete-orphan') dependencies = None # Not used @property def serialize(self): return { 'version': self.version, 'releaseDate': datetime_to_iso(self.release_date), 'standalone': self.standalone, 'minimumOperatingSystem': self.minimum_operating_system, 'reboot': self.reboot, 'killApps': [ killApp.serialize for killApp in self.kill_apps ], 'components': [ component.serialize for component in self.components ], 'capabilities': [ criteria.serialize for criteria in self.capabilities ] # 'dependencies': [] }
class SoftwareTitleCriteria(db.Model): """Association table for linking sets of criteria to a software title.""" __tablename__ = 'software_title_criteria' title_id = db.Column( db.Integer, db.ForeignKey('software_titles.id'), primary_key=True) criteria_id = db.Column( db.Integer, db.ForeignKey('criteria.id'), primary_key=True) index = db.Column(db.Integer) software_title = db.relationship( 'SoftwareTitle', back_populates='requirements') criteria = db.relationship( 'Criteria', back_populates='software_title') @property def serialize(self): data = self.criteria.serialize data['index'] = self.index return data
class PatchKillApps(db.Model): __tablename__ = 'patch_kill_apps' id = db.Column(db.Integer, primary_key=True) bundleId = db.Column(db.String(255)) appName = db.Column(db.String(255)) patch_id = db.Column(db.Integer, db.ForeignKey('patches.id')) patch = db.relationship('Patch', back_populates='kill_apps') @property def serialize(self): return {'bundleId': self.bundleId, 'appName': self.appName}
class ExtensionAttribute(db.Model): __tablename__ = 'extension_attributes' id = db.Column(db.Integer, primary_key=True) key = db.Column(db.String(255)) value = db.Column(db.Text) display_name = db.Column(db.String(255)) software_title_id = db.Column(db.Integer, db.ForeignKey('software_titles.id')) software_title = db.relationship('SoftwareTitle', back_populates='extension_attributes') @property def serialize(self): return { 'key': self.key, 'value': self.value, 'displayName': self.display_name }