def test_unicode_warnings_dialectlevel(self):

        unicodedata = self.data

        with testing.expect_deprecated(
            "The create_engine.convert_unicode parameter and "
            "corresponding dialect-level"
        ):
            dialect = default.DefaultDialect(convert_unicode=True)
        dialect.supports_unicode_binds = False

        s = String()
        uni = s.dialect_impl(dialect).bind_processor(dialect)

        uni(util.b("x"))
        assert isinstance(uni(unicodedata), util.binary_type)

        eq_(uni(unicodedata), unicodedata.encode("utf-8"))
    def test_ignoring_unicode_error(self):
        """checks String(unicode_error='ignore') is passed to
        underlying codec."""

        unicodedata = self.data

        with testing.expect_deprecated(
            "The String.convert_unicode parameter is deprecated and "
            "will be removed in a future release.",
            "The String.unicode_errors parameter is deprecated and "
            "will be removed in a future release.",
        ):
            type_ = String(
                248, convert_unicode="force", unicode_error="ignore"
            )
        dialect = default.DefaultDialect(encoding="ascii")
        proc = type_.result_processor(dialect, 10)

        utfdata = unicodedata.encode("utf8")
        eq_(proc(utfdata), unicodedata.encode("ascii", "ignore").decode())
class Privacy(Base):
    __tablename__ = 'Privacies'
    tabletype = TableTypes.REFERENCE

    privacy_id = Column(UUID(), primary_key=True, default=uuid.uuid4)
    name = Column(String(150), nullable=False)
Exemple #4
0
)
from sqlalchemy.sql import func


DATABASE_URL = os.getenv("DATABASE_URL")

# SQLAlchemy
engine = create_engine(DATABASE_URL)
metadata = MetaData()

images = Table(
    "cyanotypes",
    metadata,
    Column("id", Integer, primary_key=True),
    Column("title", String(50)),
    Column("description", String(250)),
    Column("link_to_file", String(250)),
    Column("created_date", DateTime, default=func.now(), nullable=False),
)

notes = Table(
    "notes",
    metadata,
    Column("id", Integer, primary_key=True),
    Column("title", String(50)),
    Column("description", String(50)),
    Column("created_date", DateTime, default=func.now(), nullable=False),
)
# databases query builder
database = Database(DATABASE_URL)
Exemple #5
0
from sqlalchemy import (Table, Column, Date, Integer, Numeric,
                        String, MetaData, Enum)
from sqlalchemy.dialects import postgresql


meta = MetaData()

server_type = postgresql.ENUM('region', 'update', name='server_type',
                               metadata=meta)

image_state = postgresql.ENUM('deleted', 'deprecated', 'inactive',
                              'active', name='image_state', metadata=meta)

amazonimages = Table(
    'amazonimages', meta,
    Column('name', String(255), primary_key=True),
    Column('state', image_state),
    Column('replacementname', String(255)),
    Column('publishedon', Date, primary_key=True),
    Column('deprecatedon', Date),
    Column('deletedon', Date),
    Column('changeinfo', String(255)),

    Column('id', String(100), primary_key=True),
    Column('replacementid', String(100)),
    Column('region', String(100), primary_key=True),
)

