Coder Social home page Coder Social logo

baxter-flask's People

Contributors

abkfenris avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

geoavalanche

baxter-flask's Issues

Photo Uploader

  • Currently uploading to the wrong url
  • but returning the right one for where it should be going?
  • Need associated objects for each relevant type, so there can be a many to many, instead of just single

SnowPits

Columns:

  • id = db.Column(db.Integer, primary_key=True)
  • name = db.Column(db.Unicode(64))
  • path = db.Column(db.Unicode(128))
  • location = db.Column(Geometry("POINT", 926919))
  • description = db.Column(db.Text)
  • elevation
  • aspect
  • pit = JSON from snowpilot or CAAML if we can convert it nicely
    • Then the hard part is figuring out how to display it nicely
  • photos

Documentation

Documentation Structure

  • Public Help
    • Getting Started
    • Trails
    • Avalanche Incidents
    • Avalanche Paths
  • User Help
    • Database Access
    • Markdown
    • Editing General
    • Trails
    • Avalanche Paths
    • Avalanche Incidents
      • Involved
    • Images
    • Snowpits
    • Users
      • Observers
      • Roles
  • Code Reference
    • Baxter Package
    • Database Models
    • HTTP Routes
    • API
    • manage.py
    • fabfile
    • makefile
    • Server setup

Weather Admin

Provide some substance to the page.

Ideas:

  • Recent Forecast
  • Recent Observations
  • Quick way of entering a new forecast or observations?
  • Readings from weather stations
  • NWS forecast
  • Radar

Error Pages

Need some error pages for when errors happen. And maybe display sentry id nicely.

KML

Make individual and group kmls for types

Avalanche Incidents without geo

Help jinja2 deal with incidents without geometry. Probably something along the lines of:

{% if incident.bed_surface and incident.debris_field %}
Map script stuff
Map div
{% endif %}

Users admin view

don't show password, or figure out how to deal with flask-admin nicer

