class AbPermission(Base):
    __tablename__ = 'ab_permission'

    id = Column(Integer, primary_key=True)
    name = Column(String(100), nullable=False, unique=True)
Exemple #2
0
#!/usr/bin/python3
""" Place Module for HBNB project """
from models.base_model import BaseModel, Base
from sqlalchemy import Column, Integer, Float, String, ForeignKey, Table
from sqlalchemy.orm import relationship
from os import getenv

place_amenity = Table('place_amenity', Base.metadata,
                      Column('place_id', String(60),
                             ForeignKey('places.id'), primary_key=True,
                             nullable=False),
                      Column('amenity_id', String(60),
                             ForeignKey('amenities.id'), primary_key=True,
                             nullable=False))


class Place(BaseModel, Base):
    """A place to stay"""
    __tablename__ = 'places'
    city_id = Column(String(60), ForeignKey('cities.id'), nullable=False)
    user_id = Column(String(60), ForeignKey('users.id'), nullable=False)
    name = Column(String(128), nullable=False)
    description = Column(String(1024), nullable=True)
    number_rooms = Column(Integer, nullable=False, default=0)
    number_bathrooms = Column(Integer, nullable=False, default=0)
    max_guest = Column(Integer, nullable=False, default=0)
    price_by_night = Column(Integer, nullable=False, default=0)
    latitude = Column(Float, nullable=True)
    longitude = Column(Float, nullable=True)
    amenity_ids = []
class city(Base):
    """definition of city class"""
    __tablename__ = 'cities'
    id = Column(Integer, primary_key=True)
    name = Column(String(128), nullable=False)
    state_id = Column(Integer, ForeignKey('states.id'))
Exemple #4
0
class Malware(Base):
    __tablename__ = 'malware'

    id = Column(Integer(), primary_key=True)
    name = Column(String(255), nullable=True)
    size = Column(Integer(), nullable=False)
    type = Column(Text(), nullable=True)
    mime = Column(String(255), nullable=True)
    md5 = Column(String(32), nullable=False, index=True)
    crc32 = Column(String(8), nullable=False)
    sha1 = Column(String(40), nullable=False)
    sha256 = Column(String(64), nullable=False, index=True)
    sha512 = Column(String(128), nullable=False)
    ssdeep = Column(String(255), nullable=True)
    created_at = Column(DateTime(timezone=False),
                        default=datetime.now(),
                        nullable=False)
    parent_id = Column(Integer(), ForeignKey('malware.id'))
    parent = relationship('Malware', lazy='subquery', remote_side=[id])
    tag = relationship('Tag',
                       secondary=association_table,
                       backref=backref('malware'))
    note = relationship('Note',
                        cascade='all, delete',
                        secondary=association_table,
                        backref=backref('malware'))
    analysis = relationship('Analysis',
                            cascade='all, delete',
                            secondary=association_table,
                            backref=backref('malware'))
    __table_args__ = (Index('hash_index',
                            'md5',
                            'crc32',
                            'sha1',
                            'sha256',
                            'sha512',
                            unique=True), )

    def to_dict(self):
        row_dict = {}
        for column in self.__table__.columns:
            value = getattr(self, column.name)
            row_dict[column.name] = value

        return row_dict

    def __repr__(self):
        return "<Malware ('{0}','{1}')>".format(self.id, self.md5)

    def __init__(self,
                 md5,
                 crc32,
                 sha1,
                 sha256,
                 sha512,
                 size,
                 type=None,
                 mime=None,
                 ssdeep=None,
                 name=None,
                 parent=None):
        self.md5 = md5
        self.sha1 = sha1
        self.crc32 = crc32
        self.sha256 = sha256
        self.sha512 = sha512
        self.size = size
        self.type = type
        self.mime = mime
        self.ssdeep = ssdeep
        self.name = name
        self.parent = parent
