skylines-project / skylines Goto Github PK
View Code? Open in Web Editor NEWLive tracking, flight database and competition framework
Home Page: https://skylines.aero/
License: GNU Affero General Public License v3.0
Live tracking, flight database and competition framework
Home Page: https://skylines.aero/
License: GNU Affero General Public License v3.0
Could the flight times be displayed in local time? IMHO in most cases it would be more informative.
When sorting this page with the greatest distance on top, a flight with an empty distance field appears on top of a flight of 38km.
https://www.skylines-project.org/flights/pilot/141
I'm trying to do a complete installation of Skylines in a Ubuntu machine, and all the dependencies have been installed successfully. I'm running python 2.7.3 (included with Ubuntu 12.04)
When running './scripts/import_welt2000.py', I get the error mentioned in the title with the following stack trace:
Traceback (most recent call last):
File "./scripts/import_welt2000.py", line 30, in <module>
welt2000 = get_database(path=args.welt2000_path)
File "/vagrant/skylines/lib/waypoints/welt2000.py", line 34, in get_database
path = __get_database_file(current_app.config['SKYLINES_TEMPORARY_DIR'])
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 297, in _get_current_object
return self.__local()
File "/usr/local/lib/python2.7/dist-packages/flask/globals.py", line 34, in _find_app
raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context
With the little research I've done, I think this might be related to flask's Application Context (http://flask.pocoo.org/docs/appcontext/), but I have not been able to solve this.
I've digged into the source code of skylines/lib/waypoints/welt2000.py
and I've found that the error goes away when line 34 is commented.
I'm not versed enough with python & flask to solve this... =(.. yet 👅
In Skylines we have the option to pin flights and to view them simultaneously.
I think this would be also a nice feature for Live Tracking, especially for competitions.
Imported from http://bugs.xcsoar.org/ticket/2223
Wäre es möglich auf die Seite der Flüge einen Filter für die einzelnen Auswahlmöglichkeiten zu implementieren. Damit könnten Flüge präzise nach Verein, Datum, Pilot usw. gesucht und gelistet werden.
Derzeit ist dies schwierig weil man alle Seiten einzeln durchblättern muss um Flüge zu finden.Imported from http://bugs.xcsoar.org/ticket/2676
With live tracking set to Australian units the barogram has feet as the altitude units. However after refreshing the webpage, the live tracking updates to the barogram traces show a discontinuity step as though they are being drawn in metres rather than feet. The text display of altitude displayed at the marker location remains correct in feet.
Refreshing the page causes the traces to be correctly displayed in feet, then subsequent tracking reverts to plotting as though they are in metres.
Attached images show sequence:
LiveTrackingBaroUnits1.jpg - webpage refreshed ~03:05 with altitude trace steps shown
LiveTrackingBaroUnits2.jpg - webpage refreshed ~03:20 with altitude trace steps from previous image corrected but updates from 03:20 incorrect.
To improve our start/landing detection we need a way to feed elevation data into the detection algorithm.
imported from http://bugs.xcsoar.org/ticket/2334
Exception on /search/ [GET]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/skylines/src/skylines/views/search.py", line 21, in index
tokens = text_to_tokens(search_text)
File "/opt/skylines/src/skylines/model/search.py", line 175, in text_to_tokens
return shlex.split(search_text.encode('utf-8'))
File "/usr/lib/python2.7/shlex.py", line 279, in split
return list(lex)
File "/usr/lib/python2.7/shlex.py", line 269, in next
token = self.get_token()
File "/usr/lib/python2.7/shlex.py", line 96, in get_token
raw = self.read_token()
File "/usr/lib/python2.7/shlex.py", line 191, in read_token
raise ValueError, "No escaped character"
ValueError: No escaped character
Sorting by average vario or gain height for the circling phases can help analyse the flight
Imported from http://bugs.xcsoar.org/ticket/2773
In Chrome, when I move the mouse from not-MouseOver the barograph to MouseOver the barograph, a vertical scrollbar appears. The result is the whole page shifts a bit to the left.
Sometimes, this triggers a not-MouseOver again, and a continious shudder results.
Imported from http://bugs.xcsoar.org/ticket/2968
It would be great to see a rough estimate of the flown/optimized distance during live tracking.
Instead of requiring people to log in to see if there are notifications, why not drop them an email (if they indicate they would like that)?
My 5:43h flight is "stopped" in Skylines after 3h12. The points are also only 230pt compared to 508pt in OLC. Hasn't happened with this logger before (LX7007 Pro IGC).
http://www.skylines-project.org/flights/15060/
http://www.onlinecontest.org/olc-2.0/gliding/flightinfo.html?dsId=2891208
The flight disappeared from Skylines since then, but it is still available at the OLC.
Imported from http://bugs.xcsoar.org/ticket/2776
This flight should have a lot more points scored for OLC classic:
https://www.skylines-project.org/flights/22631/ vs. http://www.onlinecontest.org/olc-2.0/gliding/flightinfo.html?dsId=3409205Imported from http://bugs.xcsoar.org/ticket/3210
I'd like to see all flights which originated from The Netherlands, such that I can analyze flights which can help me learn about the conditions in my area.
In larger countries, like Germany, this would require sub-country filtering (OLC does it per state afaik), but country-wide is good enough for me at the moment.
Original author: @roeles
Imported from http://bugs.xcsoar.org/ticket/2315
We need to handle ENL data to calculate proper scores for flights with engine time.
Imported from http://bugs.xcsoar.org/ticket/2682
Exception on /notifications/ [GET]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/skylines/src/skylines/views/notifications.py", line 71, in index
return render_template('notifications/list.jinja', **template_vars)
File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/opt/skylines/src/skylines/templates/notifications/list.jinja", line 45, in top-level template code
<a href="{{ url_for('.index', **(request.args|add_to_dict(page=next_page))) }}" class="btn">{% trans %}Older{% endtrans %} →</a>
File "/opt/skylines/src/skylines/templates/base-page.jinja", line 3, in top-level template code
{% from 'macros/flash.jinja' import insert_flash_message with context %}
File "/opt/skylines/src/skylines/templates/base.jinja", line 21, in top-level template code
{%- block body %}{% endblock %}
File "/opt/skylines/src/skylines/templates/base-page.jinja", line 36, in block "body"
{%- block content %}{% endblock %}
File "/opt/skylines/src/skylines/templates/notifications/list.jinja", line 20, in block "content"
{{ render_events_table(events) }}
File "/opt/skylines/src/skylines/templates/notifications/events-table.jinja", line 9, in template
{{ render_event_row(event) }}
File "/opt/skylines/src/skylines/templates/notifications/events-table.jinja", line 43, in template
{{ _render_show_button(event_link(event)) }}
File "/opt/skylines/src/skylines/templates/notifications/events-table.jinja", line 200, in template
{{ url_for('club.index', club_id=event.club_id) }}
File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 305, in url_for
force_external=external)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/routing.py", line 1620, in build
raise BuildError(endpoint, values, method)
BuildError: ('club.index', {}, None)
The URL should be optional!
Some users request a warning when they're uploading flights which might contain airspace violations.
Original author: @TobiasLohner
Imported from http://bugs.xcsoar.org/ticket/2720
Since Skylines is promoted as an Open Data project, we should offer our data in form of a public API. We already offer unimportant things like airports and airspace for the map interactivity, but neither of them is documented so far.
This issue should be used to track all activities related to this effort.
frontend.views
should use the code in the api
package, just like the code in api.views
exposes most of that API to the public./api/airports
/api/airspace
/api/waves
/api/events
/api/flights
/api/users
/api/clubs
/api/files
/api/tracking
/api/search
A list of well documented public APIs:
... or chapter to README or something like that
Delete a pilot or a club member if he/she is created by you.
So that people can fix typo
Imported from http://bugs.xcsoar.org/ticket/2318
Exception on /clubs/466/edit [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/skylines/src/skylines/lib/decorators.py", line 37, in decorated_view
return fn(*args, **kwargs)
File "/opt/skylines/src/skylines/views/club.py", line 59, in edit_post
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 719, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 352, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 332, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1814, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1896, 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 58, in save_obj
mapper, table, update)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 491, in _emit_update_statements
execute(statement, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 664, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 764, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 878, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 871, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 320, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) duplicate key value violates unique constraint "clubs_name_key"
DETAIL: Key (name)=(GKG) already exists.
'UPDATE clubs SET name=%(name)s, website=%(website)s WHERE clubs.id = %(clubs_id)s' {'website': u'', 'clubs_id': 466, 'name': u'GKG'}
The following list of Schweizer gliders should be added to the SkyLines database:
This request came via mail from [email protected]
Pinch zoom doesn't seem to be supported in our build of the OpenLayers library. The original issue was mentioning iOS, but I'm having the same problem on Android too.
Imported from http://bugs.xcsoar.org/ticket/2335
Our import script should be able to merge any modifications in the Welt2000 dataset with our current database. The airfield IDs must stay the same to keep the start/landing point information and other IDs related things.
In New Zealand (NZDT=UTC+13) flights sometimes cross UTC midnight and the live tracking altitude trace is wrapped to the start of the window rather than scrolling and providing a continuous trace.
Suggestions:
If you enter an URL with more than one user ID (seperated by ",") to track multiple flights live and the first ID in the URL isn't online, you don't see any flights, but just some kind of user page of the first (offline) ID. Even if the other IDs, or at least some of them are online. When the first ID is online you can see all the other live tracks too.
At the moment it's not possible to use a constant URL with e.g. all club colleagues IDs, where you can watch everyone who is online, without the need of filtering the URL on who ist flying that day and who isn't.
I would like to see the Real Time Tracking function to be made useful for Search and Rescue operations. This would require the ability to be able to read a geodetic position of the aircraft from the trace - especially the final positions.
It is hard to find yourself or others in the ranking if you can't search for names.
Imported from http://bugs.xcsoar.org/ticket/2682
Since #14 got rejected we need a self-baked solution for uploading and using avatars for all users (and possibly clubs).
Where do we store the images?
File system, statically served.
What sizes do we need?
GitHub has 440x440 for the profile pages and 140x140 everywhere else.
Feature request: have Private / Public flights
Skylines could easily be used as an online personal logbook.
For this to be possible one would like to flag some flights (simple circuit, etc.) as private flights and not appear in the public pages. Much like what xcontest.org does.
See http://www.skylines-project.org/flights/14386/
Imported from http://bugs.xcsoar.org/ticket/2740
Given that a pilot wants to enter all flight info normally provided by IGC files, it makes sense to support NMEA logs as well.
We could offer to generate SeeYou CUP files with tasks for all the optimized tracks of a flight (and the declared task if there is one).
Imported from http://bugs.xcsoar.org/ticket/3006
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: permission denied for relation
alembic_version
pg_dump: The command was: LOCK TABLE public.alembic_version IN ACCESS SHARE MODE
pg_dump: *** aborted because of error
Exception on /flights/upload/ [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/skylines/src/skylines/lib/decorators.py", line 55, in decorated_view
return fn(*args, **kwargs)
File "/opt/skylines/src/skylines/views/upload.py", line 152, in index_post
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 719, in commit
self.transaction.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 352, in commit
self._prepare_impl()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 332, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1814, in flush
self._flush(objects)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1896, 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 63, in save_obj
table, insert)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 565, in _emit_insert_statements
execute(statement, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 664, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 764, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 878, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 871, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 320, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) duplicate key value violates unique constraint "igc_files_md5_key"
DETAIL: Key (md5)=(1a3ab3591291d7c7fd3e82937477b096) already exists.
'INSERT INTO igc_files (owner_id, time_created, filename, md5, logger_id, logger_manufacturer_id, registration, competition_id, model, date_utc) VALUES (%(owner_id)s, %(time_created)s, %(filename)s, %(md5)s, %(logger_id)s, %(logger_manufacturer_id)s, %(registration)s, %(competition_id)s, %(model)s, %(date_utc)s) RETURNING igc_files.id' {'competition_id': None, 'time_created': datetime.datetime(2013, 7, 26, 12, 56, 50, 464413), 'filename': u'283c3w01.igc', 'date_utc': datetime.date(2012, 8, 3), 'logger_id': u'3W0', 'registration': u'D-6997', 'logger_manufacturer_id': 'CAM', 'md5': '1a3ab3591291d7c7fd3e82937477b096', 'model': u'GLASFLUEGEL_', 'owner_id': 72}
this it probably throwing if two identical files are part of a ZIP file.
Since people can be members of multiple clubs it might make sense to reflect that in SkyLines too.
The frontpage currently attempts to display this image:
https://www.skylines-project.org/images/about-banner.png
However, this is image cannot be found and returns a 404. This results in a rather empty frontpage.
Browser: Chrome Version 19.0.1055.1 dev
OS: Linux
In Iceweasel you do not notice the missing image, since it does not take up any space on the frontpage. In Chrome it does.
Screenshots can be made on request.
https://www.skylines-project.org/flights/26530/
I only left this flight uploaded to demonstrate the problem. Clearly there is a logger fix in beetween, wich is incorrect 0° I assume.
No idea how to solve this one of cause, but it works on OLC so you can do it as well. ;-)
It would be nice if in flight upload window a dropdownmenu woul appear, Showing the frequently flown airplanes (type, registrationnumber an competitionnumber) for a one klick fill in of required information.
Imported from http://bugs.xcsoar.org/ticket/2569
on page http://skylines.xcsoar.org/statistics/
Imported from http://bugs.xcsoar.org/ticket/2371
We should be able to handle IGC files that contain multiple flights.
Imported from http://bugs.xcsoar.org/ticket/2475
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.