Пример #1
0
class Company(db.Model, BaseModel):

    name = db.Column(db.String(50), nullable=False)
    remark = db.Column(db.String(500))
    web_site = db.Column(db.String(250))

    store_id = db.Column(db.Integer, db.ForeignKey('store.id'))
    store = db.relationship('Store',
                            backref=db.backref(
                                'companies',
                                lazy="dynamic",
                                order_by="desc(Company.created_at)"))

    @property
    def url(self):
        return url_for('company', id=self.id)

    @property
    def absolute_url(self):
        return url_for('company', id=self.id, _external=True)

    @staticmethod
    def get_by_user_id_and_company_id(user_id, company_id):
        company = Company.query.join(Store).join(member_store).filter(
            member_store.c.member_id == user_id,
            Company.id == company_id,
        ).first()
        return company
Пример #2
0
class Review(db.Model):
    rid = db.Column(db.Integer, primary_key=True, nullable=False)
    content = db.Column(db.String(255), nullable=False)
    # use review.activity
    aid = db.Column(db.Integer, db.ForeignKey('activity.aid'), nullable=False)
    # use review.reviewer
    uid = db.Column(db.Integer, db.ForeignKey('user.uid'), nullable=False)
    review_t = db.Column(db.DateTime, nullable=False, default=datetime.now)

    def __init__(self, content, aid, uid):
        self.content = content
        self.aid = int(aid)
        self.uid = int(uid)

    def dump(self):
        '''
        Dump the object.
        '''
        return {
            'rid': self.rid,
            'content': self.content,
            'reviewer': self.reviewer.dump(),
            'review_t': gettimestamp(self.review_t)
        }
Пример #3
0
# encoding: utf-8

# created by @cloverstd
# created at 2016-05-10 23:18

from _base import db, BaseModel
from ..utils.tool import now
from werkzeug.security import generate_password_hash, check_password_hash
from flask import url_for
from .user import User
from sqlalchemy import or_

member_store = db.Table(
    'member_store',
    db.Column('member_id', db.Integer, db.ForeignKey('member.id')),
    db.Column('store_id', db.Integer, db.ForeignKey('store.id')),
    db.Column('created_at', db.DateTime, default=now),
)


class Member(db.Model, BaseModel):

    username = db.Column(db.String(50), unique=True)
    email = db.Column(db.String(128), unique=True)
    mobile = db.Column(db.String(11), unique=True)
    name = db.Column(db.String(50))
    password = db.Column(db.String(128), nullable=False)

    @property
    def url(self):
        return url_for('member', id=self.id)
Пример #4
0
#!/usr/bin/python
#coding: utf-8
from _base import db

'''
Voteup Model
'''
Voteup = db.Table('voteup', 
        db.Column('aid', db.Integer, db.ForeignKey('activity.aid'), nullable=False), 
        db.Column('uid', db.Integer, db.ForeignKey('user.uid'), nullable=False)
    )
Пример #5
0
class Activity(db.Model):
    '''
    Activity Model
    '''
    aid = db.Column(db.Integer, primary_key=True, nullable=False)
    name = db.Column(db.String(32), nullable=False)
    # you can use Activity.host to visit the host of this activity
    uid = db.Column(db.Integer, db.ForeignKey('user.uid'), nullable=False)

    intro = db.Column(db.String(255), nullable=False)
    launch_t = db.Column(db.DateTime, nullable=False, default=datetime.now)
    update_t = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
    start_t = db.Column(db.DateTime, nullable=False)
    end_t = db.Column(db.DateTime, nullable=False)
    # 0 means to do; 1 means doing; 2 means done.
    status = db.Column(db.SmallInteger, nullable=False, default=0)
    limits = db.Column(db.Integer, nullable=False)
    participants = db.Column(db.Integer, nullable=False, default=0)
    voteups = db.Column(db.Integer, nullable=False, default=0)
    longitude = db.Column(DOUBLE, nullable=False)
    latitude = db.Column(DOUBLE, nullable=False)
    loc = db.Column(db.String(255), nullable=False)
    image = db.Column(db.String(255), nullable=False)

    reviews = db.relationship('Review', backref=db.backref('activity', lazy='select'), lazy='dynamic')

    def __init__(self, name, uid, start_t, end_t, limits, longitude, latitude, loc, intro='', image=''):
        self.name = name
        self.uid = int(uid)
        self.start_t = datetime.fromtimestamp(float(start_t))
        self.end_t = datetime.fromtimestamp(float(end_t))
        self.limits = int(limits)
        self.longitude = float(longitude)
        self.latitude = float(latitude)
        self.loc = loc
        self.intro = intro
        self.image = image

    def render_image(self):
        return open(self.image, 'rb')

    @property
    def last_time(self):
        '''
        Return what time does this activity last for.
        '''
        return self.end_t - self.start_t

    def convert(self):
        self.longitude = float(self.longitude)
        self.latitude = float(self.latitude)

    def distances(self, l, b):
        '''
        Return distances from a specified location.
        '''
        mlon_a = self.longitude * math.pi / 180
        mlat_a = (90 - self.latitude) * math.pi / 180
        mlon_b = l * math.pi / 180
        mlat_b = (90 - b) * math.pi / 180
        c = math.sin(mlat_a) * math.sin(mlat_b) * math.cos(mlon_a-mlon_b) + math.cos(mlat_a) * math.cos(mlat_b)
        d = 6371.004 * math.acos(c) * math.pi / 180
        return d

    def dump(self):
        '''
        Dump the object.
        '''
        dd = int(math.ceil(time.time()))
        if dd - gettimestamp(self.start_t) > 0:
            if dd < gettimestamp(self.end_t) < 0:
                self.status = 1
            else:
                self.status = 2
        db.session.add(self)
        db.session.commit()
        print self.last_time
        self.convert()
        return {
                    'aid': self.aid, 
                    'name': self.name, 
                    'host': self.host.dump(), 
                    'intro': self.intro, 
                    'launch_t': gettimestamp(self.launch_t), 
                    'start_t': gettimestamp(self.start_t), 
                    'end_t': gettimestamp(self.end_t), 
                    'last_time': self.last_time.total_seconds(),
                    'status': self.status, 
                    'limits': self.limits, 
                    'participants': self.participants, 
                    'voteups': self.voteups, 
                    'longitude': self.longitude, 
                    'latitude': self.latitude, 
                    'loc': self.loc, 
                    'image': self.image 
                }
Пример #6
0
#!/usr/bin/python
#coding: utf-8
from _base import db
'''
Participant Model
'''
Participant = db.Table(
    'participant', db.Column('aid', db.Integer, db.ForeignKey('activity.aid')),
    db.Column('uid', db.Integer, db.ForeignKey('user.uid')))