Merge branch 'develop' into feature-payment
This commit is contained in:
+1
-3
@@ -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/
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -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',),
|
||||
),
|
||||
]
|
||||
@@ -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',
|
||||
),
|
||||
]
|
||||
@@ -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")
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<link rel="stylesheet" href="/static/css/apy.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">
|
||||
<div id="bg">
|
||||
<div class="container " ng-controller="ApyController">
|
||||
<div class="header-row row">
|
||||
<div class="col-sm-8">Kilta</div>
|
||||
<div class="col-sm-4">Lehdet</div>
|
||||
</div>
|
||||
<div class="repeat-item row event" ng-repeat="item in items">
|
||||
<div class="col-sm-8 event-col">{{item.name}}</div>
|
||||
<div class="col-sm-4 event-col">{{item.size}}</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
<div ng-controller="infoadmin_apyitem_create" style="margin-top:20px;">
|
||||
<div>
|
||||
create apyitem
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Name:</label>
|
||||
<input type="text" ng-model="item.name"></input>
|
||||
</div>
|
||||
<input type="button" class="btn btn-success" ng-click="send()" value="create"></input>
|
||||
</div>
|
||||
@@ -0,0 +1,4 @@
|
||||
<link rel="stylesheet" href="/static/css/coffee.css">
|
||||
<iframe src="https://host2.kilta.aalto.fi/kahvi/cups" allowfullscreen=true sandbox="allow-scripts allow-pointer-lock allow-same-origin">
|
||||
<p>Your browser does not support iframes.</p>
|
||||
</iframe>
|
||||
@@ -0,0 +1,14 @@
|
||||
<link rel="stylesheet" href="/static/css/events.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Droid+Sans+Mono" rel="stylesheet">
|
||||
<div class="container" ng-app="myApp" ng-controller="EventController">
|
||||
<div class="header-row row">
|
||||
<div class="col-sm-6">Tapahtuma</div>
|
||||
<div class="col-sm-2">Aika</div>
|
||||
<div class="col-sm-4">Paikka</div>
|
||||
</div>
|
||||
<div class="repeat-item row event" ng-repeat="event in events">
|
||||
<div class="col-sm-6 event-col">{{event.name}}</div>
|
||||
<div class="col-sm-2 event-col">{{event.event_start}}</div>
|
||||
<div class="col-sm-4 event-col">{{event.location}}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
<div ng-controller="infoadmin_eventitem_create" style="margin-top:20px;">
|
||||
<div>
|
||||
Create new item to show events Name is used only as identifier
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Name:</label>
|
||||
<input type="text" ng-model="item.name"></input>
|
||||
</div>
|
||||
<input type="button" class="btn btn-success" ng-click="send()" value="create"></input>
|
||||
</div>
|
||||
@@ -1,6 +1,6 @@
|
||||
<div ng-controller="infoadmin_externalimage_create" style="margin-top:20px;">
|
||||
<div>
|
||||
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)
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Name:</label>
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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(){
|
||||
|
||||
+9
-1
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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"
|
||||
|
||||
Binary file not shown.
@@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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"
|
||||
|
||||
|
||||
@@ -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')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -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)),
|
||||
),
|
||||
]
|
||||
@@ -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
|
||||
|
||||
@@ -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,19 +99,10 @@ 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;
|
||||
});
|
||||
//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) {
|
||||
$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.");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* Redirect the browser to the CSV dump download endpoint */
|
||||
@@ -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();
|
||||
@@ -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";
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.js"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.js"></script>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
|
||||
|
||||
<!-- DatePicker -->
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
{% block content %}
|
||||
<h1>Hienoa! Jäsenhakemuksesi on nyt lähetetty.</h1>
|
||||
<a href="http://sahkoinsinoorikilta.fi">Takaisin Sähköinsinöörikillan web-sivuille</a>
|
||||
<a href="https://sahkoinsinoorikilta.fi">Takaisin Sähköinsinöörikillan web-sivuille</a>
|
||||
{% endblock content %}
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
<label>Asuinkunta: </label>
|
||||
<input id="PORField" required type="text" placeholder="Otaniemi" class="form-control" ng-model="member.POR"></input>
|
||||
</div>
|
||||
<button class="btn btn-success" ng-click="applicationForm.$valid && send()" type="submit" id="sendmember">Tallenna</button>
|
||||
<button class="btn btn-warning" ng-click="cancel()" type="submit" id="sendmember">Peruuta</button>
|
||||
<button class="btn btn-success" ng-click="applicationForm.$valid && sendappl()" type="submit" id="sendmember">Tallenna</button>
|
||||
<button class="btn btn-warning" ng-click="cancelappl()" type="submit" id="sendmember">Peruuta</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.js"></script>
|
||||
|
||||
<!-- Angular routing -->
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
|
||||
<!-- Underscore.js -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
+6
-2
@@ -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<idx>\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<pk>\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<id>\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),
|
||||
|
||||
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -19,7 +19,7 @@
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.js"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.js"></script>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
|
||||
|
||||
<!-- DatePicker -->
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.js"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.js"></script>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user