Exemple #5
0
class Article(Model):
    __tablename__ = 'Article'
    id = Column(Integer, primary_key=True)
    DTYPE = Column(String(length=31))
    version = Column(Integer)
    format = Column(Enum('NEWS', 'BEST_PRODUCTS', 'HOW_TO', 'OPINION', 'INTERVIEW', 'POLL',
                         'LIVE_STREAM', 'DEALS', 'HANDS_ON', 'FULL_REVIEW', 'LONG_TERM_REVIEW', 'COMPARISON'))
    language = Column(String(length=2))
    uri_language = Column(String(length=2))
    uri_uri = Column(String(length=255))
    title = Column(String(length=255))
    advertorial = Column(BIT)
    metaDescription = Column(Text)
    metaKeywords = Column(Text)
    metaNewsKeywords = Column(Text)
    categoryIds = Column(Text)
    relatedManufacturerIds = Column(Text)
    mainDevice_id = Column(Integer)
    relatedDeviceIds = Column(Text)
    relatedAppIds = Column(Text)
    relatedAndroidVersions = Column(Text)
    relatedSystemUIs = Column(Text)
    relatedOSs = Column(Text)
    relatedOperatorBrands = Column(Text)
    otherTags = Column(Text)
    otherTagIds = Column(Text)
    relatedForumThreadIds = Column(String(length=255))
    relatedArticleIds = Column(String(length=255))
    referencedGalleryIds = Column(Text)
    commentsAllowed = Column(Boolean)
    author_id = Column(Integer, ForeignKey('User.id'))
    published = Column(Boolean)
    publishingDate = Column(DateTime)
    republishingDate = Column(DateTime)
    storyLabel = Column(String(length=255))
    sourceName = Column(String(length=255))
    sourceURL = Column(String(length=255))
    source2Name = Column(String(length=255))
    source2URL = Column(String(length=255))
    source3Name = Column(String(length=255))
    source3URL = Column(String(length=255))
    translationSource_id = Column(Integer, ForeignKey('Article.id'))

    heroImage_id = Column(Integer, ForeignKey(
        'UserFile.id'))  # foregin keys here/
    heroImageAuto = Column(Boolean)
    previewImage_id = Column(Integer, ForeignKey('UserFile.id'))
    previewImageLegacy_id = Column(Integer, ForeignKey('UserFile.id'))
    pros = Column(Text)
    cons = Column(Text)

    createdBy_id = Column(Integer, ForeignKey('User.id'))
    creationDate = Column(DateTime)

    modifiedBy_id = Column(Integer, ForeignKey('User.id'))
    modificationDate = Column(DateTime)

    deleted = Column(Boolean)
    deletionDate = Column(DateTime)
    deletionReason = Column(String(length=255))

    author = relationship('User', foreign_keys=[author_id])
    createdBy = relationship('User', foreign_keys=[createdBy_id])
    modifiedBy = relationship('User', foreign_keys=[modifiedBy_id])

    heroImage = relationship('UserFile', foreign_keys=[heroImage_id])
    previewImage = relationship('UserFile', foreign_keys=[previewImage_id])
    previewImageLegacy = relationship(
        'UserFile', foreign_keys=[previewImageLegacy_id])

    sections = relationship('ArticleSection', back_populates='article')
    comments = relationship('ArticleComment', back_populates='article')
    translationSource = relationship('Article', uselist=False, remote_side=[id], back_populates='translations')
    translations = relationship('Article', foreign_keys=[translationSource_id], back_populates='translationSource')

    def __repr__(self):
        return "<ApitArticle(id='%s', title='%s', publishingDate='%s')>" % (self.id, self.title, self.publishingDate)
Exemple #6
0
from sqlalchemy import (Table, Column, String, TIMESTAMP, text)
from sqlalchemy.dialects.postgresql import UUID, BYTEA
from db import meta
from db.mixins import timestamps

