Commit Graph

43 Commits

Author SHA1 Message Date
FinnStutzenstein
5aef823807 Major cache rewrite:
- Removed the restricted data cache (it wasn't used since OS 3.0)
- unify functions for restricted and full data: Just one function, which
  accteps an optional user_id: If it is None, full data is returned, and
  with a user id given, the restricted data
- More atomic access to redis, especially for:
- Check for data-existance in redis and do an auto-ensure-cache.
- Speedup through hashing of scripts and redis' script cache.
- Save schema version into the redis cache and rebuild, if the version
  changed

Client changes:
- Simplified the ConstantsService
- Fixed bug, when receiving an autoupdate with all_data=True from the
  Server
2019-08-08 08:35:02 +02:00
FinnStutzenstein
6d027f0f75 Compression: Sending compressed messages 2019-06-12 08:25:25 +02:00
FinnStutzenstein
5ad94cb2f4 Handles 'change id too high' and generic websocket error message format 2019-05-15 14:25:54 +02:00
FinnStutzenstein
ecdfdf4b87 Resort python import for isort 4.3.11 (fixes #4467)
One dot imports are again behind two dot imports since this new isort
release.
2019-03-06 14:54:03 +01:00
Oskar Hahn
dd4754d045 Disable the future-lock when updating the restircted data cache
Before this commit, there where two different locks when updating the restricted
data cache. A future lock, what is faster but only works in the same thread. The
other lock is in redis, it is not so fast, but also works in many threads.

The future lock was buggy, because on a second call of update_restricted_data
the same future was reused. So on the second run, the future was already done.

I don't see any way to delete. The last client would have to delete it, but there
is no way to find out which client the last one is.
2019-03-04 21:37:00 +01:00
Oskar Hahn
014b145b0f Opens the websocket connection before closing it
Fixes #4009
2019-01-25 16:33:45 +01:00
Oskar Hahn
11ba7b9841 Autoupdate on element deletion
Make sure, that a related element gets an autoupdate, when the main object is deleted
2019-01-19 14:46:59 +01:00
Oskar Hahn
c37bf0fb4f New Projector
* Change Projector model
* Remove old http requests
* Remove old config values
* Remove uuid from config field
* Remove projector broadcast
* Remove projector blank
* Fix serializer
2019-01-19 08:19:40 +01:00
Finn Stutzenstein
8bd24d690d
Merge pull request #4118 from FinnStutzenstein/notify
Make OS3 notify ready
2019-01-18 17:55:24 +01:00
Oskar Hahn
b329115007 use f-string syntax for strings 2019-01-18 17:37:36 +01:00
FinnStutzenstein
47a09e4bce Make OS3 notify ready 2019-01-18 17:03:09 +01:00
Oskar Hahn
5127d659db Add the projector config into the data send via websocket 2019-01-18 15:38:20 +01:00
Oskar Hahn
a0f554674b New projector system. Add first slides 2019-01-12 21:21:43 +01:00
Oskar Hahn
eddbd86d3a Run black 2019-01-08 21:51:52 +01:00
Norman Jäckel
060856628b OpenSlides history mode.
Also containing auth check and viewpoint to clear history.
2018-11-30 09:51:10 +01:00
Oskar Hahn
67d933a206 fix douple elements 2018-11-18 07:57:44 +01:00
Oskar Hahn
8ee9fb1742 Set websocket url to /ws
The routing is desided by protocol
2018-11-09 09:15:59 +01:00
Oskar Hahn
eead4efe6a Remove CollectionElement
* Use user_id: int instead of Optional[CollectionElment] in utils
* Rewrote autoupdate system without CollectionElement
2018-11-04 01:06:01 +01:00
Oskar Hahn
93dfd9ef67
Merge pull request #3973 from ostcar/test_with_redis
add possebility to run tests with redis
2018-11-03 20:54:55 +01:00
Oskar Hahn
f4f3ab9c49
Merge pull request #3972 from ostcar/websocket_use_restricted_data
Fix error, that user get full_data when restricted_data_cache was enabled
2018-11-03 20:53:52 +01:00
Oskar Hahn
cd34d30866 Remove utils.collections.Collection class and other cleanups
* Activate restricted_data_cache on inmemory cache
* Use ElementCache in rest-api get requests
* Get requests on the restapi return 404 when the user has no permission
* Added async function for has_perm and in_some_groups
* changed Cachable.get_restricted_data to be an ansync function
* rewrote required_user_system
* changed default implementation of access_permission.check_permission to
  check a given permission or check if anonymous is enabled
2018-11-03 20:48:19 +01:00
Oskar Hahn
d11c7bbad7 add possebility to run tests with redis 2018-11-03 16:59:21 +01:00
Oskar Hahn
6480f1cee9 Fix error, that user got full_data when restricted_data_cache was enabled 2018-11-03 14:37:47 +01:00
Oskar Hahn
b97e643b33 Fix error on to big change id on websocket connection 2018-11-02 05:12:20 +01:00
Oskar Hahn
0229bb923d Move websocket protocoll in apps 2018-10-29 12:33:15 +01:00
Oskar Hahn
b9e24016c1 Add test for second getElement request 2018-10-27 14:56:22 +02:00
Oskar Hahn
e7d14a8081 Change_id API
* Improve AutoUpdateFormat
* Receive autoupdate requested via websocket
* Support change_id in query string
* Disable autoupdate at default
* Add websocket protocoll to turn on or off autoupdate
2018-10-26 06:30:01 +02:00
Oskar Hahn
5b5d0e395a new autoupdate format 2018-10-19 07:35:59 +02:00
Oskar Hahn
9af6bf1606 ensures test on startup 2018-09-23 16:57:49 +02:00
Oskar Hahn
732de97ec2 Make Consumer real async again 2018-09-04 08:57:50 +02:00
Norman Jäckel
7dd7bb1b8d
Merge pull request #3807 from ostcar/websocket_protocol
Add a protocol for websocket
2018-08-23 21:15:48 +02:00
Oskar Hahn
fed6d6f435 Add a protocol for websocket
{'type': STRING, 'content': ANY}
2018-08-23 21:02:52 +02:00
Oskar Hahn
aac9dcabf5 drop python 3.5 2018-08-23 17:51:30 +02:00
Oskar Hahn
10b3bb6497 Update to channels 2
* geis does not work with channels2 and never will be (it has to be python now)
* pytest
* rewrote cache system
* use username instead of pk for admin user in tests
2018-08-22 06:30:11 +02:00
Norman Jäckel
d381ca36dd Added autoupdate bundle middleware. 2018-01-25 23:09:28 +01:00
Norman Jäckel
aaeb85db61 Split send_data channel into send_data_projector and send_data_site for projector prioritization. Fixed #3426. 2018-01-20 11:07:28 +01:00
Oskar Hahn
d7db714562 CollectionElement and Autoupdate cleanups
* change get_restricted_data and get_projector_data to always use a list
* Add typings to all get_restricted_data and get_projector_data methods
* Replace CollectionElementList with a real list
* Fixed arguments of inform_deleted_data
* Moved CollectionElementCache to cache.py and refactored it
* Run tests with cache enabled (using fakeredis)
2017-09-15 12:11:32 +02:00
Oskar Hahn
87b889fbf2 Rewrite config to have id field 2017-08-24 15:02:42 +02:00
Oskar Hahn
26b7f2879c Let CollectionElement fail early
Fixes #2835
Fixes #2904
2017-02-12 14:15:58 +01:00
Oskar Hahn
728576d514 Performance improvements
* Add caching support to users/group
* Add a function has_perm that works with the cache.
* Removed our session backend so other session backends (without the database) can be used
2017-01-13 13:37:18 +01:00
Oskar Hahn
e209dd6dfe Support to send many objects through the autoupdate system 2016-10-04 18:10:04 +02:00
Oskar Hahn
368873e738 Adds a cache system to the CollectionElement and add
a Collection class that can be used to call a collection
used this for the list and receive rest api.
2016-09-30 21:37:52 +02:00
Oskar Hahn
fe64941aab Big Mode for OpenSlides
Uses django channels instead of tornado for the autoupdate. Therefore
tornado is nolonger a dependency of OpenSlides (but channels).

This uses websockets instead of SockJS.

Use the flag insecure in the start command to provide static files serving.

Use a new session backend that has a ForeignKey to User.
2016-06-09 11:14:39 +02:00