From 771f087ade207e4429e096396b610a47dd4e5396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Ho=CC=88=C3=9Fl?= Date: Sun, 13 Nov 2016 16:42:56 +0100 Subject: [PATCH] Allow to explicitly set the type of a change recommendation --- openslides/core/static/js/core/site.js | 8 ++++++++ .../static/templates/core/radio-buttons.html | 6 ++++++ .../0009_motionchangerecommendation_type.py | 20 +++++++++++++++++++ openslides/motions/models.py | 3 +++ openslides/motions/serializers.py | 1 + openslides/motions/static/js/motions/base.js | 9 +-------- openslides/motions/static/js/motions/site.js | 12 +++++++++++ 7 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 openslides/core/static/templates/core/radio-buttons.html create mode 100644 openslides/motions/migrations/0009_motionchangerecommendation_type.py diff --git a/openslides/core/static/js/core/site.js b/openslides/core/static/js/core/site.js index c4ef29d96..61bd8a7f2 100644 --- a/openslides/core/static/js/core/site.js +++ b/openslides/core/static/js/core/site.js @@ -470,6 +470,14 @@ angular.module('OpenSlidesApp.core.site', [ extends: 'select', templateUrl: 'static/templates/core/select-multiple.html' }); + formlyConfig.setType({ + name: 'radio-buttons', + templateUrl: 'static/templates/core/radio-buttons.html', + wrapper: ['bootstrapHasError'], + defaultOptions: { + noFormControl: false + } + }); } ]) diff --git a/openslides/core/static/templates/core/radio-buttons.html b/openslides/core/static/templates/core/radio-buttons.html new file mode 100644 index 000000000..72df2be91 --- /dev/null +++ b/openslides/core/static/templates/core/radio-buttons.html @@ -0,0 +1,6 @@ +
+ +
diff --git a/openslides/motions/migrations/0009_motionchangerecommendation_type.py b/openslides/motions/migrations/0009_motionchangerecommendation_type.py new file mode 100644 index 000000000..b9dc7b5ea --- /dev/null +++ b/openslides/motions/migrations/0009_motionchangerecommendation_type.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-11-19 10:29 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('motions', '0008_auto_20161116_2222'), + ] + + operations = [ + migrations.AddField( + model_name='motionchangerecommendation', + name='type', + field=models.PositiveIntegerField(default=0), + ), + ] diff --git a/openslides/motions/models.py b/openslides/motions/models.py index 3a027f02f..ea90dfa55 100644 --- a/openslides/motions/models.py +++ b/openslides/motions/models.py @@ -760,6 +760,9 @@ class MotionChangeRecommendation(RESTModelMixin, models.Model): rejected = models.BooleanField(default=False) """If true, this change recommendation has been rejected""" + type = models.PositiveIntegerField(default=0) + """Replacement (0), Insertion (1), Deletion (2)""" + line_from = models.PositiveIntegerField() """The number or the first affected line""" diff --git a/openslides/motions/serializers.py b/openslides/motions/serializers.py index 03761a257..61b081eac 100644 --- a/openslides/motions/serializers.py +++ b/openslides/motions/serializers.py @@ -251,6 +251,7 @@ class MotionChangeRecommendationSerializer(ModelSerializer): 'id', 'motion_version', 'rejected', + 'type', 'line_from', 'line_to', 'text', diff --git a/openslides/motions/static/js/motions/base.js b/openslides/motions/static/js/motions/base.js index d09ace0b0..0625b50ba 100644 --- a/openslides/motions/static/js/motions/base.js +++ b/openslides/motions/static/js/motions/base.js @@ -616,14 +616,7 @@ angular.module('OpenSlidesApp.motions', [ return diffService._serializeDom(mergedFragment); }, getType: function(original_full_html) { - var lineLength = Config.get('motions_line_length').value, - html = lineNumberingService.insertLineNumbers(original_full_html, lineLength); - - var data = diffService.extractRangeByLineNumbers(html, this.line_from, this.line_to), - oldText = data.outerContextStart + data.innerContextStart + - data.html + data.innerContextEnd + data.outerContextEnd; - - return diffService.detectReplacementType(oldText, this.text); + return this.type; }, getTitle: function(original_full_html) { var title; diff --git a/openslides/motions/static/js/motions/site.js b/openslides/motions/static/js/motions/site.js index bfe0acc47..3edac1a72 100644 --- a/openslides/motions/static/js/motions/site.js +++ b/openslides/motions/static/js/motions/site.js @@ -346,6 +346,18 @@ angular.module('OpenSlidesApp.motions.site', [ }, hide: true }, + { + key: 'type', + type: 'radio-buttons', + templateOptions: { + name: 'type', + options: [ + {name: gettextCatalog.getString('Replacement'), value: 0}, + {name: gettextCatalog.getString('Insertion'), value: 1}, + {name: gettextCatalog.getString('Deletion'), value: 2} + ] + } + }, { key: 'text', type: 'editor',