示例#1
0
def get_from_inventory(item: int = 0):
    make_class_dictable(Inventory)

    if int(item) > 0:
        return Inventory.query.get(item).asdict()

    return list(map(operator.methodcaller('asdict'), Inventory.query.all()))
示例#2
0
    def test_make_class_dictable(self):
        assert not hasattr(MakeClassDictable, 'asdict')
        m = MakeClassDictable('dictable')
        self.session.add(m)
        self.session.commit()

        assert not hasattr(m, 'asdict')
        make_class_dictable(MakeClassDictable)
        assert m.asdict() == {'id': m.id, 'name': m.name}
示例#3
0
    def test_make_class_dictable(self):
        assert not hasattr(MakeClassDictable, 'asdict')
        m = MakeClassDictable('dictable')
        self.session.add(m)
        self.session.commit()

        assert not hasattr(m, 'asdict')
        make_class_dictable(MakeClassDictable)
        assert m.asdict() == {'id': m.id, 'name': m.name}
示例#4
0
def create_app():
    app = Flask(__name__)
    app.config.from_pyfile('config.py')

    app.jinja_env.filters["usd"] = usd
    app.jinja_env.filters["capitalize"] = capitalize

    csrf.init_app(app)

    db.app = app
    db.init_app(app)
    with app.app_context():
        make_class_dictable(db.Model)
        from . import models

    Migrate(app, db)
    Session(app)
    Bootstrap(app)
    FontAwesome(app)
    Mobility(app)
    JWTManager(app)

    def errorhandler(e):
        """Handle error"""
        if isinstance(e, CSRFError):
            return Redirects.login(True)

        if not isinstance(e, HTTPException):
            e = InternalServerError()
        return _templates.apology(e.name, e.code)

    for code in default_exceptions:
        app.errorhandler(code)(errorhandler)

    mail.init(app)
    stock.init(app)
    token.init(app)
    sms.init(app)
    geo.init(app)

    with app.app_context():
        from .views import auths, accounts, portfolios
        from .apis import markets, portfolios, tokens

    @app.after_request
    def after_request(response):
        """Ensure responses aren't cached"""
        response.headers[
            "Cache-Control"] = "no-cache, no-store, must-revalidate"
        response.headers["Expires"] = 0
        response.headers["Pragma"] = "no-cache"
        return response

    return app
import json
import unittest

from flask import Flask, url_for
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.alchemyview import AlchemyView

from dictalchemy import make_class_dictable
import colander as c

SQLALCHEMY_DATABASE_URI = 'sqlite://'

app = Flask(__name__)
app.config.from_object(__name__)
db = SQLAlchemy(app)
make_class_dictable(db.Model)


class SimpleModel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Unicode)

    def __init__(self, name):
        self.name = name


class SimpleModelSchema(c.MappingSchema):

    name = c.SchemaNode(c.String())

示例#6
0
import math
import logging
from flask_appbuilder import Model
from dictalchemy import make_class_dictable
from .form import Form, FormCollaborator
from .value import Value
from .user_agent import UserAgent
from .event import Event, EventType
from .fields import Field, TextField, SelectField, PhoneField, Choice, DescriptionField
from .mixins import SoftDeleteableMixin, TimeStampMixin, MultipleMixin
from .constraints import RequiredConstraint, RangeConstraint, MinConstraint, MaxConstraint
from .page import PageRequest, PageResult
from app.models.repositories import (
    FormRepository,
    FieldRepository,
    ValueRepository,
    EventRepository,
    CollaboratorRepository,
    RoleRepository,
)

make_class_dictable(Model)

logger = logging.getLogger(__file__)
示例#7
0
文件: Users.py 项目: royjan/JSP
from dictalchemy import make_class_dictable
from sqlalchemy import Column, String, Integer
from sqlalchemy.ext.declarative import declarative_base
from flask_login import UserMixin
from DataBaseSession import DataBaseSession

Base = declarative_base()
make_class_dictable(Base)


class Users(UserMixin, Base):
    __tablename__ = 'users'

    id = Column("id", Integer, autoincrement=True, primary_key=True, nullable=False)
    user_name = Column("user_name", String(32), quote=True)
    password = Column("password", String(32), quote=True)

    db_session = DataBaseSession.session

    def is_active(self):
        return True

    def get_id(self):
        return self.id

    def is_authenticated(self):
        return True

    def is_anonymous(self):
        return False
示例#8
0
from flask.ext.migrate import Migrate, MigrateCommand

# -------------------
# Init
# -------------------

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///sand.db"
heroku = Heroku(app)
db = SQLAlchemy(app)

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

make_class_dictable(db.Model)

# -------------------
# Settings
# -------------------


def add_cors_header(response):
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers[
        'Access-Control-Allow-Headers'] = 'Authorization, Content-Type'
    response.headers[
        'Access-Control-Allow-Methods'] = 'POST, GET, PUT, PATCH, DELETE, OPTIONS'
    return response

示例#9
0
        else:
            meta = self.meta._primary_entity.mapper.class_(
                key, json.dumps(value))
            self.meta.append(meta)

        return self

    def deleteMeta(self, key):
        """ Get a meta value
        
        Args:
            key (str):           The meta key to remove
            
        Returns:
            self
        """

        meta = self.meta.filter(
            self.meta._primary_entity.mapper.class_.key == key).first()

        if meta is not None:
            meta.delete()

        return self