Weather Observation Model

  • id (int): Primary Key
  • user_id (int): Primary foreign key for observer
  • observer (object): Observer User ( #4 ) foreign object
  • date (datetime): When the observation was taken
  • sky (str): Sky Cover
  • precip_type (str): Precipitation Type
  • precip_rate (float): Precipitation Rate per hour
  • temp_max (float): Maximum 24 hour Temperature
  • temp_min (float): Minimum 24 hour Temperature
  • temp_present (float): Current Temperature
  • temp_trend (string): Temp rising/falling/rate
  • pressure_present (float): Current Pressure
  • pressure_trend (string): Pressure rising/falling/rate
  • humidity (float): Relative Humidity
  • wind_speed (float): Wind speed
  • wind_direction (str): Wind direction
  • wind_gust_max (float): Maximum gust speed
  • snow_depth (float): Height of snow depth
  • snow_24 (float): 24 hour snow depth
  • snow_storm (float): Storm snow depth
  • snow_8_temp (float):
  • snow_density (float):
  • snow_foot_pen
  • snow_ram_pen
  • snow_surface_form
  • snow_surface_size
  • snow_blowing_extent
  • snow_blowing_direct
  • snow_water_equil
  • rain_24 (float):
  • rain_precip?
  • water_new_g?
  • water_new_mm?
  • Photos

Should snowpack observations just be part of weather observations? They could just be available inline

Change SRID and re-init db versions

Looks like it's SRID 26919 for the database, which will also mean that migrations will have to be restarted as I doubt they will be able to do that alter, or pick it up.

Weather Forecast Model

  • id (int): Primay Key
  • observer_id (int): Forecaster/Observer foreign id
  • oberver: Forecaster/Observer object
  • Condition (list): Mountain Condition
  • for_temp_high (int): High temperature
  • for_temp_low (int): Low temperature
  • trail_comment (text): Trail condition information
  • for_today (text): Today's forecast
  • for_tomorrow (text): Tomorrow's forecast
  • for_long (text): Long term forecast
  • body (text): Forecasters's comments
  • Weather Observation
    • should it be many to many?
  • Avalanche Discussion
  • Conditions Discussion
  • Photos

Avalanche Observation Problem Model

How to map between an Avalanche Observation and an Avalanche Problem and provide more info about it. See #19

Columns:

  • observation_id
  • problem_id
  • problem number (ranking the days problems)
  • aspects
  • likelyhood
  • size
  • trend
  • discussion
  • photos?

Points of Interest

  • id = db.Column(db.Integer, primary_key=True)
  • name = db.Column(db.String(40))
  • point = db.Column(Geometry("POINT", 926919))
  • bspaid = db.Column(db.String(40))
  • poiid = db.Column(db.Integer)
  • poi_group = db.Column(db.String(40))
  • poi_class = db.Column(db.String(40))
  • poi_type = db.Column(db.String(40))
  • remark = db.Column(db.Text)
  • elev_ft = db.Column(db.Float)
  • public_share = db.Column(db.Boolean)
  • site_capacity = db.Column(db.Integer)
  • facility_id = db.Column(db.Integer)
  • Photos
  • Maintenance

Avalanche Incident Model

Columns:

  • id = db.Column(db.Integer, primary_key=True)
  • name = db.Column(db.String(80))
  • user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  • observer = db.relationship('User', backref='avalanche_incidents')
  • path_id = db.Column(db.Integer, db.ForeignKey('avalanche_paths.id'))
  • path = db.relationship('AvalanchePath', backref='incidents')
  • observation_date = db.Column(db.DateTime)
  • occurence_date = db.Column(db.DateTime)
  • location = db.Column(db.Text)
  • elevation = db.Column(db.Integer)
  • aspect = db.Column(db.String(40))
  • trigger = db.Column(db.String(40))
  • trigger_add = db.Column(db.String(40))
  • av_problem = db.Column(db.String(40))
  • av_type = db.Column(db.String(40))
  • weak_layer = db.Column(db.String(40))
  • depth = db.Column(db.Float)
  • width = db.Column(db.Float)
  • vertical = db.Column(db.Float)
  • slope_angle = db.Column(db.Float())
  • people_caught = db.Column(db.Integer)
  • people_carried = db.Column(db.Integer)
  • people_buried_part = db.Column(db.Integer)
  • people_buried_full = db.Column(db.Integer)
  • snow_profile = db.Column(db.Text)
  • image = db.Column(db.String(160))
  • description = db.Column(db.Text)
  • crown = db.Column(Geometry('MULTILINESTRING', 926919))
  • bed_surface = db.Column(Geometry('MULTIPOLYGON', 926919))
  • debris_field = db.Column(Geometry('MULTIPOLYGON', 926919))
  • Avalanche Problems?
  • Photos
  • Snow Pits

Geospatial Admin

Does it even need a page, or can it just be a category?

Geospatial might not really be the right name for it either.

Campsites

Should campsites and other POI be a subclass of a generic point model?

  • Condition
  • Maintenance
  • Photos

Trail Model

  • id
  • geom
  • use_type
  • comments
  • tid
  • skitrail
  • name
  • length_mi
  • status
  • display
  • pubshare
  • gpsupdate
  • gpsunit
  • gpsuser
  • bspaid
  • tsid
  • display_wu
  • display_wn
  • ttype
  • season
  • shape_leng
  • tclass
  • maintclass
  • slength
  • min_slope
  • max_slope
  • avg_slope
  • length_ft
  • Photos
  • Maintenance
  • Conditions

User Model

User Model

  • id
  • username
  • first
  • last
  • email
  • password_hash - using Flask-Security
  • observer
  • password
  • verify_password() - using Flask-Security
  • __repr__
  • Flask-security role should be admin
  • Need to add roles table for flask-security and match users to what flask-security expects
  • Admin should have 'me' for logged in users who aren't admins with a simpler form

Use SSL

Should have SSL configured.

Get a wildcard cert from somewhere like StartSSL - trusted on most desktops and mobiles, but not windows phone maybe?

Force ssl for /admin with something like:

server {
     location /admin {
        rewrite ^ https://$http_host$request_uri? permanent;
    }
}

server {
    listen 443;
    location /api/1.0/trail {
        rewrite ^ http://$http_host$request_uri? permanent;
    }
}

Which has it reverting back to http for trail api, and maybe other api calls so that proxies can cache them better?

Strong SSL Security on nginx

SSL in Postgres

Avalanche Path

Columns:

  • id = db.Column(db.Integer, primary_key=True)
  • name = db.Column(db.String(80))
  • description = db.Column(db.Text)
  • path = db.Column(Geometry('POLYGON', 926919))
  • aspect = db.Column(db.String(40))
  • Photos
  • SnowPits?

Subclassed Geospatial Models

Should the geospatial models be subclasses?

  • Multipoint
    • POI
    • Campsite
    • Peak
    • Lake...
  • MultiLinestring
    • Trail
      • Ski
      • Climb
    • Road

Models/Admin Todo

Models/Admin

  • Admin Index #10
  • User #4
  • Weather Index #5
    • Weather Observation #6
      • Photos
    • Weather Forecast #7
      • Weather Observation
      • Avalanche Discussion
      • Conditions Discussion
      • Photos
  • Conditions Discussion #8
    • Photos
  • Geospatial Index #9
    • Trails #11
      • Photos
      • Condition
      • Maintenance
    • Points of Interest #12
      • Photos
      • Maintenance
    • Ski/Climb routes #13
      • Should they just be trails with more info about them?
    • Roads #14
      • Photos
      • Maintenance
    • Campsites #15
      • Photos
      • Maintenance
    • Maintenance
  • Snow #17
    • Avalanche Path #20
      • Photos
    • Avalanche Incidents #21
      • Photos - can upload, but not retrieve the correct url
      • Snow Pits
      • Avalanche Problems
    • Avalanche Discussion #22
      • Snow Observations
      • Photos
    • Snow Pits #18
      • Photos
    • Snow Observation #23
      • Snow Pits
      • Photos
      • Should Snow Observations just be weather observations?trying to manually right a list
    • AvalancheInvolved #24
    • AvalancheProblems #19
    • AvalancheProblemsDaily - many-to-many for Avalanche Discussions
  • Photos #3

Monitoring

Some monitoring/logging setup.

Maybe psdash?

Snow Admin

Should this be a page or just a category?

Avalanche Involved Model

Really just used as a subpart to Avalanche Incidents

Columns:

  • id
  • incident_id
  • incident
  • user_id
  • user
  • first
  • last
  • phone
  • email
  • info
  • observed
  • group
  • caught
  • carried
  • burried
  • rescuer
  • locations

Ski / Climb Routes

Should they be subclasses of trails? So ski routes would be trails. Actually maybe just a parent class of both called path?

Roads

Should they be a subclass of a generic model called path?

  • Maintenance
  • Condition
  • Photos

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.