예제 #1
0
파일: util.py 프로젝트: kataev/OSMAlchemy
    def setUp(self):
        if not self.__class__.__name__ in profile:
            profile[self.__class__.__name__] = {}
        profile[self.__class__.__name__][self.id().split(".")[-1]] = time.time()

        self.base = declarative_base(bind=self.engine)
        self.session = scoped_session(sessionmaker(bind=self.engine))
        self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session))
        self.base.metadata.create_all()

        self.datadir = os.path.join(os.path.dirname(__file__), "data")
예제 #2
0
파일: model.py 프로젝트: kataev/OSMAlchemy
 def setUp(self):
     app = Flask("test")
     db = FlaskSQLAlchemy(app)
     self.session = db.session
     self.osmalchemy = OSMAlchemy(db)
     db.create_all()
     OSMAlchemyModelTests.setUp(self)
예제 #3
0
파일: model.py 프로젝트: kataev/OSMAlchemy
 def setUp(self):
     self.engine = create_engine("sqlite:///:memory:")
     self.base = declarative_base(bind=self.engine)
     self.session = scoped_session(sessionmaker(bind=self.engine))
     self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session))
     self.base.metadata.create_all()
     OSMAlchemyModelTests.setUp(self)
예제 #4
0
 def test_instantiate_with_flask_sqlalchemy(self):
     app = Flask("test")
     db = FlaskSQLAlchemy(app)
     osmalchemy = OSMAlchemy(db)
     self.assertIsInstance(osmalchemy, OSMAlchemy)
     self.assertIs(osmalchemy._engine, db.engine)
     self.assertIs(osmalchemy._base, db.Model)
     self.assertIs(osmalchemy._session, db.session)
예제 #5
0
 def test_instantiate_with_engine_and_base(self):
     engine = create_engine("sqlite:///:memory:")
     base = declarative_base(bind=engine)
     osmalchemy = OSMAlchemy((engine, base))
     self.assertIsInstance(osmalchemy, OSMAlchemy)
     self.assertIs(osmalchemy._engine, engine)
     self.assertIs(osmalchemy._base, base)
     engine.dispose()
예제 #6
0
파일: model.py 프로젝트: kataev/OSMAlchemy
 def setUp(self):
     self.mysql = Mysqld()
     self.engine = create_engine(self.mysql.url() + "?charset=utf8mb4")
     self.base = declarative_base(bind=self.engine)
     self.session = scoped_session(sessionmaker(bind=self.engine))
     self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session))
     self.base.metadata.create_all()
     OSMAlchemyModelTests.setUp(self)
예제 #7
0
파일: model.py 프로젝트: kataev/OSMAlchemy
 def setUp(self):
     self.postgresql = Postgresql()
     self.engine = create_engine(self.postgresql.url())
     self.base = declarative_base(bind=self.engine)
     self.session = scoped_session(sessionmaker(bind=self.engine))
     self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session))
     self.base.metadata.create_all()
     OSMAlchemyModelTests.setUp(self)
예제 #8
0
from osmalchemy import OSMAlchemy

# Get a basic Flask application
APP = Flask(__name__)

# Default configuration
# FIXME allow modification after module import
APP.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
APP.config['PASSWORD_SCHEMES'] = ['pbkdf2_sha512', 'md5_crypt']
APP.config['BASIC_REALM'] = "Veripeditus"

# Load configuration from a list of text files
CFGLIST = ['/var/lib/veripeditus/dbconfig.cfg', '/etc/veripeditus/server.cfg']
for cfg in CFGLIST:
    APP.config.from_pyfile(cfg, silent=True)

# Initialise SQLAlchemy and OSMAlchemy
DB = SQLAlchemy(APP)
OA = OSMAlchemy(DB, overpass=True)

# Import model and create tables
import veripeditus.server.model
DB.create_all()

# Run initialisation code
from veripeditus.server.control import init
init()

# Import REST API last
import veripeditus.server.rest
예제 #9
0
 def test_instantiate_with_engine(self):
     engine = create_engine("sqlite:///:memory:")
     osmalchemy = OSMAlchemy(engine)
     self.assertIsInstance(osmalchemy, OSMAlchemy)
     self.assertIs(osmalchemy._engine, engine)
     engine.dispose()
