app.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from flask import Flask
  2. from flask_sqlalchemy import SQLAlchemy
  3. import flask_admin as admin
  4. from geoalchemy2.types import Geometry
  5. from flask_admin.contrib.geoa import ModelView
  6. # Create application
  7. app = Flask(__name__)
  8. app.config.from_pyfile('config.py')
  9. db = SQLAlchemy(app)
  10. class Point(db.Model):
  11. id = db.Column(db.Integer, primary_key=True)
  12. name = db.Column(db.String(64), unique=True)
  13. point = db.Column(Geometry("POINT"))
  14. class MultiPoint(db.Model):
  15. id = db.Column(db.Integer, primary_key=True)
  16. name = db.Column(db.String(64), unique=True)
  17. point = db.Column(Geometry("MULTIPOINT"))
  18. class Polygon(db.Model):
  19. id = db.Column(db.Integer, primary_key=True)
  20. name = db.Column(db.String(64), unique=True)
  21. point = db.Column(Geometry("POLYGON"))
  22. class MultiPolygon(db.Model):
  23. id = db.Column(db.Integer, primary_key=True)
  24. name = db.Column(db.String(64), unique=True)
  25. point = db.Column(Geometry("MULTIPOLYGON"))
  26. class LineString(db.Model):
  27. id = db.Column(db.Integer, primary_key=True)
  28. name = db.Column(db.String(64), unique=True)
  29. point = db.Column(Geometry("LINESTRING"))
  30. class MultiLineString(db.Model):
  31. id = db.Column(db.Integer, primary_key=True)
  32. name = db.Column(db.String(64), unique=True)
  33. point = db.Column(Geometry("MULTILINESTRING"))
  34. # Flask views
  35. @app.route('/')
  36. def index():
  37. return '<a href="/admin/">Click me to get to Admin!</a>'
  38. # Create admin
  39. admin = admin.Admin(app, name='Example: GeoAlchemy', template_mode='bootstrap3')
  40. # Add views
  41. admin.add_view(ModelView(Point, db.session, category='Points'))
  42. admin.add_view(ModelView(MultiPoint, db.session, category='Points'))
  43. admin.add_view(ModelView(Polygon, db.session, category='Polygons'))
  44. admin.add_view(ModelView(MultiPolygon, db.session, category='Polygons'))
  45. admin.add_view(ModelView(LineString, db.session, category='Lines'))
  46. admin.add_view(ModelView(MultiLineString, db.session, category='Lines'))
  47. if __name__ == '__main__':
  48. db.create_all()
  49. # Start app
  50. app.run(debug=True)