alibabaimages = Table(
    'alibabaimages', meta,
    Column('name', String(255), primary_key=True),
Exemple #6
0
class Company(Base):
    # 表名
    __tablename__ = 'company'
    id = Column(Integer, unique=True, primary_key=True)
    detail_url = Column(String(64))  # 机构详情页
    image = Column(String(256))  # 公司图片
    web = Column(String(512))  # 机构官网
    name = Column(String(512))  # 机构名称
    become_time = Column(String(16))  # 成立时间
    investment_case = Column(String(8))  # 投资案例
    like = Column(String(512))  # 投资偏好
    field = Column(String(512))  # 专注投资领域
    information = Column(Text)  # 机构简介
    icon1_num = Column(String(8))  # 披露的投资事件数
    icon2_num = Column(String(8))  # 走到下一轮公司数
    icon3_num = Column(String(8))  # 连续投资公司数
    add_time = Column(String(32))  # 数据添加时间
Exemple #7
0
class Bet(Base):
    __tablename__ = 'bets'
    id = Column(Integer, primary_key=True)
    player_id = Column(Integer)
    match = Column(Integer)
    bet = Column(String(50))
class BaseModel:
    """A base class for all hbnb models"""

    id = Column(String(60), nullable=False, primary_key=True)
    created_at = Column(DateTime, nullable=False, default=datetime.utcnow())
    updated_at = Column(DateTime, nullable=False, default=datetime.utcnow())

    def __init__(self, *args, **kwargs):
        """Instatntiates a new model"""
        if not kwargs:
            from models import storage
            self.id = str(uuid.uuid4())
            self.created_at = datetime.now()
            self.updated_at = datetime.now()
        else:
            if "id" not in kwargs:
                self.id = str(uuid.uuid4())
            if "updated_at" not in kwargs:
                self.updated_at = datetime.now()
            else:
                kwargs['updated_at'] = datetime.strptime(kwargs['updated_at'],
                                                         '%Y-%m-%dT%H:%M:%S.%f')
            if "created_at" not in kwargs:
                self.created_at = datetime.now()
            else:
                kwargs['created_at'] = datetime.strptime(kwargs['created_at'],
                                                         '%Y-%m-%dT%H:%M:%S.%f')
            try:
                del kwargs['__class__']
            except:
                pass
            # print(self.__dict__)
            self.__dict__.update(kwargs)

    def __str__(self):
        """Returns a string representation of the instance"""
        cls = (str(type(self)).split('.')[-1]).split('\'')[0]
        new_dict = self.__dict__.copy()
        return "[{}] ({}) {}".format(cls, self.id, new_dict)

    def save(self):
        """Updates updated_at with current time when instance is changed"""
        from models import storage
        self.updated_at = datetime.now()
        models.storage.new(self)
        models.storage.save()

    def to_dict(self):
        """Convert instance into dict format"""
        dictionary = {}
        dictionary.update(self.__dict__)
        dictionary["__class__"] = str(type(self).__name__)
        dictionary['created_at'] = self.created_at.isoformat()
        dictionary['updated_at'] = self.updated_at.isoformat()

        if "_sa_instance_state" in dictionary:
            dictionary.pop("_sa_instance_state", None)
        return dictionary

    def delete(self):
        """ Deletes the current instance from the storage """
        models.storage.delete(self)
Exemple #9
0
class Contact(Base):
    __tablename__ = "contact"

    user: str = Column(String(255), primary_key=True)
    contact: str = Column(String(255), ForeignKey("puppet.gid"), primary_key=True)
    in_community: bool = Column(Boolean, nullable=False, server_default=expression.false())
class RuleSet(Base):
    __tablename__ = 'ruleset'

    id = Column(Integer, primary_key=True)

    context_label = Column(String(256))
    context = Column(String(256))
    context_details = Column(String(256))
    priority = Column(Integer, nullable=False)
    user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
    user = relationship("User", back_populates="rulesets", lazy="joined")
    min_time_of_day = Column(Time)
    max_time_of_day = Column(Time)
    max_time_per_day = Column(Integer)
    max_activity_duration = Column(Integer)
    min_break = Column(Integer)
    free_play = Column(Boolean)

    def __init__(self):

        self.context = None
        self.context_details = None
        self.context_label = None
        self.min_time_of_day = None
        self.max_time_of_day = None
        self.max_time_per_day = None
        self.max_activity_duration = None
        self.min_break = None
        self.free_play = False
        self.priority = None
        self.get_context_rule_handler = None

    @property
    def label(self):
        if self.context_label:
            return self.context_label

        else:
            return self.context

    @property
    def summary(self):
        context_handler = self.get_context_rule_handler(
            p_context_name=self.context)

        texts = []

        if context_handler is not None:
            texts.extend(
                context_handler.summary(p_context_detail=self.context_details))

        if self.max_time_per_day is not None:
            texts.append(constants.TEXT_SEPERATOR)
            texts.append("Time per Day")
            texts.append(": " + tools.get_duration_as_string(
                p_seconds=self.max_time_per_day, p_include_seconds=False))

        return texts

    @property
    def html_key(self):
        return "ruleset_{id}".format(id=self.id)

    @property
    def delete_html_key(self):
        return "delete_ruleset_{id}".format(id=self.id)

    @property
    def move_up_html_key(self):
        return "move_up_ruleset_{id}".format(id=self.id)

    @property
    def move_down_html_key(self):
        return "move_down_ruleset_{id}".format(id=self.id)

    @staticmethod
    def get_by_id(p_session, p_id):
        query = p_session.query(RuleSet).filter(RuleSet.id == p_id)

        if query.count() == 1:
            return query.one()

        else:
            return None

    @property
    def can_move_up(self):

        return 1 < self.priority < len(self.user.rulesets)

    @property
    def can_move_down(self):

        return self.priority > 2

    @property
    def fixed_context(self):

        return self.priority == 1
class Device(Base):
    __tablename__ = 'device'

    id = Column(Integer, primary_key=True)
    device_name = Column(String(256), nullable=False)
    hostname = Column(String(256))
    min_activity_duration = Column(Integer)
    max_active_ping_delay = Column(Integer)
    sample_size = Column(Integer)
    users = relationship("User2Device", back_populates="device", lazy="joined")

    def __init__(self):

        self.device_name = None
        self.hostname = None
        self.min_activity_duration = None
        self.max_active_ping_delay = None
        self.sample_size = None

    @staticmethod
    def get_by_device_name(p_session, p_device_name):
        query = p_session.query(Device).filter(
            Device.device_name == p_device_name)

        if query.count() == 1:
            return query.one()

        else:
            return None

    @staticmethod
    def get_by_id(p_session, p_id):
        query = p_session.query(Device).filter(Device.id == p_id)

        if query.count() == 1:
            return query.one()

        else:
            return None

    @property
    def html_key(self):
        return "device_{id}".format(id=self.id)

    @property
    def delete_html_key(self):
        return "delete_device_{id}".format(id=self.id)

    def list_of_users(self, p_exclude=None):

        return ", ".join([
            "{name} ({percent}%)".format(name=user2device.user.full_name,
                                         percent=user2device.percent)
            for user2device in self.users
            if p_exclude is None or not user2device.user is p_exclude
        ])

    @property
    def summary(self):
        texts = []

        if len(self.users) > 0:
            texts.extend([_("Assigned users"), ": ", self.list_of_users()])

        texts.extend([
            constants.TEXT_SEPERATOR,
            _("Host Name"), ": ",
            tools.value_or_not_set(self.hostname)
        ])

        return texts
class Costumes(Base):
    __tablename__ = "costumes"
    category_id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False)
    user_id = Column(Integer, ForeignKey("users.user_id"))
    users = relationship(Users)