accounts = Table(
    'accounts', meta,
    Column('id',
           UUID,
           primary_key=True,
           server_default=text('uuid_generate_v4()')),
    Column('username', String(80), nullable=False, unique=True),
    Column('email', String, nullable=True, unique=True),
    Column('pw_hash', BYTEA), Column('activated_at', TIMESTAMP), *timestamps())
Exemple #7
0
class Game(Base):
    """Represents a pending or started SpellTable game."""

    __tablename__ = "games"

    id = Column(
        Integer,
        autoincrement=True,
        nullable=False,
        primary_key=True,
        doc="The SpellBot game reference ID",
    )
    created_at = Column(
        DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=now,
        doc="UTC timestamp when this games was first created",
    )
    updated_at = Column(
        DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=now,
        onupdate=datetime.utcnow,
        doc="UTC timestamp when this games was last updated",
    )
    started_at = Column(
        DateTime,
        nullable=True,
        doc="UTC timestamp when this games was started",
    )
    deleted_at = Column(
        DateTime,
        nullable=True,
        index=True,
        doc="UTC timestamp when this games was deleted",
    )
    guild_xid = Column(
        BigInteger,
        ForeignKey("guilds.xid", ondelete="CASCADE"),
        index=True,
        nullable=False,
        doc="The external Discord ID of the associated guild",
    )
    channel_xid = Column(
        BigInteger,
        ForeignKey("channels.xid", ondelete="CASCADE"),
        index=True,
        nullable=False,
        doc="The external Discord ID of the associated channel",
    )
    message_xid = Column(
        BigInteger,
        index=True,
        nullable=True,
        doc="The external Discord ID of the messsage where this game's embed is found",
    )
    voice_xid = Column(
        BigInteger,
        index=True,
        nullable=True,
        doc="The external Discord ID of an associated voice channel",
    )
    seats = Column(
        Integer,
        index=True,
        nullable=False,
        doc="The number of seats (open or occupied) available at this game",
    )
    status = Column(
        Integer(),
        default=GameStatus.PENDING.value,
        server_default=text(str(GameStatus.PENDING.value)),
        index=True,
        nullable=False,
        doc="Pending or started status of this game",
    )
    format = Column(
        Integer(),
        default=GameFormat.COMMANDER.value,
        server_default=text(str(GameFormat.COMMANDER.value)),
        index=True,
        nullable=False,
        doc="The Magic: The Gathering format for this game",
    )
    spelltable_link = Column(
        String(255),
        doc="The generated SpellTable link for this game",
    )
    voice_invite_link = Column(
        String(255),
        doc="The generate voice channel invite link for this game",
    )

    players = relationship(
        "User",
        back_populates="game",
        uselist=True,
        doc="Players in this game",
    )
    guild = relationship(
        "Guild",
        back_populates="games",
        doc="The guild this game was created in",
    )
    channel = relationship(
        "Channel",
        back_populates="games",
        doc="The channel this game was created in",
    )

    @property
    def started_at_timestamp(self) -> int:
        assert self.started_at is not None
        return int(self.started_at.replace(tzinfo=tz.UTC).timestamp())

    def show_links(self, dm: bool = False) -> bool:
        return True if dm else self.guild.show_links

    @property
    def embed_title(self) -> str:
        if self.status == GameStatus.STARTED.value:
            return "**Your game is ready!**"
        remaining = int(self.seats) - len(self.players)
        plural = "s" if remaining > 1 else ""
        return f"**Waiting for {remaining} more player{plural} to join...**"

    def embed_description(self, dm: bool = False) -> str:
        description = ""
        if self.status == GameStatus.PENDING.value:
            description += "_A SpellTable link will be created when all players have joined._"
        else:
            if self.show_links(dm):
                if self.spelltable_link:
                    description += (
                        f"[Join your SpellTable game now!]({self.spelltable_link})"
                        f" (or [spectate this game]({self.spectate_link}))"
                    )
                else:
                    description += (
                        "Sorry but SpellBot was unable to create a SpellTable link"
                        " for this game. Please go to [SpellTable]"
                        "(https://spelltable.wizards.com/) to create one."
                    )
                if self.voice_invite_link:
                    settings = Settings()
                    expire_min = int(settings.VOICE_INVITE_EXPIRE_TIME_S / 60)
                    description += (
                        f"\n\n[Join your voice chat now!]({self.voice_invite_link})"
                        f" (invite will expire in {expire_min} minutes)"
                    )
            else:
                description += "Please check your Direct Messages for your SpellTable link."
            if dm:
                description += (
                    "\n\nYou can also [jump to the original game post]"
                    f"({self.jump_link}) in <#{self.channel_xid}>."
                )
            elif self.guild.show_points:
                description += "\n\nWhen your game is over use the drop down to report your points."
        if self.guild.motd:
            description += f"\n\n{self.guild.motd}"
        if self.channel.motd:
            description += f"\n\n{self.channel.motd}"
        return description

    @property
    def embed_players(self) -> str:
        player_strs: list[str] = []
        for player in self.players:
            points_str = ""
            if self.status == GameStatus.STARTED.value:
                points = player.points(self.id)
                if points:
                    points_str = f" ({points} point{'s' if points > 1 else ''})"

            power_level_str = ""
            if self.status == GameStatus.PENDING.value:
                config = player.config(self.guild_xid) or {}
                power_level = config.get("power_level", None)
                if power_level:
                    power_level_str = f" (power level: {power_level})"

            player_strs.append(f"<@{player.xid}>{power_level_str}{points_str}")
        return ", ".join(sorted(player_strs))

    @property
    def embed_footer(self) -> str:
        return f"SpellBot Game ID: #SB{self.id}"

    @property
    def spectate_link(self) -> Optional[str]:
        return f"{self.spelltable_link}?spectate=true" if self.spelltable_link else None

    @property
    def jump_link(self) -> str:
        guild = self.guild_xid
        channel = self.channel_xid
        message = self.message_xid
        return f"https://discordapp.com/channels/{guild}/{channel}/{message}"

    @property
    def format_name(self) -> str:
        return GameFormat(self.format).name.replace("_", " ").title()

    def to_embed(self, dm: bool = False) -> discord.Embed:
        settings = Settings(self.guild_xid)
        embed = discord.Embed(title=self.embed_title)
        embed.set_thumbnail(url=settings.THUMB_URL)
        embed.description = self.embed_description(dm)
        if self.players:
            embed.add_field(name="Players", value=self.embed_players, inline=False)
        embed.add_field(name="Format", value=self.format_name)
        if self.started_at:
            embed.add_field(name="Started at", value=f"<t:{self.started_at_timestamp}>")
        if self.voice_xid and self.show_links(dm):
            embed.add_field(name="Voice Channel", value=f"<#{self.voice_xid}>")
        embed.set_footer(text=self.embed_footer)
        embed.color = discord.Color(settings.EMBED_COLOR)
        return embed

    def to_dict(self) -> dict[str, Any]:
        return {
            "id": self.id,
            "created_at": self.created_at,
            "updated_at": self.updated_at,
            "started_at": self.started_at,
            "deleted_at": self.deleted_at,
            "guild_xid": self.guild_xid,
            "channel_xid": self.channel_xid,
            "message_xid": self.message_xid,
            "voice_xid": self.voice_xid,
            "seats": self.seats,
            "status": self.status,
            "format": self.format,
            "spelltable_link": self.spelltable_link,
            "spectate_link": self.spectate_link,
            "voice_invite_link": self.voice_invite_link,
            "jump_link": self.jump_link,
        }
