From 8ef7dceb8bb189982ab0450825fd15cf802cdef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emanuel=20Sch=C3=BCtze?= Date: Thu, 12 Sep 2019 23:29:54 +0200 Subject: [PATCH] Prepared 3.0 release Updated CHANGELOG, README, DEVELOPMENT, LICENSE and MANIFEST. --- CHANGELOG.rst | 129 ++++++++++++++++++++++++++++++++---------------- DEVELOPMENT.rst | 8 +-- LICENSE | 2 +- MANIFEST.in | 2 +- README.rst | 100 ++++++++++++++++--------------------- 5 files changed, 136 insertions(+), 105 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c30db7be4..a670a56dd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,57 +2,102 @@ CHANGELOG of OpenSlides ========================= -https://openslides.org/ +https://openslides.com -Version 3.0 (unreleased) +Version 3.0 (2019-09-13) ======================== +`Milestone `_ -Core: - - Changed personal settings.py, updated to channels2, complete rework of - startup and caching system, dropped support for Geiss [#3796, #3789]. - - Dropped support for Python 3.5 [#3805]. - - Added a websocket protocol for server client communication using - JSON schema [#3807, #3949]. - - Changed URL schema [#3798]. - - Enabled docs for using OpenSlides with Gunicorn and Uvicorn in big - mode [#3799, #3817]. - - Changed format for elements send via autoupdate [#3926]. - - Fixed autoupdate system for related objects [#4140, #4201]. - - Add a change-id system to get only new elements [#3938]. - - Switch from Yarn back to npm [#3964]. - - Added password reset link (password reset via email) [#3914, #4199]. - - Added global history mode [#3977, #4141, #4369, #4373, #4767]. - - Projector refactoring [4119, #4130]. - - Fixed logo configuration if logo file is deleted [#4374]. +General (Client): + - OpenSlides client completely rewritten, based on Angular 8 and Material Design. + - OpenSlides is now a Progressive Web App (PWA). + - New browser caching via IndexedDB (one cache store for all browser tabs). + - New list views optimized with virtual scrolling (improved performance for long lists). + - New global quick search using by shortcut 'Alt+Shift+F'. + - New built-in design themes for customizing user interface. + - New update notification if OpenSlides static files are updated. + - New config option for pdf page size (DIN A4 or A5). + - Added TinyMCE 5 editor (switched from CKEditor caused by changed license). + - Switched from yarn/gulp to npm. + - Improved pdf gerneration with progress bar and cancel option. + - Translations available for EN, DE, RU and CS. + +General (Server): + - New websocket protocol for server client communication using JSON schema. + - New change-id system to send only updated elements to client. + - New global history mode (useable for admin group only). + - Updated to Channels 2. + - Dropped support for Python 3.5. + - Dropped support for Geiss. + - Complete rework of startup and caching system. Dropped restricted data cache. + - Changed URL schema. + - Changed personal settings.py. + - Changed format for elements send via autoupdate. + - Changed projector concept. + - Compressed autoupdates before sending to clients (reduced traffic). + - Fixed autoupdate system for related objects. + - Fixed logo configuration if logo file is deleted. + - Added several bulk views for motions and users (one request for updating multiple selected elements). + - Added docs for using OpenSlides in 'big mode' with Gunicorn and Uvicorn. + - Added docs for configure OpenSlides in settingy.py. + - Dropped chat functionality. + - Server performance improvements. Agenda: - - Added viewpoint to assign multiple items to a new parent item [#4037]. + - Agenda items are now optional (for motions, elections and mediafiles). New config to set default behavior. + - New drag&drop view to sort agenda items. + - New config option: only present participants can be added to list of speakers. + - New config option to hide number of speakers on projector. Motions: - - Option to customly sort motions [#3894]. - - Added support for adding a statute [#3894]. - - Added new permission to manage metadata, i. e. set motion state, set and - follow recommendation, manage submitters and supporters, change motion - category, motion block and origin and manage motion polls [#3913]. - - Added new permission to create amendments [#4128]. - - Added new flag to motion state to control access restrictions for different - users. Added new permission to see motions in some internal state - [#4235, #4518, #4521]. - - Allowed submitters to set state of new motions in complex and customized - workflow. Changed default workflows. No migration provided [#4236, #4703]. - - Added multi select action to manage submitters, categories, motion blocks, - tags, states and recommendations [#4037, #4132, #4702]. - - Added timestampes for motions [#4134]. - - New config option to set reason as required field [#4232]. - - Added subcategories and altered behaviour of motion numbering in - categories: Motions of subcategories are also numbered, and parents of - amendments needs to be in the numbered category or any subcategory [#4756]. + - New call list for custom sort of motions. + - New tile layout view with all categories (each category a tile). + - New statute motions with managing statute paragraphs. + - New permission to manage metadata (state, recommendation, submitters and supporters, category, + motion block and polls). + - New permission to create amendments. + - New permission to see motions in internal states. + - New access restrictions definable for each motion state in workflow. + - New 'internal' option for motion blocks. + - New sorting view for categories to create subcategories. + - New custom comment fields for all motions (read/write access can be managed via permission groups). + - New motion history (each action is stored in global OpenSlides history which can be restored any time, + replaced old motion version and log features). + - New XLSX export (docx support is dropped). + - New navigation for next/previous motion in detail view (shortcut: 'Alt+Shift+Left/Right'). + - New multi select actions. + - New timestampes for motions (for sorting by creation date and last modified). + - New config option to set reason as required field. + - New config option to change multiple paragraphs with an amendment. + - New config option to hide motion text on projector. + - New config option to show sequential number. + - New config option to show all motions which are referred to a special motion. + - New config option to show submitters and recommendation in table of contents of PDF. + - New config options to control identifier generation - number of digits and blanks (moved from settings.py). + - Improved PDF export (optional with toc, page numbers, date, comments and meta information) + - Improved motion numbering in (sub)categories: Motions of subcategories are also numbered, and parents of + amendments needs to be in the numbered category or any subcategory. + - Improved projection layout of motion blocks. + - Changed default workflows: Allowed submitters to set state of new motions in complex and customized workflow. + No migration provided. + - Change CSV import to add tags. User: - - Added new admin group which grants all permissions. Users of existing group - 'Admin' or 'Staff' are move to the new group during migration [#3859]. - - Added new permission to set its own password [#4131]. - - Added gender field [#4124]. + - New admin group which grants all permissions. Users of existing group 'Admin' or 'Staff' are move to the + new group during migration. + - New gender field. + - New password forget/reset function via email. + - New permission to change own password. + - New config option for sender name and reply email address (From address is defined in settings.py). + +Mediafiles: + - New support for (sub)folders and permission groups. + +Projector: + - New views to list, manage and control created OpenSlides projectors. + - New projector queue (add slide to queue), all projected slides are logged. + - New chyron for current speaker. + - New color settings for each projector. Version 2.3 (2018-09-20) diff --git a/DEVELOPMENT.rst b/DEVELOPMENT.rst index 154082afe..8e88540f7 100644 --- a/DEVELOPMENT.rst +++ b/DEVELOPMENT.rst @@ -172,9 +172,11 @@ README.md using following command:: OpenSlides in big mode ====================== -In the so called big mode you should use OpenSlides with Redis, PostgreSQL and -a webserver like Apache HTTP Server or NGINX as proxy server in front of your -OpenSlides interface server. +To install OpenSlides for big assemblies (in 'big mode') you have to setup some +additional components and configurations. In the 'big mode' you should use a webserver +like NGINX to serve the static and media files as proxy server in front of your OpenSlides +interface server. You should also use a database like PostgreSQL. Use Redis as channels backend, +cache backend and session engine. Finally you should use gunicorn with uvicorn as interface server. 1. Install and configure PostgreSQL and Redis diff --git a/LICENSE b/LICENSE index 91832dba8..8213f33c7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2011-2018 Authors of OpenSlides, see AUTHORS +Copyright (c) 2011-2019 Authors of OpenSlides, see AUTHORS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/MANIFEST.in b/MANIFEST.in index 420be0de1..da73313a7 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,8 +2,8 @@ include AUTHORS include CHANGELOG include LICENSE include README.rst +include SETTINGS.rst include requirements/production.txt include requirements/big_mode.txt -include bower.json recursive-include openslides *.* exclude openslides/__pycache__/* diff --git a/README.rst b/README.rst index ac53ed948..791b00c32 100644 --- a/README.rst +++ b/README.rst @@ -7,19 +7,16 @@ What is OpenSlides? OpenSlides is a free, web based presentation and assembly system for managing and projecting agenda, motions and elections of an assembly. See -https://openslides.org/ for more information. - - -Requirements -============ - -The OpenSlides server runs everywhere where Python is running (for example on -GNU/Linux, Mac or Windows). For the OpenSlides client a current webbrowser is required. +https://openslides.com for more information. Installation ============ +The OpenSlides server runs everywhere where Python is running (for example on +GNU/Linux, Mac or Windows). For the OpenSlides client a current web browser is required. + + 1. Installation on GNU/Linux or Mac OS X ---------------------------------------- @@ -66,7 +63,7 @@ This installs the latest stable version. To install a specific (beta) version use ``openslides==x.y``. You can also use the package from the `OpenSlides website -`_. Download latest OpenSlides release as +`_. Download latest OpenSlides release as compressed tar archive and run:: $ pip install openslides-x.y.tar.gz @@ -110,9 +107,40 @@ instances of OpenSlides:: 2. Installation on Windows -------------------------- -Download the latest portable version of OpenSlides for Windows from -`OpenSlides website `_ which does not require any -install steps. Simply unzip the downloaded file and run ``openslides.exe``. +Follow the instructions above (1. Installation on GNU/Linux or Mac OS X) but care +of the following variations. + +To get Python download and run the latest `Python 3.7 32-bit (x86) executable +installer `_. Note that the 32-bit +installer is required even on a 64-bit Windows system. If you use the 64-bit +installer, step 1c of the instruction might fail unless you installed some +packages manually. + +In some cases you have to install `MS Visual C++ 2015 build tools +`_ before you +install the required python packages for OpenSlides (unfortunately Twisted +needs it). + +To setup and activate the virtual environment in step 1b use:: + + > .virtualenv\Scripts\activate.bat + +All other commands are the same as for GNU/Linux and Mac OS X. + + +3. Installation with Docker +--------------------------- + +The installation instruction for (1) and (2) described a way to use OpenSlides in a +'small mode' with max 10 concurrent clients. To install OpenSlides for big assemblies +('big mode') you have to setup some additional components and configurations. + +The easiest way to run the OpenSlides 'big mode' environment (with PostgreSQL, Redis +and NGINX) with Docker Compose: use our docker compose suite. Follow the instruction in +the `openslides-doccker-compose Repository `_. + +To install and configure all components of our 'big mode' manually you can read the +`big-mode-instruction `_ Configuration @@ -124,58 +152,14 @@ find out about all configurations, especially when using OpenSlides for big assemblies. -Using the Dockerfile -==================== - -You can either pull the image ``openslides/openslides`` or build it yourself -(via `docker build -t openslides/openslides .`). You have all prequistes installed -it to start a quick server. To see how it should be used to setup an -production environment, see `openslides-docker -`_. - -You can start a quick-setup (not for production purposes, only local testing) with: - - $ docker run -v /path/to/save/something:/app/personal_data -p 4200:4200 openslides/openslides /bin/bash -c "python manage.py createsettings && python manage.py migrate && (python manage.py runserver & (cd client && npm start))" - - Development =========== -If you want to contribute to OpenSlides, have a look at `OpenSlides website -`_ and write us an email. There is also an -`instruction to install the development version +To setup a development environment for OpenSlides follow the instruction of +`DEVELOPMENT.rst `_. -Installation for big assemblies -=============================== - -The installation steps described above install OpenSlides in a way that -does NOT support hundreds of concurrent clients. To install OpenSlides for -big assemblies some variables have to be changed in the OpenSlides settings -file (usually called settings.py). - -The configuration values that have to be altered are: - -* CHANNEL_LAYERS -* DATABASES -* SESSION_ENGINE -* REDIS_ADDRESS - -You should use a webserver like Apache HTTP Server or nginx to serve the -static and media files as proxy server in front of your OpenSlides -interface server. You also should use a database like PostgreSQL and Redis -as channels backend, cache backend and session engine. Finally you should -use gunicorn with uvicorn as interface server. - -Please see the respective section in the `DEVELOPMENT.rst -`_ and: - -* https://channels.readthedocs.io/en/latest/deploying.html -* https://github.com/sebleier/django-redis-cache -* https://docs.djangoproject.com/en/1.10/ref/settings/#databases - - Used software =============