+2
-2
@@ -1,6 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from infoscreen.models import Rotation, InfoItem, InfoInstance, ImageInfoItem, ExternalImageInfoItem, ABBInfoItem
|
from infoscreen.models import Rotation, InfoItem, InfoInstance, ImageInfoItem, ExternalImageInfoItem, ABBInfoItem
|
||||||
from infoscreen.models import CoffeeInfoItem
|
from infoscreen.models import ExternalWebsiteInfoItem
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(Rotation)
|
admin.site.register(Rotation)
|
||||||
@@ -9,4 +9,4 @@ admin.site.register(ImageInfoItem)
|
|||||||
admin.site.register(ExternalImageInfoItem)
|
admin.site.register(ExternalImageInfoItem)
|
||||||
admin.site.register(ABBInfoItem)
|
admin.site.register(ABBInfoItem)
|
||||||
admin.site.register(InfoInstance)
|
admin.site.register(InfoInstance)
|
||||||
admin.site.register(CoffeeInfoItem)
|
admin.site.register(ExternalWebsiteInfoItem)
|
||||||
+42
-4
@@ -80,14 +80,52 @@ class ABBInfoItem(InfoItem):
|
|||||||
def get_create_template_url():
|
def get_create_template_url():
|
||||||
return "/static/html/abb_create.html"
|
return "/static/html/abb_create.html"
|
||||||
|
|
||||||
class CoffeeInfoItem(InfoItem):
|
|
||||||
display_name = _("Coffee display")
|
class ExternalWebsiteInfoItem(InfoItem):
|
||||||
|
display_name = _("External website")
|
||||||
|
url = models.TextField()
|
||||||
def get_template_url(self):
|
def get_template_url(self):
|
||||||
return "/static/html/coffee.html"
|
return "/static/html/external_website.html?url={}".format(self.name)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_create_template_url():
|
def get_create_template_url():
|
||||||
return "/static/html/coffee_create.html"
|
return "/static/html/external_website_create.html"
|
||||||
|
|
||||||
|
def get_dict(self):
|
||||||
|
d = super().get_dict()
|
||||||
|
d["options"] = {'url': self.url}
|
||||||
|
return d
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_from_dict(cls, d):
|
||||||
|
item = cls()
|
||||||
|
item.update_from_dict(d)
|
||||||
|
return item
|
||||||
|
|
||||||
|
def get_list(self):
|
||||||
|
return {
|
||||||
|
'id':self.id,
|
||||||
|
'name':self.name,
|
||||||
|
'url': self.url,
|
||||||
|
}
|
||||||
|
|
||||||
|
def update_from_dict(self, d):
|
||||||
|
try:
|
||||||
|
expire_date = d.pop('expire_date', None)
|
||||||
|
self.expire_date = datetime.strptime(expire_date, "%Y-%m-%d %H:%M:%S")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
dmap = {
|
||||||
|
'name': 'name',
|
||||||
|
'url': 'url',
|
||||||
|
}
|
||||||
|
for k, v in d.items():
|
||||||
|
try:
|
||||||
|
self.__setattr__(dmap[k], v)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
self.save()
|
||||||
|
|
||||||
class SossoInfoItem(InfoItem):
|
class SossoInfoItem(InfoItem):
|
||||||
display_name = _("Sössö articles")
|
display_name = _("Sössö articles")
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<link rel="stylesheet" href="/static/css/coffee.css">
|
|
||||||
<iframe src="http://ka.dy.fi" allowfullscreen=true sandbox="allow-scripts allow-pointer-lock allow-same-origin">
|
|
||||||
<p>Your browser does not support iframes.</p>
|
|
||||||
</iframe>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<div ng-controller="infoadmin_coffeeitem_create" style="margin-top:20px;">
|
|
||||||
<div>
|
|
||||||
Create new item to show coffee website. 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>
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<link rel="stylesheet" href="/static/css/external_website.css">
|
||||||
|
<iframe ng-src="{{ url | trusted_url }}" allowfullscreen=true sandbox="allow-scripts allow-pointer-lock allow-same-origin">
|
||||||
|
<p>Your browser does not support iframes.</p>
|
||||||
|
</iframe>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<div ng-controller="infoadmin_websiteitem_create" style="margin-top:20px;">
|
||||||
|
<div>
|
||||||
|
Create new item to show external website. For example "ka.dy.fi".
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Name:</label>
|
||||||
|
<input type="text" ng-model="item.name"></input>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Url:</label>
|
||||||
|
<input type="text" ng-model="item.url"></input>
|
||||||
|
</div>
|
||||||
|
<input type="button" class="btn btn-success" ng-click="send()" value="create"></input>
|
||||||
|
</div>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
var app = angular.module('infoAdmin',['ngFileUpload']);
|
var app = angular.module('infoAdmin',['ngFileUpload']);
|
||||||
|
|
||||||
app.config(['$httpProvider', function ($httpProvider) {
|
app.config(['$httpProvider', function ($httpProvider) {
|
||||||
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
|
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
|
||||||
@@ -147,10 +147,10 @@ app.controller('infoadmin_hslitem_create', function($scope, $http,ItemList){
|
|||||||
$http.post("/infoscreen/create_hslitem", $scope.item).then(ItemList.loadItems)
|
$http.post("/infoscreen/create_hslitem", $scope.item).then(ItemList.loadItems)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
app.controller('infoadmin_coffeeitem_create', function($scope, $http,ItemList){
|
app.controller('infoadmin_websiteitem_create', function($scope, $http,ItemList){
|
||||||
$scope.item = {}
|
$scope.item = {}
|
||||||
$scope.send = function(){
|
$scope.send = function(){
|
||||||
$http.post("/infoscreen/create_coffeeitem", $scope.item).then(ItemList.loadItems)
|
$http.post("/infoscreen/create_websiteitem", $scope.item).then(ItemList.loadItems)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,14 @@ app.controller('infoscreen_main', function($scope,$http,$timeout){
|
|||||||
$timeout($scope.next, temp.duration * 1000);
|
$timeout($scope.next, temp.duration * 1000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Doing this the ugly way because Angular likes to be the special priviledged child
|
||||||
|
app.filter('trusted_url', ['$sce', function ($sce) {
|
||||||
|
return function(url) {
|
||||||
|
return $sce.trustAsResourceUrl(url);
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
app.controller('ABBController', function($scope, $http){
|
app.controller('ABBController', function($scope, $http){
|
||||||
$scope.jobs = [];
|
$scope.jobs = [];
|
||||||
var min_date = moment().subtract(30,'days').format("YYYY-MM-DD%20HH:mm:ss");
|
var min_date = moment().subtract(30,'days').format("YYYY-MM-DD%20HH:mm:ss");
|
||||||
|
|||||||
+4
-2
@@ -7,7 +7,7 @@ from django.contrib.auth.decorators import permission_required
|
|||||||
|
|
||||||
from infoscreen.models import Rotation, InfoItem, InfoInstance
|
from infoscreen.models import Rotation, InfoItem, InfoInstance
|
||||||
from infoscreen.models import ABBInfoItem, ExternalImageInfoItem, ImageInfoItem, SossoInfoItem, HslInfoItem
|
from infoscreen.models import ABBInfoItem, ExternalImageInfoItem, ImageInfoItem, SossoInfoItem, HslInfoItem
|
||||||
from infoscreen.models import CoffeeInfoItem
|
from infoscreen.models import ExternalWebsiteInfoItem
|
||||||
from infoscreen.models import ImageUploadForm
|
from infoscreen.models import ImageUploadForm
|
||||||
from infoscreen.models import HSLDataModel
|
from infoscreen.models import HSLDataModel
|
||||||
from infoscreen.hsl_fetcher import HSLFetcher
|
from infoscreen.hsl_fetcher import HSLFetcher
|
||||||
@@ -206,10 +206,12 @@ def CurrentHSLView(request, *args, **kwargs):
|
|||||||
|
|
||||||
return HttpResponse(data[len(data) - 1].data, status=200)
|
return HttpResponse(data[len(data) - 1].data, status=200)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
createInstance = create_item_generator(InfoInstance)
|
createInstance = create_item_generator(InfoInstance)
|
||||||
deleteInstance = delete_item_generator(InfoInstance)
|
deleteInstance = delete_item_generator(InfoInstance)
|
||||||
createABBItem = create_item_generator(ABBInfoItem)
|
createABBItem = create_item_generator(ABBInfoItem)
|
||||||
createSossoItem = create_item_generator(SossoInfoItem)
|
createSossoItem = create_item_generator(SossoInfoItem)
|
||||||
createHslItem = create_item_generator(HslInfoItem)
|
createHslItem = create_item_generator(HslInfoItem)
|
||||||
createExternalImageInfoItem = create_item_generator(ExternalImageInfoItem)
|
createExternalImageInfoItem = create_item_generator(ExternalImageInfoItem)
|
||||||
createCoffeeItem = create_item_generator(CoffeeInfoItem)
|
createExternalWebsiteItem = create_item_generator(ExternalWebsiteInfoItem)
|
||||||
|
|||||||
+2
-2
@@ -62,7 +62,7 @@ from infoscreen.views import create_image_item
|
|||||||
from infoscreen.views import createABBItem
|
from infoscreen.views import createABBItem
|
||||||
from infoscreen.views import createSossoItem
|
from infoscreen.views import createSossoItem
|
||||||
from infoscreen.views import createHslItem
|
from infoscreen.views import createHslItem
|
||||||
from infoscreen.views import createCoffeeItem
|
from infoscreen.views import createExternalWebsiteItem
|
||||||
from infoscreen.views import create_rotation
|
from infoscreen.views import create_rotation
|
||||||
from infoscreen.views import delete_rotation
|
from infoscreen.views import delete_rotation
|
||||||
from infoscreen.views import CurrentHSLView
|
from infoscreen.views import CurrentHSLView
|
||||||
@@ -124,7 +124,7 @@ urlpatterns = [
|
|||||||
url(r'^infoscreen/create_abbitem$', createABBItem),
|
url(r'^infoscreen/create_abbitem$', createABBItem),
|
||||||
url(r'^infoscreen/create_sossoitem$', createSossoItem),
|
url(r'^infoscreen/create_sossoitem$', createSossoItem),
|
||||||
url(r'^infoscreen/create_hslitem$', createHslItem),
|
url(r'^infoscreen/create_hslitem$', createHslItem),
|
||||||
url(r'^infoscreen/create_coffeeitem$', createCoffeeItem),
|
url(r'^infoscreen/create_websiteitem$', createExternalWebsiteItem),
|
||||||
url(r'^infoscreen/admin$', infoscreen_admin),
|
url(r'^infoscreen/admin$', infoscreen_admin),
|
||||||
url(r'^infoscreen/create_rotation$', create_rotation),
|
url(r'^infoscreen/create_rotation$', create_rotation),
|
||||||
url(r'^infoscreen/delete_rotation/(?P<id>\d+)$', delete_rotation),
|
url(r'^infoscreen/delete_rotation/(?P<id>\d+)$', delete_rotation),
|
||||||
|
|||||||
Reference in New Issue
Block a user