class Users(Base):
    __tablename__ = "users"
    user_id = Column(Integer, primary_key=True)
    email = Column(String(100), nullable=False)
Exemple #14
0
class Category(Base):
    __tablename__ = "categories"
    id = Column(Integer, primary_key=True, autoincrement=False)
    name = Column(String(128), unique=True, nullable=False)

    parent_id = Column(Integer, ForeignKey("categories.id"))
    parent = relationship("Category", remote_side="categories.c.id")

    books = relationship(
        "Book",
        secondary=categories_table,
        back_populates="categories",
    )

    @staticmethod
    def ancestors(session):
        all_categories = session.query(Category).all()
        names = {}
        for category in all_categories:
            names[category.id] = category.name

        parents = {}
        for category in all_categories:
            if category.parent_id is not None:
                parents[category.name] = names[category.parent_id]
            else:
                parents[category.name] = None

        category_ancestors = {}

        def calculate(name):
            if name in category_ancestors:
                return

            ancestors = set()
            ancestors.add(name)
            parent = parents[name]
            if parent:
                if parent not in category_ancestors:
                    calculate(parent)
                ancestors.update(category_ancestors[parent])
            category_ancestors[name] = ancestors

        for category in all_categories:
            calculate(category.name)

        return category_ancestors

    @staticmethod
    def children(session):
        all_categories = session.query(Category).all()
        names = {}
        for category in all_categories:
            names[category.id] = category.name

        children = defaultdict(list)
        for category in all_categories:
            if category.parent_id is not None:
                children[names[category.parent_id]].append(category.name)
            else:
                children["Books"].append(category.name)

        return children

    @staticmethod
    def tree_names(session, name):
        names = []

        to_process = (session.query(Category).filter(
            Category.name == name).all())
        while to_process:
            c = to_process.pop()
            names.append(c.name)

            to_process.extend(
                session.query(Category).filter(
                    Category.parent_id == c.id).all())

        return names
