Beispiel #1
0
class ArticleData(BaseModel, db.Model):
    __tablename__ = 'article_data'
    id = db.Column(db.INT, primary_key=True)
    article_id = db.Column(db.INT, db.ForeignKey('article.id'))
    visit_date = db.Column(db.Date, default=date.today)
    pv = db.Column(db.INT, default=0)
    uv = db.Column(db.INT, default=0)
    ext_property = db.Column(db.JSON, default={})
    is_available = db.Column(db.INT, default=1)
    create_ts = db.Column(db.TIMESTAMP, default=datetime.now())
    update_ts = db.Column(db.TIMESTAMP, default=datetime.now())

    @classmethod
    def statistics_article_data(cls):
        def _statistics(vd):
            begin = time.time()
            VL = VisitorLog
            items = db.session.query(VL.url, func.count(
                VL.url)).filter(VL.visit_date == vd).group_by(VL.url).all()
            for item in items:
                article = Article.query_or_create(url=item[0])
                if article:
                    ad = cls.query_or_create(article_id=article.id,
                                             visit_date=vd)
                    ad.pv = item[1]
                    db.session.add(ad)
            db.session.commit()

            logger.debug('statistics_article_data time: %s',
                         (time.time() - begin))

        vd = date.today()
        _statistics(vd)
        vd = date.today() - timedelta(days=1)
        _statistics(vd)
Beispiel #2
0
class Post(db.Model, ResourceMixin):

    __tablename__ = 'post'

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

    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.String(1024), nullable=False)

    # ===================== Relationships ==================================
    account_id = db.Column(db.Integer,
                           db.ForeignKey('account.id'),
                           nullable=False)
    account = db.relationship('Account',
                              backref=db.backref('posts', lazy=True))

    @classmethod
    def find(cls, identity):
        return Post.query.filter((cls.title == identity)
                                 | (cls.id == identity)).first()

    # @classmethod
    # def get_all_posts(cls):
    #     return Post.query.all()

    @classmethod
    def get_all_posts(cls, page=None):
        if page is None:
            return Post.query.order_by(Post.create_date.desc()).all()
        else:
            return Post.query.order_by(Post.create_date.desc()).paginate(
                page=page, per_page=5)
Beispiel #3
0
class Code(BaseModel, db.Model):
    __tablename__ = 'code'
    id = db.Column(db.String, primary_key=True)
    user_id = db.Column(db.INT, db.ForeignKey('user.id'), default="0")
    name = db.Column(db.String, default="")
    description = db.Column(db.String, default="")
    type = db.Column(db.String, default="")
    status = db.Column(db.String, default="")
    source = db.Column(db.String, default="")
    code = db.Column(db.JSON, default={})
    is_available = db.Column(db.INT, default=1)
    create_ts = db.Column(db.TIMESTAMP, default=datetime.now())
    update_ts = db.Column(db.TIMESTAMP, default=datetime.now())

    @classmethod
    def create_or_update(cls, **kw):
        id = 0
        if 'id' in kw:
            id = kw.pop('id')
        item = cls.query_item(id=id, user_id=g.current_user.id)
        if not item:
            kw['id'] = AutoId.generate_id()
            kw['user_id'] = g.current_user.id
            item = cls.create(**kw)
        else:
            cls.update_by_id(id, **kw)
        return item
Beispiel #4
0
class Book(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(100), nullable=False)
    description = db.Column(db.String(200), nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('author.id'), nullable=False)

    def __init__(self, title, description, author_id):
        self.title = title
        self.description = description
        self.author_id = author_id
Beispiel #5
0
class CallHistory(db.Model, ResourceMixin):

    __tablename__ = 'call_history'

    id = db.Column(db.Integer, primary_key=True)
    datetime = db.Column(db.DateTime, nullable=False, default=datetime.now())

    # ======================== RELATIONSHIPS =================================
    hr_id = db.Column(db.Integer, db.ForeignKey('account.id'))
    hr = db.relationship('Account', backref=db.backref('calls', lazy=True))

    applicant_id = db.Column(db.Integer, db.ForeignKey('applicant.id'))
    applicant = db.relationship('Applicant', backref=db.backref('calls', lazy=True))

    @classmethod
    def find_call(cls, id):
        return CallHistory.query.filter(cls.id == id)

    def save(self):
        self.datetime = datetime.now()
        db.session.add(self)
        db.session.commit()
