Changeset 3570 for sample

Show
Ignore:
Timestamp:
06/16/10 21:56:45 (2 years ago)
Author:
elemoine
Message:

merge Tobias' sample application into trunk

Location:
sample/trunk
Files:
5 removed
25 modified
64 copied

Legend:

Unmodified
Added
Removed
  • sample/trunk

    • Property svn:ignore
      •  

        old new  
        1 mapfishsample.wsgi 
         1*.pyc 
         2*.ini 
         3.installed.cfg 
         4*.egg-info 
         5data 
        26MANIFEST 
        3 mapfishsample.ini 
        4 *.pyc 
         7MapFish 
         8GeoFormAlchemy 
    • Property svn:mergeinfo set to /sandbox/tsauerwein/sample:3436-3569
  • sample/trunk/mapfishsample/config/routing.py

    r1593 r3570  
    2424    printer.addRoutes(map, '/print/', 'printer') 
    2525 
     26    # Map the /admin url to FA's AdminController 
     27    # Map static files 
     28    map.connect('fa_static', '/admin/_static/{path_info:.*}', controller='admin', action='static') 
     29    # Index page 
     30    map.connect('admin', '/admin', controller='admin', action='models') 
     31    map.connect('formatted_admin', '/admin.json', controller='admin', action='models', format='json') 
     32    # Models 
     33    map.resource('model', 'models', path_prefix='/admin/{model_name}', controller='admin') 
     34 
     35 
    2636    map.resource('summit', 'summits') 
    2737    map.resource('country', 'countries') 
  • sample/trunk/mapfishsample/controllers/epfl.py

    r1590 r3570  
    3030from mapfishsample.lib.base import BaseController 
    3131from mapfishsample.model.meta import Session, engine 
    32 from mapfishsample.model import nodes_table, Node, Line 
     32from mapfishsample.model.epfl import Node, Line 
    3333 
    3434log = logging.getLogger(__name__) 
     
    4040        if 'query' in request.params: 
    4141            rooms = Session.query(Node).filter(Node.room.like(request.params['query'] + '%')) 
    42             return {'results': [{'id': r.room, 'title': r.room} for r in rooms.order_by(nodes_table.c.room)]} 
     42            return {'results': [{'id': r.room, 'title': r.room} for r in rooms.order_by(Node.__table__.c.room)]} 
    4343 
    4444    def routing(self): 
    45         source_id = Session.query(Node).filter(nodes_table.c.room == request.params['from'])[0].node_id 
    46         target_id = Session.query(Node).filter(nodes_table.c.room == request.params['to'])[0].node_id 
     45        source_id = Session.query(Node).filter(Node.__table__.c.room == request.params['from'])[0].node_id 
     46        target_id = Session.query(Node).filter(Node.__table__.c.room == request.params['to'])[0].node_id 
    4747 
    4848        if 'disabled' in request.params and request.params['disabled'] == '1': 
    49             cost = "CASE WHEN type = '9.2' THEN -1.0::float8 ELSE length::float8 END" 
     49            """If a node is not suitable for disabled (type = '9.2'), it should not be taken into account for routing. 
     50            Because pgrouting does not allow negative values as cost, we set the length to 'Infinity'. 
     51            see also: http://pgrouting.postlbs.org/ticket/88 
     52            """ 
     53            cost = "CASE WHEN type = '9.2' THEN 'Infinity'::float8 ELSE length::float8 END" 
    5054        else: 
    5155            cost = "length::float8" 
     
    5458                                        "SELECT gid AS id, node1_id::int4 AS source, node2_id::int4 AS target, %(cost)s AS cost FROM lines2"%{'cost': cost}, 
    5559                                        int(source_id), int(target_id)).fetchall() 
    56  
    57         source_f = Session.query(Node).get(route[0]['vertex_id']).toFeature() 
    58         target_f = Session.query(Node).get(route[-1]['vertex_id']).toFeature() 
     60         
     61        if route is None or len(route) <= 0: 
     62            abort(400) 
     63         
     64        source_f = Session.query(Node).filter(Node.node_id == route[0]['vertex_id']).first().toFeature() 
     65        target_f = Session.query(Node).filter(Node.node_id == route[-1]['vertex_id']).first().toFeature() 
    5966         
    6067        source_f.properties['_isSourceNode'] = True 
  • sample/trunk/mapfishsample/model/__init__.py

    r1590 r3570  
    2121import sqlalchemy as sa 
    2222from sqlalchemy import orm 
     23from sqlalchemy.dialects.sqlite.base import SQLiteDialect 
     24from sqlalchemy.interfaces import PoolListener 
    2325 
    2426from geojson import Feature 
    2527 
    2628from mapfishsample.model import meta 
    27 from mapfish.sqlalchemygeom import Geometry 
     29 
     30from mapfishsample.model.lines import Line 
     31from mapfishsample.model.points import Point 
     32from mapfishsample.model.polygons import Polygon 
    2833 
    2934def init_model(engine): 
    3035    """Call me before using any of the tables or classes in the model""" 
    3136    ## Reflected tables must be defined and mapped here 
    32     #global reflected_table 
    33     #reflected_table = sa.Table("Reflected", meta.metadata, autoload=True, 
    34     #                           autoload_with=engine) 
    35     #orm.mapper(Reflected, reflected_table) 
    36  
    3737    sm = orm.sessionmaker(autoflush=True, autocommit=False, bind=engine) 
    3838 
    3939    meta.engine = engine 
    4040    meta.Session = orm.scoped_session(sm) 
    41  
    42  
    43 nodes_table = sa.Table('nodes2', meta.metadata, 
    44     sa.Column('node_id', sa.types.Integer, primary_key=True), 
    45     sa.Column('room', sa.types.String, unique=True), 
    46     sa.Column('level', sa.types.Integer), 
    47     sa.Column('geom', Geometry)) 
    48  
    49 class Node(object): 
    50     __table__ = nodes_table 
    51     def toFeature(self): 
    52         return Feature(id=int(self.node_id), geometry=self.geom, 
    53             properties={'room': str(self.room), 'floor': str(self.level)}) 
    54  
    55 orm.mapper(Node, nodes_table) 
    56  
    57 lines_table = sa.Table('lines2', meta.metadata, 
    58     sa.Column('gid', sa.types.Integer, primary_key=True), 
    59     sa.Column('length', sa.types.Float), 
    60     sa.Column('geom', Geometry)) 
    61  
    62 class Line(object): 
    63     def toFeature(self): 
    64         return Feature(id=int(self.gid), geometry=self.geom, 
    65             properties={'distance': float(self.length)}) 
    66  
    67 orm.mapper(Line, lines_table) 
    68  
    69 ## Classes for reflected tables may be defined here, but the table and 
    70 ## mapping itself must be done in the init_model function 
    71 #reflected_table = None 
    72 # 
    73 #class Reflected(object): 
    74 #    pass 
     41     
     42    if isinstance(engine.dialect, SQLiteDialect): 
     43        """If Spatialite is used as database, we have to make sure that 
     44        every database connection created in the SQLAlchemy connection pool 
     45        loads the Spatialite extension, before the connection is used. 
     46        """ 
     47        class SpatialiteConnectionListener(PoolListener): 
     48            def connect(self, dbapi_con, con_record): 
     49                dbapi_con.enable_load_extension(True) 
     50                dbapi_con.execute("select load_extension('/usr/local/lib/libspatialite.so')") 
     51                dbapi_con.enable_load_extension(False) 
     52                 
     53        engine.pool.add_listener(SpatialiteConnectionListener())  
     54         
  • sample/trunk/mapfishsample/model/cities.py

    r1590 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from geoalchemy import GeometryColumn, Geometry 
    2221 
    23 from mapfish.sqlalchemygeom import Geometry 
    2422from mapfish.sqlalchemygeom import GeometryTableMixIn 
     23from mapfishsample.model.meta import engine, Base 
    2524 
    26 from mapfishsample.model.meta import metadata, engine 
    2725 
    28 cities_table = Table( 
    29     'world_cities', metadata, 
    30     Column('the_geom', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
    32  
    33 class City(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = cities_table 
    37  
    38 mapper(City, cities_table) 
     26class City(Base, GeometryTableMixIn): 
     27    __tablename__ = 'world_cities' 
     28    __table_args__ = { 
     29            'autoload' : True, 
     30            'autoload_with' : engine 
     31        } 
     32     
     33    the_geom = GeometryColumn(Geometry(dimension=2, srid=4326)) 
  • sample/trunk/mapfishsample/model/countries.py

    r1590 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from sqlalchemy import types, Column 
    2221 
    23 from mapfish.sqlalchemygeom import Geometry 
     22from geoalchemy import GeometryColumn, Geometry 
     23 
    2424from mapfish.sqlalchemygeom import GeometryTableMixIn 
     25from mapfishsample.model.meta import engine, Base 
    2526 
    26 from mapfishsample.model.meta import metadata, engine 
    2727 
    28 countries_table = Table( 
    29     'world_factbk_simplified', metadata, 
    30     Column('simplify', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
     28class Country(Base, GeometryTableMixIn): 
     29    __tablename__ = 'world_factbk_simplified' 
     30    __table_args__ = { 
     31            'autoload' : True, 
     32            'autoload_with' : engine 
     33        } 
     34     
     35    # force SQLAlchemy not to use Decimals, see https://trac.mapfish.org/trac/mapfish/ticket/185 
     36    birth_rt = Column(types.Numeric(asdecimal=False)) 
     37    death_rt = Column(types.Numeric(asdecimal=False)) 
     38    fertility = Column(types.Numeric(asdecimal=False)) 
     39     
     40    simplify = GeometryColumn(Geometry(dimension=2, srid=4326)) 
    3241 
    33 class Country(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = countries_table 
    37  
    38 mapper(Country, countries_table) 
  • sample/trunk/mapfishsample/model/lines.py

    r1590 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from sqlalchemy import Column, types 
     21from sqlalchemy.schema import Sequence 
    2222 
    23 from mapfish.sqlalchemygeom import Geometry 
     23from geoalchemy import GeometryColumn, LineString, GeometryDDL 
     24 
    2425from mapfish.sqlalchemygeom import GeometryTableMixIn 
     26from mapfishsample.model.meta import Base 
    2527 
    26 from mapfishsample.model.meta import metadata, engine 
     28# dimension information array for Oracle 
     29diminfo = "MDSYS.SDO_DIM_ARRAY("\ 
     30            "MDSYS.SDO_DIM_ELEMENT('LONGITUDE', -180, 180, 0.000000005),"\ 
     31            "MDSYS.SDO_DIM_ELEMENT('LATITUDE', -90, 90, 0.000000005)"\ 
     32            ")" 
    2733 
    28 lines_table = Table( 
    29     'lines', metadata, 
    30     Column('the_geom', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
     34class Line(Base, GeometryTableMixIn): 
     35    __tablename__ = 'lines_tab' 
     36     
     37    id = Column(types.Integer, Sequence('lines_tab_id_seq'), primary_key=True) 
     38    name = Column(types.String(30), default = 'foo') 
     39    the_geom = GeometryColumn(LineString(dimension=2, srid=4326, diminfo=diminfo)) 
    3240 
    33 class Line(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = lines_table 
    37  
    38 mapper(Line, lines_table) 
     41GeometryDDL(Line.__table__) 
  • sample/trunk/mapfishsample/model/meta.py

    r1590 r3570  
    22from sqlalchemy import MetaData 
    33from sqlalchemy.orm import scoped_session, sessionmaker 
     4from sqlalchemy.ext.declarative import declarative_base 
    45 
    5 __all__ = ['Session', 'metadata'] 
     6__all__ = ['Session', 'metadata', 'Base'] 
    67 
    78# SQLAlchemy database engine.  Updated by model.init_model() 
     
    1415# names, you'll need a metadata for each database 
    1516metadata = MetaData() 
     17 
     18Base = declarative_base(metadata=metadata) 
  • sample/trunk/mapfishsample/model/points.py

    r1590 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from sqlalchemy import Column, types 
     21from sqlalchemy.schema import Sequence 
    2222 
    23 from mapfish.sqlalchemygeom import Geometry 
     23from geoalchemy import GeometryColumn, Point, GeometryDDL 
     24 
    2425from mapfish.sqlalchemygeom import GeometryTableMixIn 
     26from mapfishsample.model.meta import Base 
    2527 
    26 from mapfishsample.model.meta import metadata, engine 
     28# dimension information array for Oracle 
     29diminfo = "MDSYS.SDO_DIM_ARRAY("\ 
     30            "MDSYS.SDO_DIM_ELEMENT('LONGITUDE', -180, 180, 0.000000005),"\ 
     31            "MDSYS.SDO_DIM_ELEMENT('LATITUDE', -90, 90, 0.000000005)"\ 
     32            ")" 
    2733 
    28 points_table = Table( 
    29     'points', metadata, 
    30     Column('the_geom', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
     34class Point(Base, GeometryTableMixIn): 
     35    __tablename__ = 'points' 
     36     
     37    id = Column(types.Integer, Sequence('points_id_seq'), primary_key=True) 
     38    name = Column(types.String(30), default = 'foo') 
     39    the_geom = GeometryColumn(Point(dimension=2, srid=4326, diminfo=diminfo)) 
    3240 
    33 class Point(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = points_table 
     41GeometryDDL(Point.__table__) 
    3742 
    38 mapper(Point, points_table) 
  • sample/trunk/mapfishsample/model/polygons.py

    r1590 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from sqlalchemy import Column, types 
     21from sqlalchemy.schema import Sequence 
    2222 
    23 from mapfish.sqlalchemygeom import Geometry 
     23from geoalchemy import GeometryColumn, Polygon, GeometryDDL 
     24 
    2425from mapfish.sqlalchemygeom import GeometryTableMixIn 
     26from mapfishsample.model.meta import Base 
    2527 
    26 from mapfishsample.model.meta import metadata, engine 
     28# dimension information array for Oracle 
     29diminfo = "MDSYS.SDO_DIM_ARRAY("\ 
     30            "MDSYS.SDO_DIM_ELEMENT('LONGITUDE', -180, 180, 0.000000005),"\ 
     31            "MDSYS.SDO_DIM_ELEMENT('LATITUDE', -90, 90, 0.000000005)"\ 
     32            ")" 
    2733 
    28 polygons_table = Table( 
    29     'polygons', metadata, 
    30     Column('the_geom', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
     34class Polygon(Base, GeometryTableMixIn): 
     35    __tablename__ = 'polygons' 
     36     
     37    id = Column(types.Integer, Sequence('polygons_id_seq'), primary_key=True) 
     38    name = Column(types.String(30), default = 'foo') 
     39    the_geom = GeometryColumn(Polygon(dimension=2, srid=4326, diminfo=diminfo)) 
    3240 
    33 class Polygon(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = polygons_table 
    37  
    38 mapper(Polygon, polygons_table) 
     41GeometryDDL(Polygon.__table__) 
  • sample/trunk/mapfishsample/model/summits.py

    r2993 r3570  
    1818# 
    1919 
    20 from sqlalchemy import Column, Table, types 
    21 from sqlalchemy.orm import mapper 
     20from geoalchemy import GeometryColumn, Point 
    2221 
    23 from mapfish.sqlalchemygeom import Geometry 
    2422from mapfish.sqlalchemygeom import GeometryTableMixIn 
     23from mapfishsample.model.meta import engine, Base 
    2524 
    26 from mapfishsample.model.meta import metadata, engine 
    2725 
    28 summits_table = Table( 
    29     'sommets_out', metadata, 
    30     Column('geom', Geometry(4326)), 
    31     autoload=True, autoload_with=engine) 
    32  
    33 class Summit(GeometryTableMixIn): 
    34     # for GeometryTableMixIn to do its job the __table__ property 
    35     # must be set here 
    36     __table__ = summits_table 
    37  
    38 mapper(Summit, summits_table) 
     26class Summit(Base, GeometryTableMixIn): 
     27    __tablename__ = 'sommets_out' 
     28    __table_args__ = { 
     29            'autoload' : True, 
     30            'autoload_with' : engine 
     31        } 
     32     
     33    geom = GeometryColumn(Point(dimension=2, srid=4326)) 
  • sample/trunk/mapfishsample/public/demos/c2corg/search.html

    r3412 r3570  
    44  <title>Search demo</title> 
    55  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> 
    6   <link rel="stylesheet" type="text/css" href="../../mfbase/ext/resources/css/ext-all.css"/> 
     6  <link rel="stylesheet" type="text/css" href="../../lib/externals/ext/resources/css/ext-all.css"/> 
     7  <link rel="stylesheet" type="text/css" href="../../lib/externals/openlayers/theme/default/style.css"/> 
    78 
    89  <style type="text/css"> 
     
    5859    } 
    5960    .pan { 
    60         background-image: url(../../mfbase/mapfish/img/icon_pan.png) !important; 
     61        background-image: url(../../lib/externals/mapfish/img/icon_pan.png) !important; 
    6162        height: 20px !important; 
    6263        width: 20px !important; 
     
    7071   
    7172  <!-- EXT colorField Extent --> 
    72   <link rel="stylesheet" type="text/css" href="../../mfbase/ext-community-extensions/color-field.css" /> 
     73  <link rel="stylesheet" type="text/css" href="../../lib/ext-community-extensions/color-field.css" /> 
    7374</head> 
    7475 
     
    7879    <div class="loading-container"> 
    7980      <div class="loading-indicator"> 
    80         <img src="../../mfbase/ext/resources/images/default/shared/large-loading.gif" 
     81        <img src="../../lib/externals/ext/resources/images/default/shared/large-loading.gif" 
    8182             width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>MapFish - Search 
    8283         <br /> 
     
    9293</body> 
    9394 
    94 <script type="text/javascript" src="../../mfbase/ext/adapter/ext/ext-base.js"></script> 
     95<script type="text/javascript" src="../../lib/externals/ext/adapter/ext/ext-base.js"></script> 
    9596<!-- debug mode --> 
    9697<!-- 
    97 <script type="text/javascript" src="../../mfbase/ext/ext-core-debug.js"></script> 
    98 <script type="text/javascript" src="../../mfbase/ext/ext-all-debug.js"></script> 
     98<script type="text/javascript" src="../../lib/externals/ext/ext-core-debug.js"></script> 
     99<script type="text/javascript" src="../../lib/externals/ext/ext-all-debug.js"></script> 
    99100--> 
    100101<!-- prod mode --> 
    101 <script type="text/javascript" src="../../mfbase/ext/ext-all.js"></script> 
     102<script type="text/javascript" src="../../lib/externals/ext/ext-all.js"></script> 
    102103 
    103104<!-- debug mode --> 
    104105<!-- 
    105 <script type="text/javascript" src="../../mfbase/openlayers/lib/OpenLayers.js"></script> 
    106 <script type="text/javascript" src="../../mfbase/geoext/lib/GeoExt.js"></script> 
    107 <script type="text/javascript" src="../../mfbase/mapfish/MapFish.js"></script> 
     106<script type="text/javascript" src="../../lib/externals/openlayers/lib/OpenLayers.js"></script> 
     107<script type="text/javascript" src="../../lib/externals/geoext/lib/GeoExt.js"></script> 
     108<script type="text/javascript" src="../../lib/externals/mapfish/MapFish.js"></script> 
    108109--> 
    109110<!-- prod mode --> 
    110 <script type="text/javascript" src="../../mfbase/release/mapfish/MapFish.js"></script> 
     111<script type="text/javascript" src="../../build/MapFish.js"></script> 
    111112 
    112113<!-- EXT colorField Extent --> 
    113 <script type="text/javascript" src="../../mfbase/ext-community-extensions/color-field.js" ></script> 
     114<script type="text/javascript" src="../../lib/ext-community-extensions/color-field.js" ></script> 
    114115 
    115116<script type="text/javascript"> 
    116117 
    117   // reference local blank image 
    118   Ext.BLANK_IMAGE_URL = '../../mfbase/ext/resources/images/default/s.gif'; 
     118  OpenLayers.ImgPath = '../../lib/externals/openlayers/img/'; 
     119  Ext.BLANK_IMAGE_URL = '../../lib/externals/ext/resources/images/default/s.gif'; 
    119120 
    120121  function createMap() { 
     
    130131          controls: [new OpenLayers.Control.PanZoomBar()], 
    131132          maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90), 
    132           scales: scales 
     133          scales: scales, 
     134          theme: null 
    133135      }; 
    134136   
  • sample/trunk/mapfishsample/public/demos/geostat/geostat.html

    r429 r3570  
    33<head> 
    44  <title>Geostat demo</title> 
    5   <link rel="stylesheet" type="text/css" href="../../mfbase/ext/resources/css/ext-all.css"/> 
     5  <link rel="stylesheet" type="text/css" href="../../lib/externals/ext/resources/css/ext-all.css"/> 
     6  <link rel="stylesheet" type="text/css" href="../../lib/externals/openlayers/theme/default/style.css"/> 
    67 
    78  <style type="text/css"> 
     
    6566   
    6667  <!-- EXT colorField Extent --> 
    67   <link rel="stylesheet" type="text/css" href="../../mfbase/ext-community-extensions/color-field.css" /> 
     68  <link rel="stylesheet" type="text/css" href="../../lib/ext-community-extensions/color-field.css" /> 
    6869     
    6970</head> 
     
    7273    <div class="loading-mask"></div> 
    7374    <div class="loading-container"> 
    74       <div class="loading-indicator"><img src="../../mfbase/ext/resources/images/default/shared/large-loading.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>MapFish - Geostat<br /><span id="loading-msg">Loading ...</span></div> 
     75      <div class="loading-indicator"><img src="../../lib/externals/ext/resources/images/default/shared/large-loading.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>MapFish - Geostat<br /><span id="loading-msg">Loading ...</span></div> 
    7576    </div> 
    7677  </div> 
     
    8687</body> 
    8788 
    88 <script type="text/javascript" src="../../mfbase/ext/adapter/ext/ext-base.js"></script> 
    89 <script type="text/javascript" src="../../mfbase/ext/ext-all.js"></script> 
     89<script type="text/javascript" src="../../lib/externals/ext/adapter/ext/ext-base.js"></script> 
     90<script type="text/javascript" src="../../lib/externals/ext/ext-all.js"></script> 
    9091 
    9192<!-- debug mode --> 
    9293<!-- 
    93 <script type="text/javascript" src="../../mfbase/openlayers/lib/OpenLayers.js"></script> 
    94 <script type="text/javascript" src="../../mfbase/mapfish/MapFish.js"></script> 
     94<script type="text/javascript" src="../../lib/externals/openlayers/lib/OpenLayers.js"></script> 
     95<script type="text/javascript" src="../../lib/externals/mapfish/MapFish.js"></script> 
    9596--> 
    9697<!-- production mode --> 
    97 <script type="text/javascript" src="../../mfbase/release/mapfish/MapFish.js"></script> 
     98<script type="text/javascript" src="../../build/MapFish.js"></script> 
    9899 
    99100<!-- EXT colorField Extent --> 
    100 <script type="text/javascript" src="../../mfbase/ext-community-extensions/color-field.js" ></script> 
     101<script type="text/javascript" src="../../lib/ext-community-extensions/color-field.js" ></script> 
    101102 
    102103<script type="text/javascript"> 
    103104 
    104   // reference local blank image 
    105   Ext.BLANK_IMAGE_URL = '../../mfbase/ext/resources/images/default/s.gif'; 
     105  OpenLayers.ImgPath = '../../lib/externals/openlayers/img/'; 
     106  Ext.BLANK_IMAGE_URL = '../../lib/externals/ext/resources/images/default/s.gif'; 
    106107 
    107108  Ext.onReady(function() { 
    108109      Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); 
    109110       
    110       var map = new OpenLayers.Map($('olmap')); 
     111      var map = new OpenLayers.Map('olmap', {theme: null}); 
    111112 
    112113      var jpl_wms = new OpenLayers.Layer.WMS("Satellite", 
     
    323324                                                           separator: '<br/>y: '})); 
    324325   
    325       map.addControl(new OpenLayers.Control.OverviewMap({div: $('overviewmap')})); 
     326      map.addControl( 
     327          new OpenLayers.Control.OverviewMap({ 
     328              div: $('overviewmap'), 
     329              mapOptions: { 
     330                  theme: null 
     331              } 
     332          }) 
     333      ); 
    326334 
    327335      Ext.get('loading').fadeOut({remove: true}); 
  • sample/trunk/mapfishsample/public/demos/routing/epfl.html

    r1408 r3570  
    77    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    88 
    9     <link rel="stylesheet" type="text/css" href="../../mfbase/ext/resources/css/ext-all.css" /> 
    10  
    11     <script type="text/javascript" src="../../mfbase/ext/adapter/ext/ext-base.js"></script> 
    12     <script type="text/javascript" src="../../mfbase/ext/ext-all.js"></script> 
    13  
    14     <script type="text/javascript" src="../../mfbase/release/mapfish/MapFish.js"></script> 
    15  
     9    <link rel="stylesheet" type="text/css" href="../../lib/externals/ext/resources/css/ext-all.css" /> 
     10    <link rel="stylesheet" type="text/css" href="../../lib/externals/openlayers/theme/default/style.css"/> 
     11 
     12    <script type="text/javascript" src="../../lib/externals/ext/adapter/ext/ext-base.js"></script> 
     13    <script type="text/javascript" src="../../lib/externals/ext/ext-all.js"></script> 
     14 
     15        <!-- debug mode --> 
     16        <!-- 
     17        <script type="text/javascript" src="../../lib/externals/openlayers/lib/OpenLayers.js"></script> 
     18        <script type="text/javascript" src="../../lib/externals/mapfish/MapFish.js"></script> 
     19        --> 
     20        <!-- prod mode --> 
     21        <script type="text/javascript" src="../../build/MapFish.js"></script> 
     22         
     23         
    1624    <script type="text/javascript"> 
     25 
     26    OpenLayers.ImgPath = '../../lib/externals/openlayers/img/'; 
     27    Ext.BLANK_IMAGE_URL = '../../lib/externals/ext/resources/images/default/s.gif'; 
    1728 
    1829    function epflCreateMap(mapDiv) { 
     
    2233            units: "m", 
    2334            maxExtent: new OpenLayers.Bounds(526000, 147000, 543000, 161000), 
    24             scales: [1/100, 1/500, 1/1500, 1/3000, 1/5000] 
     35            scales: [1/100, 1/500, 1/1500, 1/3000, 1/5000], 
     36            theme: null 
    2537         }; 
    2638 
  • sample/trunk/mapfishsample/public/index.html

    r3137 r3570  
    1313      <h2>Demos</h2> 
    1414      <a href="demos/">Demos page</a> 
    15  
    16       <h2>Examples</h2> 
    17       <ul> 
    18         <li><a href="examples/map/">Map</a></li> 
    19         <li><a href="examples/tree/">Tree</a></li> 
    20         <li><a href="examples/geostat/">GeoStat</a></li> 
    21         <li><a href="examples/shortcuts/">Shortcuts</a></li> 
    22         <li><a href="examples/editing/">Editing</a></li> 
    23         <li><a href="examples/search/">Search</a></li> 
    24         <li><a href="examples/print/">Print</a></li> 
    25         <li><a href="examples/recenter/">Recenter</a></li> 
    26       </ul> 
    27  
    28       <h2>Tests</h2> 
    29         <ul> 
    30           <li><a href="mfbase/mapfish/tests/tests-wrapper.html">MapFish tests</a></li> 
    31       </ul> 
    3215    </div> 
    3316  </body> 
  • sample/trunk/mapfishsample/tests/__init__.py

    r1592 r3570  
    1515from routes.util import URLGenerator 
    1616from webtest import TestApp 
    17 from routes import url_for 
    1817 
    1918import pylons.test 
    2019 
    21 __all__ = ['environ', 'url_for', 'TestController'] 
     20__all__ = ['environ', 'url', 'TestController'] 
    2221 
    2322# Invoke websetup with the current config file 
  • sample/trunk/mapfishsample/tests/functional/test_cities.py

    r1590 r3570  
    33class TestCitiesController(TestController): 
    44    def test_index(self): 
    5         response = self.app.get(url_for(controller='cities')) 
     5        response = self.app.get(url(controller='cities', action='index')) 
    66        # Test response... 
  • sample/trunk/mapfishsample/tests/functional/test_countries.py

    r1590 r3570  
    33class TestCountriesController(TestController): 
    44    def test_index(self): 
    5         response = self.app.get(url_for(controller='countries')) 
    6         # Test response... 
     5        response = self.app.get(url(controller='countries', action='index')) 
  • sample/trunk/mapfishsample/tests/functional/test_lines.py

    r1700 r3570  
    33from mapfishsample.model.meta import Session 
    44from mapfishsample.model.lines import Line 
     5 
     6from geoalchemy import WKBSpatialElement 
     7 
    58from shapely.geometry import asLineString 
    69         
     
    1215        feature = Line() 
    1316        feature.name = "foo" 
    14         feature.geometry = asLineString(((0, 0),(0.1, 0.1),(0.2, 0.2))) 
     17        shape = asLineString(((0, 0),(0.1, 0.1),(0.2, 0.2))) 
     18        srid = Line.geometry_column().type.srid 
     19        feature.geometry = WKBSpatialElement(buffer(shape.wkb), srid=srid) 
     20        feature.geometry.shape = shape 
    1521        Session.add(feature) 
    1622        Session.commit() 
     
    2632 
    2733    def test_index(self): 
    28         response = self.app.get(url_for(controller='lines')) 
     34        response = self.app.get(url(controller='lines', action='index')) 
    2935        assert response.response.content_type == 'application/json' 
    3036        assert "FeatureCollection" in response 
    3137 
    3238    def test_index_bad_format(self): 
    33         response = self.app.get(url_for(controller='lines', format='html'), 
     39        response = self.app.get(url(controller='lines', action='index', format='html'), 
    3440                                status=404) 
    3541 
    3642    def test_show(self): 
    37         response = self.app.get(url_for(controller='lines', action='show', id=self.fid)) 
     43        response = self.app.get(url(controller='lines', action='show', id=self.fid)) 
    3844        assert response.response.content_type == 'application/json' 
    3945        assert "Feature" in response 
    4046 
    4147    def test_show_bad_format(self): 
    42         response = self.app.get(url_for(controller='lines', action='show', id=self.fid, format='html'), 
     48        response = self.app.get(url(controller='lines', action='show', id=self.fid, format='html'), 
    4349                                status=404) 
    4450 
    4551    def test_show_bad_id(self): 
    46         response = self.app.get(url_for(controller='lines', action='show', id=-1), 
     52        response = self.app.get(url(controller='lines', action='show', id=-1), 
    4753                                status=404) 
    4854 
    4955    def test_create(self): 
    5056        params = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "LineString", "coordinates": [[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0]]}, "type": "Feature", "properties": {"name": "bar"}, "id": null}]}' 
    51         response = self.app.post(url_for(controller='lines', action='create'), 
     57        response = self.app.post(url(controller='lines', action='create'), 
    5258                                 params=params, 
    5359                                 headers={'Content-type': 'text/plain'}, 
     
    6268    def test_update(self): 
    6369        params = '{"geometry": {"type": "LineString", "coordinates": [[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0]]}, "type": "Feature", "properties": {"name": "dude"}, "id": %d}' % self.fid 
    64         response = self.app.put(url_for(controller='lines', action='update', id=self.fid), 
     70        response = self.app.put(url(controller='lines', action='update', id=self.fid), 
    6571                                params=params, 
    6672                                headers={'Content-type': 'text/plain'}, 
     
    7278    def test_delete(self): 
    7379        # code below triggers exception, nose bug it seems 
    74         #self.app.delete(url_for(controller='points', action='delete', id=self.fid), 
    75         #                           status=204) 
     80        #self.app.delete(url(controller='points', action='delete', id=self.fid), 
     81        #                status=204) 
    7682        pass 
    7783 
    78      
    79  
    8084    def test_delete_bad_id(self): 
    81         response = self.app.delete(url_for(controller='lines', action='delete', id=-1), 
     85        response = self.app.delete(url(controller='lines', action='delete', id=-1), 
    8286                                   status=404) 
  • sample/trunk/mapfishsample/tests/functional/test_points.py

    r1700 r3570  
    33from mapfishsample.model.meta import Session 
    44from mapfishsample.model.points import Point 
     5 
     6from geoalchemy import WKBSpatialElement 
     7 
    58from shapely.geometry import asPoint 
    69         
     
    1215        feature = Point() 
    1316        feature.name = "foo" 
    14         feature.geometry = asPoint((0.5, 0.5)) 
     17        shape = asPoint((0.5, 0.5)) 
     18        srid = Point.geometry_column().type.srid 
     19        feature.geometry = WKBSpatialElement(buffer(shape.wkb), srid=srid) 
     20        feature.geometry.shape = shape 
    1521        Session.add(feature) 
    1622        Session.commit() 
     
    2632 
    2733    def test_index(self): 
    28         response = self.app.get(url_for(controller='points')) 
     34        response = self.app.get(url(controller='points', action='index')) 
    2935        assert response.response.content_type == 'application/json' 
    3036        assert "FeatureCollection" in response 
    3137 
    3238    def test_index_bad_format(self): 
    33         response = self.app.get(url_for(controller='points', format='html'), 
     39        response = self.app.get(url(controller='points', action='index', format='html'), 
    3440                                status=404) 
    3541 
    3642    def test_show(self): 
    37         response = self.app.get(url_for(controller='points', action='show', id=self.fid)) 
     43        response = self.app.get(url(controller='points', action='show', id=self.fid)) 
    3844        assert response.response.content_type == 'application/json' 
    3945        assert "Feature" in response 
    4046 
    4147    def test_show_bad_format(self): 
    42         response = self.app.get(url_for(controller='points', action='show', id=self.fid, format='html'), 
     48        response = self.app.get(url(controller='points', action='show', id=self.fid, format='html'), 
    4349                                status=404) 
    4450 
    4551    def test_show_bad_id(self): 
    46         response = self.app.get(url_for(controller='points', action='show', id=-1), 
     52        response = self.app.get(url(controller='points', action='show', id=-1), 
    4753                                status=404) 
    4854 
    4955    def test_create(self): 
    5056        params = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "type": "Feature", "properties": {"name": "bar"}, "id": null}]}' 
    51         response = self.app.post(url_for(controller='points', action='create'), 
     57        response = self.app.post(url(controller='points', action='create'), 
    5258                                 params=params, 
    5359                                 headers={'Content-type': 'text/plain'}, 
     
    6268    def test_update(self): 
    6369        params = '{"geometry": {"type": "Point", "coordinates": [0.1, 0.1]}, "type": "Feature", "properties": {"name": "dude"}, "id": %d}' % self.fid 
    64         response = self.app.put(url_for(controller='points', action='update', id=self.fid), 
     70        response = self.app.put(url(controller='points', action='update', id=self.fid), 
    6571                                params=params, 
    6672                                headers={'Content-type': 'text/plain'}, 
     
    7278    def test_delete(self): 
    7379        # code below triggers exception, nose bug it seems 
    74         #self.app.delete(url_for(controller='points', action='delete', id=self.fid), 
    75         #                           status=204) 
     80        #self.app.delete(url(controller='points', action='delete', id=self.fid), 
     81        #                status=204) 
    7682        pass 
    7783 
     
    7985 
    8086    def test_delete_bad_id(self): 
    81         response = self.app.delete(url_for(controller='points', action='delete', id=-1), 
     87        response = self.app.delete(url(controller='points', action='delete', id=-1), 
    8288                                   status=404) 
  • sample/trunk/mapfishsample/tests/functional/test_polygons.py

    r1700 r3570  
    33from mapfishsample.model.meta import Session 
    44from mapfishsample.model.polygons import Polygon 
     5 
     6from geoalchemy import WKBSpatialElement 
     7 
    58from shapely.geometry import asPolygon 
    69 
     
    1215        feature = Polygon() 
    1316        feature.name = "foo" 
    14         feature.geometry = asPolygon(((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)), 
    15                                      [((0.5, 0.5), (0.5, 0.7), (0.7, 0.7), (0.7, 0.5), (0.5, 0.5))]) 
     17        shape = asPolygon(((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)), 
     18                          [((0.5, 0.5), (0.5, 0.7), (0.7, 0.7), (0.7, 0.5), (0.5, 0.5))]) 
     19        srid = Polygon.geometry_column().type.srid 
     20        feature.geometry = WKBSpatialElement(buffer(shape.wkb), srid=srid) 
     21        feature.geometry.shape = shape 
    1622        Session.add(feature) 
    1723        Session.commit() 
     
    2733 
    2834    def test_index(self): 
    29         response = self.app.get(url_for(controller='polygons')) 
     35        response = self.app.get(url(controller='polygons', action='index')) 
    3036        assert response.response.content_type == 'application/json' 
    3137        assert "FeatureCollection" in response 
    3238 
    3339    def test_index_bad_format(self): 
    34         response = self.app.get(url_for(controller='polygons', format='html'), 
     40        response = self.app.get(url(controller='polygons', action='index', format='html'), 
    3541                                status=404) 
    3642 
    3743    def test_show(self): 
    38         response = self.app.get(url_for(controller='polygons', action='show', id=self.fid)) 
     44        response = self.app.get(url(controller='polygons', action='show', id=self.fid)) 
    3945        assert response.response.content_type == 'application/json' 
    4046        assert "Feature" in response 
    4147 
    4248    def test_show_bad_format(self): 
    43         response = self.app.get(url_for(controller='polygons', action='show', id=self.fid, format='html'), 
     49        response = self.app.get(url(controller='polygons', action='show', id=self.fid, format='html'), 
    4450                                status=404) 
    4551 
    4652    def test_show_bad_id(self): 
    47         response = self.app.get(url_for(controller='polygons', action='show', id=-1), 
     53        response = self.app.get(url(controller='polygons', action='show', id=-1), 
    4854                                status=404) 
    4955 
    5056    def test_create(self): 
    5157        params = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "Polygon", "coordinates": [[[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0], [0.0, 0.0]], [[0.5, 0.5], [0.5, 0.7], [0.7, 0.7], [0.7, 0.5], [0.5, 0.5]]]}, "type": "Feature", "properties": {"name": "foo"}, "id": null}]}' 
    52         response = self.app.post(url_for(controller='polygons', action='create'), 
     58        response = self.app.post(url(controller='polygons', action='create'), 
    5359                                 params=params, 
    5460                                 headers={'Content-type': 'text/plain'}, 
     
    6369    def test_update(self): 
    6470        params = '{"geometry": {"type": "Polygon", "coordinates": [[[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0], [0.0, 0.0]], [[0.5, 0.5], [0.5, 0.7], [0.7, 0.7], [0.7, 0.5], [0.5, 0.5]]]}, "type": "Feature", "properties": {"name": "foo"}, "id": %d}' % self.fid 
    65         response = self.app.put(url_for(controller='polygons', action='update', id=self.fid), 
     71        response = self.app.put(url(controller='polygons', action='update', id=self.fid), 
    6672                                params=params, 
    6773                                headers={'Content-type': 'text/plain'}, 
     
    7379    def test_update_bad_id(self): 
    7480        params = '{"geometry": {"type": "Polygon", "coordinates": [[[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0], [0.0, 0.0]], [[0.5, 0.5], [0.5, 0.7], [0.7, 0.7], [0.7, 0.5], [0.5, 0.5]]]}, "type": "Feature", "properties": {"name": "foo"}, "id": %d}' % self.fid 
    75         response = self.app.put(url_for(controller='polygons', action='update', id=-1), 
     81        response = self.app.put(url(controller='polygons', action='update', id=-1), 
    7682                                params=params, 
    7783                                headers={'Content-type': 'text/plain'}, 
     
    8086    def test_delete(self): 
    8187        # code below triggers exception, nose bug it seems 
    82         #response = self.app.delete(url_for(controller='polygons', action='delete', id=self.fid), 
     88        #response = self.app.delete(url(controller='polygons', action='delete', id=self.fid), 
    8389        #                           status=204) 
    8490        pass 
    8591 
    8692    def test_delete_bad_id(self): 
    87         response = self.app.delete(url_for(controller='polygons', action='delete', id=-1), 
     93        response = self.app.delete(url(controller='polygons', action='delete', id=-1), 
    8894                                   status=404) 
    8995 
  • sample/trunk/mapfishsample/tests/functional/test_summits.py

    r1700 r3570  
    44class TestSummitsController(TestController): 
    55    def test_index(self): 
    6         response = self.app.get(url_for(controller='summits')) 
     6        response = self.app.get(url(controller='summits', action='index')) 
    77        assert response.response.content_type == 'application/json' 
    88        assert "FeatureCollection" in response 
     
    1111        # limit 
    1212        params = {"limit": 10} 
    13         response = self.app.get(url_for(controller='summits'), 
     13        response = self.app.get(url(controller='summits', action='index'), 
    1414                                params=params) 
    1515        geojson = loads(response.response._body) 
     
    2121        # limit & offset 
    2222        params = {"limit": 10, "offset": 1} 
    23         response = self.app.get(url_for(controller='summits'), 
     23        response = self.app.get(url(controller='summits', action='index'), 
    2424                                params=params) 
    2525        geojson = loads(response.response._body) 
     
    3030    def test_index_lonlat(self): 
    3131        params = {"lon": 5, "lat": 45, "tolerance": 0.5} 
    32         response = self.app.get(url_for(controller='summits'), 
     32        response = self.app.get(url(controller='summits', action='index'), 
    3333                                params=params) 
    3434        geojson = loads(response.response._body) 
     
    4141    def test_index_box(self): 
    4242        params = {"box": "5,45,5.5,45.5"} 
    43         response = self.app.get(url_for(controller='summits'), 
     43        response = self.app.get(url(controller='summits', action='index'), 
    4444                                params=params) 
    4545        geojson = loads(response.response._body) 
     
    5353 
    5454    def test_index_min(self): 
    55         params = {"limit": 5, "min": 2000} 
    56         response = self.app.get(url_for(controller='summits'), 
     55        params = {"limit": 5, "queryable": "elevation", "elevation__gte": 2000} 
     56        response = self.app.get(url(controller='summits', action='index'), 
    5757                                params=params) 
    5858        geojson = loads(response.response._body) 
     
    6363 
    6464    def test_index_max(self): 
    65         params = {"limit": 5, "max": 2000} 
    66         response = self.app.get(url_for(controller='summits'), 
     65        params = {"limit": 5, "queryable": "elevation", "elevation__lte": 2000} 
     66        response = self.app.get(url(controller='summits', action='index'), 
    6767                                params=params) 
    6868        geojson = loads(response.response._body) 
  • sample/trunk/mapfishsample/websetup.py

    r1592 r3570  
    33 
    44from mapfishsample.config.environment import load_environment 
     5from mapfishsample.model import meta 
    56 
    67log = logging.getLogger(__name__) 
    78 
    89def setup_app(command, conf, vars): 
    9     """Place any commands to setup mapfishsample here""" 
     10    """Place any commands to setup mapfishsample here 
     11    This method can be executed by calling: 
     12     
     13    paster setup-app development.ini [--name=main_pylons] 
     14    """ 
    1015    load_environment(conf.global_conf, conf.local_conf) 
    1116 
    12     # Load the models 
    13     from mapfishsample.model import meta 
    14     meta.metadata.bind = meta.engine 
    15  
    16     # 
    17     # No tables to create in our case 
    18     #  
    19  
    20     # Create the tables if they aren't there already 
    21     #meta.metadata.create_all(checkfirst=True) 
     17    # Create the tables for the editing example (if they aren't there already) 
     18    meta.metadata.create_all(bind=meta.engine) 
  • sample/trunk/setup.py

    r3123 r3570  
    88setup( 
    99    name='MapFishSample', 
    10     version='1.3dev', 
     10    version='2.0dev', 
    1111    description='', 
    1212    author='', 
     
    1414    #url='', 
    1515    install_requires=[ 
    16         "mapfish>=1.3dev,<=1.3.99", 
     16        "mapfish>=2.0dev,<=2.0.99", 
     17        "GeoFormAlchemy>=0.1dev,<=0.1.99", 
    1718    ], 
    18     setup_requires=["PasteScript==dev,>=1.6.3dev-r7326"], 
    1919    packages=find_packages(exclude=['ez_setup']), 
    2020    include_package_data=True, 
     
    2626    #        ('public/**', 'ignore', None)]}, 
    2727    zip_safe=False, 
    28     paster_plugins=['MapFish', 'PasteScript', 'Pylons'], 
    2928    entry_points=""" 
    3029    [paste.app_factory] 
  • sample/trunk/test.ini.in

    r1592 r3570  
    3333 
    3434# SQLAlchemy database URL 
    35 sqlalchemy.url = %DB_URL% 
     35sqlalchemy.url = postgresql://${dbuser}:${dbpassword}@${dbhost}:${dbport}/${db} 
    3636 
    3737# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*