Merge branch 'develop' into 'master'
Merge develop to master See merge request !9
This commit is contained in:
+1
-1
@@ -12,5 +12,5 @@ webapp/migrations/*
|
||||
.idea/
|
||||
logs/
|
||||
/static/
|
||||
node_modules/
|
||||
/media/
|
||||
node_modules/
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
FROM python:3.5
|
||||
ENV PYTHONBUFFERED 1
|
||||
RUN mkdir /code
|
||||
WORKDIR /code
|
||||
ADD requirements.txt /code/
|
||||
RUN pip install -r requirements.txt
|
||||
ADD . /code/
|
||||
@@ -0,0 +1,15 @@
|
||||
version: '2'
|
||||
services:
|
||||
db:
|
||||
image: mariadb
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=toor
|
||||
web:
|
||||
build: .
|
||||
command: python manage.py runserver 0.0.0.0:8000
|
||||
volumes:
|
||||
- .:/code
|
||||
ports:
|
||||
- "8000:8000"
|
||||
depends_on:
|
||||
- db
|
||||
@@ -0,0 +1,5 @@
|
||||
.logout-button {
|
||||
float: right;
|
||||
margin-top: 10px;
|
||||
margin-right: 30px;
|
||||
}
|
||||
@@ -4,14 +4,16 @@ from django.utils import timezone
|
||||
from datetime import datetime
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
class InfoItem(models.Model):
|
||||
|
||||
class __meta__:
|
||||
abstract = True
|
||||
|
||||
name = models.CharField(max_length=255)
|
||||
expire_date = models.DateTimeField(blank=True, null=True) # None means never expiring item
|
||||
display_name = "Default item"
|
||||
|
||||
def get_template_url(self):
|
||||
raise NotImplementedError("inheriting classes must implement get_template_url")
|
||||
@@ -69,6 +71,7 @@ class InfoItem(models.Model):
|
||||
|
||||
|
||||
class ABBInfoItem(InfoItem):
|
||||
display_name = _("ABB jobs")
|
||||
def get_template_url(self):
|
||||
return "/static/html/abb.html"
|
||||
|
||||
@@ -77,6 +80,7 @@ class ABBInfoItem(InfoItem):
|
||||
return "/static/html/abb_create.html"
|
||||
|
||||
class CoffeeInfoItem(InfoItem):
|
||||
display_name = _("Coffee display")
|
||||
def get_template_url(self):
|
||||
return "/static/html/coffee.html"
|
||||
|
||||
@@ -85,6 +89,7 @@ class CoffeeInfoItem(InfoItem):
|
||||
return "/static/html/coffee_create.html"
|
||||
|
||||
class SossoInfoItem(InfoItem):
|
||||
display_name = _("Sössö articles")
|
||||
def get_template_url(self):
|
||||
return "/static/html/sosso.html"
|
||||
|
||||
@@ -94,6 +99,7 @@ class SossoInfoItem(InfoItem):
|
||||
|
||||
|
||||
class ImageInfoItem(InfoItem):
|
||||
display_name = _("Image upload")
|
||||
img = models.ImageField(upload_to="infoimages/")
|
||||
|
||||
def get_template_url(self):
|
||||
@@ -111,6 +117,7 @@ class ImageInfoItem(InfoItem):
|
||||
|
||||
|
||||
class HslInfoItem(InfoItem):
|
||||
display_name = _("HSL timetables")
|
||||
def get_template_url(self):
|
||||
return "/static/html/hsl.html"
|
||||
|
||||
@@ -120,6 +127,7 @@ class HslInfoItem(InfoItem):
|
||||
|
||||
|
||||
class ExternalImageInfoItem(InfoItem):
|
||||
display_name = _("External image")
|
||||
url = models.TextField()
|
||||
|
||||
def get_template_url(self):
|
||||
|
||||
@@ -12,12 +12,23 @@
|
||||
height:100%;
|
||||
}
|
||||
|
||||
.img-container{
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.fit {
|
||||
width: auto;
|
||||
min-height: 100%;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
position:absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
height: auto;
|
||||
margin: auto;
|
||||
-webkit-transform: translate(-50%,-50%);
|
||||
-ms-transform: translate(-50%,-50%);
|
||||
transform: translate(-50%,-50%);
|
||||
}
|
||||
|
||||
.swap-animation.ng-enter, .swap-animation.ng-leave {
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
<img ng-src="{{ img }}" class="fit"/>
|
||||
<div class="img-container">
|
||||
<img ng-src="{{ img }}" class="fit"/>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% load i18n %}
|
||||
{% load static %}
|
||||
{% load staticfiles %}
|
||||
<!DOCTYPE html>
|
||||
<html ng-app="infoAdmin">
|
||||
<head>
|
||||
@@ -12,10 +13,11 @@
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"></link>
|
||||
<script src="/static/js/ng-file-upload-bower-12.2.11/ng-file-upload-all.js"></script>
|
||||
<script src="/static/js/infoadmin_controllers.js"></script>
|
||||
<link rel="stylesheet" href="{% static "css/base.css" %}"></link>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header" class="row">
|
||||
<div class="col-xs-1 col-xs-offset-11 col-sm-1 col-lg-1">
|
||||
<div class="logout-button">
|
||||
<form action="/logout" method="post"> {% csrf_token %}
|
||||
<input type="Submit" value="{% trans "Log out" %}" name="Logout" class="btn btn-danger"/>
|
||||
</form>
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ def info_types(request, *args, **kwargs):
|
||||
classes = InfoItem.get_subclasses()
|
||||
for c in classes:
|
||||
types.append({
|
||||
"name": c.__name__,
|
||||
"name": c.display_name,
|
||||
"create_template_url": c.get_create_template_url(),
|
||||
})
|
||||
return HttpResponse(json.dumps(types))
|
||||
|
||||
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-12 00:46+0200\n"
|
||||
"POT-Creation-Date: 2017-02-22 22:36+0200\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,101 +17,125 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:20
|
||||
#: members/templates/members_base.html:67
|
||||
#: infoscreen/models.py:74
|
||||
msgid "ABB jobs"
|
||||
msgstr "ABB jobs"
|
||||
|
||||
#: infoscreen/models.py:83
|
||||
msgid "Coffee display"
|
||||
msgstr "Coffee display"
|
||||
|
||||
#: infoscreen/models.py:92
|
||||
msgid "Sössö articles"
|
||||
msgstr "Sössö articles"
|
||||
|
||||
#: infoscreen/models.py:102
|
||||
msgid "Image upload"
|
||||
msgstr "Image upload"
|
||||
|
||||
#: infoscreen/models.py:120
|
||||
msgid "HSL timetables"
|
||||
msgstr "HSL timetables"
|
||||
|
||||
#: infoscreen/models.py:130
|
||||
msgid "External image"
|
||||
msgstr "External image"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:22
|
||||
#: members/templates/members_base.html:60
|
||||
msgid "Log out"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:27
|
||||
#: infoscreen/templates/infoscreen_admin.html:29
|
||||
msgid "Infoscreen Admin Pane"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:32
|
||||
#: infoscreen/templates/infoscreen_admin.html:34
|
||||
msgid "Info items"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:33
|
||||
#: infoscreen/templates/infoscreen_admin.html:35
|
||||
msgid "Infoitems available for rotations"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:36
|
||||
#: infoscreen/templates/infoscreen_admin.html:38
|
||||
msgid "Item"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:37
|
||||
#: infoscreen/templates/infoscreen_admin.html:39
|
||||
msgid "Set duration"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:38
|
||||
#: infoscreen/templates/infoscreen_admin.html:40
|
||||
msgid "Add to rotation"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:39
|
||||
#: infoscreen/templates/infoscreen_admin.html:45
|
||||
#: infoscreen/templates/infoscreen_admin.html:72
|
||||
#: infoscreen/templates/infoscreen_admin.html:79
|
||||
#: infoscreen/templates/infoscreen_admin.html:96
|
||||
#: infoscreen/templates/infoscreen_admin.html:100
|
||||
#: 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
|
||||
#: members/templates/member_list.html:63
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:44
|
||||
#: infoscreen/templates/infoscreen_admin.html:46
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:48
|
||||
#: infoscreen/templates/infoscreen_admin.html:50
|
||||
msgid "Create new item"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:51
|
||||
#: infoscreen/templates/infoscreen_admin.html:53
|
||||
msgid "Item type"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:62
|
||||
#: infoscreen/templates/infoscreen_admin.html:64
|
||||
msgid "Rotations"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:64
|
||||
#: infoscreen/templates/infoscreen_admin.html:66
|
||||
msgid "Select rotation to edit"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:68
|
||||
#: infoscreen/templates/infoscreen_admin.html:90
|
||||
#: infoscreen/templates/infoscreen_admin.html:70
|
||||
#: infoscreen/templates/infoscreen_admin.html:92
|
||||
msgid "Rotation"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:69
|
||||
#: infoscreen/templates/infoscreen_admin.html:71
|
||||
msgid "id"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:70
|
||||
#: infoscreen/templates/infoscreen_admin.html:77
|
||||
#: infoscreen/templates/infoscreen_admin.html:72
|
||||
#: infoscreen/templates/infoscreen_admin.html:79
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:71
|
||||
#: infoscreen/templates/infoscreen_admin.html:78
|
||||
#: infoscreen/templates/infoscreen_admin.html:73
|
||||
#: infoscreen/templates/infoscreen_admin.html:80
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:82
|
||||
#: infoscreen/templates/infoscreen_admin.html:84
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:83
|
||||
#: infoscreen/templates/infoscreen_admin.html:85
|
||||
msgid "Create new"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:91
|
||||
#: infoscreen/templates/infoscreen_admin.html:93
|
||||
msgid "Instances in currently selected rotation"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:94
|
||||
#: infoscreen/templates/infoscreen_admin.html:96
|
||||
msgid "Instance"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:95
|
||||
#: infoscreen/templates/infoscreen_admin.html:97
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
@@ -199,31 +223,31 @@ msgstr ""
|
||||
msgid "Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/members_base.html:49
|
||||
#: members/templates/members_base.html:50
|
||||
msgid "Member list"
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/members_base.html:50
|
||||
#: members/templates/members_base.html:51
|
||||
msgid "Add member"
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/members_base.html:51
|
||||
#: members/templates/members_base.html:52
|
||||
msgid "Add multiple"
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/members_base.html:52
|
||||
#: members/templates/members_base.html:53
|
||||
msgid "Member application"
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/members_base.html:62
|
||||
#: members/templates/members_base.html:69
|
||||
msgid "Member register of SIK ry"
|
||||
msgstr ""
|
||||
|
||||
#: sikweb/settings-sample.py:146 sikweb/settings.py:146
|
||||
#: sikweb/settings-sample.py:162 sikweb/settings.py:161
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: sikweb/settings-sample.py:147 sikweb/settings.py:147
|
||||
#: sikweb/settings-sample.py:163 sikweb/settings.py:162
|
||||
msgid "Finnish"
|
||||
msgstr ""
|
||||
|
||||
|
||||
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-12 00:46+0200\n"
|
||||
"POT-Creation-Date: 2017-02-22 22:36+0200\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,101 +18,125 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:20
|
||||
#: members/templates/members_base.html:67
|
||||
#: infoscreen/models.py:74
|
||||
msgid "ABB jobs"
|
||||
msgstr "ABB-työpaikat"
|
||||
|
||||
#: infoscreen/models.py:83
|
||||
msgid "Coffee display"
|
||||
msgstr "Kahvinäyttö"
|
||||
|
||||
#: infoscreen/models.py:92
|
||||
msgid "Sössö articles"
|
||||
msgstr "Sössön artikkelit"
|
||||
|
||||
#: infoscreen/models.py:102
|
||||
msgid "Image upload"
|
||||
msgstr "Kuvan lataus"
|
||||
|
||||
#: infoscreen/models.py:120
|
||||
msgid "HSL timetables"
|
||||
msgstr "HSL-aikataulut"
|
||||
|
||||
#: infoscreen/models.py:130
|
||||
msgid "External image"
|
||||
msgstr "Ulkoinen kuva"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:22
|
||||
#: members/templates/members_base.html:60
|
||||
msgid "Log out"
|
||||
msgstr "Kirjaudu ulos"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:27
|
||||
#: infoscreen/templates/infoscreen_admin.html:29
|
||||
msgid "Infoscreen Admin Pane"
|
||||
msgstr "Infonäyttöjen hallintapaneeli"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:32
|
||||
#: infoscreen/templates/infoscreen_admin.html:34
|
||||
msgid "Info items"
|
||||
msgstr "Diat"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:33
|
||||
#: infoscreen/templates/infoscreen_admin.html:35
|
||||
msgid "Infoitems available for rotations"
|
||||
msgstr "Rotaatioon lisättävät diat"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:36
|
||||
#: infoscreen/templates/infoscreen_admin.html:38
|
||||
msgid "Item"
|
||||
msgstr "Dia"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:37
|
||||
#: infoscreen/templates/infoscreen_admin.html:39
|
||||
msgid "Set duration"
|
||||
msgstr "Aseta kesto"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:38
|
||||
#: infoscreen/templates/infoscreen_admin.html:40
|
||||
msgid "Add to rotation"
|
||||
msgstr "Lisää rotaatioon"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:39
|
||||
#: infoscreen/templates/infoscreen_admin.html:45
|
||||
#: infoscreen/templates/infoscreen_admin.html:72
|
||||
#: infoscreen/templates/infoscreen_admin.html:79
|
||||
#: infoscreen/templates/infoscreen_admin.html:96
|
||||
#: infoscreen/templates/infoscreen_admin.html:100
|
||||
#: 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
|
||||
#: members/templates/member_list.html:63
|
||||
msgid "Delete"
|
||||
msgstr "Poista"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:44
|
||||
#: infoscreen/templates/infoscreen_admin.html:46
|
||||
msgid "Add"
|
||||
msgstr "Lisää"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:48
|
||||
#: infoscreen/templates/infoscreen_admin.html:50
|
||||
msgid "Create new item"
|
||||
msgstr "Luo uusi dia"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:51
|
||||
#: infoscreen/templates/infoscreen_admin.html:53
|
||||
msgid "Item type"
|
||||
msgstr "Diatyyppi"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:62
|
||||
#: infoscreen/templates/infoscreen_admin.html:64
|
||||
msgid "Rotations"
|
||||
msgstr "Rotaatiot"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:64
|
||||
#: infoscreen/templates/infoscreen_admin.html:66
|
||||
msgid "Select rotation to edit"
|
||||
msgstr "Valitse muokattava rotaatio"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:68
|
||||
#: infoscreen/templates/infoscreen_admin.html:90
|
||||
#: infoscreen/templates/infoscreen_admin.html:70
|
||||
#: infoscreen/templates/infoscreen_admin.html:92
|
||||
msgid "Rotation"
|
||||
msgstr "Rotaatio"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:69
|
||||
#: infoscreen/templates/infoscreen_admin.html:71
|
||||
msgid "id"
|
||||
msgstr "id"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:70
|
||||
#: infoscreen/templates/infoscreen_admin.html:77
|
||||
#: infoscreen/templates/infoscreen_admin.html:72
|
||||
#: infoscreen/templates/infoscreen_admin.html:79
|
||||
msgid "Select"
|
||||
msgstr "Valitse"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:71
|
||||
#: infoscreen/templates/infoscreen_admin.html:78
|
||||
#: infoscreen/templates/infoscreen_admin.html:73
|
||||
#: infoscreen/templates/infoscreen_admin.html:80
|
||||
msgid "Preview"
|
||||
msgstr "Esikatsele"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:82
|
||||
#: infoscreen/templates/infoscreen_admin.html:84
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:83
|
||||
#: infoscreen/templates/infoscreen_admin.html:85
|
||||
msgid "Create new"
|
||||
msgstr "Luo uusi"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:91
|
||||
#: infoscreen/templates/infoscreen_admin.html:93
|
||||
msgid "Instances in currently selected rotation"
|
||||
msgstr "Nykyisen rotaation diat"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:94
|
||||
#: infoscreen/templates/infoscreen_admin.html:96
|
||||
msgid "Instance"
|
||||
msgstr "Dia"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:95
|
||||
#: infoscreen/templates/infoscreen_admin.html:97
|
||||
msgid "Duration"
|
||||
msgstr "Kesto"
|
||||
|
||||
@@ -200,31 +224,31 @@ msgstr "Muokkaa"
|
||||
msgid "Are you sure?"
|
||||
msgstr "Oletko varma?"
|
||||
|
||||
#: members/templates/members_base.html:49
|
||||
#: members/templates/members_base.html:50
|
||||
msgid "Member list"
|
||||
msgstr "Jäsenlistaus"
|
||||
|
||||
#: members/templates/members_base.html:50
|
||||
#: members/templates/members_base.html:51
|
||||
msgid "Add member"
|
||||
msgstr "Lisää jäsen"
|
||||
|
||||
#: members/templates/members_base.html:51
|
||||
#: members/templates/members_base.html:52
|
||||
msgid "Add multiple"
|
||||
msgstr "Lisää useita"
|
||||
|
||||
#: members/templates/members_base.html:52
|
||||
#: members/templates/members_base.html:53
|
||||
msgid "Member application"
|
||||
msgstr "Jäsenhakemus"
|
||||
|
||||
#: members/templates/members_base.html:62
|
||||
#: members/templates/members_base.html:69
|
||||
msgid "Member register of SIK ry"
|
||||
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri"
|
||||
|
||||
#: sikweb/settings-sample.py:146 sikweb/settings.py:146
|
||||
#: sikweb/settings-sample.py:162 sikweb/settings.py:161
|
||||
msgid "English"
|
||||
msgstr "englanti"
|
||||
|
||||
#: sikweb/settings-sample.py:147 sikweb/settings.py:147
|
||||
#: sikweb/settings-sample.py:163 sikweb/settings.py:162
|
||||
msgid "Finnish"
|
||||
msgstr "suomi"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
from django.utils import timezone
|
||||
from datetime import datetime
|
||||
from members.models import Member
|
||||
from members.models import Member, MemberRequest
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
@@ -36,3 +36,11 @@ class MemberSerializer(serializers.Serializer):
|
||||
instance.paid = validated_data.get('paid', instance.paid)
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
class MemberRequestSerializer(serializers.ModelSerializer):
|
||||
id = serializers.IntegerField(read_only=True)
|
||||
member = MemberSerializer()
|
||||
|
||||
class Meta:
|
||||
model = MemberRequest
|
||||
fields = ('id', 'member')
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
<script src="/static/js/members_controllers.js"></script>
|
||||
<script src="/static/js/moment.js"></script>
|
||||
<link href="/static/css/simple-sidebar.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="{% static "css/base.css" %}">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
@@ -54,6 +55,12 @@
|
||||
</div>
|
||||
<!-- /#sidebar-wrapper -->
|
||||
|
||||
<div class="logout-button">
|
||||
<form action="/logout" method="post"> {% csrf_token %}
|
||||
<input type="Submit" value="{% trans "Log out" %}" name="Logout" class="btn btn-danger"/>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Page Content -->
|
||||
<div class="col-xs-12 col-sm-12 col-lg-12">
|
||||
<div id="header" class="row">
|
||||
@@ -62,11 +69,6 @@
|
||||
{% trans "Member register of SIK ry" %}
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-xs-1 col-sm-1 col-lg-1">
|
||||
<form action="/logout" method="post"> {% csrf_token %}
|
||||
<input type="Submit" value="{% trans "Log out" %}" name="Logout" class="btn btn-danger" style="margin-top:12px;"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
|
||||
+13
-1
@@ -11,7 +11,7 @@ import requests
|
||||
from django.conf import settings
|
||||
import logging
|
||||
'''Rest API'''
|
||||
from members.serializers import MemberSerializer
|
||||
from members.serializers import MemberSerializer, MemberRequestSerializer
|
||||
from rest_framework import generics
|
||||
from rest_framework import generics, status, authentication, exceptions, permissions
|
||||
from rest_framework.decorators import api_view, permission_classes
|
||||
@@ -39,6 +39,18 @@ class MemberDetails(generics.RetrieveUpdateDestroyAPIView):
|
||||
permission_classes = (HasRights, permissions.IsAuthenticated, )
|
||||
throttle_classes = (BurstRateThrottle, SustainedRateThrottle, )
|
||||
|
||||
class MemberRequestList(generics.ListCreateAPIView):
|
||||
queryset = MemberRequest.objects.all()
|
||||
serializer_class = MemberRequestSerializer
|
||||
permission_classes = (HasRights, permissions.IsAuthenticated, )
|
||||
throttle_classes = (BurstRateThrottle, SustainedRateThrottle, )
|
||||
|
||||
class MemberRequestDetail(generics.RetrieveUpdateDestroyAPIView):
|
||||
queryset = MemberRequest.objects.all()
|
||||
serializer_class = MemberRequestSerializer
|
||||
permission_classes = (HasRights, permissions.IsAuthenticated, )
|
||||
throttle_classes = (BurstRateThrottle, SustainedRateThrottle, )
|
||||
|
||||
########################################
|
||||
# function to validate reCaptcha
|
||||
def validate_recaptcha(response):
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
# SIKWEB 2.0
|
||||
|
||||
## Installation
|
||||
|
||||
### Create a virtual environment for python
|
||||
|
||||
`virtualenv -p python3 virtualenv.sikweb`
|
||||
## Accessing the source
|
||||
|
||||
### Clone this repository and enter it
|
||||
|
||||
@@ -21,6 +17,72 @@ Change to the development branch:
|
||||
git checkout develop
|
||||
```
|
||||
|
||||
## Installation with Docker
|
||||
|
||||
### Installing Docker
|
||||
|
||||
Install docker and docker-compose. On Ubuntu this can be done with
|
||||
|
||||
```BASH
|
||||
sudo apt-get install docker docker-compose
|
||||
```
|
||||
|
||||
### Configuring db image
|
||||
|
||||
```BASH
|
||||
sudo docker-compose up db
|
||||
```
|
||||
|
||||
Then configure following with another shell window
|
||||
```BASH
|
||||
sudo docker exec -ti <image_name> bash # image name can be found with sudo docker ps (probably web20_db_1)
|
||||
mysql -u root -p # then enter root password which can be found in docker-compose.yml
|
||||
```
|
||||
|
||||
```SQL
|
||||
CREATE USER 'sik'@'%' IDENTIFIED BY 'password123';
|
||||
CREATE DATABASE sik DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
|
||||
GRANT ALL PRIVILEGES ON `sik\_%` . * TO 'sik'@'%' IDENTIFIED BY 'password123';
|
||||
GRANT ALL PRIVILEGES ON sik.* TO 'sik'@'%';
|
||||
```
|
||||
Then CTRL-D away from Docker bash shell and shut down database image with CTRL-C.
|
||||
|
||||
### Windows specific stuff
|
||||
|
||||
1. `sudo` is naturally not needed before any command on a windows environment
|
||||
2. Before configuring the web image, click on the taskbar docker icon. Activate "shared drives" -> "share the drive repository".
|
||||
|
||||
|
||||
### Configuring web image
|
||||
|
||||
1. Copy settings-sample.py to settings.py in sikweb folder.
|
||||
2. Configure at least the following settings
|
||||
- DATABASES: use 'db' as host and use the same user and password as configured above
|
||||
3. Run the following commands:
|
||||
|
||||
```BASH
|
||||
sudo docker-compose run web python manage.py migrate
|
||||
sudo docker-compose run web python manage.py makemigrations infoscreen members webapp
|
||||
sudo docker-compose run web python manage.py migrate
|
||||
sudo docker-compose run web python manage.py createsuperuser
|
||||
```
|
||||
|
||||
### Starting the dev unit
|
||||
|
||||
```
|
||||
sudo docker-compose up
|
||||
```
|
||||
|
||||
Now you should have a dev environment running on localhost:8000
|
||||
|
||||
NOTE: As your working directory (web2.0) is mounted by images, changes will be reflected immediately: no rebuilding is needed. `migrate` and `makemigrations` must still be run separately. See examples above.
|
||||
|
||||
## Installation with python virtualenv
|
||||
|
||||
### Create a virtual environment for python
|
||||
|
||||
`virtualenv -p python3 virtualenv.sikweb`
|
||||
|
||||
### Activate virtualenv (assuming we are at the root of this repository and virtualenv is one level above)
|
||||
`. ../virtualenv.sikweb/bin/activate`
|
||||
|
||||
|
||||
+7
-2
@@ -45,6 +45,8 @@ from members.views import tommy_blooper
|
||||
# members API
|
||||
from members.views import MembersList as memsListAPI
|
||||
from members.views import MemberDetails as memDetailAPI
|
||||
from members.views import MemberRequestList as reqListAPI
|
||||
from members.views import MemberRequestDetail as reqDetailAPI
|
||||
#infoscreen
|
||||
from infoscreen.views import index as infoindex
|
||||
from infoscreen.views import default as infodefault
|
||||
@@ -100,8 +102,11 @@ 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),
|
||||
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/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()),
|
||||
url(r'^members/rest/api/requests/(?P<pk>\d+)/$', reqDetailAPI.as_view()),
|
||||
|
||||
#infoscreen
|
||||
url(r'^infoscreen/$', infodefault),
|
||||
url(r'^infoscreen/(?P<idx>\d+)$', infoindex),
|
||||
|
||||
Reference in New Issue
Block a user