Ejemplo n.º 1
0
class Bookmark(db.Model, RightMixin):
    """
    Represent a bookmark.
    """

    id = db.Column(db.Integer(), primary_key=True)
    href = db.Column(db.String(), default="")
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="")
    shared = db.Column(db.Boolean(), default=False)
    to_read = db.Column(db.Boolean(), default=False)
    time = db.Column(db.DateTime(), default=datetime.utcnow)
    user_id = db.Column(db.Integer(), db.ForeignKey("user.id"))

    # relationships
    tags = db.relationship(
        BookmarkTag,
        backref="of_bookmark",
        lazy="dynamic",
        cascade="all,delete-orphan",
        order_by=desc(BookmarkTag.text),
    )
    tags_proxy = association_proxy("tags", "text")

    @validates("description")
    def validates_title(self, key, value):
        return str(value).strip()

    @validates("extended")
    def validates_description(self, key, value):
        return str(value).strip()

    def __repr__(self):
        return "<Bookmark %r>" % (self.href)
Ejemplo n.º 2
0
class Organization(db.Model):
    """Represent an organization.
    """
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True)
    description = db.Column(db.String())
    website = db.Column(db.String())
    last_updated = db.Column(db.DateTime(), default=datetime.utcnow())

    cve_vendor = db.Column(db.String(), default='')

    # foreign keys
    icon_url = db.Column(db.String(), db.ForeignKey('icon.url'), default=None)

    # relationship
    projects = db.relationship(Project,
                               backref='organization',
                               lazy='dynamic',
                               cascade='all,delete-orphan')

    @validates('name')
    def validates_bio(self, key, value):
        assert len(value) <= 100, \
            AssertionError("maximum length for name: 100")
        return value.replace(' ', '').strip()
Ejemplo n.º 3
0
class Client(db.Model, Ext):
    name = db.Column(db.String(40))
    description = db.Column(db.String(400))
    user_id = db.Column(db.ForeignKey('user.id'))
    user = db.relationship('User')
    client_id = db.Column(db.String(40), primary_key=True)
    client_secret = db.Column(db.String(55),
                              unique=True,
                              index=True,
                              nullable=False)
    is_confidential = db.Column(db.Boolean)
    _redirect_uris = db.Column(db.Text)
    _default_scopes = db.Column(db.Text)

    @property
    def client_type(self):
        if self.is_confidential:
            return 'confidential'
        return 'public'

    @property
    def redirect_uris(self):
        if self._redirect_uris:
            return self._redirect_uris.split()
        return []

    @property
    def default_redirect_uri(self):
        return self.redirect_uris[0]

    @property
    def default_scopes(self):
        if self._default_scopes:
            return self._default_scopes.split()
        return []
Ejemplo n.º 4
0
class User(db.Model, UserMixin):
    """
    Represent a user.
    """
    id = db.Column(db.Integer, primary_key=True)
    login = db.Column(db.String(30), unique=True, nullable=False)
    pwdhash = db.Column(db.String(), nullable=False)
    created_at = db.Column(db.DateTime(), default=datetime.utcnow())
    last_seen = db.Column(db.DateTime(), default=datetime.utcnow())

    # user rights
    is_active = db.Column(db.Boolean(), default=False)
    is_admin = db.Column(db.Boolean(), default=False)
    is_api = db.Column(db.Boolean(), default=False)

    def get_id(self):
        """
        Return the id of the user.
        """
        return self.id

    def check_password(self, password):
        """
        Check the password of the user.
        """
        return check_password_hash(self.pwdhash, password)

    def __str__(self):
        return self.login

    @validates('login')
    def validates_login(self, key, value):
        assert 3 <= len(value) <= 30, \
            AssertionError("maximum length for login: 30")
        return re.sub('[^a-zA-Z0-9_\.]', '', value.strip())
Ejemplo n.º 5
0
class Bookmark(db.Model, RightMixin):
    """
    Represent a bookmark.
    """
    id = db.Column(db.Integer(), primary_key=True)
    href = db.Column(db.String(), default="")
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="")
    shared = db.Column(db.Boolean(), default=False)
    to_read = db.Column(db.Boolean(), default=False)
    time = db.Column(db.DateTime(), default=datetime.utcnow)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))

    # relationships
    tags = db.relationship(BookmarkTag, backref='of_bookmark', lazy='dynamic',
                               cascade='all,delete-orphan',
                               order_by=desc(BookmarkTag.text))
    tags_proxy = association_proxy('tags', 'text')


    @validates('description')
    def validates_title(self, key, value):
        return str(value).strip()

    @validates('extended')
    def validates_description(self, key, value):
        return str(value).strip()

    def __repr__(self):
        return '<Bookmark %r>' % (self.href)
