From fc22711a9caf84fe2a2acf2f019d2a83f5f591f9 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Wed, 27 Jan 2016 21:18:15 +0100 Subject: [PATCH 1/2] Check if user is allowed to see detail view link in agenda list. Fixes #1886 --- openslides/agenda/static/js/agenda/site.js | 17 ++++++++++++++++- .../static/templates/agenda/item-list.html | 5 ++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/openslides/agenda/static/js/agenda/site.js b/openslides/agenda/static/js/agenda/site.js index af6cad44a..48f0116ba 100644 --- a/openslides/agenda/static/js/agenda/site.js +++ b/openslides/agenda/static/js/agenda/site.js @@ -71,12 +71,13 @@ angular.module('OpenSlidesApp.agenda.site', ['OpenSlidesApp.agenda']) '$scope', '$http', '$state', + 'operator', 'ngDialog', 'Agenda', 'AgendaTree', 'Customslide', 'Projector', - function($scope, $http, $state, ngDialog, Agenda, AgendaTree, Customslide, Projector) { + function($scope, $http, $state, operator, ngDialog, Agenda, AgendaTree, Customslide, Projector) { // Bind agenda tree to the scope $scope.$watch(function () { return Agenda.lastModified(); @@ -85,6 +86,20 @@ angular.module('OpenSlidesApp.agenda.site', ['OpenSlidesApp.agenda']) }); $scope.alert = {}; + // check open permission + $scope.isAllowedToSeeOpenLink = function (item) { + var collection = item.content_object.collection; + switch (collection) { + case 'core/customslide': + return operator.hasPerms('core.can_manage_projector'); + case 'motions/motion': + return operator.hasPerms('motions.can_see'); + case 'assignments/assignment': + return operator.hasPerms('assignments.can_see'); + default: + return false; + } + } // open new dialog $scope.newDialog = function () { ngDialog.open({ diff --git a/openslides/agenda/static/templates/agenda/item-list.html b/openslides/agenda/static/templates/agenda/item-list.html index 122ded0be..056d65e77 100644 --- a/openslides/agenda/static/templates/agenda/item-list.html +++ b/openslides/agenda/static/templates/agenda/item-list.html @@ -135,9 +135,12 @@ - + {{ item.getListViewTitle() }} + + {{ item.getListViewTitle() }} +
From 3c7d03547c5bc8cfa9b089cc671ddc321c87a08a Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Wed, 27 Jan 2016 21:31:06 +0100 Subject: [PATCH 2/2] Set default of item.weigth to 10000. So new items are placed at the end of agenda. After sorting weight is updated. --- .../migrations/0003_auto_20160127_2136.py | 20 +++++++++++++++++++ openslides/agenda/models.py | 2 +- openslides/agenda/static/js/agenda/site.js | 2 +- tests/integration/agenda/test_viewsets.py | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 openslides/agenda/migrations/0003_auto_20160127_2136.py diff --git a/openslides/agenda/migrations/0003_auto_20160127_2136.py b/openslides/agenda/migrations/0003_auto_20160127_2136.py new file mode 100644 index 000000000..06f8a2f77 --- /dev/null +++ b/openslides/agenda/migrations/0003_auto_20160127_2136.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.1 on 2016-01-27 21:36 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('agenda', '0002_auto_20160122_2318'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='weight', + field=models.IntegerField(default=10000), + ), + ] diff --git a/openslides/agenda/models.py b/openslides/agenda/models.py index 312fc7f89..1a9a5e9b4 100644 --- a/openslides/agenda/models.py +++ b/openslides/agenda/models.py @@ -233,7 +233,7 @@ class Item(RESTModelMixin, models.Model): The parent item in the agenda tree. """ - weight = models.IntegerField(default=0) + weight = models.IntegerField(default=10000) """ Weight to sort the item in the agenda. """ diff --git a/openslides/agenda/static/js/agenda/site.js b/openslides/agenda/static/js/agenda/site.js index 48f0116ba..b67270a53 100644 --- a/openslides/agenda/static/js/agenda/site.js +++ b/openslides/agenda/static/js/agenda/site.js @@ -99,7 +99,7 @@ angular.module('OpenSlidesApp.agenda.site', ['OpenSlidesApp.agenda']) default: return false; } - } + }; // open new dialog $scope.newDialog = function () { ngDialog.open({ diff --git a/tests/integration/agenda/test_viewsets.py b/tests/integration/agenda/test_viewsets.py index 05a87ee0a..b66f721de 100644 --- a/tests/integration/agenda/test_viewsets.py +++ b/tests/integration/agenda/test_viewsets.py @@ -244,6 +244,7 @@ class Numbering(TestCase): self.client.login(username='admin', password='admin') self.item_1 = CustomSlide.objects.create(title='test_title_thuha8eef7ohXar3eech').agenda_item self.item_1.type = Item.AGENDA_ITEM + self.item_1.weight = 1 self.item_1.save() self.item_2 = CustomSlide.objects.create(title='test_title_eisah7thuxa1eingaeLo').agenda_item self.item_2.type = Item.AGENDA_ITEM