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 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
View File
@@ -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")
-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) { 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
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 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
View File
@@ -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),