class Employee(Base):
    __tablename__ = 'Employee'

    Id = Column(Integer, primary_key=True)
    LastName = Column(String(8000))
    FirstName = Column(String(8000))
    Title = Column(String(8000))
    TitleOfCourtesy = Column(String(8000))
    BirthDate = Column(String(8000))
    HireDate = Column(String(8000))
    Address = Column(String(8000))
    City = Column(String(8000))
    Region = Column(String(8000))
    PostalCode = Column(String(8000))
    Country = Column(String(8000))
    HomePhone = Column(String(8000))
    Extension = Column(String(8000))
    Photo = Column(LargeBinary)
    Notes = Column(String(8000))
    # ReportsTo = Column(Integer)
    ReportsTo = Column(ForeignKey('Employee.Id'), nullable=False)
    PhotoPath = Column(String(8000))

    OrderList = relationship("Order", cascade_backrefs=True, backref="SalesRep")
    # https://stackoverflow.com/questions/2638217/sqlalchemy-mapping-self-referential-relationship-as-one-to-many-declarative-f
    Manager = relationship('Employee', remote_side='Employee.Id',
                                      backref='Manages')  # parent Company
class State(Base):
    """State"""
    __tablename__ = "states"
    id = Column(Integer, primary_key=True, nullable=False)
    name = Column(String(128), nullable=False)
    cities = relationship('City', backref="state", cascade="all, delete")