Ejemplo n.º 6
0
class Page(db.Model):
    """
    Represent a page.
    """
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(), default='')
    content = db.Column(db.String(), default='')
    language_code = db.Column(db.String(), default='')
Ejemplo n.º 7
0
class UserInvitation(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    invited_by_user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    email = db.Column(db.String(255), nullable=False)
    token =  db.Column(db.String(100), nullable=False, default='')

    # invited_by_user = db.relationship('User')
class Author(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    firstname = db.Column(db.String(80))
    lastname = db.Column(db.String(80))
    
    def __init__(self, *args, **kwargs):
       super(Author, self).__init__(*args, **kwargs)

    def __repr__(self):
        return '<Author %r>' % self.firstname
Ejemplo n.º 9
0
class Article(db.Model):
    "Represent an article from a feed."
    id = db.Column(db.Integer(), primary_key=True)
    entry_id = db.Column(db.String())
    link = db.Column(db.String())
    title = db.Column(db.String())
    content = db.Column(db.String())
    readed = db.Column(db.Boolean(), default=False)
    like = db.Column(db.Boolean(), default=False)
    date = db.Column(db.DateTime(), default=datetime.now)
    updated_date = db.Column(db.DateTime(), default=datetime.now)
    retrieved_date = db.Column(db.DateTime(), default=datetime.now)

    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    feed_id = db.Column(db.Integer(), db.ForeignKey('feed.id'))
    category_id = db.Column(db.Integer(), db.ForeignKey('category.id'))

    def previous_article(self):
        """
        Returns the previous article (older).
        """
        return Article.query.filter(Article.date < self.date,
                                    Article.feed_id == self.feed_id)\
                            .order_by(desc("date")).first()

    def next_article(self):
        """
        Returns the next article (newer).
        """
        return Article.query.filter(Article.date > self.date,
                                    Article.feed_id == self.feed_id)\
                            .order_by(asc("date")).first()

    def __repr__(self):
        return "<Article(id=%d, entry_id=%s, title=%r, " \
               "date=%r, retrieved_date=%r)>" % (self.id, self.entry_id,
                       self.title, self.date, self.retrieved_date)

    def dump(self):
        return {
            "id": self.id,
            "user_id": self.user_id,
            "entry_id": self.entry_id,
            "title": self.title,
            "link": self.link,
            "content": self.content,
            "readed": self.readed,
            "like": self.like,
            "date": self.date,
            "updated_date": self.updated_date,
            "retrieved_date": self.retrieved_date,
            "feed_id": self.feed_id,
            "category_id": self.category_id
        }
class Identity(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    firstname = db.Column(db.String(80))
    lastname = db.Column(db.String(80))

    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname

    def __repr__(self):
        return '<Identity %r>' % self.firstname
Ejemplo n.º 11
0
class AttributePicture(db.Model):
    """
    Represent a picture for an attribute.
    """
    id = db.Column(db.Integer, primary_key=True)
    file_name = db.Column(db.String(), default='')
    language_code = db.Column(db.String(), default='')

    # relationship
    attribute_id = db.Column(db.Integer,
                             db.ForeignKey('attribute.id'),
                             nullable=False)
Ejemplo n.º 12
0
class CVE(db.Model):
    """Represent a CVE.
    """
    id = db.Column(db.Integer, primary_key=True)
    cve_id = db.Column(db.String(), nullable=False)
    summary = db.Column(db.String(), default='')
    published_at = db.Column(db.DateTime(), default=datetime.utcnow())

    # foreign keys
    project_id = db.Column(db.Integer(),
                           db.ForeignKey('project.id'),
                           default=None)
Ejemplo n.º 13
0
class User(db.Model, UserMixin):
    """
    Represent a user.
    """
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(), unique=True, nullable=False)
    name = db.Column(db.String(), default='')
    pwdhash = db.Column(db.String(), nullable=False)
    created_at = db.Column(db.DateTime(), default=datetime.now)
    last_seen = db.Column(db.DateTime(), default=datetime.now)
    is_admin = db.Column(db.Boolean(), default=False)
    is_active = db.Column(db.Boolean(), default=False)
    preferred_language = db.Column(db.String(), default='en')

    # relationships
    shelters = db.relationship('Shelter', backref='responsible', lazy='dynamic',
                           cascade='all, delete-orphan',
                           order_by=desc('Shelter.id'))

    @staticmethod
    def make_valid_name(name):
        return re.sub('[^a-zA-Z0-9_\.]', '', name)

    def get_id(self):
        """
        Return the id of the user.
        """
        return self.id

    def set_password(self, password):
        """
        Hash the password of the user.
        """
        self.pwdhash = generate_password_hash(password)

    def check_password(self, password):
        """
        Check the password of the user.
        """
        return check_password_hash(self.pwdhash, password)

    # def __eq__(self, other):
    #     return self.id == other.id

    def __str__(self):
        """
        Required for administrative interface.
        """
        return self.name

    def __repr__(self):
        return '<User %r>' % (self.name)
Ejemplo n.º 14
0
class Article(db.Model, RightMixin):
    "Represent an article from a feed."
    id = db.Column(db.Integer(), primary_key=True)
    entry_id = db.Column(db.String())
    link = db.Column(db.String())
    title = db.Column(db.String())
    content = db.Column(db.String())
    readed = db.Column(db.Boolean(), default=False)
    like = db.Column(db.Boolean(), default=False)
    date = db.Column(db.DateTime(), default=datetime.utcnow)
    retrieved_date = db.Column(db.DateTime(), default=datetime.utcnow)
    readability_parsed = db.Column(db.Boolean(), default=False)

    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    feed_id = db.Column(db.Integer(), db.ForeignKey('feed.id'))
    category_id = db.Column(db.Integer(), db.ForeignKey('category.id'))

    idx_article_uid = Index('user_id')
    idx_article_uid_cid = Index('user_id', 'category_id')
    idx_article_uid_fid = Index('user_id', 'feed_id')

    # api whitelists
    @staticmethod
    def _fields_base_write():
        return {'readed', 'like', 'readability_parsed',
                'feed_id', 'category_id'}

    @staticmethod
    def _fields_base_read():
        return {'id', 'entry_id', 'link', 'title', 'content', 'date',
                'retrieved_date', 'user_id'}

    def previous_article(self):
        """
        Returns the previous article (older).
        """
        return Article.query.filter(Article.date < self.date,
                                    Article.feed_id == self.feed_id)\
                            .order_by(desc("date")).first()

    def next_article(self):
        """
        Returns the next article (newer).
        """
        return Article.query.filter(Article.date > self.date,
                                    Article.feed_id == self.feed_id)\
                            .order_by(asc("date")).first()

    def __repr__(self):
        return "<Article(id=%d, entry_id=%s, title=%r, " \
               "date=%r, retrieved_date=%r)>" % (self.id, self.entry_id,
                       self.title, self.date, self.retrieved_date)
Ejemplo n.º 15
0
class Article(db.Model, RightMixin):
    "Represent an article from a feed."
    id = db.Column(db.Integer(), primary_key=True)
    entry_id = db.Column(db.String(), nullable=False)
    link = db.Column(db.String())
    title = db.Column(db.String())
    content = db.Column(db.String())
    readed = db.Column(db.Boolean(), default=False)
    like = db.Column(db.Boolean(), default=False)
    date = db.Column(db.DateTime(), default=datetime.utcnow)
    updated_date = db.Column(db.DateTime(), default=datetime.utcnow)
    retrieved_date = db.Column(db.DateTime(), default=datetime.utcnow)

    # foreign keys
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    feed_id = db.Column(db.Integer(), db.ForeignKey('feed.id'))
    category_id = db.Column(db.Integer(), db.ForeignKey('category.id'))

    # relationships
    tag_objs = db.relationship('ArticleTag',
                               back_populates='article',
                               cascade='all,delete-orphan',
                               lazy=False,
                               foreign_keys='[ArticleTag.article_id]')
    tags = association_proxy('tag_objs', 'text')

    # indexes
    __table_args__ = (Index('user_id'), Index('user_id', 'category_id'),
                      Index('user_id', 'feed_id'),
                      Index('ix_article_uid_fid_eid', user_id, feed_id,
                            entry_id))

    # api whitelists
    @staticmethod
    def _fields_base_write():
        return {'readed', 'like', 'feed_id', 'category_id'}

    @staticmethod
    def _fields_base_read():
        return {
            'id', 'entry_id', 'link', 'title', 'content', 'date',
            'retrieved_date', 'user_id', 'tags'
        }

    @staticmethod
    def _fields_api_write():
        return {'tags'}

    def __repr__(self):
        return "<Article(id=%d, entry_id=%s, title=%r, " \
               "date=%r, retrieved_date=%r)>" % (self.id, self.entry_id,
                       self.title, self.date, self.retrieved_date)
Ejemplo n.º 16
0
class FeedSet(db.Model):
    """Represents a set of feeds.
    """
    id = db.Column(db.Integer(), primary_key=True)
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="")
    date_created = db.Column(db.DateTime(), default=datetime.utcnow())
    ui_position = db.Column(db.Integer(), default=0)

    # relationships
    feeds = db.relationship(Feed,
                            backref='set',
                            cascade='all, delete-orphan',
                            foreign_keys=[Feed.set_id])
Ejemplo n.º 17
0
class Feed(db.Model, RightMixin):
    """
    Represent a feed.
    """
    id = db.Column(db.Integer(), primary_key=True)
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="FR")
    link = db.Column(db.String(), nullable=False)
    site_link = db.Column(db.String(), default="")
    enabled = db.Column(db.Boolean(), default=True)
    created_date = db.Column(db.DateTime(), default=datetime.utcnow)
    filters = db.Column(db.PickleType, default=[])
    private = db.Column(db.Boolean(), default=False)

    # cache handling
    etag = db.Column(db.String(), default="")
    last_modified = db.Column(db.String(), default="")
    last_retrieved = db.Column(db.DateTime(), default=datetime(1970, 1, 1))

    # error logging
    last_error = db.Column(db.String(), default="")
    error_count = db.Column(db.Integer(), default=0)

    # relationship
    icon_url = db.Column(db.String(), db.ForeignKey('icon.url'), default=None)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    category_id = db.Column(db.Integer(), db.ForeignKey('category.id'))
    articles = db.relationship(Article,
                               backref='source',
                               lazy='dynamic',
                               cascade='all,delete-orphan',
                               order_by=desc(Article.date))

    # index
    idx_feed_uid_cid = Index('user_id', 'category_id')
    idx_feed_uid = Index('user_id')

    # api whitelists
    @staticmethod
    def _fields_base_write():
        return {
            'title', 'description', 'link', 'site_link', 'enabled', 'filters',
            'last_error', 'error_count', 'category_id'
        }

    @staticmethod
    def _fields_base_read():
        return {'id', 'user_id', 'icon_url', 'last_retrieved'}

    @validates('title')
    def validates_title(self, key, value):
        return str(value).strip()

    @validates('description')
    def validates_description(self, key, value):
        return str(value).strip()

    def __repr__(self):
        return '<Feed %r>' % (self.title)
