Pouvez-vous ajouter les champs suivants à DB pour chaque FAI affichés si renseignés:
- Numéro ASN
- Code ARCEP
- Date de dernière mise à jour db (date)
- Nombre adhérents xDSL (nombre)
- Nombre adhérents tunnel chiffré/VPN (nombre)
- Nombre adhérents radio (nombre)
- Nombre adhérents fibre (nombre)
- Url des status (url)
- Full IPv6 (oui/non) [1]
- Participe au Ring NL-Nog (si ASN) (oui/non) [2]
- Participe à la Birque Internet (oui/non)
- Services fournis (liste de champs texte)
[1] https://www.ffdn.org/wiki/doku.php?id=travaux:ipv6_ffdn
[2] https://ring.nlnog.net
Il faut donc notamment modifier le formulaire de saisie manuelle (le JSON c'est trop fort pour moi), et les bouts de HTML qui affichent le nombre d'abonnés sans distinction de service (dsl, vpn, wifi).
J'ai déjà ajouté tous ces champs dans la spec isp-format :
https://code.ffdn.org/FFDN/isp-format/commit/1878ecdd0dc717a5a3958ac033a0b00d398870e3.
Reste maintenant à les implémenter correctement dans ffdn-db...
Il faut donc notamment modifier le formulaire de saisie manuelle (le JSON c'est trop fort pour moi), et les bouts de HTML qui affichent le nombre d'abonnés sans distinction de service (dsl, vpn, wifi).
Est-ce que les champs doivent être ajoutés dans le modèle? Si oui, comment est-ce qu'on migre la base de données (j'ai pas vu de migrations dans le repo, mais j'ai peut être mal cherché).
Comment vous testez que vous n'avez rien cassé en général? J'ai pas vu de tests dans ce repo, vous avez une suite d'intégration qui traine quelque part?
Salut @pitchum @Gu1 @bram,
Il reste quoi à faire là dessus?
Est-ce que les champs doivent être ajoutés dans le modèle? Si oui, comment est-ce qu'on migre la base de données (j'ai pas vu de migrations dans le repo, mais j'ai peut être mal cherché).
Comment vous testez que vous n'avez rien cassé en général? J'ai pas vu de tests dans ce repo, vous avez une suite d'intégration qui traine quelque part?
À priori pas besoin d'ajouter de champs dans le modèle car le JSON est stocké tel quel dans la colonne isp.json. Il faut juste adapter l'appli pour supporter les 2 formats JSON.
À ma connaissance il n'y a pas de scripts de migration de BDD ni de tests automatisés.
Tout reste à faire.
Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Ce n'est pas forcément insurmontable car la base de code n'est pas énorme mais il faut quelqu'un pour s'en occuper et j'ai personnellement peu de temps dispo.
Une des motivations pour une réécriture complète c'est que le code ne peut pas passer à python3 à cause d'une dépendance sur geoalchemy (et geoalchemy2 n'est plus du tout compatible avec sqlite). Et du peu que j'ai vu je ne suis pas certain qu'on utilise vraiment la force geoalchemy, on devrait pouvoir utiliser sqlalchemy tout seul.
À priori pas besoin d'ajouter de champs dans le modèle car le JSON est stocké tel quel dans la colonne `isp.json`. Il faut juste adapter l'appli pour supporter les 2 formats JSON.
À ma connaissance il n'y a pas de scripts de migration de BDD ni de tests automatisés.
Tout reste à faire.
Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Ce n'est pas forcément insurmontable car la base de code n'est pas énorme mais il faut quelqu'un pour s'en occuper et j'ai personnellement peu de temps dispo.
Une des motivations pour une réécriture complète c'est que le code ne peut pas passer à python3 à cause d'une dépendance sur geoalchemy (et geoalchemy2 n'est plus du tout compatible avec sqlite). Et du peu que j'ai vu je ne suis pas certain qu'on utilise vraiment la force geoalchemy, on devrait pouvoir utiliser sqlalchemy tout seul.
Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète.
Je ne suis également pas candidat ><.
Ok, je vais me mettre sur ça. Je suis un peu chargé en ce moment, n'attendez pas une PR dans la journée mais ça arrive :)
Merci pour tes réponses.
> le JSON est stocké tel quel dans la colonne isp.json
**facepalm**, j'ai survolé ça à tord :)
> ni de tests automatisés
Entre temps j'ai vu ça: https://code.ffdn.org/FFDN/ffdn-db/src/master/test_ffdnispdb.py
> Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète.
Je ne suis également pas candidat ><.
Ok, je vais me mettre sur ça. Je suis un peu chargé en ce moment, n'attendez pas une PR dans la journée mais ça arrive :)
J'ai un peu avancé, j'en suis à la rédaction de quelques tests unitaires là.
Je rencontre un problème pour lequel j'aurais besoin d'un peu d'aide.
Je n'arrive pas à faire tourner les tests unitaires existants ni sur ma branche ni sur le master actuel.
Il semble que lorsque on crée la base de données depuis ces tests, on tente de VACUUM des tables à un moment donné, ce qui déclenche logiquement une erreur SQLite.
Est-ce un problème connu? Suis-je le seul à avoir ce soucis (ie. ça vient de mon setup)?
Je me permet de poster ce message à l'aide dans l'espoir que quelqu'un ait une réponse directe avant de partir dans un git bisect des enfers :)
python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
----------------------------------------------------------------------
Ran 9 tests in 0.341s
FAILED (errors=6)
root@f1c8523e5ed0:/ffdn# python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
----------------------------------------------------------------------
Ran 9 tests in 0.336s
FAILED (errors=6)
Salut,
Je suis en train de bosser sur ça ici: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-add-new-fields
J'ai un peu avancé, j'en suis à la rédaction de quelques tests unitaires là.
Je rencontre un problème pour lequel j'aurais besoin d'un peu d'aide.
Je n'arrive pas à faire tourner les tests unitaires existants ni sur ma branche ni sur le master actuel.
Il semble que lorsque on crée la base de données depuis ces tests, on tente de `VACUUM` des tables à un moment donné, ce qui déclenche logiquement une erreur SQLite.
Est-ce un problème connu? Suis-je le seul à avoir ce soucis (ie. ça vient de mon setup)?
Je me permet de poster ce message à l'aide dans l'espoir que quelqu'un ait une réponse directe avant de partir dans un git bisect des enfers :)
```
python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()
----------------------------------------------------------------------
Ran 9 tests in 0.341s
FAILED (errors=6)
root@f1c8523e5ed0:/ffdn# python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 126, in setUp
super(TestAPI, self).setUp()
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 89, in setUp
db.create_all()
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
self('after-create', target, connection)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
spatial_dialect.handle_ddl_after_create(bind, table, c)
File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
bind.execute("VACUUM %s" % table.name)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
statement, parameters
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()
----------------------------------------------------------------------
Ran 9 tests in 0.336s
FAILED (errors=6)
```
J'avais pour idée de prendre le dernier commit ayant touché aux tests unitaires, ab6fece2f9, afin de partir d'une base "qui marche".
Malheureusement, il semble que la libspatialite actuelle ait bien changé et soit incompatible avec celle qui était utilisée par ce commit:
python manage.py test
Traceback (most recent call last):
File "manage.py", line 97, in <module>
manager.run()
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 144, in handle
with app.test_request_context():
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 377, in __enter__
self.push()
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 321, in push
self.session = self.app.open_session(self.request)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 825, in open_session
return self.session_interface.open_session(self, request)
File "/ffdn/ffdnispdb/sessions.py", line 67, in open_session
res=self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1613, in execute
connection = self.contextual_connect(close_with_result=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect
self.pool.connect(),
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect
return _ConnectionFairy(self).checkout()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 431, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 871, in _do_get
return self._create_connection()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 323, in __init__
pool.dispatch.connect(self.connection, self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/ffdn/ffdnispdb/__init__.py", line 40, in connect
sqlite.execute('select load_extension("libspatialite.so")')
sqlite3.OperationalError: /usr/lib/x86_64-linux-gnu/libspatialite.so: undefined symbol: sqlite3_spatialite_init
Ça commence à faire un rabbit hole bien profond cette histoire. Le problème à l'air de tourner autour de geoalchemy.
Il semblerait que la version de la lib qu'on utilise soit complètement obsolète (dernière release en 2013!), je pense qu'on va devoir soit passer à la V2 soit mettre toute la partie geoalchemy à la benne.
Je ne saisis toujours pas pour quelle feature cette lib nous sert vraiment d'ailleurs.
Question pour @pitchum, t'en penses quoi? On dégage la partie geoalchemy ou on met tout simplement tout à jour?
Bonne nouvelle: ça résout le problème de VACUUM sur lequel les tests échouaient. En revanche, quatre tests sont cassés:
python manage.py test
EEEE.....
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (2, 'Middle of nowhere', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
----------------------------------------------------------------------
Ran 9 tests in 0.438s
FAILED (errors=4)
Traceback (most recent call last):
File "manage.py", line 97, in <module>
manager.run()
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 145, in handle
return self.run(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 386, in __exit__
self.auto_pop(exc_value)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 374, in auto_pop
self.pop(exc)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 357, in pop
% (rv, self)
AssertionError: Popped wrong request context. (<RequestContext 'http://localhost/' [GET] of ffdnispdb> instead of <RequestContext 'http://localhost/' [GET] of ffdnispdb>)
Bon, j'ai tenté de bisect tout ça.
J'avais pour idée de prendre le dernier commit ayant touché aux tests unitaires, ab6fece2f9, afin de partir d'une base "qui marche".
Malheureusement, il semble que la libspatialite actuelle ait bien changé et soit incompatible avec celle qui était utilisée par ce commit:
```
python manage.py test
Traceback (most recent call last):
File "manage.py", line 97, in <module>
manager.run()
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 144, in handle
with app.test_request_context():
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 377, in __enter__
self.push()
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 321, in push
self.session = self.app.open_session(self.request)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 825, in open_session
return self.session_interface.open_session(self, request)
File "/ffdn/ffdnispdb/sessions.py", line 67, in open_session
res=self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1613, in execute
connection = self.contextual_connect(close_with_result=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect
self.pool.connect(),
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect
return _ConnectionFairy(self).checkout()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 431, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 871, in _do_get
return self._create_connection()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 323, in __init__
pool.dispatch.connect(self.connection, self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
fn(*args, **kw)
File "/ffdn/ffdnispdb/__init__.py", line 40, in connect
sqlite.execute('select load_extension("libspatialite.so")')
sqlite3.OperationalError: /usr/lib/x86_64-linux-gnu/libspatialite.so: undefined symbol: sqlite3_spatialite_init
```
Ça commence à faire un rabbit hole bien profond cette histoire. Le problème à l'air de tourner autour de `geoalchemy`.
Il semblerait que la version de la lib qu'on utilise soit complètement obsolète (dernière release en 2013!), je pense qu'on va devoir soit passer à la V2 soit mettre toute la partie `geoalchemy` à la benne.
Je ne saisis toujours pas pour quelle feature cette lib nous sert vraiment d'ailleurs.
Question pour @pitchum, t'en penses quoi? On dégage la partie geoalchemy ou on met tout simplement tout à jour?
[EDIT] J'ai commencé à travailler sur un upgrade de `geoalchemy` vers `geoalchemy2` sur cette branche: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-update-geoalchemy
Bonne nouvelle: ça résout le problème de `VACUUM` sur lequel les tests échouaient. En revanche, quatre tests sont cassés:
```
python manage.py test
EEEE.....
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/ffdn/test_ffdnispdb.py", line 128, in setUp
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
flush_context.execute()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
uow
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (2, 'Middle of nowhere', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')
----------------------------------------------------------------------
Ran 9 tests in 0.438s
FAILED (errors=4)
Traceback (most recent call last):
File "manage.py", line 97, in <module>
manager.run()
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 145, in handle
return self.run(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 386, in __exit__
self.auto_pop(exc_value)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 374, in auto_pop
self.pop(exc)
File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 357, in pop
% (rv, self)
AssertionError: Popped wrong request context. (<RequestContext 'http://localhost/' [GET] of ffdnispdb> instead of <RequestContext 'http://localhost/' [GET] of ffdnispdb>)
```
Pouvez-vous ajouter les champs suivants à DB pour chaque FAI affichés si renseignés:
[1] https://www.ffdn.org/wiki/doku.php?id=travaux:ipv6_ffdn [2] https://ring.nlnog.net
J'ajouterais à URL des statuts : URL RI / wiki.
J'ai déjà ajouté tous ces champs dans la spec isp-format : https://code.ffdn.org/FFDN/isp-format/commit/1878ecdd0dc717a5a3958ac033a0b00d398870e3. Reste maintenant à les implémenter correctement dans ffdn-db...
Il faut donc notamment modifier le formulaire de saisie manuelle (le JSON c'est trop fort pour moi), et les bouts de HTML qui affichent le nombre d'abonnés sans distinction de service (dsl, vpn, wifi).
Salut @pitchum @Gu1 @bram,
Il reste quoi à faire là dessus?
Est-ce que les champs doivent être ajoutés dans le modèle? Si oui, comment est-ce qu'on migre la base de données (j'ai pas vu de migrations dans le repo, mais j'ai peut être mal cherché).
Comment vous testez que vous n'avez rien cassé en général? J'ai pas vu de tests dans ce repo, vous avez une suite d'intégration qui traine quelque part?
À priori pas besoin d'ajouter de champs dans le modèle car le JSON est stocké tel quel dans la colonne
isp.json
. Il faut juste adapter l'appli pour supporter les 2 formats JSON.À ma connaissance il n'y a pas de scripts de migration de BDD ni de tests automatisés. Tout reste à faire.
Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Ce n'est pas forcément insurmontable car la base de code n'est pas énorme mais il faut quelqu'un pour s'en occuper et j'ai personnellement peu de temps dispo. Une des motivations pour une réécriture complète c'est que le code ne peut pas passer à python3 à cause d'une dépendance sur geoalchemy (et geoalchemy2 n'est plus du tout compatible avec sqlite). Et du peu que j'ai vu je ne suis pas certain qu'on utilise vraiment la force geoalchemy, on devrait pouvoir utiliser sqlalchemy tout seul.
Merci pour tes réponses.
facepalm, j'ai survolé ça à tord :)
Entre temps j'ai vu ça: https://code.ffdn.org/FFDN/ffdn-db/src/master/test_ffdnispdb.py
Je ne suis également pas candidat ><.
Ok, je vais me mettre sur ça. Je suis un peu chargé en ce moment, n'attendez pas une PR dans la journée mais ça arrive :)
Salut,
Je suis en train de bosser sur ça ici: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-add-new-fields
J'ai un peu avancé, j'en suis à la rédaction de quelques tests unitaires là.
Je rencontre un problème pour lequel j'aurais besoin d'un peu d'aide.
Je n'arrive pas à faire tourner les tests unitaires existants ni sur ma branche ni sur le master actuel.
Il semble que lorsque on crée la base de données depuis ces tests, on tente de
VACUUM
des tables à un moment donné, ce qui déclenche logiquement une erreur SQLite.Est-ce un problème connu? Suis-je le seul à avoir ce soucis (ie. ça vient de mon setup)?
Je me permet de poster ce message à l'aide dans l'espoir que quelqu'un ait une réponse directe avant de partir dans un git bisect des enfers :)
Bon, j'ai tenté de bisect tout ça.
J'avais pour idée de prendre le dernier commit ayant touché aux tests unitaires,
ab6fece2f9
, afin de partir d'une base "qui marche".Malheureusement, il semble que la libspatialite actuelle ait bien changé et soit incompatible avec celle qui était utilisée par ce commit:
Ça commence à faire un rabbit hole bien profond cette histoire. Le problème à l'air de tourner autour de
geoalchemy
.Il semblerait que la version de la lib qu'on utilise soit complètement obsolète (dernière release en 2013!), je pense qu'on va devoir soit passer à la V2 soit mettre toute la partie
geoalchemy
à la benne.Je ne saisis toujours pas pour quelle feature cette lib nous sert vraiment d'ailleurs.
Question pour @pitchum, t'en penses quoi? On dégage la partie geoalchemy ou on met tout simplement tout à jour?
[EDIT] J'ai commencé à travailler sur un upgrade de
geoalchemy
versgeoalchemy2
sur cette branche: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-update-geoalchemyBonne nouvelle: ça résout le problème de
VACUUM
sur lequel les tests échouaient. En revanche, quatre tests sont cassés: