+2
-2
@@ -1,6 +1,6 @@
|
||||
from django.contrib import admin
|
||||
from infoscreen.models import Rotation, InfoItem, InfoInstance, ImageInfoItem, ExternalImageInfoItem, ABBInfoItem
|
||||
from infoscreen.models import CoffeeInfoItem
|
||||
from infoscreen.models import ExternalWebsiteInfoItem
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(Rotation)
|
||||
@@ -9,4 +9,4 @@ admin.site.register(ImageInfoItem)
|
||||
admin.site.register(ExternalImageInfoItem)
|
||||
admin.site.register(ABBInfoItem)
|
||||
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():
|
||||
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):
|
||||
return "/static/html/coffee.html"
|
||||
return "/static/html/external_website.html?url={}".format(self.name)
|
||||
|
||||
@staticmethod
|
||||
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):
|
||||
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) {
|
||||
$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)
|
||||
}
|
||||
});
|
||||
app.controller('infoadmin_coffeeitem_create', function($scope, $http,ItemList){
|
||||
app.controller('infoadmin_websiteitem_create', function($scope, $http,ItemList){
|
||||
$scope.item = {}
|
||||
$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);
|
||||
}
|
||||
});
|
||||
|
||||
//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){
|
||||
$scope.jobs = [];
|
||||
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 ABBInfoItem, ExternalImageInfoItem, ImageInfoItem, SossoInfoItem, HslInfoItem
|
||||
from infoscreen.models import CoffeeInfoItem
|
||||
from infoscreen.models import ExternalWebsiteInfoItem
|
||||
from infoscreen.models import ImageUploadForm
|
||||
from infoscreen.models import HSLDataModel
|
||||
from infoscreen.hsl_fetcher import HSLFetcher
|
||||
@@ -206,10 +206,12 @@ def CurrentHSLView(request, *args, **kwargs):
|
||||
|
||||
return HttpResponse(data[len(data) - 1].data, status=200)
|
||||
|
||||
|
||||
|
||||
createInstance = create_item_generator(InfoInstance)
|
||||
deleteInstance = delete_item_generator(InfoInstance)
|
||||
createABBItem = create_item_generator(ABBInfoItem)
|
||||
createSossoItem = create_item_generator(SossoInfoItem)
|
||||
createHslItem = create_item_generator(HslInfoItem)
|
||||
createExternalImageInfoItem = create_item_generator(ExternalImageInfoItem)
|
||||
createCoffeeItem = create_item_generator(CoffeeInfoItem)
|
||||
createExternalWebsiteItem = create_item_generator(ExternalWebsiteInfoItem)
|
||||
|
||||
Reference in New Issue
Block a user