Ejemplo n.º 18
0
class Feed(db.Model):
    """Represents a feed.
    """
    id = db.Column(db.Integer(), primary_key=True)
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="")
    language = db.Column(db.String(), default="")
    link = db.Column(db.String(), nullable=False)
    date_created = db.Column(db.DateTime(), default=datetime.utcnow())

    # foreign keys
    set_id = db.Column(db.Integer(), db.ForeignKey('feed_set.id'))

    def output(self, key, obj):
        return {'title': self.title}
Ejemplo n.º 19
0
class Campaign(db.Model):

    # QeBWZ8BZBozoT8y
    id = db.Column(db.String(length=8), primary_key=True)
    title = db.Column(db.String(length=100))
    description = db.Column(db.Text)
    schema = db.Column(db.String(length=32))
    # feature_type_id = db.Column(db.Integer, db.ForeignKey('feature_type.id'))
    # feature_type = db.relationship('FeatureType')
    admin_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    admin = db.relationship('User')
    admin_token = db.Column(db.String(length=16))
    created_at = db.Column(db.Date)
    closing_at = db.Column(db.Date)
    closed = db.Column(db.Boolean)
Ejemplo n.º 20
0
class Project(db.Model):
    """Represent a project.
    """
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True)
    short_description = db.Column(db.String(300), unique=True)
    description = db.Column(db.String(), unique=True)
    website = db.Column(db.String())
    enabled = db.Column(db.Boolean(), default=True)
    last_updated = db.Column(db.DateTime(), default=datetime.utcnow())

    # if cve_vendor is the empty string use the parent property
    # (organization.cve_vendor)
    cve_vendor = db.Column(db.String(), default='')
    cve_product = db.Column(db.String(), unique=True, nullable=False)

    automatic_release_tracking = db.Column(db.String())

    notification_email = db.Column(db.String(), default='')
    required_informations = db.Column(JSON, default=None)

    # foreign keys
    organization_id = db.Column(db.Integer(), db.ForeignKey('organization.id'))
    manager_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    icon_url = db.Column(db.String(), db.ForeignKey('icon.url'), default=None)

    # relationships
    tag_objs = db.relationship('Tag',
                               back_populates='project',
                               cascade='all,delete-orphan',
                               lazy=False,
                               foreign_keys='[Tag.project_id]')
    tags = association_proxy('tag_objs', 'text')
    licenses = db.relationship("License",
                               secondary=lambda: association_table,
                               backref="projects")
    cves = db.relationship('CVE',
                           backref='project',
                           lazy='dynamic',
                           cascade='all,delete-orphan')
    releases = db.relationship('Release',
                               backref='project',
                               lazy='dynamic',
                               cascade='all,delete-orphan')

    @validates('name')
    def validates_name(self, key, value):
        assert len(value) <= 100, \
            AssertionError("maximum length for name: 100")
        return value.replace(' ', '').strip()

    def __repr__(self):
        return '<Name %r>' % (self.name)
