Modify coffeeinfoitem into generic websiteinfoitem

Resolve #31
This commit is contained in:
Joel Lavikainen
2017-03-08 18:29:01 +02:00
parent 404b1411af
commit 306a5b48a1
11 changed files with 79 additions and 27 deletions
+2 -2
View File
@@ -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
View File
@@ -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")
-4
View File
@@ -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>
-10
View File
@@ -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
View File
@@ -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)