예제 #1
0
class Role(db.Document):
    name = db.StringField(max_length=50, unique=True)
    default = db.BooleanField(default=False, index=True)
    permissions = db.IntField(default=0)

    @staticmethod
    def insert_roles():
        roles = {
            'User':
            [Permission.FOLLOW, Permission.COMMENT, Permission.WRITE_RECIPES],
            'Admin': [
                Permission.FOLLOW, Permission.COMMENT,
                Permission.WRITE_RECIPES, Permission.MOD_COMMENT,
                Permission.ADMIN
            ],
        }
        for r in roles:
            role = Role.objects(name=r).first()
            if role is None:
                role = Role(name=r)
                role.set_permission(roles.get(r))
                role.default = (role.name == 'User')
                role.save()

    def set_permission(self, perms):
        for p in perms:
            self.permissions += p

    def remove_permission(self, perms):
        for p in perms:
            self.permission -= p

    def is_permitted(self, p):
        return (self.permissions & p == p)
예제 #2
0
파일: payment.py 프로젝트: hannn0919/test
class Payment(db.Document):
    payer_id = db.ReferenceField(User, required=True)
    transaction_id = db.LongField(required=True, unique=True)
    amount = db.IntField(required=True, min_value=1, max_value=100000)
    currency = db.StringField(required=True)
    confirm = db.BooleanField(required=True)
    create_time = db.DateTimeField(default=datetime.datetime.utcnow())
예제 #3
0
class Cart(db.Document):
    user_id = db.IntField(required=True)
    products = db.ListField(db.EmbeddedDocumentField(Product))

    meta = {'collection': 'products_in_cart', 'indexes': ['user_id']}

    @classmethod
    def add_document(cls, user_id, product_id, count):
        cart = Cart.objects(user_id=user_id).first()

        if cart is None:
            cart = cls(user_id=user_id)

        product = Product(product_id=product_id, count=count)

        if product in cart.products:
            index = cart.products.index(product)
            existing_product = cart.products[index]
            existing_product.count += product.count
            return cart

        products = [product]

        if len(cart.products) == 0:
            cart.products = products
        else:
            cart.products.extend(products)

        return cart
예제 #4
0
class Course(db.Document):
    modality_choice = (
        ('Virtual', 'Virtual'),
        ('Presencial', 'Presencial'),
    )
    state_choice = (
        ('Terminado', 'Terminado'),
        ('Cursando', 'Cursando'),
        ('Por empezar', 'Por empezar'),
    )
    type_choice = (
        ('Docente', 'Docente'),
        ('Profesional', 'Profesional'),
    )
    # Inscription Data
    courseName = db.StringField(required=True, unique=True)
    teacherRFC = db.StringField(required=True)
    modality = db.StringField(choices=modality_choice)
    dateStart = db.DateTimeField()
    dateEnd = db.DateTimeField()  # 2019-04-08 13:21:08.456998 --> formato a ingresar para las fechas
    timetable = db.StringField()
    place = db.StringField()
    # Courses List Data
    teachersInCourse = db.ListField(db.StringField())
    description = db.StringField()
    totalHours = db.IntField()
    courseTo = db.StringField()
    typeCourse = db.StringField(choices=type_choice)
    # Assistant List Data
    serial = db.StringField()
    # Status
    state = db.StringField(choices=state_choice, default='Por empezar')
예제 #5
0
class Job(db.DynamicDocument):
    task_information = db.StringField()

    model_file = db.StringField()
    model_meta_file = db.StringField()

    vocabulary = db.StringField()
    num_training_examples_in_model = db.IntField()

    checkpoints = db.DictField()

    current_hit_ids = db.ListField()

    status = db.StringField()

    control_strategy = db.StringField()

    experiment_id = db.StringField()

    mturk_connection = db.StringField()

    exceptions = db.ListField()

    control_data = db.StringField()

    logging_data = db.StringField()
예제 #6
0
class Account(db.Document):
    # 用户id
    account_id = db.IntField()
    # 手机号
    username = db.StringField(unique=True, required=True)
    # 手机号
    phone = db.StringField()
    # email
    email = db.StringField()
    # 区域
    phone_area = db.StringField()
    # 密码, md5后的密码
    password = db.StringField(max_length=50, min_length=8, required=True)
    # 用户名
    nickname = db.StringField()
    # 登录类型
    loginType = db.StringField()
    # 用户id
    user_id = db.StringField()
    # 会话
    sessionid = db.StringField()
    # 创建时间
    create_time = db.FloatField(
        default=time.mktime(datetime.now().timetuple()))
    # 更新时间
    update_time = db.FloatField(
        default=time.mktime(datetime.now().timetuple()))

    # 账号列表,当前用户拥有的wky账号列表
    devices = db.ListField(db.ReferenceField(Device))
    income = db.EmbeddedDocumentField('Income')
    device_info = db.EmbeddedDocumentField('DeviceInfo')

    def __str__(self):
        pass