class BaseModel:
    """This class will defines all common attributes/methods
    for other classes
    """
    id = Column(String(60), nullable=False, primary_key=True)
    created_at = Column(DateTime, nullable=False, default=datetime.utcnow())
    updated_at = Column(DateTime, nullable=False, default=datetime.utcnow())

    def __init__(self, *args, **kwargs):
        """Instantiation of base model class
        Args:
            args: it won't be used
            kwargs: arguments for the constructor of the BaseModel
        Attributes:
            id: unique id generated
            created_at: creation date
            updated_at: updated date
        """
        if kwargs:
            for key, value in kwargs.items():
                if key == "created_at" or key == "updated_at":
                    value = datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f")
                if key != "__class__":
                    setattr(self, key, value)
                if "id" not in kwargs:
                    self.id = str(uuid.uuid4())
                if "created_at" not in kwargs:
                    self.created_at = datetime.now()
                if "updated_at" not in kwargs:
                    self.updated_at = datetime.now()
        else:
            self.id = str(uuid.uuid4())
            self.created_at = self.updated_at = datetime.now()

    def __str__(self):
        """returns a string
        Return:
            returns a string of class name, id, and dictionary
        """
        return "[{}] ({}) {}".format(
            type(self).__name__, self.id, self.__dict__)

    def __repr__(self):
        """return a string representaion
        """
        return self.__str__()

    def save(self):
        """updates the public instance attribute updated_at to current
        """
        self.updated_at = datetime.now()
        models.storage.new(self)
        models.storage.save()

    def to_dict(self):
        """creates dictionary of the class  and returns
        Return:
            returns a dictionary of all the key values in __dict__
        """
        my_dict = dict(self.__dict__)
        my_dict["__class__"] = str(type(self).__name__)
        my_dict["created_at"] = self.created_at.isoformat()
        my_dict["updated_at"] = self.updated_at.isoformat()

        if "_sa_instance_state" in my_dict:
            my_dict.pop("_sa_instance_state")

        return my_dict

    def delete(self):
        """that delete the current instance from models.storage
        """
        models.storage.delete(self)
class Nightmode(BASE):
    __tablename__ = "nightmode"
    chat_id = Column(String(14), primary_key=True)

    def __init__(self, chat_id):
        self.chat_id = chat_id
Exemple #17
0
class UserRoom(Base):
    __tablename__ = 'user_room'
    room_name = Column(String(50), ForeignKey('room.name'), primary_key=True)
    user_name = Column(String(50), ForeignKey('user.name'), primary_key=True)
    owner = Column(String(50), ForeignKey('user.name'))
