예제 #1
0
파일: download.py 프로젝트: NlxF/BanYG
class DBTag(db.Model):
    __tablename__ = 'db_start_tag'

    _start_tag = None

    id = db.Column(db.Integer, primary_key=True)
    tag = db.Column(db.String(256))

    @staticmethod
    def start_tag():
        if DBTag._start_tag is None:
            DBTag._start_tag = DBTag.query.limit(1).first().tag

        return DBTag._start_tag

    def __repr__(self):
        return '<db start tag:{}>'.format(self.tag)
예제 #2
0
파일: settings.py 프로젝트: NlxF/BanYG
class Notice(db.Model):
    __tablename__ = 'notices'

    id = db.Column(db.Integer(), primary_key=True)
    content = db.Column(db.Unicode(256))
    valid = db.Column('is_valid',
                      db.Boolean,
                      nullable=False,
                      default=literal(True))
    created_time = db.Column(MyDateTime(), default=db.func.now())

    setting_id = db.Column(db.Integer(), db.ForeignKey('setting.id'))

    def is_valid(self):
        return self.valid

    def __repr__(self):
        return "<UserIP: {0}>".format(self.address)
예제 #3
0
파일: settings.py 프로젝트: NlxF/BanYG
class Setting(db.Model):
    """setting 表"""
    __tablename__ = 'setting'

    id = db.Column(db.Integer, primary_key=True)

    free_download_max_once = db.Column(db.Integer)
    free_download_one_day = db.Column(db.Integer)
    _free_download_step_ = db.Column(db.String(128))
    free_download_search_limit = db.Column(db.Integer)
    charge_download_search_limit = db.Column(db.Integer)

    free_download_speed = db.Column(db.Integer)
    user_download_speed = db.Column(db.Integer)
    memb_download_speed = db.Column(db.Integer)

    # Notices
    notices = db.relationship('Notice',
                              order_by=desc(Notice.id),
                              backref="setting",
                              lazy='dynamic')

    @property
    def free_download_step(self):
        step = []
        for s in self._free_download_step_.split(','):
            try:
                step.append(int(s))
            except ValueError as exc:
                pass
        return tuple(step)

    @free_download_step.setter
    def free_download_step(self, value):
        if isinstance(value, list) or isinstance(value, tuple):
            step = ','.join(str(x) for x in value)
            self._free_download_step_ = step

    free_download_step = synonym('_free_download_step_',
                                 descriptor=free_download_step)

    def __repr__(self):
        return '<Setting :{}>'.format(self.id)
예제 #4
0
파일: download.py 프로젝트: NlxF/BanYG
class FreeDownloadINFO(db.Model):
    """记录免费下载的信息"""
    __tablename__ = 'free_download_count'

    id = db.Column(db.Integer, primary_key=True)
    start = db.Column(db.Integer, nullable=False)  # default=literal(100)
    end = db.Column(db.Integer, nullable=False)
    tag = db.Column(db.String(20))
    time_start = db.Column(MyDateTime, default=db.func.now())
    time_end = db.Column(MyDateTime,
                         default=db.func.now(),
                         onupdate=db.func.now())

    def __init__(self, start, end=None):
        self.start = start
        if end is None:
            end = start
        self.end = end
        self.tag = str(TimeConver.utc_time_now().date())

    def __repr__(self):
        return '<FreeDownloadINFO start at:{} with size:{},end at:{}>'.format(
            self.time_start, self.start, self.time_end)
예제 #5
0
파일: download.py 프로젝트: NlxF/BanYG
    def model(tag=None):
        if tag is None:
            tag = str(TimeConver.utc_time_now().strftime("%Y%m"))
        class_name = 'DownloadRecord_{}'.format(tag)

        ModelClass = DownloadRecord._mapper.get(class_name, None)
        if ModelClass is None:
            ModelClass = type(
                class_name, (db.Model, ), {
                    '__module__':
                    __name__,
                    '__name__':
                    class_name,
                    '__tablename__':
                    'downloads_record_{}'.format(tag),
                    'model_tag':
                    tag,
                    'id':
                    db.Column(db.Integer, primary_key=True),
                    'url':
                    db.Column(db.Unicode(1024)),
                    'title':
                    db.Column(db.Unicode(1024)),
                    'ip':
                    db.Column(db.String(64)),
                    'fp':
                    db.Column(db.String(62)),
                    'username':
                    db.Column(db.String(80), nullable=True),
                    'user_id':
                    db.Column(db.Integer, nullable=True),
                    'time':
                    db.Column(MyDateTime, default=db.func.now()),
                    'is_free':
                    db.Column("is_free", db.Boolean, default=literal(0)),
                    'is_complete':
                    db.Column("complete", db.Boolean, default=literal(1)),
                    'size':
                    db.Column("download_size", db.Float, default=literal(100)),
                })
            DownloadRecord._mapper[class_name] = ModelClass

        cls = ModelClass
        return cls