예제 #7
0
class Beacons(db.Document):
    beaconId = db.StringField(max_length=150, required=True, unique=True)
    beaconTag = db.StringField(max_length=15, required=True)
    beaconProject = db.StringField(max_length=50, required=True)
    beaconPlatform = db.StringField(max_length=25, required=True)
    beaconTimer = db.IntField(default=300)
    beaconData = db.DictField()
예제 #8
0
class FavorAction(object):
    """

    """
    # fields
    num_favors = db.IntField(default=0, min_value=0)
    favor_items = db.ListField(db.StringField())

    def mark_favored(self, item):
        if item.id not in self.favor_items:
            item.update(inc__num_favors=1, push__favor_items=item.id)
            mark_favor.send(self, item_id=str(item.id))

    def unmark_favored(self, item):
        if item.id in self.favor_items:
            item.update(dec__num_favors=1)
            self.update(dec__num_favors=1, pull__favor_items=item.id)

    def mark_like(self, post):
        post.update(inc__num_favors=1)
        self.update(inc__num_post_likes=1)

    def mark_unlike(self, post):
        post.update(dec__num_likes=1)
        self.update(dec__num_post_likes=1)
예제 #9
0
class UserBookListLove(db.Document):
    """
    用户书单点赞
    """
    book_list = db.ReferenceField(BookList)
    time = db.IntField(required=True, default=time_int)
    user = db.ReferenceField(User, required=True)
예제 #10
0
class User(db.DynamicDocument, db.EmbeddedDocument):
    user_id = db.IntField(required=True, unique=True)
    # user-friendly identificator
    email = db.StringField(required=True, unique=True)
    #  user-friendly name
    username = db.StringField(required=True, unique=True)
    password_hash = db.StringField(required=True)
    registered_at = db.DateTimeField(default=datetime.now, required=True)

    # store of subscribed channels and last viewed time
    unread_channels = db.DictField()

    # __init__ can't be function in inherited class from db.Document
    # def __init__(self, email, username, password):
    #     self.email = email
    #     self.username = username
    #     self.set_password(password)

    def __str__(self):
        return self.username

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.user_id

    def __repr__(self):
        return self.__str__()
예제 #11
0
파일: models.py 프로젝트: cumtjie/flask-ex
class Admin(db.Document):
    """后台管理员模型"""

    name = db.StringField(max_length=60)
    password_hash = db.StringField(max_length=155)
    last_time = db.DateTimeField(
        default=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        required=True)
    login_number = db.IntField(default=0)

    def get_id(self):
        try:
            return self.name
        except AttributeError:
            raise NotImplementedError(
                'No `username` attribute - override `get_id`')

    @property
    def password(self):
        raise AttributeError("password is not a readable attribute")

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __unicode__(self):
        return self.name
예제 #12
0
class Device(db.Document):
    operator = db.StringField(max_length=64, required=True)
    imei = db.StringField(required=True)
    productId = db.StringField(required=True)
    productName = db.StringField()
    deviceName = db.StringField(max_length=128, required=True)
    deviceId = db.StringField()
    apiKey = db.StringField()
    autoObserver = db.BooleanField(default=0, required=True)
    createTime = db.DateTimeField(required=True)
    updateTime = db.DateTimeField()    # 和心跳周期有关
    company = db.StringField(max_length=255)
    location = db.StringField(max_length=255)
    state = db.StringField(default='offline')
    batteryValue = db.IntField(default=100)
    heartbeat_time = db.IntField(default=0)
예제 #13
0
class UploadHistory(db.Document):
    '''
    上传历史记录
    '''
    upload_date = db.DateTimeField(default=date.today)
    # date = db.DatetimeField(default=datetime.now)
    patent_count = db.IntField(default=0)
    cnki_count = db.IntField(default=0)
    publicnet_count = db.IntField(default=0)

    def to_dict(self):
        d = {}
        d['upload_date'] = self.upload_date.strptime(str, '%Y-%m-%d')
        d['patent_count'] = self.patent_count
        d['cnki_count'] = self.cnki_count
        d['publicnet_count'] = self.publicnet_count
        return d
