mirror of
https://github.com/kennethreitz-archive/patch-service.git
synced 2026-06-05 15:20:19 +00:00
112 lines
3.1 KiB
Python
112 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
springcreek.models
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
This module contains the database mdoels of SpringCreek.
|
|
"""
|
|
|
|
from uuid import uuid4
|
|
from datetime import datetime
|
|
|
|
from flask import url_for
|
|
from flaskext.sqlalchemy import SQLAlchemy
|
|
|
|
db = SQLAlchemy()
|
|
|
|
def generate_token():
|
|
return uuid4().hex
|
|
|
|
class BaseModel(object):
|
|
id = db.Column(db.Integer, unique=True, primary_key=True)
|
|
created = db.Column(db.DateTime(timezone=False), default=datetime.utcnow)
|
|
|
|
def save(self):
|
|
db.session.add(self)
|
|
return db.session.commit()
|
|
|
|
|
|
class Account(db.Model, BaseModel):
|
|
"""A user's authentication account."""
|
|
|
|
__tablename__ = 'account'
|
|
username = db.Column(db.String(40), unique=True, primary_key=True)
|
|
token = db.Column(db.String(40), unique=True, primary_key=True, default=generate_token)
|
|
password = db.Column(db.String(100), unique=False)
|
|
sudo = db.Column(db.Boolean, default=False)
|
|
|
|
def __init__(self, arg):
|
|
super(Account, self).__init__()
|
|
|
|
class User(db.Model, BaseModel):
|
|
"""A User profile."""
|
|
|
|
__tablename__ = 'user'
|
|
name = db.Column(db.String(40), unique=True, primary_key=True)
|
|
email = db.Column(db.String(100), unique=True, primary_key=True)
|
|
bio = db.Column(db.String(10000))
|
|
website = db.Column(db.String(300))
|
|
location = db.Column(db.String(100))
|
|
|
|
def __init__(self, arg):
|
|
super(User, self).__init__()
|
|
|
|
|
|
class Patch(db.Model, BaseModel):
|
|
"""A User's patch."""
|
|
|
|
__tablename__ = 'patch'
|
|
name = db.Column(db.String(100), unique=True, primary_key=True)
|
|
description = db.Column(db.String(10000))
|
|
device_id = db.Column(db.Integer, db.ForeignKey('device.id'))
|
|
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
|
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
|
|
downloads = db.relationship('Download', backref='patch')
|
|
|
|
bio = db.Column(db.String(2000))
|
|
website = db.Column(db.String(300))
|
|
location = db.Column(db.String(100))
|
|
|
|
def __init__(self, arg):
|
|
super(User, self).__init__()
|
|
|
|
|
|
class Download(db.Model, BaseModel):
|
|
"""A User's download."""
|
|
|
|
__tablename__ = 'download'
|
|
patch_id = db.Column(db.Integer, db.ForeignKey('patch.id'))
|
|
checksum = db.Column(db.String(100))
|
|
file_name = db.Column(db.String(100))
|
|
file_size = db.Column(db.Integer)
|
|
|
|
def __init__(self, arg):
|
|
super(User, self).__init__()
|
|
|
|
|
|
class Device(db.Model, BaseModel):
|
|
"""A Patch Device."""
|
|
|
|
__tablename__ = 'device'
|
|
name = db.Column(db.String(100))
|
|
vanity_name = db.Column(db.String(100))
|
|
file_size = db.Column(db.Integer)
|
|
make = db.Column(db.String(100))
|
|
model = db.Column(db.String(100))
|
|
patches = db.relationship('Patch', backref='device')
|
|
|
|
def __init__(self, arg):
|
|
super(User, self).__init__()
|
|
|
|
|
|
class Category(db.Model, BaseModel):
|
|
"""A Patch category."""
|
|
|
|
__tablename__ = 'category'
|
|
name = db.Column(db.String(100))
|
|
vanity_name = db.Column(db.String(100))
|
|
patches = db.relationship('Patch', backref='category')
|
|
|
|
def __init__(self, arg):
|
|
super(User, self).__init__() |