示例#1
0
class UserProfile(db.EmbeddedDocument):
    updated = db.IntField(default=0)
    first_name = db.StringField(max_length=50)
    last_name = db.StringField(max_length=50)
    public_name = db.StringField(max_length=50)
    gender = db.StringField(max_length=1)
    currency = db.StringField(min_length=3, max_length=3)
    timezone = db.StringField(min_length=3, max_length=3)
    date_of_birth = db.DateTimeField()
    avatar = db.ImageField(size=(300, 300, True))
    interests = db.ListField()
    addresses = db.EmbeddedDocumentListField(Address)
    billing = db.ReferenceField(Billing)
示例#2
0
class Image(db.Document):
    iid = db.StringField(primary_key=True, unique=True)
    image = db.ImageField(thumbnail_size=(180, 160, True))
    title = db.StringField()
    description = db.StringField()
    user = db.ReferenceField(User)
    pub_date = db.DateTimeField(default=datetime.now)
    view_count = db.IntField(default=0)
    likes = db.IntField(default=0)
    dislikes = db.IntField(default=0)
    tags = db.ListField(db.StringField(max_length=30))
    gallery = db.ListField(db.ReferenceField(Gallery))

    def __unicode__(self):
        return self.title
示例#3
0
class album(db.Document):
    id = db.UUIDField()
    albumtitle = db.StringField(required=False, unique=True)
    albumartist = db.ReferenceField(artist)
    musicbrainz_albumartistid = db.StringField()
    musicbrainz_albumid = db.StringField()
    coverimage = db.ImageField()

    def get_coverart_url(self):
        path = "app/static/media/"
        filename = "%s.jpg" % self.id

        if not self.coverimage.size:
            raise NameError("No image in DB")
        imgdata = self.coverimage.read()
        if not imgdata:
            raise NameError("No image in DB")
        b_imagedata = bytes(imgdata)
        output = open("%s%s" % (path, filename), "wb")
        output.write(b_imagedata)
        return filename
示例#4
0
class Parts(db.Document):
    part_name = db.StringField(max_length=50)
    part_price = db.DecimalField(precision=2)
    stock = db.IntField()
    image = db.ImageField()
示例#5
0
文件: models.py 项目: fmatray/mood
class Team(db.Document):
    name = db.StringField(max_length=80,
                          unique=True,
                          verbose_name="Team name",
                          help_text="Basically, who are you?")
    type = db.StringField(
        choices=TEAM_TYPE,
        required=True,
        verbose_name="Type of team",
        help_text="This will give you differents options after.")
    description = db.StringField(max_length=255,
                                 verbose_name="Description",
                                 help_text="What is the purpose of your team?")
    admin = db.ReferenceField(User,
                              required=True,
                              verbose_name="Administrator",
                              help_text="Who is the boss?")
    date = db.DateTimeField(
        default=datetime.now,
        required=True,
        verbose_name="Creation date",
        help_text="Automatic field",
    )
    members = db.EmbeddedDocumentListField('Member',
                                           verbose_name="Team's Members",
                                           help_text="Who is in?")
    photo = db.ImageField(thumbnail_size=(100, 100, True))

    renderfields = ("name", "type", "description", "admin")
    renderfieldsaslist = ("members")
    actions = OrderedDict((("view", "View"), ("edit", "Edit"),
                           ("member/invite", "Invite"), ("delete", "Delete")))
    badge = "members"

    @property
    def iseditable(self):
        return self.admin == current_user

    @property
    def editurl(self):
        return url_for("team")

    def addmember(self, usertoadd):
        if usertoadd:
            m = Member(user=usertoadd)
            self.members.append(m)
            self.save()

    def removemember(self, usertoremove):
        m = self.members.filter(user=usertoremove)
        m.delete()
        m.save()

    @classmethod
    def form(cls, fields=None):
        if fields:
            Teamform = model_form(cls, only=fields)
        else:
            Teamform = model_form(cls)
        Teamform.photo = FileField()
        Teamform.submit = SubmitField('Go')
        return Teamform

    def invite(self, email):
        u = User.objects(email=email).first()
        if u:
            if self.members.filter(user=u).count() == 0:
                self.addmember(u)
                flash("User added", "success")
            else:
                flash("User allready in the team", "error")
        else:
            u = User(email=email).save()
            self.addmember(u)
            flash("Email sent", "success")
        return True

    def __str__(self):
        return ("%s" % self.name)
示例#6
0
class Users(UserMixin, db.Document):

    username = db.StringField(db_field='un',
                              required=True,
                              unique=True,
                              verbose_name='Nume utilizator')
    avatar = db.ImageField(db_field='ig',
                           verbose_name='Avatar',
                           size=(640, 480, True))
    pswd = db.StringField(db_field='ps', required=True)
    joindate = db.DateTimeField(db_field='jd',
                                verbose_name='Data inregistrare',
                                default=datetime.datetime.now)
    email = db.StringField(db_field='em',
                           required=True,
                           unique=True,
                           verbose_name='Email utilizator')
    status = db.BooleanField(db_field='st',
                             verbose_name='Status',
                             default=True)
    permissions = db.StringField(db_field='pm',
                                 required=True,
                                 verbose_name='Drepturi',
                                 default='user')
    specialties = db.ListField(field=db.StringField(),
                               db_field='sp',
                               verbose_name='Specializari')
    interests = db.ListField(field=db.StringField(),
                             db_field='in',
                             verbose_name='Interese')
    projects = db.ListField(field=db.ObjectIdField(),
                            db_field='pj',
                            verbose_name='Proiecte')
    mail_confirmed = db.BooleanField(db_field='mc', default=False)

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

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

    def verify_password(self, passwd):
        return check_password_hash(self.pswd, passwd)

    def is_admin(self):
        return self.permissions == 'full'

    def is_active(self):
        return self.status

    def generate_confirmation_token(self, expiration=7200):
        s = Serializer(current_app.config['SECRET_KEY'], expiration)
        return s.dumps({'confirm': unicode(self.id)})

    def confirm(self, token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except:
            return False
        if data.get('confirm') != unicode(self.id):
            return False
        self.mail_confirmed = True
        self.save()
        return True

    def generate_reset_token(self, expiration=7200):
        s = Serializer(current_app.config['SECRET_KEY'], expiration)
        return s.dumps({'reset': unicode(self.id)})

    def resetpass(self, token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except:
            return None
        if data.get('reset') != unicode(self.id):
            return None
        return self.id