예제 #14
0
class BillingStatus(db.EmbeddedDocument):
    status = db.StringField()
    time = db.IntField(required=True, default=time_int)
    content = db.StringField()
    backend_operator = db.BooleanField(default=False)

    def __unicode__(self):
        return u'{}|{}|{}'.format(self.status, self.content, self.time)
예제 #15
0
class UserBookListCommentLove(db.Document):
    """
    用户评论点赞表
    """
    user = db.ReferenceField(User, required=True)
    comment = db.ReferenceField(BookListComment, required=True)
    type = db.StringField(required=True, default=u'none')
    time = db.IntField(required=True, default=time_int)
예제 #16
0
class Todo(db.Document):
    content = db.StringField(required=True, max_length=20)
    time = db.DateTimeField(default=datetime.now())
    status = db.IntField(default=0)

    def __str__(self):
        return 'content:{},time:{},status:{}'.format(self.content, self.time,
                                                     self.status)
예제 #17
0
class Worker(db.Document):
    email = db.EmailField(required=True)
    first_name = db.StringField(max_length=50)
    last_name = db.StringField(max_length=50)
    dob = db.StringField()
    identification = db.StringField()
    phone = db.IntField()
    availibility = db.BooleanField()
예제 #18
0
class User(db.Document):
    login = db.StringField(required=True, max_length=50)
    password = db.StringField(required=True, max_length=255)
    email = db.EmailField(required=True, max_length=50)
    bitcoin_wallet = db.StringField(max_length=50)
    avatar = db.StringField()
    date = db.DateTimeField(default=datetime.now)
    balance = db.IntField(default=0)
예제 #19
0
class Zone(db.Document):
    siteName = db.StringField()
    siteID = db.StringField()
    rows = db.IntField()
    zoneID = db.StringField()
    firmwareVersion = db.StringField()
    position = db.EmbeddedDocumentField(Position)
    meta = {'collection': 'Zone'}
예제 #20
0
class Product(db.Document):
    seller_id = db.ReferenceField(User, required=True)
    name = db.StringField(required=True, max_length=30)
    price = db.IntField(required=True, min_value=1, max_value=100000)
    bid = db.EmbeddedDocumentField(Bid, null=True)
    discount = db.FloatField(required=True,
                             min_value=0.,
                             max_value=1.,
                             default=1.)
    detail = db.StringField(required=True, max_length=40000)
    image = db.StringField(required=True)
    view = db.IntField(required=True, default=0)
    categories = db.ListField(db.ReferenceField(Category), default=list)
    bidding = db.BooleanField(requried=True)
    status = db.IntField(requried=True, default=0)
    create_time = db.DateTimeField(default=datetime.datetime.utcnow() +
                                   datetime.timedelta(hours=8))
예제 #21
0
파일: Routine.py 프로젝트: voidf/sher_oa3
class Routine(db.Document):
    """
    考虑将每天拆为5块,分别对应课表早上两节课,下午两节课和晚上一节课,
        那么一周的事件可以用长度为固定35的表来表示,
        所以signtime设计为0~34\n
    signtime:\n
        为0~34的整数,表示值班时间段,只在时间段内允许签到\n
    shift:\n
        自主换班时间段,默认和signtime相同,也允许在这个段签到,签完重置为signtime\n
    """
    user = db.ReferenceField(User,reverse_delete_rule=2)
    signtime = db.IntField()
    shift = db.IntField()
    shift_week = db.IntField()

    def init_routine(user:User,signtime:int): # 只在初次用户创建时允许设置signtime
        if Routine.objects(user=user):
            return None
        r = Routine(
            user = user,
            signtime = int(signtime),
            shift = int(signtime)
        )
        return r.save()

    def change_signtime(self,signtime:int): # 不允许低权限用户自主设置
        self.signtime = int(signtime)
        self.shift = self.signtime
        return self.save()

    def recover_shift(self): # 每次换班签到执行后调用,当shift与signtime相等时视为没换班
        self.shift = self.signtime
        return self.save()

    def change_shift(self,shift:int,shift_week:int): # 允许用户自主设置
        self.shift = int(shift)
        self.shift_week = int(shift_week)
        return self.save()

    def get_base_info(self):
        return {
            "user":self.user,
            "signtime":self.signtime,
            "shift":self.shift,
            "shift_week":self.shift_week
        }
예제 #22
0
class Ad(db.Document):
    title = db.StringField(max_length=100)
    price = db.IntField()
    description = db.StringField(max_length=1000)
    imageURL = db.StringField(max_length=2083)
    thumbnailURL = db.StringField(max_length=2083)
    postedDate = db.DateTimeField(default=datetime.now)
    category = db.StringField(max_length=1000)
    phone = db.StringField(max_length=12)