class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    process_name_pattern = Column(String(256))
    username = Column(String(256))
    first_name = Column(String(256))
    last_name = Column(String(256))
    locale = Column(String(5))
    active = Column(Boolean)
    rulesets = relationship("RuleSet", back_populates="user", lazy="joined")
    devices = relationship("User2Device", back_populates="user", lazy="joined")

    def __init__(self):

        self.process_name_pattern = None
        self.username = None
        self.first_name = None
        self.last_name = None
        self.locale = None
        self.active = False

        self.init_on_load()

    @staticmethod
    def get_by_username(p_session, p_username):
        query = p_session.query(User).filter(User.username == p_username)

        if query.count() == 1:
            return query.one()

        else:
            return None

    @property
    def notification_name(self):
        if self.first_name is not None and self.first_name != '':
            return self.first_name

        else:
            return self.username.capitalize()

    @property
    def full_name(self):
        if self.first_name is not None and self.first_name != '':
            if self.last_name is not None and self.last_name != '':
                return self.first_name + " " + self.last_name

            else:
                return self.first_name

        else:
            return self.username.capitalize()

    @property
    def device_list(self):
        if len(self.devices) == 0:
            return tools.value_or_not_set(None)

        else:
            return ", ".join([
                user2device.device.device_name for user2device in self.devices
            ])

    @property
    def html_key(self):
        return "user_{id}".format(id=self.id)

    @property
    def rulesets_html_key(self):
        return "rulesets_user_{id}".format(id=self.id)

    @property
    def devices_html_key(self):
        return "devices_user_{id}".format(id=self.id)

    @property
    def delete_html_key(self):
        return "delete_user_{id}".format(id=self.id)

    @property
    def new_ruleset_html_key(self):
        return "new_ruleset_user_{id}".format(id=self.id)

    @property
    def new_device_html_key(self):
        return "new_device_user_{id}".format(id=self.id)

    @sqlalchemy.orm.reconstructor
    def init_on_load(self):
        self._regex_process_name_pattern = None

    @property
    def regex_process_name_pattern(self):

        if self._regex_process_name_pattern is None:
            self._regex_process_name_pattern = re.compile(
                self.process_name_pattern)

        return self._regex_process_name_pattern

    @property
    def sorted_rulesets(self):
        return sorted(self.rulesets, key=lambda ruleset: -ruleset.priority)

    @property
    def sorted_user2devices(self):
        return sorted(self.devices,
                      key=lambda user2device:
                      (-user2device.percent, user2device.device.device_name))

    @property
    def summary(self):

        texts = []

        if self.username.upper() != self.full_name.upper():
            texts.extend([_("Username"), ":", self.username])

        texts.extend([
            constants.TEXT_SEPERATOR,
            _("Monitored"), ": ",
            tools.format_boolean(p_value=self.active)
        ])

        if self.locale is not None:
            lang = constants.LANGUAGES.get(self.locale)

            if lang is None:
                lang = _("Unknown")

            texts.extend([constants.TEXT_SEPERATOR, _("Locale"), ": ", lang])

        return texts

    def __str__(self):
        fmt = "User (username='******'{process_name_pattern}')"
        return fmt.format(username=self.username,
                          active=self.active,
                          process_name_pattern=self.process_name_pattern)
class NetmikoBackupService(Service):

    __tablename__ = "NetmikoBackupService"

    id = Column(Integer, ForeignKey("Service.id"), primary_key=True)
    configuration_backup_service = True
    has_targets = True
    number_of_configuration = Column(Integer, default=10)
    configuration_command = Column(String(255), default="")
    driver = Column(String(255), default="")
    driver_values = NETMIKO_DRIVERS
    use_device_driver = Column(Boolean, default=True)
    fast_cli = Column(Boolean, default=False)
    timeout = Column(Integer, default=10.0)
    global_delay_factor = Column(Float, default=1.0)

    __mapper_args__ = {"polymorphic_identity": "NetmikoBackupService"}

    def generate_yaml_file(self, path, device):
        data = {
            "last_failure": device.last_failure,
            "last_runtime": device.last_runtime,
            "last_update": device.last_update,
            "last_status": device.last_status,
        }
        with open(path / "data.yml", "w") as file:
            dump(data, file, default_flow_style=False)

    def job(self, payload: dict, device: Device) -> dict:
        try:
            now = datetime.now()
            path_configurations = Path.cwd() / "git" / "configurations"
            path_device_config = path_configurations / device.name
            path_device_config.mkdir(parents=True, exist_ok=True)
            netmiko_handler = self.netmiko_connection(device)
            try:
                netmiko_handler.enable()
            except Exception:
                pass
            self.logs.append(f"Fetching configuration on {device.name} (Netmiko)")
            config = netmiko_handler.send_command(self.configuration_command)
            device.last_status = "Success"
            device.last_runtime = (datetime.now() - now).total_seconds()
            netmiko_handler.disconnect()
            if device.configurations:
                last_config = device.configurations[max(device.configurations)]
                if config == last_config:
                    return {"success": True, "result": "no change"}
            device.configurations[now] = device.current_configuration = config
            with open(path_device_config / device.name, "w") as file:
                file.write(config)
            device.last_update = now
            self.generate_yaml_file(path_device_config, device)
        except Exception as e:
            netmiko_handler.disconnect()
            device.last_status = "Failure"
            device.last_failure = now
            self.generate_yaml_file(path_device_config, device)
            return {"success": False, "result": str(e)}
        if len(device.configurations) > self.number_of_configuration:
            device.configurations.pop(min(device.configurations))
        return {"success": True, "result": f"Command: {self.configuration_command}"}
