Example #1
0
class BitBook(db.DynamicDocument):
    owners = db.ListField(db.ReferenceField('User'))
    editors = db.ListField(db.ReferenceField('User'))
    viewers = db.ListField(db.ReferenceField('User'))
    public = db.BooleanField(default=False)
    title = db.StringField(max_length=255, required=True)
    description = db.StringField(required=False)
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    cover_fields = db.DictField(required=False)
    bitnotes = db.ListField(
        db.ReferenceField(BitNote, reverse_delete_rule=db.PULL))
    thumbnail = db.ImageField(size=(800, 600, True),
                              thumbnail_size=(150, 150, True))

    def share_to(self, to_user, from_user, msg, access):
        #create mailbox if does not exist:
        fr, to = user_mail_context(from_user, to_user)
        #manage access:
        manage_access(self, access, to, fr)
        message = BitMailItem(bitbook=self,
                              from_user=fr,
                              to_user=to,
                              message=msg)
        message.save()
        to.mail.inbox.append(message)
        to.mail.save()
        fr.mail.outbox.append(message)
        fr.mail.save()
Example #2
0
class User(db.Document, UserMixin):
    email = db.StringField(max_length=255, unique=True)
    password = db.StringField(max_length=255)
    active = db.BooleanField(default=True)
    confirmed_at = db.DateTimeField()
    roles = db.ListField(db.ReferenceField(Role), default=[])
    bitbooks = db.ListField(db.ReferenceField('BitBook'))
    mail = db.ReferenceField('BitMail')
Example #3
0
class BitNote(db.DynamicDocument):
    owners = db.ListField(db.ReferenceField('User'))
    editors = db.ListField(db.ReferenceField('User'))
    viewers = db.ListField(db.ReferenceField('User'))
    public = db.BooleanField(default=False)
    bitfields = db.ListField(db.EmbeddedDocumentField(BitField))
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=False)
    meta = {'allow_inheritance': True}

    meta = {'indexes': ['-created_at'], 'ordering': ['-created_at']}

    def save_to_bitbook(self, bitbook):
        bitbook.bitnotes.append(self)
        for field in self.bitfields:
            if field.title not in bitbook.cover_fields:
                bitbook.cover_fields[field.title] = field
        bitbook.save()

    def share_to(self, to_user, from_user, msg, access):
        #create mailbox if does not exist:
        fr, to = user_mail_context(from_user, to_user)
        manage_access(self, access, to, fr)
        message = BitMailItem(bitnote=self,
                              from_user=fr,
                              to_user=to,
                              message=msg)
        message.save()
        to.mail.inbox.append(message)
        to.mail.save()
        fr.mail.outbox.append(message)
        fr.mail.save()
Example #4
0
class BitMailItem(db.Document):
    bitnote = db.ReferenceField('BitNote')
    bitbook = db.ReferenceField('BitBook')
    from_user = db.ReferenceField('User')
    to_user = db.ReferenceField('User')
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    red = db.BooleanField(required=True, default=False)
    message = db.StringField(max_length=255)
Example #5
0
class Link(BitField):
    link = db.StringField(max_length=255, required=False)
    og_url = db.StringField(max_length=255, required=False)
    og_type = db.StringField(max_length=255, required=False)
    og_image = db.StringField(max_length=255, required=False)
    og_title = db.StringField(max_length=255, required=False)
    og_description = db.StringField(required=False)
Example #6
0
class BitField(db.EmbeddedDocument):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)

    def __unicode__(self):
        return self.title

    @property
    def bit_field_type(self):
        return self.__class__.__name__

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at', 'title'],
        'ordering': ['title']
    }
Example #7
0
class Quote(BitField):
    body = db.StringField(required=False)
    author = db.StringField(verbose_name="Author Name",
                            required=False,
                            max_length=255)
Example #8
0
class Role(db.Document, RoleMixin):
    name = db.StringField(max_length=80, unique=True)
    description = db.StringField(max_length=255)
Example #9
0
class Device(db.DynamicDocument):
    name = db.StringField(required=True)
    meta = {
        'allow_inheritance': True,
    }
Example #10
0
class CheckList(BitField):
    items = db.StringField()
Example #11
0
class Comment(db.EmbeddedDocument):
    body = db.StringField(verbose_name="Comment", required=True)
    author = db.ReferenceField('User')
Example #12
0
class BlogPost(BitField):
    body = db.StringField(required=False)
Example #13
0
class Image(BitField):
    image_url = db.StringField(required=False, max_length=255)
Example #14
0
class DataSeries(BitField):
    data_points = db.StringField(default='0')
Example #15
0
class Location(BitField):
    addr = db.StringField(required=False, max_length=255)
    location = db.GeoPointField(required=False)
Example #16
0
class Video(BitField):
    embed_code = db.StringField(required=False)
Example #17
0
class Code(BitField):
    body = db.StringField(required=False)