Ejemplo n.º 21
0
class Book(db.Model):
    __tablename__ = "books"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), unique=False, nullable=False)
    author = db.Column(db.String(255), unique=False, nullable=False)

    def __repr__(self):
        return f'Books {self.title}'

    def response(book):
        return jsonify({
            'id': book.id,
            'title': book.title,
            'author': book.author
        })
Ejemplo n.º 22
0
class Commune(db.Model):

  __tablename__ = "communes_wgs84"
  __table_args__ = {
    "schema": "bdtopo"
  }

  gid = db.Column(db.Integer, primary_key=True)
  id = db.Column(db.String)
  code_insee = db.Column(db.String(5))
  nom = db.Column(db.String)
  geom = db.Column('geom_lowres', Geometry('MULTIPOLYGON', srid=4326))
  centroid = db.Column(Geometry('POINT', srid=4326))

  @property
  def shape(self):
    return shape.to_shape(self.geom)

  @property
  def properties(self):
    return {
      "id": self.id,
      "code_insee": self.code_insee,
      "nom": self.nom
    }
Ejemplo n.º 23
0
class Message(db.Model):
    """Messages for our website"""

    __table_args__ = (db.UniqueConstraint("version", "product_id",
                                          "template_id"), )
    pk = db.Column(db.Integer, primary_key=True)
    version = db.Column(db.String(5), nullable=False)

    product_id = db.Column(db.Integer,
                           db.ForeignKey("product.pk"),
                           nullable=False)
    product = db.relationship("Product", lazy=False)

    template_id = db.Column(db.Integer,
                            db.ForeignKey("template.pk"),
                            nullable=False)
    template = db.relationship("Template", lazy=False)

    def __init__(self, version, product_id, template_id):
        self.version = version
        self.product_id = product_id
        self.template_id = template_id

    @property
    def sms_body(self):
        return "{}: {!r}".format(self.template.body, self.product)

    def to_dict(self):
        return {
            "pk": self.pk,
            "version": self.version,
            "template_id": self.template_id,
            "product_id": self.product_id,
        }