예제 #10
0
파일: util.py 프로젝트: kataev/OSMAlchemy
class OSMAlchemyUtilTests(object):
    """ Incomplete base class for common test routines.

    Subclassed in engine-dependent test classes.
    """

    def setUp(self):
        if not self.__class__.__name__ in profile:
            profile[self.__class__.__name__] = {}
        profile[self.__class__.__name__][self.id().split(".")[-1]] = time.time()

        self.base = declarative_base(bind=self.engine)
        self.session = scoped_session(sessionmaker(bind=self.engine))
        self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session))
        self.base.metadata.create_all()

        self.datadir = os.path.join(os.path.dirname(__file__), "data")

    def tearDown(self):
        self.session.remove()
        self.engine.dispose()

        profile[self.__class__.__name__][self.id().split(".")[-1]] -= time.time()
        profile[self.__class__.__name__][self.id().split(".")[-1]] *= -1

    def test_import_osm_file(self):
        # Construct path to test data file
        path = os.path.join(self.datadir, "schwarzrheindorf.osm")

        # Import data into model
        self.osmalchemy.import_osm_file(path)
        # Ensure removal of everything from ORM
        self.session.remove()

        # Check number of elements
        nodes = self.session.query(self.osmalchemy.node).all()
        ways = self.session.query(self.osmalchemy.way).all()
        relations = self.session.query(self.osmalchemy.relation).all()
        self.assertGreaterEqual(len(nodes), 7518)
        self.assertGreaterEqual(len(ways), 1559)
        self.assertGreaterEqual(len(relations), 33)

        # Try to retrieve some node and make checks on it
        haltestelle = self.session.query(self.osmalchemy.node).filter_by(id=252714572).one()
        # Check metadata
        self.assertEqual(haltestelle.id, 252714572)
        self.assertEqual(haltestelle.latitude, 50.7509314)
        self.assertEqual(haltestelle.longitude, 7.1173853)
        # Check tags
        self.assertEqual(haltestelle.tags["VRS:gemeinde"], "BONN")
        self.assertEqual(haltestelle.tags["VRS:ref"], "65248")
        self.assertEqual(haltestelle.tags["name"], "Schwarzrheindorf Kirche")
        # Check node on a street
        wittestr = self.session.query(self.osmalchemy.way).filter_by(id=23338279).one()
        self.assertIn(haltestelle, wittestr.nodes)

        # Try to retrieve some way and do checks on it
        doppelkirche = self.session.query(self.osmalchemy.way).filter_by(id=83296962).one()
        # Verify metadata
        self.assertEqual(doppelkirche.id, 83296962)
        self.assertEqual(doppelkirche.visible, True)
        # Verify some tags
        self.assertEqual(doppelkirche.tags["name"], u"St. Maria und St. Clemens Doppelkirche")
        self.assertEqual(doppelkirche.tags["historic"], u"church")
        self.assertEqual(doppelkirche.tags["wheelchair"], u"limited")
        self.assertEqual(doppelkirche.tags["addr:street"], u"Dixstraße")
        # verify nodes on way
        nodes = (969195704, 969195706, 1751820961, 969195708, 969195710, 969195712,
                 969195714, 969195719, 969195720, 969195721, 969195722, 969218813,
                 969218815, 969218817, 969218819, 969218820, 969218821, 969218822,
                 969195740, 969195742, 969195745, 969195750, 969195751, 969195752,
                 969195753, 1751858766, 969195754, 969195759, 969218844, 969195704)
        for ref in nodes:
            nd = self.session.query(self.osmalchemy.node).filter_by(id=ref).one()
            # Verify existence
            self.assertIn(nd, doppelkirche.nodes)
            # Verify ordering
            self.assertIs(doppelkirche.nodes[nodes.index(ref)], nd)
        # Cross-check other nodes are not in way
        for ref in (26853096, 26853100, 247056873):
            nd = self.session.query(self.osmalchemy.node).filter_by(id=ref).one()
            self.assertNotIn(nd, doppelkirche.nodes)

        # Try to retrieve some relation and make checks on it
        buslinie = self.session.query(self.osmalchemy.relation).filter_by(id=1823975).one()
        # Check metadata
        self.assertEqual(buslinie.id, 1823975)
        self.assertEqual(buslinie.changeset, 40638463)
        # Check tags
        self.assertEqual(buslinie.tags["name"], u"VRS 640 Siegburg")
        self.assertEqual(buslinie.tags["ref"], u"640")
        self.assertEqual(buslinie.tags["type"], u"route")
        self.assertEqual(buslinie.tags["route"], u"bus")
        # Check members
        self.assertIn((haltestelle, "stop"), buslinie.members)
        self.assertEqual(list(buslinie.members).index((haltestelle, u"stop")), 16)
        self.assertIn((wittestr, ""), buslinie.members)
        self.assertEqual(list(buslinie.members).index((wittestr, "")), 109)