Exemple #20
0
class User(Base):

    __tablename__ = "users"

    id = Column(Integer, primary_key=True)

    # Username must be alphanumeric.
    username = Column(String(50), nullable=False)

    # Bcrypt hash.
    password = Column(String(60), nullable=False)
    secret_question = Column(Unicode(50))
    secret_answer = Column(String(60))

    date_of_birth = Column(DateTime())

    email_address = Column(String(100))
    email_verified = Column(Boolean, nullable=False, default=False)

    group = Column(SQLAlchemyEnum(
        "new",
        "active",
        "deactivated",
        "banned",
        name="users_group",
    ), nullable=False, default="guest")
    admin_tier_id = Column(Integer, ForeignKey("admin_tiers.id"))

    created = Column(DateTime(), nullable=False, default=now)
    last_online = Column(DateTime(), nullable=False, default=now)
    last_ip = Column(INET, nullable=False)

    # Default character for entering group chats
    default_character_id = Column(Integer, ForeignKey(
        "characters.id",
        name="users_default_character_fkey",
        use_alter=True,
    ))

    last_search_mode = Column(
        SQLAlchemyEnum("roulette", "search", name="user_last_search_mode"),
        nullable=False, default="roulette",
    )

    # Character info for searching
    roulette_search_character_id = Column(Integer, ForeignKey("search_characters.id"), nullable=False, default=1)
    roulette_character_id = Column(Integer, ForeignKey(
        "characters.id",
        name="users_roulette_character_fkey",
        use_alter=True,
    ))
    search_character_id = Column(Integer, ForeignKey("search_characters.id"), nullable=False, default=1)
    name = Column(Unicode(50), nullable=False, default="anonymous")
    acronym = Column(Unicode(15), nullable=False, default="??")
    # Must be a hex code.
    color = Column(Unicode(6), nullable=False, default="000000")
    quirk_prefix = Column(Unicode(2000), nullable=False, default="")
    quirk_suffix = Column(Unicode(2000), nullable=False, default="")
    case = Column(case_options_enum, nullable=False, default="normal")
    replacements = Column(UnicodeText, nullable=False, default="[]")
    regexes = Column(UnicodeText, nullable=False, default="[]")
    search_style = Column(
        SQLAlchemyEnum("script", "paragraph", "either", name="user_search_style"),
        nullable=False, default="script",
    )
    search_levels = Column(ARRAY(Unicode(50)),  nullable=False, default=["sfw"])
    search_filters = Column(ARRAY(Unicode(50)), nullable=False, default=[])
    search_age_restriction = Column(Boolean,    nullable=False, default=False)

    pm_age_restriction = Column(Boolean, nullable=False, default=False)

    # psycopg2 doesn't handle arrays of custom types by default, so we just use strings here.
    group_chat_styles = Column(ARRAY(Unicode(50)), nullable=False, default=["script"])
    group_chat_levels = Column(ARRAY(Unicode(50)), nullable=False, default=["sfw"])

    confirm_disconnect = Column(Boolean, nullable=False, default=True)
    desktop_notifications = Column(Boolean, nullable=False, default=False)
    show_system_messages = Column(Boolean, nullable=False, default=True)
    show_user_numbers = Column(Boolean, nullable=False, default=True)
    show_bbcode = Column(Boolean, nullable=False, default=True)
    show_timestamps = Column(Boolean, nullable=False, default=False)
    show_preview = Column(Boolean, nullable=False, default=True)
    typing_notifications = Column(Boolean, nullable=False, default=True)
    enable_activity_indicator = Column(Boolean, nullable=False, default=True)

    timezone = Column(Unicode(255))
    theme = Column(Unicode(255))

    def __repr__(self):
        return "<User #%s: %s>" % (self.id, self.username)

    def set_password(self, password):
        if not password:
            raise ValueError("Password can't be blank.")
        self.password = hashpw(password.encode("utf8"), gensalt()).decode("utf8")

    def check_password(self, password):
        return checkpw(password.encode("utf8"), self.password.encode())

    @property
    def age(self):
        if self.date_of_birth is None:
            return None
        now = datetime.datetime.now()
        age = now.year - self.date_of_birth.year
        date_of_birth = self.date_of_birth
        if date_of_birth.month == 2 and date_of_birth.day == 29:
            date_of_birth = date_of_birth + datetime.timedelta(1)
        if date_of_birth.replace(year=now.year) > now:
            age -= 1
        return age

    @property
    def age_group(self):
        if self.date_of_birth is None:
            return AgeGroup.unknown
        return AgeGroup.over_18 if self.age >= 18 else AgeGroup.under_18

    @property
    def level_options(self):
        return allowed_level_options[self.age_group]

    @property
    def is_admin(self):
        return self.admin_tier_id is not None

    def has_permission(self, permission):
        if self.is_admin and permission in self.admin_tier.permissions:
            return True
        return False

    def localize_time(self, input_datetime):
        utc_datetime = utc.localize(input_datetime)
        if self.timezone is None:
            return utc_datetime
        return utc_datetime.astimezone(timezone(self.timezone))

    def to_dict(self, include_options=False):
        ud = {
            "id": self.id,
            "username": self.username,
            "email_address": self.email_address,
            "email_verified": self.email_verified,
            "group": self.group,
            "is_admin": self.is_admin,
            "created": time.mktime(self.created.timetuple()),
            "last_online": time.mktime(self.last_online.timetuple()),
            "name": self.name,
            "acronym": self.acronym,
            "color": self.color,
            "search_style": self.search_style,
            "search_levels": self.search_levels,
        }
        if include_options:
            ud["admin_tier"] = self.admin_tier.to_dict() if self.is_admin else None
            ud["default_character"] = self.default_character.to_dict() if self.default_character is not None else None
            ud["search_character"] = self.search_character.to_dict()
            ud["quirk_prefix"] = self.quirk_prefix
            ud["quirk_suffix"] = self.quirk_suffix
            ud["case"] = self.case
            ud["replacements"] = json.loads(self.replacements)
            ud["regexes"] = json.loads(self.regexes)
            ud["timezone"] = self.timezone
            ud["theme"] = self.theme
        return ud