class Customer(Base):
    __tablename__ = 'Customer'

    Id = Column(String(8000), primary_key=True)
    CompanyName = Column(String(8000))
    ContactName = Column(String(8000))
    ContactTitle = Column(String(8000))
    Address = Column(String(8000))
    City = Column(String(8000))
    Region = Column(String(8000))
    PostalCode = Column(String(8000))
    Country = Column(String(8000))
    Phone = Column(String(8000))
    Fax = Column(String(8000))
    Balance = Column(DECIMAL)
    CreditLimit = Column(DECIMAL)
    OrderCount = Column(Integer)
    UnpaidOrderCount = Column(Integer)

    #  OrderList = relationship("Order", cascade_backrefs=True)  # backref="Customer", FIXME cleanup
    OrderList = relationship("Order", cascade_backrefs=True, backref="Customer")
class CustomerDemographic(Base):
    __tablename__ = 'CustomerDemographic'

    Id = Column(String(8000), primary_key=True)
    CustomerDesc = Column(String(8000))
class AbViewMenu(Base):
    __tablename__ = 'ab_view_menu'

    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False, unique=True)
class AbRole(Base):
    __tablename__ = 'ab_role'

    id = Column(Integer, primary_key=True)
    name = Column(String(64), nullable=False, unique=True)
class Category(Base):
    __tablename__ = 'Category'

    Id = Column(Integer, primary_key=True)
    CategoryName = Column(String(8000))
    Description = Column(String(8000))
Exemple #15
0
class User(SitemapMixin, db.Model):

    __tablename__ = "users"
    __table_args__ = (
        CheckConstraint("length(username) <= 50",
                        name="users_valid_username_length"),
        CheckConstraint(
            "username ~* '^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$'",
            name="users_valid_username",
        ),
    )

    __repr__ = make_repr("username")

    username = Column(CIText, nullable=False, unique=True)
    name = Column(String(length=100), nullable=False)
    password = Column(String(length=128), nullable=False)
    password_date = Column(DateTime,
                           nullable=True,
                           server_default=sql.func.now())
    is_active = Column(Boolean, nullable=False, server_default=sql.false())
    is_superuser = Column(Boolean, nullable=False, server_default=sql.false())
    is_moderator = Column(Boolean, nullable=False, server_default=sql.false())
    date_joined = Column(DateTime, server_default=sql.func.now())
    last_login = Column(DateTime,
                        nullable=False,
                        server_default=sql.func.now())
    disabled_for = Column(
        Enum(DisableReason, values_callable=lambda x: [e.value for e in x]),
        nullable=True,
    )

    totp_secret = Column(Binary(length=20), nullable=True)

    webauthn = orm.relationship("WebAuthn",
                                backref="user",
                                cascade="all, delete-orphan",
                                lazy=False)

    emails = orm.relationship("Email",
                              backref="user",
                              cascade="all, delete-orphan",
                              lazy=False)

    @property
    def primary_email(self):
        primaries = [x for x in self.emails if x.primary]
        if primaries:
            return primaries[0]

    @hybrid_property
    def email(self):
        primary_email = self.primary_email
        return primary_email.email if primary_email else None

    @email.expression
    def email(self):
        return (select([Email.email
                        ]).where((Email.user_id == self.id)
                                 & (Email.primary.is_(True))).as_scalar())

    @property
    def has_two_factor(self):
        return self.totp_secret is not None or len(self.webauthn) > 0

    @property
    def two_factor_provisioning_allowed(self):
        return self.primary_email is not None and self.primary_email.verified
