From eeceb3a1676102b22b3c7ec905b4e9e2fed5f59d Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 9 Jun 2018 10:01:45 +0200 Subject: [PATCH 1/9] make: Adjust openlayers URL --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3fe6c27..bc40efa 100644 --- a/Makefile +++ b/Makefile @@ -18,9 +18,9 @@ clean-deploy: # OpenLayers OPENLAYERS_VERSION = 2.13.1 -OPENLAYERS_NAME = OpenLayers-$(OPENLAYERS_VERSION) +OPENLAYERS_NAME = openlayers-$(OPENLAYERS_VERSION) OPENLAYERS_ARCHIVE = $(OPENLAYERS_NAME).tar.gz -OPENLAYERS_URL = http://github.com/openlayers/openlayers/releases/download/release-$(OPENLAYERS_VERSION)/$(OPENLAYERS_ARCHIVE) +OPENLAYERS_URL = https://github.com/openlayers/openlayers/archive/v$(OPENLAYERS_VERSION).tar.gz OPENLAYERS_JS_FOLDER = $(JS_FOLDER)/OpenLayers OPENLAYERS_IMG_FOLDER = $(IMG_FOLDER)/OpenLayers From 798db55e288e1695f559093ae50e49ed7008332b Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 9 Jun 2018 10:06:42 +0200 Subject: [PATCH 2/9] make: update mootools URLs --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index bc40efa..3cb0fe7 100644 --- a/Makefile +++ b/Makefile @@ -38,12 +38,13 @@ $(DOWNLOAD_FOLDER)/$(OPENLAYERS_ARCHIVE): # MooTools +# http://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js MOOTOOLS_CORE_VERSION = 1.4.5 -MOOTOOLS_CORE_FILE = mootools-core-$(MOOTOOLS_CORE_VERSION)-full-compat.js -MOOTOOLS_CORE_URL = http://mootools.net/download/get/$(MOOTOOLS_CORE_FILE) +MOOTOOLS_CORE_FILE = mootools.js +MOOTOOLS_CORE_URL = http://ajax.googleapis.com/ajax/libs/mootools/$(MOOTOOLS_CORE_VERSION)/$(MOOTOOLS_CORE_FILE) MOOTOOLS_MORE_VERSION = 1.4.0.1 -MOOTOOLS_MORE_ARCHIVE = $(MOOTOOLS_MORE_VERSION).tar.gz +MOOTOOLS_MORE_ARCHIVE = mootools-more-$(MOOTOOLS_MORE_VERSION).tar.gz MOOTOOLS_MORE_URL = https://github.com/mootools/mootools-more/archive/$(MOOTOOLS_MORE_ARCHIVE) MOOTOOLS_MORE_FOLDER = $(DOWNLOAD_FOLDER)/mootools-more-$(MOOTOOLS_MORE_VERSION) MOOTOOLS_MORE_COMPONENTS = \ From 9a784d8d36654072cb8c4e0a9fa9c68a7d739004 Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 9 Jun 2018 10:09:37 +0200 Subject: [PATCH 3/9] waypoints: update WELT2000 URL --- prosoar/waypoints/welt2000.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prosoar/waypoints/welt2000.py b/prosoar/waypoints/welt2000.py index 89091dc..46fd326 100644 --- a/prosoar/waypoints/welt2000.py +++ b/prosoar/waypoints/welt2000.py @@ -15,7 +15,7 @@ def __get_database_file(dir_data): # Download the current file # (only if server file is newer than local file) - url = 'http://www.segelflug.de/vereine/welt2000/download/WELT2000.TXT' + url = 'https://raw.githubusercontent.com/skylines-project/welt2000/master/WELT2000.TXT' subprocess.check_call(['wget', '-N', '-P', os.path.dirname(path), url]) # Check if download succeeded From 4cd0d54141aa44b5ad85a3cf556ba6eaf352a88c Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 9 Jun 2018 10:11:20 +0200 Subject: [PATCH 4/9] map.js: update URL for hillshading tiles see https://wiki.openstreetmap.org/wiki/Tile_servers --- web_dev/js/proSoar/map.js | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/web_dev/js/proSoar/map.js b/web_dev/js/proSoar/map.js index 140bb71..6d4b427 100644 --- a/web_dev/js/proSoar/map.js +++ b/web_dev/js/proSoar/map.js @@ -56,36 +56,13 @@ var MapWindow = new Class({ this.epsg4326 = new OpenLayers.Projection("EPSG:4326"); var hillshading = new OpenLayers.Layer.XYZ(_("Hill shading"), - "http://toolserver.org/~cmarqu/hill/${z}/${x}/${y}.png", { -// "terrain/${z}/${x}/${y}.png", { + "http://c.tiles.wmflabs.org/hillshading/${z}/${x}/${y}.png", { isBaseLayer: false, sphericalMercator: true, transparent: true, 'visibility': true, 'displayInLayerSwitcher': false, }); - -/* - var hillshading = new OpenLayers.Layer.TMS(_("Hill shading"), -// "http://toolserver.org/~cmarqu/hill/", { - "terrain/", { - type: 'png', - getURL: function osm_getTileURL(bounds) { - var res = this.map.getResolution(); - var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); - var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); - var z = this.map.getZoom(); - var limit = Math.pow(2, z); - if (y < 0 || y >= limit) return OpenLayers.Util.getImagesLocation() + "404.png"; - else x = ((x % limit) + limit) % limit; - return this.url + z + "/" + x + "/" + y + "." + this.type; - }, - isBaseLayer: false, - transparent: true, - 'visibility': true, - 'displayInLayerSwitcher': false, - }); -*/ this.map.addLayer(hillshading); osm.events.register('visibilitychanged', this, function() { hillshading.setVisibility(osm.getVisibility()); }); From 83eed35ddb1eedd408d0678eba285ebcf437ef67 Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 16 Jun 2018 15:04:09 +0200 Subject: [PATCH 5/9] shebang: python2.7 --- deploy/deploy.py | 2 +- manage.py | 2 +- prosoar/igc/trace.py | 2 +- scripts/cleanup_prosoar | 2 +- scripts/gen_airports | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/deploy.py b/deploy/deploy.py index 45572e5..e908591 100755 --- a/deploy/deploy.py +++ b/deploy/deploy.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 import sys import os diff --git a/manage.py b/manage.py index d7e0f02..7006dd8 100755 --- a/manage.py +++ b/manage.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 from flask.ext.script import Manager diff --git a/prosoar/igc/trace.py b/prosoar/igc/trace.py index 10dc4fc..4f46725 100644 --- a/prosoar/igc/trace.py +++ b/prosoar/igc/trace.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 from pyproj import Proj, transform import math diff --git a/scripts/cleanup_prosoar b/scripts/cleanup_prosoar index 9f0fbe6..f34784d 100755 --- a/scripts/cleanup_prosoar +++ b/scripts/cleanup_prosoar @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 import os import sys diff --git a/scripts/gen_airports b/scripts/gen_airports index 01bb569..27f43b5 100755 --- a/scripts/gen_airports +++ b/scripts/gen_airports @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 import os import sys From f3a7afbc6374167963c96c3e0c5b5924dedc434c Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 16 Jun 2018 15:56:38 +0200 Subject: [PATCH 6/9] map.js: update URL for skylines tile server --- web_dev/js/proSoar/map.js | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/web_dev/js/proSoar/map.js b/web_dev/js/proSoar/map.js index 6d4b427..5068098 100644 --- a/web_dev/js/proSoar/map.js +++ b/web_dev/js/proSoar/map.js @@ -68,33 +68,12 @@ var MapWindow = new Class({ osm.events.register('visibilitychanged', this, function() { hillshading.setVisibility(osm.getVisibility()); }); var airspace = new OpenLayers.Layer.XYZ(_("Airspace"), - "https://www.skylines-project.org/mapproxy/tiles/1.0.0/airspace/${z}/${x}/${y}.png", { + "https://www.skylines.aero/mapproxy/tiles/1.0.0/airspace/${z}/${x}/${y}.png", { isBaseLayer: false, transparent: true, 'visibility': true, 'displayInLayerSwitcher': true }); - -/* - var airspace = new OpenLayers.Layer.TMS(_("Airspace"), - "airspace/", { - type: 'png', - getURL: function osm_getTileURL(bounds) { - var res = this.map.getResolution(); - var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); - var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); - var z = this.map.getZoom(); - var limit = Math.pow(2, z); - if (y < 0 || y >= limit) return OpenLayers.Util.getImagesLocation() + "404.png"; - else x = ((x % limit) + limit) % limit; - return this.url + z + "/" + x + "/" + y + "." + this.type; - }, - isBaseLayer: false, - transparent: true, - 'visibility': true, - 'displayInLayerSwitcher': true - }); -*/ this.map.addLayer(airspace); OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '4'; From bf3457a99a9bae6d4f38c05a8100c27e043139be Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sun, 17 Jun 2018 13:34:16 +0200 Subject: [PATCH 7/9] Template: fix gettext problem No link tag is inserted if 'en' is preferred locale. --- prosoar/templates/index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/prosoar/templates/index.html b/prosoar/templates/index.html index 59ac51d..8b6ec65 100644 --- a/prosoar/templates/index.html +++ b/prosoar/templates/index.html @@ -9,8 +9,10 @@ + {% if get_locale() != 'en'%} - + + {% endif %} From f90fef1779ecda35a384ce9757e79f0f8e09b651 Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sat, 16 Jun 2018 16:22:08 +0200 Subject: [PATCH 8/9] Add task export in flarmcfg.txt format. fixes #3 --- prosoar/task/flarm_writer.py | 23 +++++ prosoar/views/tasks.py | 10 ++ web_dev/images/software/flarm.png | Bin 0 -> 2558 bytes web_dev/images/software/flarm.svg | 161 ++++++++++++++++++++++++++++++ 4 files changed, 194 insertions(+) create mode 100644 prosoar/task/flarm_writer.py create mode 100644 web_dev/images/software/flarm.png create mode 100644 web_dev/images/software/flarm.svg diff --git a/prosoar/task/flarm_writer.py b/prosoar/task/flarm_writer.py new file mode 100644 index 0000000..54f9f12 --- /dev/null +++ b/prosoar/task/flarm_writer.py @@ -0,0 +1,23 @@ +import datetime + +from aerofiles.flarmcfg import Writer + + +def write_flarm_task(fp, task, taskname=''): + writer = Writer(fp) + + writer.write_waypoint(None, None, 'TAKEOFF') + + for i, turnpoint in enumerate(task): + if turnpoint.name == 'Free turnpoint': + name = '{0:0=2d} '.format(i + 1) + turnpoint.name + else: + name = turnpoint.name + + writer.write_waypoint( + latitude=float(turnpoint.lat), + longitude=float(turnpoint.lon), + description=name, + ) + + writer.write_waypoint(None, None, 'LANDING') diff --git a/prosoar/views/tasks.py b/prosoar/views/tasks.py index f076183..db6b432 100755 --- a/prosoar/views/tasks.py +++ b/prosoar/views/tasks.py @@ -10,6 +10,7 @@ from prosoar.task.json_reader import parse_json_task from prosoar.task.json_writer import write_json_task +from prosoar.task.flarm_writer import write_flarm_task from prosoar.task.seeyou_writer import write_seeyou_task from prosoar.task.xcsoar_reader import parse_xcsoar_task from prosoar.task.xcsoar_writer import write_xcsoar_task @@ -83,6 +84,10 @@ def download(uid, taskname, filetype, temptask=False): mimetype = 'application/seeyou' file_extension = 'cup' write_seeyou_task(io, task, taskname) + elif filetype == 'flarm': + mimetype = 'text/plain' + file_extension = 'txt' + write_flarm_task(io, task, taskname) io.seek(0) @@ -247,5 +252,10 @@ def save_temp(): 'url': base_url + '/seeyou', 'qrcode': base_url + '/seeyou/qr', }, + 'flarm': { + 'name': 'Flarm (flarmcfg.txt)', + 'url': base_url + '/flarm', + 'qrcode': base_url + '/flarm/qr', + }, } }) diff --git a/web_dev/images/software/flarm.png b/web_dev/images/software/flarm.png new file mode 100644 index 0000000000000000000000000000000000000000..f14f4b5b874e3b4fca9b985985c49bca82805087 GIT binary patch literal 2558 zcmVV(ehst%*8pq!sINpX z5PfvyXy7gV@=GCvKukEZ4fquJ74Y#vv9Lrz^wp8?(%M>|ntHCFwG~l+BF6PMYB997 z9as$94p;}r)DrnH`p|bOFv_~;E&#Q&|iLmHT{=D zt^Z3HSOwex^mSoX!h_z-$l<_NAVe&NdU7Rdb84o&v&-8m&=l zSEH8Q3yFmLVB;qu=iSkcVQc^{>5aj~QdU+rF_lV9$y^5lfq5Mr9lH+2*oTs0-jRM_ z1#V6R5CY?(OOTH|ff#a>YZLv-%cv!bDuA_V*C<$DAbWd zP->={e_PO+b^&V1Vrbj%-8vjb-nRmA%8y;E)!mEGpMDYoo&^HM8ePIkp^kh&y|6y0 zKi&qZ6zb_!q|Q4Bz41lw9_8i8#Y+((@?ikMV6eKg-5-2D--&kJ{rdImZ<^*MQp#&h)0{GR@ZiE8bgi}M zp`4+$-fum)LMKletCQpEvWhkLX01~x?MZu7r>0JE^h=Jb(`w_3T5J7{);iFW9i-EJ zI#Z;Smla^UFbv~*dq1DgcYLPK@Ar=alJ@$X5(DlXK76>}uG2Kl)9mdG!}u+*l=QYr z1G=oNY+R?^30vFe4a2x9N2Y;Q_4V~-Qp#zh4T{jC7ad!>D3XFw!LwUKQN5Yz2n;P$ht}Ez zOq(b{c5c`YT)kt*j)nR3D5ZW+`sByH19007oT8Mvm-PQ?XWEu6TUJ|^^#l;gsjH30 zwn#>EW|xo&DiZ+)*H zFs&y;UAQ@!Om5CCu~=+wp$dc$ao};&G{*;n!6WC)nG?`jmz9;3jR7{>nqFB|RTasj z>Np?@JWM+4^$g(lWDf#9l2SHwMhbgk?GgtFX70HV4E`Or#Imt6|GcLSiFdj?T=0%D>|q^zjGIAc6&!(X!>q<_5*N(l_3 z7RbN1$z~hyRj$x5jBQ2ez%j*dp#^)8@m zvE%dk)@ObTA$I1BKPaDKuh4ojFhOs8(Pv$7E~GrNX#)lz7cB+9ze{A@F(3AR?b=*S zI@>91YeR4Qw+Wn-&(K_?luNbN6LO1XS$W@QIXY%rmh~KPI(eMfiSudhq=<)SPtNrL z`$ctiwf(`&eaGg_z_~e60xRig4_SBJiEe2@J-y0Pff#i(@}@c6f{u2qC5zqL){TLR z3Wr?3za>bKj_fNVMvU+&rEao`zA{a7LMRj(6p2I*lTuz@s4gKyTY*h;XGGS~QA0z6 z{p6vj9Jre!uLK6F70c2q(L@~e@Pn|g#Z!rxI0-Sid$#FKucANL>TGD5i2893vHo}) zfO{(FJEEznX)xL8#H+lXOo2f=D+T(D?-Q{Z$X?f!Be3%^D6Y4Z={vijX^%NGP^-4Me5Wa zIvy0c;-L;vKkhfAH`5Lxkw{e{k?2ZJR8&+n@7uSp$3;eEWo2b77VFAh)YQ~8ZQs7V z>%esC)Tze0b?bhlwLS(&N-5us$K%@u4jfpqfB*ijC4V>^-rL;V9PQLm-rU^WwL#Bk zOCS)a?fj21O|v~3jdm^RL!r>XR4Ub#$%(~cpJ#sOjvt9czTUfcZ@brhW*j*kxJNC& zKdjcSf&+PS&XxT!H@xJUas$$b%XcqIU-*2OufGjOb_7qIH36FUX36B-1zJoxYYs5a zd+-uo7(fKLi#>b7YVDf*P6UX>P>(4@_MK UGH~XLS^xk507*qoM6N<$f_B>6y#N3J literal 0 HcmV?d00001 diff --git a/web_dev/images/software/flarm.svg b/web_dev/images/software/flarm.svg new file mode 100644 index 0000000..4e65a36 --- /dev/null +++ b/web_dev/images/software/flarm.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + Flarm + + + + + + + + From ac67f30df172bfc0c70c1806aaf3edc3e032fbf1 Mon Sep 17 00:00:00 2001 From: Fabian Bartschke Date: Sun, 17 Jun 2018 13:37:52 +0200 Subject: [PATCH 9/9] flarm_writer: remove unneeded import --- prosoar/task/flarm_writer.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/prosoar/task/flarm_writer.py b/prosoar/task/flarm_writer.py index 54f9f12..9cb7da7 100644 --- a/prosoar/task/flarm_writer.py +++ b/prosoar/task/flarm_writer.py @@ -1,5 +1,3 @@ -import datetime - from aerofiles.flarmcfg import Writer