Ejemplo n.º 24
0
class Role(db.Model):
    """
    Represent a role.
    """
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(), unique=True)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
Ejemplo n.º 25
0
class Category(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String())

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def dump(self):
        return {key: getattr(self, key) for key in ('id', 'name', 'user_id')}
Ejemplo n.º 26
0
class Feed(db.Model):
    """
    Represent a feed.
    """
    id = db.Column(db.Integer(), primary_key=True)
    title = db.Column(db.String(), default="")
    description = db.Column(db.String(), default="FR")
    link = db.Column(db.String())
    site_link = db.Column(db.String(), default="")
    enabled = db.Column(db.Boolean(), default=True)
    created_date = db.Column(db.DateTime(), default=datetime.now)
    filters = db.Column(db.PickleType, default=[])

    # cache handling
    etag = db.Column(db.String(), default="")
    last_modified = db.Column(db.String(), default="")
    last_retrieved = db.Column(db.DateTime(), default=datetime(1970, 1, 1))

    # error logging
    last_error = db.Column(db.String(), default="")
    error_count = db.Column(db.Integer(), default=0)

    # relationship
    icon_url = db.Column(db.String(), db.ForeignKey('icon.url'), default=None)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    category_id = db.Column(db.Integer(), db.ForeignKey('category.id'))
    articles = db.relationship('Article',
                               backref='source',
                               lazy='dynamic',
                               cascade='all,delete-orphan',
                               order_by=desc("date"))

    def __repr__(self):
        return '<Feed %r>' % (self.title)

    def dump(self):
        return {
            "id": self.id,
            "user_id": self.user_id,
            "category_id": self.category_id,
            "title": self.title,
            "description": self.description,
            "link": self.link,
            "site_link": self.site_link,
            "etag": self.etag,
            "enabled": self.enabled,
            "filters": self.filters,
            "icon_url": self.icon_url,
            "error_count": self.error_count,
            "last_error": self.last_error,
            "created_date": self.created_date,
            "last_modified": self.last_modified,
            "last_retrieved": self.last_retrieved,
            "nb_articles": self.articles.count()
        }