# allow our models to easily be converted to dicts
# see: https://pythonhosted.org/dictalchemy/#using-make-class-dictable
make_class_dictable(BaseModel)
示例#10
0
from dictalchemy import make_class_dictable
from sqlalchemy import ForeignKey
from sqlalchemy import Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sqlalchemy.dialects.postgresql import TEXT, VARCHAR, INTEGER, BOOLEAN
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship

Base = declarative_base()
make_class_dictable(Base)


class User(Base):
    __tablename__ = 'users'

    id = Column(INTEGER, primary_key=True)
    first_name = Column(VARCHAR(100))
    last_name = Column(VARCHAR(100))
    about_me = Column(TEXT)
    emails = relationship('Email')


class Email(Base):
    __tablename__ = 'emails'

    id = Column(INTEGER, primary_key=True)
    user_id = Column(INTEGER, ForeignKey('users.id'))
    address = Column(VARCHAR(200))
    is_primary = Column(BOOLEAN)
示例#11
0
# -*- coding: UTF-8 -*-
from sqlalchemy import desc

from App.connexion import *
from Model.NewsModel import News
from dictalchemy import make_class_dictable
make_class_dictable(News)


def tableautoDict(objet):
    liste = []
    for item in objet:
        liste.append(item)
    return liste


def GetArgument(objet, *args):
    dict = {}
    maliste = []
    i = 0
    while i < len(objet):
        dict = {}
        for arg in args:
            dict[arg] = str(getattr(objet[i], arg))
        maliste.append(dict)
        i = i + 1
    return maliste


def getNewsByID(id):
    news = session.query(News).filter_by(id=id).first()
示例#12
0
def import_engine_automapped_data(app, **kwargs):
    global Model, Base
    logger.debug("kwargs: %s" % kwargs)
    model_class_names = []
    engine = kwargs.get('engine', None)
    if not engine:
        raise Exception("engine isn't set")
    bind_name = kwargs.get('bind_name')
    if not bind_name:
        raise Exception("bind_name isn't set or doesn't exist in app.config")
    obj = None
    prefix = kwargs.get('class_prefix', '')
    #return (None, (None,))
    with app.app_context():
        #bind_name = 'genesis_eg1'
        with not_profiled():
            metadata = MetaData(engine)

            if kwargs.get('use_no_pk_tables', False):
                table_objs = get_no_primary_key_table_names(
                    app, bind_name=bind_name, engine=engine)
                for table_obj in table_objs:
                    table_name = table_obj['table_name']
                    inspector = table_obj['inspector']
                    cols = inspector.get_columns(table_name)
                    col = cols[0]
                    c_name = col.pop('name')
                    c_type = col.pop('type')
                    col['primary_key'] = True
                    cls = Table(table_name,
                                metadata,
                                Column(c_name, c_type, **col),
                                autoload=True,
                                extend_existing=True)
                    class_name = prefix \
                            + camelize_and_dedigitize_genesis_classname(
                                    Base, table_name, None,
                              )

            session = Session(engine)
            metadata.reflect(bind=engine)
            Model = declarative_base(metadata=metadata,
                                     cls=(db.Model, ),
                                     bind=engine)
            Base = automap_base(metadata=metadata, declarative_base=Model)
            Base.prepare(
                engine,
                reflect=True,
                classname_for_table=camelize_and_dedigitize_genesis_classname,
                name_for_collection_relationship=singular_noun_collection,
                generate_relationship=generate_relationship_custom,
            )

        obj = Base

        for cls in Base.classes:
            if bind_name:
                cls.__table__.info = {'bind_key': bind_name}
                setattr(cls, '__bind_key__', bind_name)
            make_class_dictable(cls)
            class_name = prefix + cls.__name__
            model_class_names.append(class_name)
            logger.debug("Base class name: %s" % cls.__name__)
            if kwargs.get('use_automapped_classes', False):
                add_to_automapped_classes(bind_name, class_name, cls)
            else:
                globals()[class_name] = cls

    return (obj, tuple(model_class_names))
示例#13
0
# -*- coding: UTF-8 -*-
from sqlalchemy import desc

from App.connexion import *
from Model.PromosModel import Promos
from dictalchemy import make_class_dictable
from sqlalchemy import and_
from unidecode import unidecode
make_class_dictable(Promos)


def tableautoDict(objet):
    liste = []
    for item in objet:
        liste.append(item)
    return liste


def GetArgument(objet, *args):
    dict = {}
    maliste = []
    i = 0
    while i < len(objet):
        dict = {}
        for arg in args:
            if arg == 'item':
                dict[arg] = unidecode(
                    str(getattr(objet[i], arg)).encode('ascii', 'ignore'))
            else:
                dict[arg] = str(getattr(objet[i], arg))
示例#14
0
from dictalchemy import make_class_dictable
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

ModelBase = declarative_base()
make_class_dictable(ModelBase)


class Note(ModelBase):
    __tablename__ = 'notes'

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    content = Column(String, nullable=True)
示例#15
0
# -*- coding: UTF-8 -*-
from sqlalchemy import desc

from App.connexion import *
from Model.FreechampModel import FreeChamp
from dictalchemy import make_class_dictable

make_class_dictable(FreeChamp)


def tableautoDict(objet):
    liste = []
    for item in objet:
        liste.append(item)
    return liste


def GetArgument(objet, *args):
    dict = {}
    maliste = []
    i = 0
    while i < len(objet):
        dict = {}
        for arg in args:
            dict[arg] = str(getattr(objet[i], arg))
        maliste.append(dict)
        i = i + 1
    return maliste


def getFreeChampByID(id):