class Category(Base):
    __tablename__ = 'category'

    cid = Column(INTEGER(11), primary_key=True)
    cname = Column(String(20))
    cdesc = Column(String(50))
Exemple #17
0
class Bibitem(Base):
    __tablename__ = 'bibitem'
    uuid = Column(String(36), primary_key=True)
    in_doc = Column(String(36))
    bibitem_string = Column(UnicodeText())
Exemple #18
0
class Cluster(Entity):
    """集群信息表"""
    __tablename__ = "cluster"

    # enum
    THREE_TIER = "Three-tier"
    SAN_FREE = "Sanfree"
    UNKNOWN = "Unknown"
    LONGHAUL = "Longhaul"
    enum_qdtype = Enum(THREE_TIER, SAN_FREE, UNKNOWN, LONGHAUL)
    TYPE_NAME = {
        THREE_TIER: u"三层架构",
        SAN_FREE: u"双节点架构",
        LONGHAUL: u"长距双活",
        UNKNOWN: u"未知",
    }

    # columns
    id = Column(Integer, primary_key=True)
    name = Column(String(length=128), nullable=True, unique=True, doc="集群名字")
    uuid = Column(String(length=128), nullable=False, doc="集群uuid")
    type = Column(enum_qdtype, nullable=False, doc="集群类型")
    distance = Column(Integer, nullable=True, doc="距离:1/10/40/80公里")
    description = Column(JSON, default=[], nullable=True, doc="集群描述")
    ssh = Column(JSON, default={}, doc="登录集群的user/password/port/key")

    @classmethod
    def get_by_uuid(cls, cluster_uuid):
        with open_session() as session:
            return session.query(cls).filter_by(uuid=cluster_uuid).first()

    @classmethod
    def get_by_id(cls, session, cluster_id):
        return session.query(cls).filter_by(id=cluster_id).first()

    @classmethod
    def update_cluster(cls, cluster, name=None, description=None):
        """
        更新集群名字、描述
        :param cluster: 集群对象
        :param name: 待更新的集群名字
        :param description: 待更新集群描述
        :return: 成功返回 True,失败返回 False
        """
        logger = logging.getLogger(__name__)
        if not name and not description:
            return False
        if not isinstance(cluster, cls):
            return False
        try:
            with open_session() as session:
                if name:
                    cluster.name = name
                if description:
                    cluster.description = description
                session.merge(cluster)
        except Exception as e:
            logger.exception(e)
            return False
        return True

    @classmethod
    def merge(cls, session, obj, key):
        old_obj = cls.get_first(session, key, getattr(obj, key))
        if old_obj:
            # 根据 key 判断原来数据中的 nodes( 即节点信息)是否存在,old_obj和obj同时有nodes则不允许merge
            if old_obj.nodes and obj.nodes:
                raise Exception(
                    "merge failed: both source and destination has no empty nodes"
                )
            else:
                return super(Cluster, cls).merge(session, obj, key)
        else:
            return super(Cluster, cls).merge(session, obj, key)
Exemple #19
0
class Gift(Base):
    id = Column(Integer, primary_key=True)
    user = relationship('User')
    uid = Column(Integer, ForeignKey('user.id'))
    isbn = Column(String(15), nullable=False)
    launched = Column(Boolean, default=False)