예제 #23
0
class User(UserMixin, db.Document):
    meta = {"collection": "ubi_user"}
    first_name = db.StringField(max_length=32, required=True)
    last_name = db.StringField(max_length=32)
    # email = db.StringField(max_length=32, required=True, unique=True)
    username = db.StringField(max_length=32, required=True, unique=True)
    password = db.StringField(required=True)
    admin = db.BooleanField(default=False)
    free_points = db.IntField(min_value=0)
    purchased_points = db.IntField(min_value=0)
    inventory_list = db.ListField(db.ReferenceField('Inventory'))

    def save(self, *args, **kwargs):
        if not self.free_points:
            self.free_points = 0
        if not self.purchased_points:
            self.purchased_points = 0
        return super(User, self).save(*args, **kwargs)
예제 #24
0
class Shop(db.Document):
    name = db.StringField(required=True)
    slug = db.StringField()
    nit = db.StringField(required=True, unique=True)
    email = db.EmailField(required=True, unique=True)
    phone = db.IntField(required=True, unique=True)
    address = db.DictField()
    shipping = db.DictField()
    categories = db.ReferenceField(Category)
예제 #25
0
class User(db.Document):
    """
    User Model Class
    """
    user_id = db.StringField()
    pin = db.IntField()
    user_name = db.StringField()
    password = db.StringField()
    create_date = db.DateTimeField(default=datetime.utcnow)
예제 #26
0
class User(db.Document):
    nickname = db.StringField(max_length=10,unique=True)
    firstname = db.StringField(max_length=10)
    lastname = db.StringField(max_length=10)
    pwdhash = db.StringField(max_length=54)
    email = db.StringField(max_length=25, required=True,unique=True)
    role = db.IntField(default = ROLE_USER)
    about_me = db.StringField(max_length=50)
    last_seen = db.DateTimeField(default=datetime.datetime.now, required=True)
예제 #27
0
class PrimaryCategory(db.Document):
    category_id = db.IntField(required=True)
    name = db.StringField(required=True)
    child_category_ids = db.ListField(db.IntField())

    meta = {'collection': 'primary_categories', 'indexes': ['category_id']}

    def __repr__(self):
        return f'PrimaryCategory(id={self.category_id}, name={self.name})'

    @classmethod
    def add_document(cls, name, child_category_ids=[]):
        next_id = Counter.get_next_sequence_value('primary_categories')
        category = cls(category_id=next_id,
                       name=name,
                       child_category_ids=child_category_ids)

        return category
예제 #28
0
class Application(db.Document):
    """
    API调用者信息
    """
    name = db.StringField(required=True)
    key = db.StringField(required=True, unique=True)
    secret_key = db.StringField(required=True)

    status = db.IntField(required=True, default=1)
예제 #29
0
class EventSeries(db.Document):
    """"""
    date_created = db.DateTimeField(required=True, default=now)
    date_modified = db.DateTimeField(required=True, default=now)
    slug = db.StringField(required=True, max_length=255)
    events = db.ListField(db.ReferenceField("Event"))
    frequency = db.StringField(default="weekly")
    every = db.IntField(min_value=1, max_value=30)
    ends_after = db.BooleanField(default=True)
    ends_on = db.BooleanField(default=False)
    num_occurances = db.IntField(default=1)
    recurrence_end_date = DateField()
    recurrence_summary = db.StringField()
    gcal_id = db.StringField()  # ID of the first event in the series

    def delete_one(self, event):
        """"""
        self.events.remove(event)
        event.delete()
        self.save()

    def delete_all_except(self, event):
        """"""
        for e in self.events[:]:
            if e != event:
                e.delete()
        event.parent_series = None
        self.delete()

    def delete_all(self):
        """"""
        for e in self.events:
            e.delete()
        self.delete()

    def clean(self):
        """Update date_modified, and ensure that exactly one of `ends_after`
        and `ends_on` is True at a time.
        """
        self.date_modified = now()

        if self.ends_after == self.ends_on:
            raise ValidationError("ends_on and ends_after should not share a "
                                  "value.")
예제 #30
0
class JobInstance(db.Document):
    instanceId = db.StringField()
    jobName = db.StringField()
    jobDisplayName = db.StringField()
    jobJson = db.StringField()  # 来自哪个job实例
    jobJsonPath = db.StringField()
    result = db.IntField()
    executeOutput = db.StringField()  # 输出结果
    executeTime = db.DecimalField(default=time.time, required=True)  # 执行时间
    endTime = db.DecimalField(default=time.time, required=True)  #执行结束时间