diff --git a/.gitignore b/.gitignore
index 47003c7..b606e14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,13 +2,11 @@
sikweb/settings.py
*~
*.pyc
+*.sqlite3
uwsgi.ini
uwsgi.log
infoscreen/static/js/hsl.json
members/logs/*
-members/migrations/*
-infoscreen/migrations/*
-webapp/migrations/*
.idea/
logs/
/static/
diff --git a/infoscreen/hsl_fetcher.py b/infoscreen/hsl_fetcher.py
index 67a2333..2f80c45 100644
--- a/infoscreen/hsl_fetcher.py
+++ b/infoscreen/hsl_fetcher.py
@@ -18,7 +18,7 @@ class HSLFetcher:
def fetch(self):
location_coords = (2545565, 6675319)
src = urllib.request.urlopen(
- "http://api.reittiopas.fi/hsl/prod/?userhash={}&request=stops_area¢er_coordinate={},{}"
+ "https://api.reittiopas.fi/hsl/prod/?userhash={}&request=stops_area¢er_coordinate={},{}"
.format(settings.HSL_USERHASH, location_coords[0], location_coords[1]))\
.read().decode("utf-8")
@@ -30,7 +30,7 @@ class HSLFetcher:
time="{0:02d}{0:02d}".format(time.hour,time.minute)
for element in data:
src = urllib.request.urlopen(
- "http://api.reittiopas.fi/hsl/prod/?userhash={}&request=stop&code={}&dep_limit=20&time={}"
+ "https://api.reittiopas.fi/hsl/prod/?userhash={}&request=stop&code={}&dep_limit=20&time={}"
.format(settings.HSL_USERHASH, element['code'],time)).read().decode("utf-8")
parsed = json.loads(src)[0]
diff --git a/infoscreen/migrations/0001_initial.py b/infoscreen/migrations/0001_initial.py
new file mode 100644
index 0000000..92b5e32
--- /dev/null
+++ b/infoscreen/migrations/0001_initial.py
@@ -0,0 +1,91 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-01-25 16:59
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='HSLDataModel',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('data', models.TextField(default='', editable=False)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='InfoInstance',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('duration', models.FloatField(default=15.0)),
+ ('item_id', models.PositiveIntegerField()),
+ ('item_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='InfoItem',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255)),
+ ('expire_date', models.DateTimeField(blank=True, null=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Rotation',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='ABBInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='ExternalImageInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ('url', models.TextField()),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='HslInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='ImageInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ('img', models.ImageField(upload_to='infoimages/')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='SossoInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.AddField(
+ model_name='infoinstance',
+ name='rotation',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='instances', to='infoscreen.Rotation'),
+ ),
+ ]
diff --git a/infoscreen/migrations/0002_coffeeinfoitem.py b/infoscreen/migrations/0002_coffeeinfoitem.py
new file mode 100644
index 0000000..254b344
--- /dev/null
+++ b/infoscreen/migrations/0002_coffeeinfoitem.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-02-06 10:35
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('infoscreen', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='CoffeeInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ ]
diff --git a/infoscreen/migrations/0003_auto_20170329_1857.py b/infoscreen/migrations/0003_auto_20170329_1857.py
new file mode 100644
index 0000000..b6cb775
--- /dev/null
+++ b/infoscreen/migrations/0003_auto_20170329_1857.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-03-29 15:57
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('infoscreen', '0002_coffeeinfoitem'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ApyInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='EventInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.CreateModel(
+ name='ExternalWebsiteInfoItem',
+ fields=[
+ ('infoitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='infoscreen.InfoItem')),
+ ('url', models.TextField()),
+ ],
+ bases=('infoscreen.infoitem',),
+ ),
+ migrations.DeleteModel(
+ name='CoffeeInfoItem',
+ ),
+ ]
diff --git a/infoscreen/migrations/__init__.py b/infoscreen/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/infoscreen/models.py b/infoscreen/models.py
index 8927c6d..04859f6 100644
--- a/infoscreen/models.py
+++ b/infoscreen/models.py
@@ -80,6 +80,16 @@ class ABBInfoItem(InfoItem):
def get_create_template_url():
return "/static/html/abb_create.html"
+class ApyInfoItem(InfoItem):
+ display_name = _("APY Item")
+ def get_template_url(self):
+ return "/static/html/apy.html"
+
+ @staticmethod
+ def get_create_template_url():
+ return "/static/html/apy_create.html"
+
+
class ExternalWebsiteInfoItem(InfoItem):
display_name = _("External website")
@@ -136,6 +146,17 @@ class SossoInfoItem(InfoItem):
def get_create_template_url():
return "/static/html/sosso_create.html"
+class EventInfoItem(InfoItem):
+ display_name = _("Events")
+
+ def get_template_url(self):
+ return "/static/html/events.html"
+
+ @staticmethod
+ def get_create_template_url():
+ return "/static/html/events_create.html"
+
+
class ImageInfoItem(InfoItem):
display_name = _("Image")
diff --git a/infoscreen/static/css/apy.css b/infoscreen/static/css/apy.css
new file mode 100644
index 0000000..fce7b61
--- /dev/null
+++ b/infoscreen/static/css/apy.css
@@ -0,0 +1,38 @@
+body {
+ background-image: url(https://diilikone.apy.fi/static/background.jpg);
+ background-size: cover;
+ width: 100%;
+ height: 100%;
+ margin: 0px;
+}
+
+#footer {
+ height: 140px;
+}
+.event {
+ font-size: 100px;
+ font-weight: bold;
+ margin-left: 20px;
+}
+.event-col{
+ padding-top:1vh;
+ padding-bottom:1vh;
+}
+
+.header-row{
+ margin: 30px;
+ margin-left: 20px;
+ font-size: 130px;
+ padding-bottom:20px;
+ color:#24a05f;
+ font-weight: bold;
+}
+
+.container {
+ width: 95%;
+ height: 95%;
+ margin: 60px;
+ color: #24a5d4;
+ background-color: black;
+ opacity: 0.88;
+}
diff --git a/infoscreen/static/css/events.css b/infoscreen/static/css/events.css
new file mode 100644
index 0000000..6dc51c7
--- /dev/null
+++ b/infoscreen/static/css/events.css
@@ -0,0 +1,42 @@
+.event {
+ font-size: 5vh;
+ font-family: 'Droid Sans Mono', monospace;
+}
+.event-col{
+ padding-top:1vh;
+ padding-bottom:1vh;
+}.event:nth-child(odd){
+ background-color: #d4e2fd;
+}
+
+.black {
+ color: black;
+}
+.header-row{
+ background: #d4e2fd;
+ font-size: 7vh;
+ font-family: 'Droid Sans Mono', monospace;
+ padding-bottom:20px;
+}
+
+.container {
+ width: 100vw;
+ padding: 0 0 0 0;
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+.repeat-item.ng-leave {
+ -webkit-transition:0.5s linear all;
+ transition:0.5s linear all;
+}
+
+.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/html/apy.html b/infoscreen/static/html/apy.html
new file mode 100644
index 0000000..bdc1b46
--- /dev/null
+++ b/infoscreen/static/html/apy.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
{{item.name}}
+
{{item.size}}
+
+
+
+
+
diff --git a/infoscreen/static/html/apy_create.html b/infoscreen/static/html/apy_create.html
new file mode 100644
index 0000000..1b0b2ee
--- /dev/null
+++ b/infoscreen/static/html/apy_create.html
@@ -0,0 +1,10 @@
+
+
+ create apyitem
+
+
+ Name:
+
+
+
+
diff --git a/infoscreen/static/html/coffee.html b/infoscreen/static/html/coffee.html
new file mode 100644
index 0000000..6568676
--- /dev/null
+++ b/infoscreen/static/html/coffee.html
@@ -0,0 +1,4 @@
+
+
diff --git a/infoscreen/static/html/events.html b/infoscreen/static/html/events.html
new file mode 100644
index 0000000..30f39c6
--- /dev/null
+++ b/infoscreen/static/html/events.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
{{event.name}}
+
{{event.event_start}}
+
{{event.location}}
+
+
diff --git a/infoscreen/static/html/events_create.html b/infoscreen/static/html/events_create.html
new file mode 100644
index 0000000..d534dcb
--- /dev/null
+++ b/infoscreen/static/html/events_create.html
@@ -0,0 +1,10 @@
+
+
+ Create new item to show events Name is used only as identifier
+
+
+ Name:
+
+
+
+
diff --git a/infoscreen/static/html/generic_external_image_create.html b/infoscreen/static/html/generic_external_image_create.html
index eadb108..a20359c 100644
--- a/infoscreen/static/html/generic_external_image_create.html
+++ b/infoscreen/static/html/generic_external_image_create.html
@@ -1,6 +1,6 @@
- Create new image. Enter name and full url for any image available in internet (eg. http://i.imgur.com/XXSSqDG.gif)
+ Create new image. Enter name and full url for any image available in internet (eg. https://i.imgur.com/XXSSqDG.gif)
Name:
diff --git a/infoscreen/static/js/infoadmin_controllers.js b/infoscreen/static/js/infoadmin_controllers.js
index 9a49e0d..d6b3515 100644
--- a/infoscreen/static/js/infoadmin_controllers.js
+++ b/infoscreen/static/js/infoadmin_controllers.js
@@ -141,6 +141,13 @@ app.controller('infoadmin_sossoitem_create', function($scope, $http,ItemList){
$http.post("/infoscreen/create_sossoitem", $scope.item).then(ItemList.loadItems)
}
});
+app.controller('infoadmin_eventitem_create', function($scope, $http,ItemList){
+ $scope.item = {}
+ $scope.send = function(){
+ $http.post("/infoscreen/create_eventitem", $scope.item).then(ItemList.loadItems)
+ }
+});
+
app.controller('infoadmin_hslitem_create', function($scope, $http,ItemList){
$scope.item = {}
$scope.send = function(){
@@ -174,3 +181,10 @@ app.controller('infoadmin_image_create', ['$scope', 'Upload', '$timeout',"ItemLi
});
}
}]);
+
+app.controller('infoadmin_apyitem_create', function($scope, $http,ItemList){
+ $scope.item = {}
+ $scope.send = function(){
+ $http.post("/infoscreen/create_apyitem", $scope.item).then(ItemList.loadItems)
+ }
+});
diff --git a/infoscreen/static/js/infoscreen_controllers.js b/infoscreen/static/js/infoscreen_controllers.js
index a499fda..7af5069 100644
--- a/infoscreen/static/js/infoscreen_controllers.js
+++ b/infoscreen/static/js/infoscreen_controllers.js
@@ -48,7 +48,7 @@ app.filter('trusted_url', ['$sce', function ($sce) {
app.controller('ABBController', function($scope, $http){
$scope.jobs = [];
var min_date = moment().subtract(30,'days').format("YYYY-MM-DD%20HH:mm:ss");
- var url = "http://sahkoinsinoorikilta.fi/api/news.php";
+ var url = "https://sahkoinsinoorikilta.fi/api/news.php";
var params = "?type=11&lang=fi&title_search=ABB&min_date="+min_date
$http.get(url+params).then(function(response){
$scope.jobs = _.filter(response.data, function(job){
@@ -68,12 +68,41 @@ app.controller('ABBController', function($scope, $http){
app.controller('SossoController', function($scope, $http) {
$scope.data = [];
- $http.get("http://sosso.fi/api/get_recent_posts/?count=" + 3 ).then(function(response)
+ $http.get("https://sosso.fi/api/get_recent_posts/?count=" + 3 ).then(function(response)
{
$scope.data = response.data;
})
});
+app.controller('ApyController', function($scope, $http) {
+ $scope.items = [];
+ $http.get("/infoscreen/apyjson").then(function(response)
+ {
+ $scope.items = response.data.data
+ })
+});
+
+app.controller('EventController', function($scope, $http) {
+ $scope.data = [];
+ $http.get("https://sik.ayy.fi/api/events.php?limit=10").then(function(response)
+ {
+ $scope.events = response.data;
+ $scope.events = _.each($scope.events, function(ev){
+ var time = moment(ev.event_start);
+ ev.event_start = time;
+ ev.event_start = time.format("ddd DD.MM.");
+ // lets not trust locale
+ ev.event_start = ev.event_start.replace("Mon", "Ma");
+ ev.event_start = ev.event_start.replace("Tue", "Ti");
+ ev.event_start = ev.event_start.replace("Wed", "Ke");
+ ev.event_start = ev.event_start.replace("Thu", "To");
+ ev.event_start = ev.event_start.replace("Fri", "Pe");
+ ev.event_start = ev.event_start.replace("Sat", "La");
+ ev.event_start = ev.event_start.replace("Sun", "Su");
+ });
+ })
+});
+
app.controller('timetableCtrl',
function($scope, $http, $interval) {
function load(){
diff --git a/infoscreen/views.py b/infoscreen/views.py
index 6f0ab36..63dd084 100644
--- a/infoscreen/views.py
+++ b/infoscreen/views.py
@@ -7,14 +7,17 @@ from django.contrib.auth.decorators import permission_required
from infoscreen.models import Rotation, InfoItem, InfoInstance
from infoscreen.models import ABBInfoItem, ExternalImageInfoItem, ImageInfoItem, SossoInfoItem, HslInfoItem
+from infoscreen.models import EventInfoItem
from infoscreen.models import ExternalWebsiteInfoItem
from infoscreen.models import ImageUploadForm
from infoscreen.models import HSLDataModel
+from infoscreen.models import ApyInfoItem
from infoscreen.hsl_fetcher import HSLFetcher
import sikweb.settings as settings
import json
import logging
import threading
+import requests
def index(request, idx, *args, **kwargs):
@@ -34,6 +37,9 @@ def default(request,*args,**kwargs):
return index(request,first ,*args, **kwargs)
+def get_apy_json(request):
+ return HttpResponse(requests.get("https://api-diilikone.apy.fi/deals/top-groups").text)
+
@require_http_methods(["GET"])
def rotation(request, idx, *args, **kwargs):
try:
@@ -59,7 +65,7 @@ def create_item_generator(model):
model.create_from_dict(data)
return HttpResponse('{"status":"success"}')
except RuntimeError as e:
- return HttpResponseBadRequest('{"status":"failure","error":"{}"}'.format(str(e)))
+ return HttpResponseBadRequest(json.dumps({"status":"failure", "error":str(e)}))
return create_item
@@ -215,3 +221,5 @@ 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)
+createApyItem = create_item_generator(ApyInfoItem)
diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo
index 5e957e9..3bb20fb 100644
Binary files a/locale/en/LC_MESSAGES/django.mo and b/locale/en/LC_MESSAGES/django.mo differ
diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po
index e8ff6e1..0537402 100644
--- a/locale/en/LC_MESSAGES/django.po
+++ b/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-22 22:36+0200\n"
+"POT-Creation-Date: 2017-03-29 16:19+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME
\n"
"Language-Team: LANGUAGE \n"
@@ -17,125 +17,135 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: infoscreen/models.py:74
+#: infoscreen/models.py:75
msgid "ABB jobs"
msgstr "ABB jobs"
-#: infoscreen/models.py:83
-msgid "Coffee display"
-msgstr "Coffee display"
+#: infoscreen/models.py:85
+#, fuzzy
+#| msgid "External image"
+msgid "External website"
+msgstr "External image"
-#: infoscreen/models.py:92
+#: infoscreen/models.py:131
msgid "Sössö articles"
msgstr "Sössö articles"
-#: infoscreen/models.py:102
-msgid "Image upload"
-msgstr "Image upload"
+#: infoscreen/models.py:140
+msgid "Events"
+msgstr ""
-#: infoscreen/models.py:120
+#: infoscreen/models.py:152
+msgid "Image"
+msgstr ""
+
+#: infoscreen/models.py:170
msgid "HSL timetables"
msgstr "HSL timetables"
-#: infoscreen/models.py:130
+#: infoscreen/models.py:180
msgid "External image"
msgstr "External image"
-#: infoscreen/templates/infoscreen_admin.html:22
+#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60
msgid "Log out"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:29
+#: infoscreen/templates/infoscreen_admin.html:30
msgid "Infoscreen Admin Pane"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:34
+#: infoscreen/templates/infoscreen_admin.html:35
msgid "Info items"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:35
+#: infoscreen/templates/infoscreen_admin.html:36
msgid "Infoitems available for rotations"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:38
+#: infoscreen/templates/infoscreen_admin.html:39
msgid "Item"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:39
-msgid "Set duration"
-msgstr ""
-
#: infoscreen/templates/infoscreen_admin.html:40
-msgid "Add to rotation"
+msgid "Type"
msgstr ""
#: infoscreen/templates/infoscreen_admin.html:41
-#: infoscreen/templates/infoscreen_admin.html:47
-#: infoscreen/templates/infoscreen_admin.html:74
-#: infoscreen/templates/infoscreen_admin.html:81
-#: infoscreen/templates/infoscreen_admin.html:98
-#: infoscreen/templates/infoscreen_admin.html:102
+msgid "Set duration"
+msgstr ""
+
+#: infoscreen/templates/infoscreen_admin.html:42
+msgid "Add to rotation"
+msgstr ""
+
+#: infoscreen/templates/infoscreen_admin.html:43
+#: infoscreen/templates/infoscreen_admin.html:50
+#: infoscreen/templates/infoscreen_admin.html:77
+#: infoscreen/templates/infoscreen_admin.html:84
+#: infoscreen/templates/infoscreen_admin.html:101
+#: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63
msgid "Delete"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:46
+#: infoscreen/templates/infoscreen_admin.html:49
msgid "Add"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:50
+#: infoscreen/templates/infoscreen_admin.html:53
msgid "Create new item"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:53
+#: infoscreen/templates/infoscreen_admin.html:56
msgid "Item type"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:64
+#: infoscreen/templates/infoscreen_admin.html:67
msgid "Rotations"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:66
+#: infoscreen/templates/infoscreen_admin.html:69
msgid "Select rotation to edit"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:70
-#: infoscreen/templates/infoscreen_admin.html:92
+#: infoscreen/templates/infoscreen_admin.html:73
+#: infoscreen/templates/infoscreen_admin.html:95
msgid "Rotation"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:71
+#: infoscreen/templates/infoscreen_admin.html:74
msgid "id"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:72
-#: infoscreen/templates/infoscreen_admin.html:79
+#: infoscreen/templates/infoscreen_admin.html:75
+#: infoscreen/templates/infoscreen_admin.html:82
msgid "Select"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:73
-#: infoscreen/templates/infoscreen_admin.html:80
+#: infoscreen/templates/infoscreen_admin.html:76
+#: infoscreen/templates/infoscreen_admin.html:83
msgid "Preview"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:84
+#: infoscreen/templates/infoscreen_admin.html:87
msgid "Name"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:85
+#: infoscreen/templates/infoscreen_admin.html:88
msgid "Create new"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:93
+#: infoscreen/templates/infoscreen_admin.html:96
msgid "Instances in currently selected rotation"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:96
+#: infoscreen/templates/infoscreen_admin.html:99
msgid "Instance"
msgstr ""
-#: infoscreen/templates/infoscreen_admin.html:97
+#: infoscreen/templates/infoscreen_admin.html:100
msgid "Duration"
msgstr ""
@@ -243,11 +253,13 @@ msgstr ""
msgid "Member register of SIK ry"
msgstr ""
-#: sikweb/settings-sample.py:162 sikweb/settings.py:161
+#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170
+#: sikweb/settings.py:170
msgid "English"
msgstr ""
-#: sikweb/settings-sample.py:163 sikweb/settings.py:162
+#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
+#: sikweb/settings.py:171
msgid "Finnish"
msgstr ""
@@ -286,3 +298,9 @@ msgstr ""
#: webapp/templates/navigation.html:32
msgid "Contact"
msgstr ""
+
+#~ msgid "Coffee display"
+#~ msgstr "Coffee display"
+
+#~ msgid "Image upload"
+#~ msgstr "Image upload"
diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo
index ae1fa52..bbe46bf 100644
Binary files a/locale/fi/LC_MESSAGES/django.mo and b/locale/fi/LC_MESSAGES/django.mo differ
diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po
index 5f31d7b..ba4f808 100644
--- a/locale/fi/LC_MESSAGES/django.po
+++ b/locale/fi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-22 22:36+0200\n"
+"POT-Creation-Date: 2017-03-29 16:19+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,125 +18,133 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: infoscreen/models.py:74
+#: infoscreen/models.py:75
msgid "ABB jobs"
msgstr "ABB-työpaikat"
-#: infoscreen/models.py:83
-msgid "Coffee display"
-msgstr "Kahvinäyttö"
+#: infoscreen/models.py:85
+msgid "External website"
+msgstr "Ulkoinen verkkosivu"
-#: infoscreen/models.py:92
+#: infoscreen/models.py:131
msgid "Sössö articles"
msgstr "Sössön artikkelit"
-#: infoscreen/models.py:102
-msgid "Image upload"
-msgstr "Kuvan lataus"
+#: infoscreen/models.py:140
+msgid "Events"
+msgstr "Tapahtumat"
-#: infoscreen/models.py:120
+#: infoscreen/models.py:152
+msgid "Image"
+msgstr "Kuva"
+
+#: infoscreen/models.py:170
msgid "HSL timetables"
msgstr "HSL-aikataulut"
-#: infoscreen/models.py:130
+#: infoscreen/models.py:180
msgid "External image"
msgstr "Ulkoinen kuva"
-#: infoscreen/templates/infoscreen_admin.html:22
+#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60
msgid "Log out"
msgstr "Kirjaudu ulos"
-#: infoscreen/templates/infoscreen_admin.html:29
+#: infoscreen/templates/infoscreen_admin.html:30
msgid "Infoscreen Admin Pane"
msgstr "Infonäyttöjen hallintapaneeli"
-#: infoscreen/templates/infoscreen_admin.html:34
+#: infoscreen/templates/infoscreen_admin.html:35
msgid "Info items"
msgstr "Diat"
-#: infoscreen/templates/infoscreen_admin.html:35
+#: infoscreen/templates/infoscreen_admin.html:36
msgid "Infoitems available for rotations"
msgstr "Rotaatioon lisättävät diat"
-#: infoscreen/templates/infoscreen_admin.html:38
+#: infoscreen/templates/infoscreen_admin.html:39
msgid "Item"
msgstr "Dia"
-#: infoscreen/templates/infoscreen_admin.html:39
+#: infoscreen/templates/infoscreen_admin.html:40
+msgid "Type"
+msgstr "Tyyppi"
+
+#: infoscreen/templates/infoscreen_admin.html:41
msgid "Set duration"
msgstr "Aseta kesto"
-#: infoscreen/templates/infoscreen_admin.html:40
+#: infoscreen/templates/infoscreen_admin.html:42
msgid "Add to rotation"
msgstr "Lisää rotaatioon"
-#: infoscreen/templates/infoscreen_admin.html:41
-#: infoscreen/templates/infoscreen_admin.html:47
-#: infoscreen/templates/infoscreen_admin.html:74
-#: infoscreen/templates/infoscreen_admin.html:81
-#: infoscreen/templates/infoscreen_admin.html:98
-#: infoscreen/templates/infoscreen_admin.html:102
+#: infoscreen/templates/infoscreen_admin.html:43
+#: infoscreen/templates/infoscreen_admin.html:50
+#: infoscreen/templates/infoscreen_admin.html:77
+#: infoscreen/templates/infoscreen_admin.html:84
+#: infoscreen/templates/infoscreen_admin.html:101
+#: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63
msgid "Delete"
msgstr "Poista"
-#: infoscreen/templates/infoscreen_admin.html:46
+#: infoscreen/templates/infoscreen_admin.html:49
msgid "Add"
msgstr "Lisää"
-#: infoscreen/templates/infoscreen_admin.html:50
+#: infoscreen/templates/infoscreen_admin.html:53
msgid "Create new item"
msgstr "Luo uusi dia"
-#: infoscreen/templates/infoscreen_admin.html:53
+#: infoscreen/templates/infoscreen_admin.html:56
msgid "Item type"
msgstr "Diatyyppi"
-#: infoscreen/templates/infoscreen_admin.html:64
+#: infoscreen/templates/infoscreen_admin.html:67
msgid "Rotations"
msgstr "Rotaatiot"
-#: infoscreen/templates/infoscreen_admin.html:66
+#: infoscreen/templates/infoscreen_admin.html:69
msgid "Select rotation to edit"
msgstr "Valitse muokattava rotaatio"
-#: infoscreen/templates/infoscreen_admin.html:70
-#: infoscreen/templates/infoscreen_admin.html:92
+#: infoscreen/templates/infoscreen_admin.html:73
+#: infoscreen/templates/infoscreen_admin.html:95
msgid "Rotation"
msgstr "Rotaatio"
-#: infoscreen/templates/infoscreen_admin.html:71
+#: infoscreen/templates/infoscreen_admin.html:74
msgid "id"
msgstr "id"
-#: infoscreen/templates/infoscreen_admin.html:72
-#: infoscreen/templates/infoscreen_admin.html:79
+#: infoscreen/templates/infoscreen_admin.html:75
+#: infoscreen/templates/infoscreen_admin.html:82
msgid "Select"
msgstr "Valitse"
-#: infoscreen/templates/infoscreen_admin.html:73
-#: infoscreen/templates/infoscreen_admin.html:80
+#: infoscreen/templates/infoscreen_admin.html:76
+#: infoscreen/templates/infoscreen_admin.html:83
msgid "Preview"
msgstr "Esikatsele"
-#: infoscreen/templates/infoscreen_admin.html:84
+#: infoscreen/templates/infoscreen_admin.html:87
msgid "Name"
msgstr "Nimi"
-#: infoscreen/templates/infoscreen_admin.html:85
+#: infoscreen/templates/infoscreen_admin.html:88
msgid "Create new"
msgstr "Luo uusi"
-#: infoscreen/templates/infoscreen_admin.html:93
+#: infoscreen/templates/infoscreen_admin.html:96
msgid "Instances in currently selected rotation"
msgstr "Nykyisen rotaation diat"
-#: infoscreen/templates/infoscreen_admin.html:96
+#: infoscreen/templates/infoscreen_admin.html:99
msgid "Instance"
msgstr "Dia"
-#: infoscreen/templates/infoscreen_admin.html:97
+#: infoscreen/templates/infoscreen_admin.html:100
msgid "Duration"
msgstr "Kesto"
@@ -244,11 +252,13 @@ msgstr "Jäsenhakemus"
msgid "Member register of SIK ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri"
-#: sikweb/settings-sample.py:162 sikweb/settings.py:161
+#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170
+#: sikweb/settings.py:170
msgid "English"
msgstr "englanti"
-#: sikweb/settings-sample.py:163 sikweb/settings.py:162
+#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
+#: sikweb/settings.py:171
msgid "Finnish"
msgstr "suomi"
@@ -261,7 +271,6 @@ msgid "SIK Admin"
msgstr "SIK Hallintapaneeli"
#: webapp/templates/main_index.html:7
-#, fuzzy
msgid "Members"
msgstr "Jäsenlistaus"
diff --git a/members/migrations/0001_initial.py b/members/migrations/0001_initial.py
new file mode 100644
index 0000000..fa73b35
--- /dev/null
+++ b/members/migrations/0001_initial.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-01-25 16:59
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Member',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('first_name', models.CharField(max_length=127)),
+ ('last_name', models.CharField(max_length=127)),
+ ('email', models.EmailField(max_length=254)),
+ ('POR', models.CharField(max_length=255)),
+ ('AYY', models.BooleanField(default=False)),
+ ('jas', models.BooleanField(default=False)),
+ ('created', models.DateTimeField(default=django.utils.timezone.now)),
+ ('paid', models.DateTimeField(default=datetime.datetime(1970, 1, 1, 0, 0))),
+ ],
+ ),
+ migrations.CreateModel(
+ name='MemberRequest',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='members.Member')),
+ ],
+ ),
+ ]
diff --git a/members/migrations/0002_auto_20170329_1857.py b/members/migrations/0002_auto_20170329_1857.py
new file mode 100644
index 0000000..0a1187e
--- /dev/null
+++ b/members/migrations/0002_auto_20170329_1857.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-03-29 15:57
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('members', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='member',
+ name='paid',
+ field=models.DateTimeField(default=datetime.datetime(1970, 1, 1, 2, 0)),
+ ),
+ ]
diff --git a/members/migrations/__init__.py b/members/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/members/serializers.py b/members/serializers.py
index abcd13f..097d6c1 100644
--- a/members/serializers.py
+++ b/members/serializers.py
@@ -4,8 +4,7 @@ from datetime import datetime
from members.models import Member, MemberRequest
from django.conf import settings
-#, default=timezone.now
-# , default=datetime.fromtimestamp(0)
+
class MemberSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
first_name = serializers.CharField(required=True, max_length=127)
@@ -14,8 +13,8 @@ class MemberSerializer(serializers.Serializer):
POR = serializers.CharField(max_length=255)
AYY = serializers.BooleanField(default=False)
jas = serializers.BooleanField(default=False)
- created = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
- paid = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
+ created = serializers.DateTimeField(default=timezone.now)
+ paid = serializers.DateTimeField(default=datetime.fromtimestamp(0))
def create(self, validated_data):
'''
@@ -33,7 +32,7 @@ class MemberSerializer(serializers.Serializer):
instance.POR = validated_data.get('POR', instance.POR)
instance.AYY = validated_data.get('AYY', instance.AYY)
instance.jas = validated_data.get('jas', instance.jas)
- # instance.created = validated_data.get('created', instance.created)
+ instance.created = validated_data.get('created', instance.created)
instance.paid = validated_data.get('paid', instance.paid)
instance.save()
return instance
diff --git a/members/static/js/members_controllers.js b/members/static/js/members_controllers.js
index f13355c..5fadf64 100644
--- a/members/static/js/members_controllers.js
+++ b/members/static/js/members_controllers.js
@@ -23,12 +23,12 @@ function memberDataEditor(returnPath) {
return function($scope, $http, $window, $location) {
var id = memberId;
console.log("id: " + id);
- $http.get("/members/rest/api/members/" + id).then(function(response) {
+ $http.get("/members/api/member/" + id).then(function(response) {
$scope.member = response.data;
});
$scope.send = function() {
- $http.put("/members/rest/api/members/" + id + "/", $scope.member).then(function(response){
+ $http.put("/members/api/member/" + id, $scope.member).then(function(response){
notySuccess("Jäsentiedot tallennettu");
$window.location = returnPath;
});
@@ -69,26 +69,26 @@ app.controller("getController", function($scope, $document, $http){
/* Fetch all members from the database and show all members in the table */
$scope.updateMembers = function() {
- $http.get("/members/rest/api/members").then(function(response){
+ $http.get("/members/api/members").then(function(response){
$scope.members = response.data;
// map trues and falses to more user-friendly format
- // _.each($scope.members, function(m){
- // m.jas = m.jas ? "Kyllä" : "Ei";
- // m.AYY = m.AYY ? "Kyllä" : "Ei";
- // });
+ _.each($scope.members, function(m){
+ m.jas = m.jas ? "Kyllä" : "Ei";
+ m.AYY = m.AYY ? "Kyllä" : "Ei";
+ });
$scope.shown_members = $scope.members;
});
};
/* Fetch a single member from the database by id and update its row */
$scope.updateMember = function(id) {
- $http.get("/members/rest/api/members/" + id).then(function(response) {
+ $http.get("/members/api/member/" + id).then(function(response) {
for (var i = 0; i < $scope.shown_members.length; i++) {
var member = $scope.shown_members[i];
if (String(member.id) == String(id)) {
member = response.data;
- // member.jas = member.jas ? "Kyllä" : "Ei";
- // member.AYY = member.AYY ? "Kyllä" : "Ei";
+ member.jas = member.jas ? "Kyllä" : "Ei";
+ member.AYY = member.AYY ? "Kyllä" : "Ei";
$scope.shown_members[i] = member;
}
@@ -99,21 +99,12 @@ app.controller("getController", function($scope, $document, $http){
/* Update the payment date of a single member to the current time and send
* the member to the database */
$scope.updatePayment= function(id){
- $scope.member = {};
- //Find member whose payment needs to be updated
- $scope.member = $scope.members.find(function(element){
- return element.id == id;
+ $http.put("/members/api/member/"+id, { paid: moment().format("YYYY-MM-DD kk:mm:ss") }).then(function(response) {
+ $scope.updateMember(id);
+ notySuccess("Maksupäivämäärä päivitetty.");
});
- //Update the member data if member was found
- if($scope.member != undefined){
- $scope.member.paid = moment().format("YYYY-MM-DD kk:mm:ss");
- $http.put("/members/rest/api/members/"+id +"/", $scope.member).then(function(response) {
- $scope.updateMember(id);
- notySuccess("Maksupäivämäärä päivitetty.");
- });
- }
};
-
+
/* Redirect the browser to the CSV dump download endpoint */
$scope.loadCSV = function() {
window.location = "/members/api/getCSV";
@@ -121,7 +112,7 @@ app.controller("getController", function($scope, $document, $http){
/* Delete a single member by id */
$scope.deleteMember = function(id) {
- $http.delete("/members/rest/api/members/" + id).then(
+ $http.delete("/members/api/member/" + id).then(
function(response) {
notySuccess("Poistaminen onnistui")
$scope.updateMembers();
@@ -169,7 +160,7 @@ app.controller("getController", function($scope, $document, $http){
if (name.length == 0) continue;
if (member.first_name.toLowerCase().includes(name)
- || member.last_name.toLowerCase().includes(name)
+ || member.last_name.toLowerCase().includes(name)
|| member.email.toLowerCase().includes(name)) {
result.push(member);
@@ -219,24 +210,26 @@ app.controller("getController", function($scope, $document, $http){
});
/* Controller for adding a member */
-app.controller("postController", function($scope, $http, $location) {
+app.controller("postController", function($scope, $http, $location, $window) {
$scope.member = {};
$scope.send = function() {
- $http.post("/members/rest/api/members/", $scope.member).then(function(response){
+ $http.post("/members/api/member/", $scope.member).then(function(response){
notySuccess("Jäsen lisätty!");
+ $window.location = "/members/list";
});
+
}
});
/* Controller for application page */
app.controller("applController", function($scope, $http){
$scope.applUpdateAll = function() {
- $http.get("/members/rest/api/requests").then(function(response){
+ $http.get("/members/api/requests").then(function(response){
$scope.applications = response.data;
- // _.each($scope.applications, function(a){
- // a.member.jas = a.member.jas ? "Kyllä" : "Ei";
- // a.member.AYY = a.member.AYY ? "Kyllä" : "Ei";
- // });
+ _.each($scope.applications, function(a){
+ a.member.jas = a.member.jas ? "Kyllä" : "Ei";
+ a.member.AYY = a.member.AYY ? "Kyllä" : "Ei";
+ });
});
};
diff --git a/members/templates/application_base.html b/members/templates/application_base.html
index 2f00c86..bed2a37 100644
--- a/members/templates/application_base.html
+++ b/members/templates/application_base.html
@@ -15,7 +15,7 @@
-
+
diff --git a/members/templates/application_success.html b/members/templates/application_success.html
index ec8e994..00aad06 100644
--- a/members/templates/application_success.html
+++ b/members/templates/application_success.html
@@ -2,5 +2,5 @@
{% block content %}
Hienoa! Jäsenhakemuksesi on nyt lähetetty.
-Takaisin Sähköinsinöörikillan web-sivuille
+Takaisin Sähköinsinöörikillan web-sivuille
{% endblock content %}
diff --git a/members/templates/edit_application.html b/members/templates/edit_application.html
index 308948b..14a5dda 100644
--- a/members/templates/edit_application.html
+++ b/members/templates/edit_application.html
@@ -33,8 +33,8 @@
Asuinkunta:
-
Tallenna
-
Peruuta
+
Tallenna
+
Peruuta
diff --git a/members/templates/members_base.html b/members/templates/members_base.html
index 09a7613..8bfa0dc 100644
--- a/members/templates/members_base.html
+++ b/members/templates/members_base.html
@@ -20,7 +20,7 @@
-
+
diff --git a/members/views.py b/members/views.py
index c4a5920..f3e6316 100644
--- a/members/views.py
+++ b/members/views.py
@@ -24,7 +24,7 @@ memberlogger = logging.getLogger(__name__)
logging.basicConfig(format='[%(levelname)s]%(asctime)s %(message)s', level=settings.LOGGERLEVEL, filename=settings.LOGPATH)
-# REST API views
+#API views
########################################
class MembersList(generics.ListCreateAPIView):
queryset = Member.objects.all()
@@ -237,7 +237,7 @@ def new_member_request(request, *args, **kwargs):
message += 'AYY-membership: ' + str(mem.AYY) + '\r\n'
message += 'To mail list: ' + str(mem.jas) + '\r\n'
message += 'Created: ' + mem.created.isoformat(' ') + '\r\n'
- message += 'Please go to the http://sika.sahkoinsinoorikilta.fi/members/ and do something about it!\r\n'
+ message += 'Please go to the https://sika.sahkoinsinoorikilta.fi/members/ and do something about it!\r\n'
# TODO: send mail when application is ready
# send_mail_wrapper(subject, message)
diff --git a/sikweb/urls.py b/sikweb/urls.py
index b8a544a..611e570 100644
--- a/sikweb/urls.py
+++ b/sikweb/urls.py
@@ -62,12 +62,15 @@ from infoscreen.views import create_image_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 admin as infoscreen_admin
from infoscreen.views import hsl_timetable_settings
+from infoscreen.views import get_apy_json
#application
from members.views import application_index
from members.views import list_applications
@@ -102,8 +105,6 @@ urlpatterns = [
url(r'^members/api/request/(?P\d+)$', handle_mem_request),
url(r'^members/api/getCSV$', mem_csv_export),
url(r'^members/tommy$', tommy_blooper),
-
- # Members API
url(r'^members/rest/api/members/$', memsListAPI.as_view()),
url(r'^members/rest/api/members/(?P\d+)/$', memDetailAPI.as_view()),
url(r'^members/rest/api/requests/$', reqListAPI.as_view()),
@@ -123,13 +124,16 @@ urlpatterns = [
url(r'^infoscreen/create_image$', create_image_item),
url(r'^infoscreen/create_abbitem$', createABBItem),
url(r'^infoscreen/create_sossoitem$', createSossoItem),
+ url(r'^infoscreen/create_eventitem$', createEventItem),
url(r'^infoscreen/create_hslitem$', createHslItem),
+ url(r'^infoscreen/create_apyitem$', createApyItem),
url(r'^infoscreen/create_websiteitem$', createExternalWebsiteItem),
url(r'^infoscreen/admin$', infoscreen_admin),
url(r'^infoscreen/create_rotation$', create_rotation),
url(r'^infoscreen/delete_rotation/(?P\d+)$', delete_rotation),
url(r'^infoscreen/hsl_data$', CurrentHSLView),
url(r'^infoscreen/hsl_data/settings$', hsl_timetable_settings),
+ url(r'^infoscreen/apyjson', get_apy_json),
#application
url(r'^application/$', application_index),
url(r'^application/success$', application_success_index),
diff --git a/webapp/migrations/0001_initial.py b/webapp/migrations/0001_initial.py
new file mode 100644
index 0000000..53345cd
--- /dev/null
+++ b/webapp/migrations/0001_initial.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2017-01-25 16:59
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Info',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('publish_time', models.DateTimeField(default=django.utils.timezone.now)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='InfoTr',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('lang', models.CharField(default='fi', max_length=2)),
+ ('topic', models.CharField(max_length=255)),
+ ('content', models.TextField()),
+ ('translation_for', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='webapp.Info')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Tag',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('dummyname', models.CharField(max_length=127)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='TagTr',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('lang', models.CharField(default='fi', max_length=2)),
+ ('name', models.CharField(max_length=127)),
+ ('translation_for', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='webapp.Tag')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='info',
+ name='tags',
+ field=models.ManyToManyField(related_name='news', to='webapp.Tag'),
+ ),
+ ]
diff --git a/webapp/migrations/__init__.py b/webapp/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/webapp/templates/base.html b/webapp/templates/base.html
index 8e86b50..e738a2f 100644
--- a/webapp/templates/base.html
+++ b/webapp/templates/base.html
@@ -19,7 +19,7 @@
-
+
diff --git a/webapp/templates/login.html b/webapp/templates/login.html
index d38757a..785792b 100644
--- a/webapp/templates/login.html
+++ b/webapp/templates/login.html
@@ -11,7 +11,7 @@
-
+