Ejemplo n.º 27
0
class User(db.Model, UserMixin):
    """
    Represent a user.
    """
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String(), unique=True)
    email = db.Column(db.String(254), index=True, unique=True)
    pwdhash = db.Column(db.String())
    roles = db.relationship('Role', backref='user', lazy='dynamic')
    activation_key = db.Column(db.String(128), default=hashlib.sha512(
            str(random.getrandbits(256)).encode("utf-8")).hexdigest()[:86])
    date_created = db.Column(db.DateTime(), default=datetime.now)
    last_seen = db.Column(db.DateTime(), default=datetime.now)
    feeds = db.relationship('Feed', backref='subscriber', lazy='dynamic',
                            cascade='all,delete-orphan')
    refresh_rate = db.Column(db.Integer, default=60)  # in minutes

    @staticmethod
    def make_valid_nickname(nickname):
        return re.sub('[^a-zA-Z0-9_\.]', '', nickname)

    def get_id(self):
        """
        Return the id of the user.
        """
        return self.id

    def check_password(self, password):
        """
        Check the password of the user.
        """
        return check_password_hash(self.pwdhash, password)

    def is_admin(self):
        """
        Return True if the user has administrator rights.
        """
        return "admin" in [role.name for role in self.roles]

    def __eq__(self, other):
        return self.id == other.id

    def __repr__(self):
        return '<User %r>' % (self.nickname)
Ejemplo n.º 28
0
class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    items = relationship('Item', back_populates='project')
    cards = relationship('Card', back_populates='project')

    def __repr__(self):
        return str(self)

    def __str__(self):
        return f'{self.__class__.__name__}: {self.name}'
Ejemplo n.º 29
0
class Client(db.Model):
    __tablename__ = "clients"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=False, nullable=False)

    def __repr__(self):
        return f'Client {self.name}'

    def response(client):
        return jsonify({'id': client.id, 'name': client.name})
Ejemplo n.º 30
0
class User(db.Model, UserMixin, RightMixin):
    """
    Represent a user.
    """
    id = db.Column(db.Integer, primary_key=True)
    login = db.Column(db.String(), unique=True)
    password = db.Column(db.String())
    email = db.Column(db.String(254))

    # user rights
    is_active = db.Column(db.Boolean(), default=True)
    is_admin = db.Column(db.Boolean(), default=False)
    is_api = db.Column(db.Boolean(), default=False)

    google_identity = db.Column(db.String())
    twitter_identity = db.Column(db.String())
    facebook_identity = db.Column(db.String())
    linuxfr_identity = db.Column(db.String())

    date_created = db.Column(db.DateTime(), default=datetime.utcnow)
    last_connection = db.Column(db.DateTime(), default=datetime.utcnow)
    feeds = db.relationship('Feed',
                            backref='subscriber',
                            lazy='dynamic',
                            cascade='all,delete-orphan')
    readability_key = db.Column(db.String(), default='')
    renew_password_token = db.Column(db.String(), default='')

    categories = relationship('Category', cascade='all, delete-orphan')
    feeds = relationship('Feed', cascade='all, delete-orphan')
    articles = relationship('Article', cascade='all, delete-orphan')

    @staticmethod
    def _fields_base_write():
        return {
            'login', 'password', 'email', 'readability_key', 'google_identity',
            'twitter_identity', 'facebook_identity'
        }

    @staticmethod
    def _fields_base_read():
        return {'date_created', 'last_connection'}

    @validates('login')
    def validates_login(self, key, value):
        return re.sub('[^a-zA-Z0-9_\.]', '', value.strip())