Exemple #20
0
class Order(Base):
    # 表的名字:
    __tablename__ = 'tb_order'
    # 表的结构:
    order_id = Column(String(50), primary_key=True)
Exemple #21
0
class Detail(Base):
    __tablename__ = "fitzgerald_kit_detail"

    id = Column(Integer, primary_key=True, autoincrement=True, comment="id")
    Brand = Column(String(40), nullable=True, comment="")
    Catalog_Number = Column(String(100), nullable=True, comment="")
    Product_Name = Column(String(200), nullable=True, comment="")
    Detail_url = Column(String(1000), nullable=True, comment="")
    Tests = Column(String(200), nullable=True, comment="")
    Assay_type = Column(String(200), nullable=True, comment="")
    Sample_type = Column(String(1000), nullable=True, comment="")
    Assay_length = Column(String(200), nullable=True, comment="")
    Sensitivity = Column(String(200), nullable=True, comment="")
    Assay_range = Column(String(200), nullable=True, comment="")
    Specificity = Column(String(200), nullable=True, comment="")
    GeneId = Column(String(500), nullable=True, comment="")
    SwissProt = Column(String(500), nullable=True, comment="")
    DataSheet_URL = Column(String(500), nullable=True, comment="")
    Review = Column(String(50), nullable=True, comment="")
    Image_qty = Column(Integer, nullable=True, comment="")
    Citations = Column(String(20), nullable=True, comment="")
    Synonyms = Column(String(3000), nullable=True, comment="")
    Kit_Status = Column(String(20), nullable=True, comment="")
    Note = Column(String(500), nullable=True, comment="")
    Crawl_Date = Column(DateTime,
                        server_default=func.now(),
                        nullable=True,
                        comment="")
Exemple #22
0
class Sensor(Base):
    __tablename__   = 'Sensor'
    id              = Column(Integer, primary_key = True)
    nodeID          = Column(Integer, nullable = False)
    dataID          = Column(Integer, nullable = False)
    name            = Column(String(20), nullable = False, unique = True)
Exemple #23
0
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    email = Column(String(255), nullable=False)
    password = Column(String(64))
    is_admin = Column(Boolean(), default=False, nullable=False)
    deleted = Column(Boolean(), default=False, nullable=False)
    created_at = Column(DateTime, default=datetime.datetime.utcnow)

    # ------------------------------------------------------------------------
    # FIND / CREATE
    # ------------------------------------------------------------------------

    @staticmethod
    def find_by_email(email):
        return db.query(User).filter_by(email=email, deleted=False).first()

    @staticmethod
    def create(**kwargs):
        """Create and return a user.
        Pass in password as 'passwd'
        Returns:
            User object on success.
            False if email is taken.
        """
        if User.find_by_email(kwargs['email']):
            return False

        u = User(**kwargs)
        db.add(u)
        db.commit()
        return u

    @staticmethod
    def login(email, password):
        """Tries to log in a user

        Args:
            email_or_username: obvi.
            password: plaintext plaintext password

        Returns:
            User object if login succeeded
            False if login failed
        """
        ret = False
        bcrypt = Bcrypt()
        user = User.find_by_email(email)
        if user and bcrypt.check_password_hash(user.password, password):
            ret = user
        return ret

    # ------------------------------------------------------------------------
    # PASSWORD
    # ------------------------------------------------------------------------

    @property
    def passwd(self):
        return self.password

    @passwd.setter
    def passwd(self, value=None):
        bcrypt = Bcrypt()
        password = bcrypt.generate_password_hash(value)
        self.password = password
Exemple #24
0
class Node(Base):
    __tablename__   = 'node'
    id              = Column(Integer, primary_key = True)
    name            = Column(String(20), nullable = False)