Exemple #21
0
class Repository(Base):
    __tablename__ = 'repositories'
    id = Column(Integer, primary_key=True)
    name = Column(String(64))
    update_time = Column(DateTime)
Exemple #22
0
class State(Base):
    """ State class"""
    __tablename__ = "states"
    id = Column(Integer, nullable=False, primary_key=True)
    name = Column(String(128), nullable=False)
    cities = relationship("City", cascade="all, delete", backref='state')
Exemple #23
0
Base = declarative_base()
metadata = Base.metadata


class Client(Base):
    __tablename__ = 'client'

    id = Column(BigInteger,
                primary_key=True,
                server_default=text("nextval('client_seq'::regclass)"))
    client_id = Column(String(255), unique=True)
    client_secret = Column(String(255))


t_client_grant = Table('client_grant', metadata,
                       Column('client_id', String(255), nullable=False),
                       Column('grant_name', String(255)))

t_client_redirect = Table('client_redirect', metadata,
                          Column('client_id', String(255), nullable=False),
                          Column('redirect_uri', String(255)))

t_client_scope = Table('client_scope', metadata,
                       Column('client_id', String(255), nullable=False),
                       Column('scope', String(255)))


class UserAuthority(Base):
    __tablename__ = 'user_authority'

    authority_id = Column(
class Shop(Base):
	__tablename__ = 'shops'
	id = Column(Integer, primary_key=True)
	name = Column(String(60))
	dresses = relationship('Dress')
Exemple #25
0
class Vcompany(Base):
    # 表名
    __tablename__ = 'vcompany'
    id = Column(Integer, unique=True, primary_key=True)
    detail_url = Column(String(256))
    image = Column(String(256))  # 公司图片
    name = Column(String(512))  # 公司名称
    all_name = Column(String(1024))  # 公司全称
    period = Column(String(32))  # 融资阶段
    field = Column(String(256))  # 创业领域
    become_time = Column(String(32))  # 成立时间
    web = Column(String(64))  # 公司官网
    place = Column(String(64))  # 公司位置
    content = Column(String(512))  # 主要服务内容
    introduction = Column(Text)  # 简介
    dynamic = Column(Text)  # 公司动态
    money_experience = Column(Text)  # 融资经历
    # 工商信息
    register_num = Column(String(64))  # 注册号
    run_status = Column(String(64))  # 经营状态
    law_represent = Column(String(64))  # 法人代表
    shareholder = Column(Text)  # 股东
    company_type = Column(String(64))  # 公司类型
    com_day = Column(String(64))  # 公司注册成立日期
    register_money = Column(String(64))  # 注册资金
    detail_place = Column(String(512))  # 公司住所
    add_time = Column(String(32))  # 数据添加时间
Exemple #26
0
class User(db.Model):
    id=Column(Integer, primary_key=True)
    public_id=Column(String(50), unique=True)
    name=Column(String(50), unique=True)
    password=Column(String(80))
    admin=db.Column(Boolean)
class tankbatteries(tankDeclarativeBase):
    """Sqlalchemy Directional model"""
    __tablename__ = "tank_batteries"

    id = Column(Integer, primary_key=True)

    fac_id = Column(String(100), nullable=True)
    fac_status = Column(String(100), nullable=True)
    fac_name = Column(String(100), nullable=True)
    fac_num = Column(String(100), nullable=True)
    loc_id = Column(String(100), nullable=True)
    oper_name= Column(String(100), nullable=True)
    oper_num = Column(String(100), nullable=True)

    utm_x = Column(String(700), nullable=True)
    utm_y = Column(String(700), nullable=True)
    county = Column(String(700), nullable=True)
    county_API = Column(String(370), nullable=True)
    wkt = Column('wkt', JSON, nullable=True)
    checksum = Column(String(270), nullable=True)
    created_at = Column('created_at', DateTime(timezone=True), server_default=func.now(), nullable=True)
    updated_at = Column('updated_at', DateTime(timezone=True), onupdate=func.now(), nullable=True)
class Place(BaseModel, Base):
    """ A place to stay """

    __tablename__ = 'places'
    if getenv('HBNB_TYPE_STORAGE') == 'db':
        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)

        reviews = relationship('Review', backref='place', cascade='delete')

        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))
        amenities = relationship('Amenity',
                                 secondary=place_amenity,
                                 viewonly=False)
    else:
        city_id = ""
        user_id = ""
        name = ""
        description = ""
        number_rooms = 0
        number_bathrooms = 0
        max_guest = 0
        price_by_night = 0
        latitude = 0.0
        longitude = 0.0
        amenity_ids = []

        @property
        def reviews(self):
            """method to link place to review in FS"""
            cts = storage.all(Review)
            ltcts = []
            for objects in cts.values():
                if self.id == objects.state_id:
                    ltcts.append(objects)
            return ltcts

        @property
        def amenities(self):
            """method to link place to amenities in FS"""
            ats = storage.all(Amenity)
            ltats = []
            for objects in ats.values():
                if self.amenity_ids == objects.id:
                    ltats.append(objects)
            return ltats

        @amenities.setter
        def amenities(self, obj):
            """sether for add amenities to place in FS"""
            if type(obj) == Amenity:
                self.amenity_ids.append(obj.id)
class Nationality(Base):
    __tablename__ = 'Nationalities'
    tabletype = TableTypes.REFERENCE

    nationality_id = Column(UUID(), primary_key=True, default=uuid.uuid4)
    name = Column(String(150), nullable=False)
Exemple #30
0
class User(Base):
    __tablename__ = 'user'
    name = Column(String(50), primary_key=True)
class TableType(Base):
    __tablename__ = 'TableTypes'
    tabletype = TableTypes.METADATA

    tabletype_id = Column(Integer, nullable=False, primary_key=True)
    name = Column(String(150))
Exemple #32
0
class Room(Base):
    __tablename__ = 'room'
    name = Column(String(50), primary_key=True)
    created_date = Column(DateTime, default=dt.datetime.utcnow())
    owner = Column(String(50), ForeignKey('user.name'))