diff --git a/.gitignore b/.gitignore index 0bc8854..b264155 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ sikweb/settings.py *.sqlite3 uwsgi.ini uwsgi.log -infoscreen/static/js/hsl.json members/logs/* .idea/ logs/ diff --git a/infoscreen/hsl_fetcher.py b/infoscreen/hsl_fetcher.py deleted file mode 100644 index 6a3835c..0000000 --- a/infoscreen/hsl_fetcher.py +++ /dev/null @@ -1,70 +0,0 @@ -"""File containing Infoscreen HSL data fetcher classes.""" - -import requests -import json -import logging -import os -import pytz - -from datetime import timedelta, datetime -from django.utils import timezone, dateparse -from django.utils.dateformat import format - -from django.conf import settings - - -with open(os.path.join(settings.BASE_DIR, 'infoscreen', 'hsl_stops.graphql')) as stops_file: - STOPS_QUERY = stops_file.read() - -with open(os.path.join(settings.BASE_DIR, 'infoscreen', 'hsl_stops_variables.json')) as vars_file: - STOPS_VARS = json.loads(vars_file.read()) - -API_URL = 'https://api.digitransit.fi/routing/v1/routers/hsl/index/graphql' -API_HEADERS = {'Content-Type': 'application/json'} - - -def fetch(): - """Fetch data from HSL API.""" - - query_vars = STOPS_VARS.copy() - query_vars['startTime_6'] = format(timezone.now(), 'U') - - post_data = json.dumps({ - 'operationName': 'NearestRoutesContainer', - 'query': STOPS_QUERY, - 'variables': query_vars, - }) - - resp = requests.post(API_URL, data=post_data, headers=API_HEADERS) - - data = resp.json() - - items = data['data']['viewer']['_nearest']['edges'] - places = map(lambda item: item['node']['place'], items) - - schedule = [] - for place in places: - route = place['pattern']['route']['shortName'] - stop_times = place['_stoptimes'] - for stop_time in stop_times: - timestamp = time_utc = stop_time['serviceDay'] + stop_time['realtimeArrival'] - headsign = stop_time['stopHeadsign'] - stop_name = stop_time['stop']['name'] - time_diff = (timestamp - timezone.now().timestamp()) / 60 # minutes - - if time_diff < settings.HSL_DEPARTURE_THRESHOLD: - continue - elif time_diff < settings.HSL_HURRY_THRESHOLD: - time = '{} min'.format(int(time_diff)) - else: - time = pytz.utc.localize(datetime.fromtimestamp(timestamp)).strftime('%H:%M') - - schedule.append({ - 'route': route, - 'headsign': headsign, - 'timestamp': time, - 'stop': stop_name, - 'utc': time_utc, - }) - - return schedule diff --git a/infoscreen/hsl_stops.graphql b/infoscreen/hsl_stops.graphql deleted file mode 100644 index 6111303..0000000 --- a/infoscreen/hsl_stops.graphql +++ /dev/null @@ -1,71 +0,0 @@ -query NearestRoutesContainer($lat_0: Float!, $lon_1: Float!, $maxDistance_2: Int!, $maxResults_3: Int!, $timeRange_7: Int!, $numberOfDepartures_8: Int!, $filterByModes_4: [Mode]!, $filterByPlaceTypes_5: [FilterPlaceType]!, $startTime_6: Long!) { - viewer { - ...F5 - } -} - -fragment F0 on DepartureRow { - _stoptimes4caEfh: stoptimes(startTime: $startTime_6, timeRange: $timeRange_7, numberOfDepartures: $numberOfDepartures_8) { - pickupType - serviceDay - realtimeDeparture - } - id -} - -fragment F1 on DepartureRow { - pattern { - route { - shortName - } - } - _stoptimes: stoptimes(startTime: $startTime_6, timeRange: $timeRange_7, numberOfDepartures: $numberOfDepartures_8) { - realtimeArrival - serviceDay - stopHeadsign - stop { - name - } - } -} - -fragment F2 on BikeRentalStation { - id -} - -fragment F3 on placeAtDistance { - distance - place { - id - __typename - ...F1 - ...F2 - } - id -} - -fragment F4 on placeAtDistanceConnection { - edges { - node { - distance - place { - id - __typename - ...F0 - } - id - ...F3 - } - cursor - } - pageInfo { - hasNextPage - hasPreviousPage - } -} - -fragment F5 on QueryType { - _nearest: nearest(lat: $lat_0, lon: $lon_1, maxDistance: $maxDistance_2, maxResults: $maxResults_3, first: $maxResults_3, filterByModes: $filterByModes_4, filterByPlaceTypes: $filterByPlaceTypes_5) { - ...F4 - } -} \ No newline at end of file diff --git a/infoscreen/hsl_stops_variables.json b/infoscreen/hsl_stops_variables.json deleted file mode 100644 index bcc8e18..0000000 --- a/infoscreen/hsl_stops_variables.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "lat_0": 60.190480099999995, - "lon_1": 24.8275665, - "maxDistance_2": 1000, - "maxResults_3": 50, - "numberOfDepartures_8": 2, - "timeRange_7": 7200, - "filterByModes_4": ["BUS"], - "filterByPlaceTypes_5": ["DEPARTURE_ROW"] -} diff --git a/infoscreen/management/commands/hsl.py b/infoscreen/management/commands/hsl.py deleted file mode 100644 index 5fb2061..0000000 --- a/infoscreen/management/commands/hsl.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.core.management.base import BaseCommand -from infoscreen.hsl_fetcher import HSLFetcher - - -class Command(BaseCommand): - help = 'Loads HSL timetables and save to json file.' - - def handle(self, *args, **options): - fetcher = HSLFetcher() - fetcher.fetch() diff --git a/infoscreen/migrations/0006_delete_hsldatamodel.py b/infoscreen/migrations/0006_delete_hsldatamodel.py index c660813..9214e52 100644 --- a/infoscreen/migrations/0006_delete_hsldatamodel.py +++ b/infoscreen/migrations/0006_delete_hsldatamodel.py @@ -15,4 +15,11 @@ class Migration(migrations.Migration): migrations.DeleteModel( name='HSLDataModel', ), + migrations.RemoveField( + model_name='hslinfoitem', + name='infoitem_ptr', + ), + migrations.DeleteModel( + name='HslInfoItem', + ), ] diff --git a/infoscreen/models.py b/infoscreen/models.py index 18d2b0a..e1479f8 100644 --- a/infoscreen/models.py +++ b/infoscreen/models.py @@ -254,21 +254,6 @@ class VideoInfoItem(InfoItem): return d -class HslInfoItem(InfoItem): - """Class for HSL Infoscreen item.""" - - display_name = _("HSL timetables") - - def get_template_url(self): - """Return HSL infoitem template url.""" - return "/static/infoscreen/html/hsl.html" - - @staticmethod - def get_create_template_url(): - """Call create HSL infoitem template url command.""" - return "/static/infoscreen/html/hsl_create.html" - - class ExternalImageInfoItem(InfoItem): """Class for External Image Infoscreen item.""" diff --git a/infoscreen/static/infoscreen/css/hsl.css b/infoscreen/static/infoscreen/css/hsl.css deleted file mode 100644 index 8753ab1..0000000 --- a/infoscreen/static/infoscreen/css/hsl.css +++ /dev/null @@ -1,74 +0,0 @@ -table { - font-size: 4vh; - font-family: 'Droid Sans Mono', monospace; -} -.red { - color: red; - -webkit-animation-name: blinker; - -webkit-animation-duration: 2s; - -webkit-animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - - -moz-animation-name: blinker; - -moz-animation-duration: 2s; - -moz-animation-timing-function: linear; - -moz-animation-iteration-count: infinite; - - animation-name: blinker; - animation-duration: 2s; - animation-timing-function: linear; - animation-iteration-count: infinite; -} -.black { - color: black; -} -@-moz-keyframes blinker { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} - -@-webkit-keyframes blinker { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} - -@keyframes blinker { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} -thead{ - background: #f0f0f0; -} -.header-row{ - background: #f0f0f0; - font-size: 7vh; - font-family: 'Droid Sans Mono', monospace; - text-align: center; -} - -.container { - width: 100vw; - padding: 0 0 0 0; -} - -.container .table { - margin-left: 0; - margin-right: 0; -} - -.repeat-item.ng-leave { - -} - -.repeat-item.ng-leave.ng-leave-active { - opacity: 0; - font-size: 0vh; -} - -.repeat-item.ng-leave{ - opacity: 1; - font-size: 5vh; -} diff --git a/infoscreen/static/infoscreen/html/coffee.html b/infoscreen/static/infoscreen/html/coffee.html deleted file mode 100644 index 71048e5..0000000 --- a/infoscreen/static/infoscreen/html/coffee.html +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/infoscreen/static/infoscreen/html/hsl.html b/infoscreen/static/infoscreen/html/hsl.html deleted file mode 100644 index c804428..0000000 --- a/infoscreen/static/infoscreen/html/hsl.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -
-
-

{{clock | date:'HH:mm'}}

-
HSL-Aikataulut
-
-
-

- {{error}} -

- - - - - - - - - - - - - - - -
- Aika - - Linja - - Pysäkki -
- {{x.timestamp}} - - {{x.route}}, {{x.headsign}} - - {{x.stop}} -
-
diff --git a/infoscreen/static/infoscreen/html/hsl_create.html b/infoscreen/static/infoscreen/html/hsl_create.html deleted file mode 100644 index 0293935..0000000 --- a/infoscreen/static/infoscreen/html/hsl_create.html +++ /dev/null @@ -1,10 +0,0 @@ -
-
- Create new item to show hsl ttimetables. Name is used only as identifier -
-
- - -
- -
diff --git a/infoscreen/static/infoscreen/html/test2.html b/infoscreen/static/infoscreen/html/test2.html deleted file mode 100644 index 95db769..0000000 --- a/infoscreen/static/infoscreen/html/test2.html +++ /dev/null @@ -1 +0,0 @@ -

testi2

diff --git a/infoscreen/static/infoscreen/html/test3.html b/infoscreen/static/infoscreen/html/test3.html deleted file mode 100644 index eecc1a2..0000000 --- a/infoscreen/static/infoscreen/html/test3.html +++ /dev/null @@ -1 +0,0 @@ -

testi3

diff --git a/infoscreen/static/infoscreen/img/asw.png b/infoscreen/static/infoscreen/img/asw.png deleted file mode 100644 index 931b313..0000000 Binary files a/infoscreen/static/infoscreen/img/asw.png and /dev/null differ diff --git a/infoscreen/static/infoscreen/img/fujitsu.png b/infoscreen/static/infoscreen/img/fujitsu.png deleted file mode 100644 index 825db43..0000000 Binary files a/infoscreen/static/infoscreen/img/fujitsu.png and /dev/null differ diff --git a/infoscreen/static/infoscreen/img/kaukkarit.jpg b/infoscreen/static/infoscreen/img/kaukkarit.jpg deleted file mode 100644 index 56bc7ff..0000000 Binary files a/infoscreen/static/infoscreen/img/kaukkarit.jpg and /dev/null differ diff --git a/infoscreen/static/infoscreen/img/otaajot16fb.png b/infoscreen/static/infoscreen/img/otaajot16fb.png deleted file mode 100644 index 9c1424e..0000000 Binary files a/infoscreen/static/infoscreen/img/otaajot16fb.png and /dev/null differ diff --git a/infoscreen/static/infoscreen/img/otaolutbanner.jpg b/infoscreen/static/infoscreen/img/otaolutbanner.jpg deleted file mode 100644 index a3dfbcc..0000000 Binary files a/infoscreen/static/infoscreen/img/otaolutbanner.jpg and /dev/null differ diff --git a/infoscreen/static/infoscreen/img/teekkaribileet.jpg b/infoscreen/static/infoscreen/img/teekkaribileet.jpg deleted file mode 100644 index 9d0c472..0000000 Binary files a/infoscreen/static/infoscreen/img/teekkaribileet.jpg and /dev/null differ diff --git a/infoscreen/static/infoscreen/js/infoadmin_controllers.js b/infoscreen/static/infoscreen/js/infoadmin_controllers.js index c9fa019..e6ded8b 100644 --- a/infoscreen/static/infoscreen/js/infoadmin_controllers.js +++ b/infoscreen/static/infoscreen/js/infoadmin_controllers.js @@ -183,7 +183,6 @@ var simple_controllers = [ "abbitem", "sossoitem", "eventitem", - "hslitem", "websiteitem", "apyitem", ]; diff --git a/infoscreen/static/infoscreen/js/infoscreen_controllers.js b/infoscreen/static/infoscreen/js/infoscreen_controllers.js index 739fcfd..0f37da9 100644 --- a/infoscreen/static/infoscreen/js/infoscreen_controllers.js +++ b/infoscreen/static/infoscreen/js/infoscreen_controllers.js @@ -119,35 +119,3 @@ app.filter('unixTimeToDifference', function() { return res; } }) - -app.controller('timetableCtrl', - function($scope, $http, $interval) { - function load() { - $http.get('/infoscreen/hsl_data') - .then(function(data, status, headers, config) { //eslint-disable-line no-unused-vars - $scope.stoptimes = data.data; - $scope.error = data.data.error || null; - }); - $http.get('/infoscreen/hsl_data/settings') - .then(function(data, status, headers, config) { //eslint-disable-line no-unused-vars - $scope.departureThreshold = data.data['departure_threshold']; - $scope.hurryThreshold = data.data['hurry_threshold']; - }); - } - - function update_clock() { - $scope.clock = Date.now(); - } - - $scope.$on('$destroy', function() { - $interval.cancel(load_interval); - $interval.cancel(clock_interval); - }); - - var load_interval = $interval(load, 5000); - var clock_interval = $interval(update_clock, 1000); - - update_clock(); - load(); - } -); diff --git a/infoscreen/urls.py b/infoscreen/urls.py index 8236b00..d366950 100644 --- a/infoscreen/urls.py +++ b/infoscreen/urls.py @@ -18,14 +18,11 @@ from infoscreen.views import create_image_item from infoscreen.views import create_video_item from infoscreen.views import createABBItem from infoscreen.views import createSossoItem -from infoscreen.views import createHslItem from infoscreen.views import createEventItem from infoscreen.views import createExternalWebsiteItem from infoscreen.views import create_rotation from infoscreen.views import delete_rotation -from infoscreen.views import CurrentHSLView from infoscreen.views import createApyItem -from infoscreen.views import hsl_timetable_settings from infoscreen.views import get_apy_json urlpatterns = [ @@ -45,13 +42,10 @@ urlpatterns = [ url(r'^create_abbitem$', createABBItem), url(r'^create_sossoitem$', createSossoItem), url(r'^create_eventitem$', createEventItem), - url(r'^create_hslitem$', createHslItem), url(r'^create_apyitem$', createApyItem), url(r'^create_websiteitem$', createExternalWebsiteItem), url(r'^create_rotation$', create_rotation), url(r'^delete_rotation/(?P\d+)$', delete_rotation), - url(r'^hsl_data$', CurrentHSLView), - url(r'^hsl_data/settings$', hsl_timetable_settings), url(r'^apyjson', get_apy_json), ] diff --git a/infoscreen/views/admin_views.py b/infoscreen/views/admin_views.py index 4163dc3..550a855 100644 --- a/infoscreen/views/admin_views.py +++ b/infoscreen/views/admin_views.py @@ -17,7 +17,7 @@ import requests from infoscreen.models import ( Rotation, InfoItem, InfoInstance, ABBInfoItem, ExternalImageInfoItem, - ImageInfoItem, SossoInfoItem, HslInfoItem, EventInfoItem, + ImageInfoItem, SossoInfoItem, EventInfoItem, ExternalWebsiteInfoItem, ImageUploadForm, ApyInfoItem, VideoInfoItem) @@ -179,7 +179,6 @@ createInstance = create_item_generator(InfoInstance) deleteInstance = delete_item_generator(InfoInstance) createABBItem = create_item_generator(ABBInfoItem) createSossoItem = create_item_generator(SossoInfoItem) -createHslItem = create_item_generator(HslInfoItem) createExternalImageInfoItem = create_item_generator(ExternalImageInfoItem) createExternalWebsiteItem = create_item_generator(ExternalWebsiteInfoItem) createEventItem = create_item_generator(EventInfoItem) diff --git a/infoscreen/views/public_views.py b/infoscreen/views/public_views.py index 9a7ac85..3dcfa58 100644 --- a/infoscreen/views/public_views.py +++ b/infoscreen/views/public_views.py @@ -5,7 +5,6 @@ from django.conf import settings from django.db import DatabaseError from infoscreen.models import Rotation, InfoItem, InfoInstance -from infoscreen.hsl_fetcher import fetch as hsl_fetch import json import logging @@ -79,25 +78,3 @@ def info_items(request, *args, **kwargs): items.append(i.get_dict()) return JsonResponse(items, safe=False) - - -@require_http_methods(["GET"]) -def hsl_timetable_settings(request, *args, **kwargs): - """Set HSL timetable settings.""" - d = {"departure_threshold": settings.HSL_DEPARTURE_THRESHOLD, - "hurry_threshold": settings.HSL_HURRY_THRESHOLD} - - return JsonResponse(d, status=200) - - -@require_http_methods(["GET"]) -def CurrentHSLView(request, *args, **kwargs): - """Get HSL data and return it.""" - try: - api_resp = hsl_fetch() - except Exception as ex: - logging.exception('Failed to fetch HSL timetables.') - error = {'error': 'Aikataulujen haku epäonnistui.'} - return JsonResponse(error, status=200) - - return JsonResponse(api_resp, status=200, safe=False) diff --git a/sikweb/settings-sample.py b/sikweb/settings-sample.py index e233517..5789c22 100644 --- a/sikweb/settings-sample.py +++ b/sikweb/settings-sample.py @@ -21,11 +21,6 @@ DEBUG = True # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp(' -# HSL API settings -HSL_USERHASH = 'YOUR HSL USERHASH HERE' -HSL_DEPARTURE_THRESHOLD = 8 # minutes -HSL_HURRY_THRESHOLD = 13 # minutes - # MQTT settings MQTT_SETTINGS = { 'HOST': 'mqtt.sik.party',