Exemple #25
0
class User(Model):
    __tablename__ = 'User'
    id = Column(Integer, primary_key=True)
    version = Column(Integer)
    status = Column(Enum('NO_USER', 'REGISTERING',
                         'REGISTERING_ACTIVE', 'OK', 'DEACTIVATED'))

    emailAddress = Column(String(length=255))
    passwordSHA = Column(String(length=255))
    passwordGenerated = Column(String(length=255))
    accountActivationCode = Column(String(length=255))
    accountActivationLink = Column(String(length=255))
    emailAddressNew = Column(String(length=255))
    emailValidationCode = Column(String(length=255))
    emailValidationLink = Column(String(length=255))
    fbUserId = Column(BigInteger)
    googleUserId = Column(String(length=255))
    publicName = Column(String(length=255))
    username = Column(String(length=255))
    communityName = Column(String(length=255))
    birthdayDate = Column(Integer)
    birthdayMonth = Column(Integer)
    birthdayYear = Column(Integer)
    birthdayMailSentYear = Column(Integer)

    city = Column(String(length=255))
    country_id = Column(String(length=2))
    locale = Column(String(length=255))

    roleAssignmentsJson = Column(Text)
    staffPageDescriptionJson = Column(Text)
    deactivationDate = Column(DateTime)
    lastLoginDate = Column(DateTime)

    nextPitTransferAgreed = Column(BIT)
    nextPitTransferAgrementDate = Column(DateTime)
    nextPitTransferDisagrementDate = Column(DateTime)
    creationDate = Column(DateTime)

    level = Column(Integer)
    pointsInLevel = Column(Integer)
    pointsTotalRecalculated = Column(Integer)

    partner_id = Column(String(length=255))

    userImage_id = Column(Integer)  # FOREIGNKEY HERE

    image = relationship('UserImage', back_populates='user', uselist=False,
                         primaryjoin="and_(User.id==UserImage.user_id, UserImage.deleted==0)")
    files = relationship('UserFile', back_populates='user',
                         foreign_keys='UserFile.createdBy_id')

    def __repr__(self):
        return "<ApitUser(id='%s', emailAddress='%s', publicName='%s')>" % (self.id, self.emailAddress, self.publicName)
class Port(Base):
    __tablename__ = "port"
    id = Column(Integer, primary_key=True)
    name = Column(String(256), nullable=False)
import os

from databases import Database

from sqlalchemy.sql import func
from sqlalchemy import (Column, DateTime, Integer, MetaData, String, Table,
                        create_engine)

DATABASE_URL = os.getenv("DATABASE_URL")

# SQLAlchemy
engine = create_engine(DATABASE_URL)
metadata = MetaData()
notes = Table(
    "notes", metadata, Column("id", Integer, primary_key=True),
    Column("title", String(20)), Column("description", String(50)),
    Column("created_date", DateTime, default=func.now(), nullable=False))

# databases query builder
database = Database(DATABASE_URL)
class CruiseLine(Base):
    __tablename__ = 'cruiseline'
    id = Column(Integer, primary_key=True)
    name = Column(String(128), nullable=False)
    ships = relationship("Ship", back_populates="line")
Exemple #29
0
    id = Column(Integer, Sequence('id'), primary_key=True)
    name = Column(String(20))

class Random_table(Base):
    __tablename__ = 'random_code'
    id = Column(Integer, Sequence('id'), primary_key=True)
    code = Column(String(200))

engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')
metadata = MetaData(engine)
Base.metadata.drop_all(engine)


user_table = Table('user', metadata,
                Column('id', Integer, primary_key=True),
                Column('name',String(20))
                   )

user_table = Table('random_code', metadata,
        Column('id', Integer,primary_key=True),
        Column('code', String(200))
        )

metadata.create_all()


DBsession = sessionmaker(bind=engine)
# add data in DB
session = DBsession()
new_user = User(id=random_nbr, name='The fist record')
session.add(new_user)
class Territory(Base):
    __tablename__ = 'Territory'

    Id = Column(String(8000), primary_key=True)
    TerritoryDescription = Column(String(8000))
    RegionId = Column(Integer, nullable=False)