Beispiel #6
0
class VisitLog(BaseModel, db.Model):
    __tablename__ = 'visit_log'
    id = db.Column(db.INT, primary_key=True)
    visit_user_id = db.Column(db.INT, db.ForeignKey('visit_user.id'))
    method = db.Column(db.String, default="")
    domain = db.Column(db.String, default="")
    url = db.Column(db.String, default="")
    path = db.Column(db.String, default="")
    referrer = db.Column(db.String, default="")
    ext = db.Column(db.JSON, default={})
    is_del = db.Column(db.INT, default=0)
    create_ts = db.Column(db.TIMESTAMP, default=datetime.now())
    update_ts = db.Column(db.TIMESTAMP, default=datetime.now())

    visit_user = db.relationship('VisitUser',
                                 backref=b('visit_logs', lazy='dynamic'))

    @classmethod
    def get_count_by_url(cls, url):
        return cls.query.filter(cls.url.like('%{}'.format(url))).count()
Beispiel #7
0
class Applicant(db.Model, ResourceMixin):
    __tablename__ = 'applicant'

    ATTAINMENT = OrderedDict([
        ('none', 'No formal education'),
        ('primary', 'Primary education'),
        ('secondary', 'Secondary education/High school'),
        ('ged', 'General Education Diploma'),
        ('vocational', 'Vocational qualification'),
        ('bachelor\'s', 'Bachelor\'s degree'),
        ('master\'s', 'Master\'s degree'),
        ('doctoral', 'Doctorate or higher')
    ])

    SHIFT = OrderedDict([
        ('any', 'Any'),
        ('day', 'Day Shift'),
        ('mid', 'Mid Shift'),
        ('night', 'Night Shift'),
        ('shift', 'Shifting')
    ])

    MARITAL_STATUS = OrderedDict([
        ('single', 'Single'),
        ('married', 'Married'),
        ('widowed', 'Widowed'),
        ('divorced', 'Divorced'),
        ('separated', 'Separated')
    ])

    STATUS = OrderedDict([
        ('pending', 'Pending'),
        ('phone_invite', 'Phone Invite'),
        ('no_reach', 'Can\'t be reached'),
        ('declined', 'Declined'),
        ('interview', 'For interview'),
        ('passed', 'Passed'),
        ('failed', 'Failed'),
        ('hired', 'Hired')
    ])

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

    # Personal Information
    last_name = db.Column(db.String(50), nullable=False)
    first_name = db.Column(db.String(50), nullable=False)
    middle_name = db.Column(db.String(50), nullable=True)
    birthdate = db.Column(db.DateTime, nullable=True, default=datetime.strptime('0001-01-01 12:00 AM', '%Y-%m-%d %I:%M %p'))
    email = db.Column(db.String(50), nullable=False, unique=True)
    address = db.Column(db.String(300), nullable=True)
    mobile1 = db.Column(db.String(11), nullable=False, unique=True)
    mobile2 = db.Column(db.String(11), nullable=True)
    landline = db.Column(db.String(11), nullable=True)
    marital_status = db.Column(db.Enum(*MARITAL_STATUS, name='marital_status', native_enum=False),
                                index=True, nullable=False, server_default='single')

    # Scholastic Information
    educational_attainment = db.Column(db.Enum(*ATTAINMENT, name='educational_attainment', native_enum=False),
                                        index=True, nullable=False, server_default='bachelor\'s')
    course = db.Column(db.String(30), nullable=True)
    graduation_year = db.Column(db.String(4), nullable=True)

    # Job Preference
    applied_position = db.Column(db.String(50), nullable=True)
    expected_salary = db.Column(db.Integer, nullable=False, default=0)
    preferred_shift = db.Column(db.Enum(*SHIFT, name='preferred_shift', native_enum=False),
                                        index=True, nullable=False, server_default='any')
    preferred_location = db.Column(db.String(50), nullable=True)

    # Call Information
    status = db.Column(db.Enum(*STATUS, name='status', native_enum=False),
                                        index=True, nullable=False, server_default='pending')
    remarks = db.Column(db.String(300), nullable=True)

    # Additional Information
    acquire_date = db.Column(db.DateTime, nullable=False, default=datetime.now())
    source = db.Column(db.String(30), nullable=True)
    interview_datetime = db.Column(db.DateTime, nullable=True, default=datetime.strptime('0001-01-01 12:00 AM', '%Y-%m-%d %I:%M %p'))

    # ===================== Relationships ==================================

    hr_id = db.Column(db.Integer, db.ForeignKey('account.id'))
    hr = db.relationship('Account', backref=db.backref('applicants', lazy=True))

    @classmethod
    def find_applicant(cls, id):
        return Applicant.query.filter(cls.id == id).first()

    @classmethod
    def count(cls):
        return Applicant.query.count()