class Part(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(40)) manufacturer = db.Column(db.String(40)) ordering_code = db.Column(db.String(40), unique=True) case_id = db.Column(db.Integer, db.ForeignKey('package.id')) description = db.Column(db.String(100)) category = db.Column(db.Integer, db.ForeignKey('part_category.id')) recommended = db.Column(db.Boolean) assemblies = db.relationship('Assembly', secondary='assembly_part_association', backref='part', lazy='dynamic') def __init__(self, name, manufacturer, ordering_code, case_id, description="", category=None): self.name = name self.manufacturer = manufacturer self.ordering_code = ordering_code self.case_id = case_id self.description = description self.category = category def __repr__(self): return '<Part: %r %r>' % (self.manufacturer, self.ordering_code)
class Author(db.Model): id = db.Column(db.Integer, primary_key=True) fullname = db.Column(db.String(80)) email = db.Column(db.String(35), unique=True) username = db.Column(db.String(25), unique=True) password = db.Column(db.String(60)) authorization_level = db.Column(db.Integer) # authorization levels: # 0 - passive (restrited access, read only) # 1 - member (restricted access) # 2 - mod (extended access) # 3 - admin (full access) # posts = db.relationship('Post', backref='author', lazy='dynamic') def __init__(self, fullname, email, username, password, authorization_level=1): self.fullname = fullname self.email = email self.username = username self.password = password self.authorization_level = authorization_level def __repr__(self): return '<Author %r>' % self.username
class Assembly(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) description = db.Column(db.String(200)) engineerSch = db.Column(db.String(50)) engineerPcb = db.Column(db.String(50)) year = db.Column(db.Integer) revision = db.Column(db.Integer) parts = db.relationship('Part', secondary='assembly_part_association', backref='assembly', lazy='dynamic') def __init__(self, name, engineerSch, engineerPcb, year, revision, description=""): self.name = name self.description = description self.engineerSch = engineerSch self.engineerPcb = engineerPcb self.year = year self.revision = revision def __repr__(self): return '<Assembly: %s, rev %s>' % (self.name, self.revision)
class PartCategory(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) description = db.Column(db.String(200)) parent_category_id = db.Column(db.Integer, db.ForeignKey('part_category.id')) def __init__(self, name, description="", parent_category_id=0): self.name = name self.description = description self.parent_category_id = parent_category_id def __repr__(self): return '<Category: %s>' % self.name
class AltPackage(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), unique=True) parent_package_id = db.Column(db.Integer, db.ForeignKey('package.id')) def __init__(self, name, parent_id): self.name = name self.parent_package_id = parent_id def __repr__(self): return '<Case Alternate name: %r>' % self.name
class Package(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) pin_count = db.Column(db.Integer) pitch = db.Column(db.Float) width = db.Column(db.Float) length = db.Column(db.Float) height = db.Column(db.Float) alt_names = db.relationship('AltPackage', backref='package', lazy='dynamic') parts = db.relationship('Part', backref='package', lazy='dynamic') def __init__(self, name, pin_count, pitch, width, length, height): self.name = name self.pin_count = pin_count self.pitch = pitch self.width = width self.length = length self.height = height def __repr__(self): return '<Package: %r>' % self.name