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
Finn Stutzenstein
72e3df8b65
Merge pull request #3928 from normanjaeckel/StripResponse
...
Strip out response.data.
2018-11-01 07:59:59 +01:00
Norman Jäckel
30c0773838
Split up autoupdate functions (sync and async).
2018-10-30 13:07:24 +01:00
Oskar Hahn
b034839ac8
Remove old projector code
2018-10-29 13:10:15 +01:00
Oskar Hahn
0229bb923d
Move websocket protocoll in apps
2018-10-29 12:33:15 +01:00
Norman Jäckel
6441347d10
Strip out response.data.
2018-10-29 08:52:52 +01:00
Oskar Hahn
c405b4b323
Use Protocol instead of ABC in cache_provicer
2018-10-28 10:37:16 +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
9eef4da21c
remove old client
2018-10-25 16:04:28 +02:00
Oskar Hahn
5b5d0e395a
new autoupdate format
2018-10-19 07:35:59 +02:00
Oskar Hahn
bc442210fb
Improve redis cache
...
* delete only keys with prefix
* Make redis_provider atomic with transactions and lua scripts
* improve lock
* generate change_id in redis to make sure it is uniq
* use miliseconds as starttime
* add argument use max_change_id to get_{full|resticted}_data
2018-10-15 23:37:26 +02:00
FinnStutzenstein
1e4eacecfd
New superadmin group
2018-10-12 07:58:18 +02:00
Oskar Hahn
9af6bf1606
ensures test on startup
2018-09-23 16:57:49 +02:00
FinnStutzenstein
f1ddd16dc6
Motion rework
...
- remove motion version
- migrations for versions and change recommendations
- Redone motion comments. Wording changed from comment fields to comment
sections
- fixed test order, tests are not atomic
- introduce get_group_model. Just use OpenSlides Groups and not the
django's ones.
2018-09-10 09:00:55 +02:00
Oskar Hahn
732de97ec2
Make Consumer real async again
2018-09-04 08:57:50 +02:00
FinnStutzenstein
8adaa6118a
Angular constants via WebSocket
...
- new format for constants on the server
- adaptions for the old client
2018-09-04 08:57:11 +02:00
Oskar Hahn
dc7ca5e2c4
fix empty values in rest
2018-08-24 12:14:02 +02:00
Oskar Hahn
401e7821ae
Merge remote-tracking branch 'upstream/master' into OpenSlides-3
2018-08-23 21:31:24 +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
Norman Jäckel
123b7c702b
Merge pull request #3803 from FinnStutzenstein/voting_decimal_places
...
Support for decimal places in motion and assignment polls
2018-08-23 11:28:26 +02:00
FinnStutzenstein
9bac396b67
Support for decimal places in motion and assignment polls
2018-08-23 08:53:59 +02:00
Norman Jäckel
48a2a3fe53
Fixed settings creation for windows.
2018-08-22 16:51:46 +02:00
Norman Jäckel
07ffb3b6c5
Fixed settings creation for windows.
2018-08-22 12:39:59 +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
FinnStutzenstein
78dab97673
Use newer version of django-redis-sessions, new settings format
2018-08-15 11:37:20 +02:00
Oskar Hahn
92a39a3fc6
support python 3.7
...
fix new pep8 stype
2018-08-08 21:46:56 +02:00
Oskar Hahn
acceeff8f8
* Update python requirements
...
* drop python 3.4
2018-08-07 15:23:11 +02:00
FinnStutzenstein
9e4cafd0f0
Custom workflows and states:
...
- Added new workflow list view
- Added state table for each workflow
- Added new StateViewSet to handle states of workflows
2018-07-13 10:29:06 +02:00
FinnStutzenstein
252ba02e86
Scroll projector to a given line
2018-06-12 13:02:22 +02:00
FinnStutzenstein
2989024cca
Delete restricted data cache on permission changes ( closes #3396 )
2018-05-16 10:59:00 +02:00
FinnStutzenstein
83edfc2af0
Remove projector from projector-all
2018-04-24 11:20:15 +02:00
FinnStutzenstein
10038b782f
One request for each projection. Added some validation for clear_elements and prune_elements
2018-04-24 10:23:28 +02:00
Emanuel Schütze
ba579637bd
Merge pull request #3684 from FinnStutzenstein/fixMypy
...
Fixed mypy for utils/migration.py
2018-04-05 09:02:05 +02:00
FinnStutzenstein
23a7481277
Fixed mypy for utils/migration.py.
2018-04-04 15:47:13 +02:00
Emanuel Schütze
0710af827e
Merge pull request #3600 from ostcar/cache-api
...
Cache api
2018-04-04 13:41:27 +02:00
FinnStutzenstein
ad5c81a3db
fixed indentions and wrong line breaks in pdf, remove every tab in html ( fixes #3678 )
2018-03-25 11:10:17 +02:00
FinnStutzenstein
b081401d57
Adding new permission to groups during migration from 2.1.1 to 2.2
2018-03-12 14:11:20 +01:00
FinnStutzenstein
aacdc29394
Added --no-template-caching
2018-03-05 11:55:15 +01:00
Oskar Hahn
5aa8f6193e
Add methods to delete the restricted_data_cache
2018-02-24 18:04:32 +01:00
Oskar Hahn
c47d054c67
Activate the restricted_data_cache again.
...
restricted_data_cache.update_element(...) only adds an element to the cache, when
there are already other elements in the cache. So then add_element is never used,
the cache is never created.
2018-02-24 16:57:18 +01:00
Oskar Hahn
6c3ae7cb4e
fix mypy
2018-02-24 16:38:17 +01:00
FinnStutzenstein
3ba39c37c1
Agenda DOCX export, motion log message when comment edited, motion sequential number in detail view and PDF, save pagination state to session storage ( fixes #3558 ).
2018-02-14 10:25:51 +01:00
Emanuel Schütze
9c4a8cc7fc
Merge pull request #3539 from normanjaeckel/BundleAutoupdate
...
Added autoupdate bundle middleware.
2018-01-26 15:23:32 +01:00
Norman Jäckel
d381ca36dd
Added autoupdate bundle middleware.
2018-01-25 23:09:28 +01:00
FinnStutzenstein
60b6ef1415
Repair the master
2018-01-23 14:02:16 +01:00
FinnStutzenstein
5e089bfcdc
Preparations for the SAML plugin; Fixed caching of main views.
2018-01-21 11:54:01 +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
Emanuel Schütze
2fe1218fbb
Merge pull request #3503 from FinnStutzenstein/emailTest
...
Send invitation emails
2017-12-15 08:29:09 +01:00
FinnStutzenstein
2220112d27
Send invitation emails with OpenSlides login.
2017-12-15 08:16:29 +01:00
Norman Jäckel
912876c895
Merge pull request #3505 from FinnStutzenstein/legalNotice
...
extended the legal notice page (fixes #3504 )
2017-12-11 21:49:00 +01:00
Emanuel Schütze
3d264683ff
Assignment improvements
...
- Use ckeditor for assignment description field (e.g. for candidatures
using html).
- Use 2 decimal places for percentage of voting results (motions/assignments)
- Allow css style attributes 'float' and 'padding'.
- Remove progress bar in election result slide to get more space (height)
for candidate rows.
2017-12-05 14:04:35 +01:00
FinnStutzenstein
a998657923
extended the legal notice page ( fixes #3504 )
2017-12-05 07:55:12 +01:00
Emanuel Schütze
279c2ba796
Adds elements to restricted data cache only if cache already exists (hotfix for #3427 ).
...
Prevents corrupt cache if restricted data cache is cleared while runtime.
2017-11-12 17:39:46 +01:00
FinnStutzenstein
2ba1fe2a0f
Instructions for using Nginx in big mode
2017-09-28 09:35:05 +02:00
FinnStutzenstein
5862e054e3
Naive projector prioritization
2017-09-27 14:46:16 +02:00
FinnStutzenstein
178948b269
Index and Webclient View caching
2017-09-27 12:50:59 +02:00
Emanuel Schütze
6f4d122e0f
Fixed two stylistic remarks.
2017-09-18 09:40:57 +02:00
Emanuel Schütze
b824e0387c
Merge pull request #3390 from ostcar/rewrite_restricted_data
...
CollectionElement and Autoupdate cleanups to help mypy
2017-09-15 12:23:50 +02: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
Emanuel Schütze
4565e7e4a6
Merge pull request #3400 from FinnStutzenstein/UserAutoupdate
...
Autoupdates on user login (fixes #3395 , fixes #3392 )
2017-09-15 11:48:35 +02:00
FinnStutzenstein
16abfd0dbf
Autoupdates on user login ( fixes #3395 , fixes #3392 )
2017-09-15 10:40:04 +02:00
Oskar Hahn
faf44602cb
Make RestrictedDataCache optional
2017-09-15 09:55:21 +02:00
Oskar Hahn
0978cfd5d5
Add restricted_data_cache
...
This replaces the startup cache
2017-09-06 18:06:57 +02:00
Oskar Hahn
b80e95a321
Rewrite projector_element without dispatch
2017-09-05 22:46:13 +02:00
Oskar Hahn
be94e97889
more typings
2017-09-03 18:34:55 +02:00
Oskar Hahn
87b889fbf2
Rewrite config to have id field
2017-08-24 15:02:42 +02:00
Oskar Hahn
9d1ebac86e
Add typing ( #3370 )
...
Add typing
2017-08-23 20:51:06 +02:00
Emanuel Schütze
32c36996b0
Merge pull request #3345 from FinnStutzenstein/testData
...
some changes in the example data plugin
2017-08-14 10:52:45 +02:00
FinnStutzenstein
727d1341e8
some changes in the example data plugin
2017-08-14 09:56:48 +02:00
Tobias Hößl
54e067d9d9
Allow OL[start] - fixes #3339
...
Style
2017-08-02 21:27:12 +02:00
Emanuel Schütze
573fc4da57
Merge pull request #3267 from normanjaeckel/NewPersonalNote
...
Rework on personal notes.
2017-06-16 12:38:40 +02:00
Norman Jäckel
eaebeb8f06
Fixed get_projector_data impementation. Closed #3282 .
2017-06-13 22:21:56 +02:00
Norman Jäckel
91d365e386
Rework on personal notes. Fixed #3262 .
2017-06-13 20:58:17 +02:00
Oskar Hahn
8920ffac66
Block anonymous from websocket, if they are deactivated
2017-06-10 09:25:27 +02:00
Norman Jäckel
ea50971ae6
Fixes autoupdate bug for a user without user.can_see_name permission.
2017-06-07 20:55:00 +02:00
Emanuel Schütze
2994f7713b
Hotfix for issue #3282 .
...
(projector autoupdate problem by deleting projected object)
2017-06-01 14:57:33 +02:00
Norman Jäckel
ebabc291c5
Refactoring of data parsing for startup and autoupdate.
2017-05-03 08:58:29 +02:00
Oskar Hahn
4963bfa7bf
Changed restricted data parsing. Cached full data on startup.
2017-05-01 21:52:16 +02:00
Emanuel Schütze
dd99be5e69
Merge pull request #3221 from normanjaeckel/ChangeKeyError
...
Fixed error for internal function get_model_from_collection_string.
2017-04-27 15:34:39 +02:00
Norman Jäckel
4bdb06bd9b
Fixed error for internal function get_model_from_collection_string.
2017-04-27 15:16:07 +02:00
Emanuel Schütze
9387f83f8a
Merge pull request #3212 from normanjaeckel/Notify
...
Added notify system.
2017-04-27 15:07:15 +02:00
FinnStutzenstein
349505ac3d
Added a warning, if another user edits the same motion.
2017-04-27 13:09:24 +02:00
Oskar Hahn
74c1cc63dc
Open websocket connections immediately
...
Also made a performance boost to get_model_from_collection_string()
2017-04-27 12:54:16 +02:00
Norman Jäckel
bd68997a5d
Added notify system.
2017-04-27 09:30:02 +02:00
Norman Jäckel
21418f632f
Added support for password validation using Django or custom validators e. g. for minimum password length.
2017-04-13 16:20:38 +02:00
Norman Jäckel
14ec6c0f44
Improved autoupdate on permission change.
2017-03-06 17:42:27 +01:00
FinnStutzenstein
bcc85f9cad
Autoupdate on user permission change.
2017-03-06 15:08:23 +01:00
Norman Jäckel
688b247bcc
Added flag to use Geiss. Small changes for the new getgeiss command. Changed path of collected statics.
2017-03-06 14:39:55 +01:00
Oskar Hahn
e3cc592f70
Added the command getgeiss. Work on start script to use Geiss.
2017-03-06 14:39:26 +01:00
Norman Jäckel
89192236fc
Added support for CamelCase to RESTModelMixin. See #2480 .
2017-02-16 13:31:57 +01:00
Norman Jäckel
1a53c7c3cc
Fixed write settings command for Windows portable version. Fixed #2947 .
2017-02-15 17:07:59 +01:00
Oskar Hahn
26b7f2879c
Let CollectionElement fail early
...
Fixes #2835
Fixes #2904
2017-02-12 14:15:58 +01:00
Emanuel Schütze
1230f4a29a
New full text search on client-side ( Fixed #2865 ).
...
Removed server-side search by whoosh.
2017-02-10 22:52:08 +01:00
Emanuel Schütze
3d60238ce1
Fixed dynamic pdf header/footer and table border ( Fixed #2923 ).
...
Updated pdfmake to 0.1.25.
Fixed some pdf style issues.
Updated gulp watch task.
2017-02-03 11:33:46 +01:00
FinnStutzenstein
d55d374211
Prevent XSS-attacks ( fixes #2871 )
2017-01-30 21:04:41 +01:00
Emanuel Schütze
8234340a0c
Merge pull request #2909 from ostcar/rework_auth
...
Created a function to convert anything possible to a user-collection-element or None
2017-01-26 21:42:40 +01:00
Norman Jäckel
ad937aecb3
Typos and small changes.
2017-01-26 21:35:26 +01:00
Oskar Hahn
5dcfc69ff8
Update settings.py.tpl
...
Also the last line of a dict should end with a ',' or with the closing }
2017-01-26 21:17:36 +01:00
Emanuel Schütze
98e6f703e1
Use custom redis prefix for asgi and cache entries.
...
Note: These prefix have to be unique for each OpenSlides instance!
2017-01-26 21:17:32 +01:00
Oskar Hahn
2daafa8db9
Created a function to convert anything possible to a user-collectoin-element or None
...
Changed user.has_perm(...) to has_perm(user, ...) at any place.
Removed old code
2017-01-26 18:57:10 +01:00
Norman Jäckel
df60700612
Merge pull request #2882 from normanjaeckel/ChannelSendWait
...
Let channels' send method wait and retry if channel layer is full.
2017-01-25 16:40:43 +01:00
Oskar Hahn
44474049c3
Added docstrings
2017-01-24 15:16:29 +01:00
Oskar Hahn
fccde8de11
Changed the function has_perm to support an user id or None as the first argument.
...
Also fixt the case, where an anonymous user connects to the websocket connection.
Also added a function anonymous_is_enabled() to see, if the anyonmous user is enabled.
Added pip freeze to travis to see installed versions.
2017-01-24 15:16:29 +01:00
Norman Jäckel
f271d8bb47
Fixed error when running manage.py collectstatic. Fixed #2861 .
2017-01-18 15:33:45 +01:00
Norman Jäckel
bb8748a506
Let channels' send method wait and retry if channel layer is full. Fixed #2353 .
2017-01-15 22:01:09 +01:00
FinnStutzenstein
a6d1eeb9c3
Worked on startup process.
...
- fix group view on reload
2017-01-14 21:23:05 +01:00
Oskar Hahn
ebf686ef34
Send all data to the client at startup
2017-01-14 20:42:38 +01:00
Norman Jäckel
acab868c79
Quickfix for #2865 . The problem is not completely solved.
2017-01-14 17:15:30 +01:00
Oskar Hahn
1dc671430a
Fix channels
2017-01-13 20:53:06 +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
97b21427aa
Change the way that missing cache ids are found.
...
This is probalby faster but in any way it maks debugging a lot easier. To go though
a big list in a for-loop is no fun at all.
2017-01-10 20:50:44 +01:00
Emanuel Schütze
41124a53ca
Add new personal settings MOTIONS_ALLOW_AMENDMENTS_OF_AMENDMENTS.
...
Set settings value to False to disable new amendment button in motion detail
template. Default: True.
2017-01-09 14:25:28 +01:00
Emanuel Schütze
f4d468a6f6
Add new personal settings MOTION_IDENTIFIER_WITHOUT_BLANKS.
...
Allow to remove all whitespaces from motion identifier if settings
value is True. Default: False.
Example: "B 1 - Ä 1" -> "B1-Ä1"
2017-01-06 21:38:08 +01:00
Norman Jäckel
ad651300d9
Added settings value MOTION_IDENTIFIER_MIN_DIGITS. Solved #2696 .
2016-12-01 14:41:12 +01:00
Emanuel Schütze
ff359ea629
Improved assignments and motions pdf.
...
Load all users in pdfmake function - not in state resolver of
assignment list.
2016-11-14 17:55:50 +01:00
Oskar Hahn
7281aa57b8
Removed old code needed be the server to serve pdf
2016-11-07 15:54:29 +01:00
Emanuel Schütze
5b544ceed2
Improve importing and sorting of users
...
* Add is_present field for csv import of users.
* Refactor JS functions get_full_name and get_short_name (Fixes #2136 ).
- Show participant number in get_full_name() output.
- Sort users by first or last name.
- Extend config option to sort users.
- Mark unused Python methods get_short_name and get_full_name.
2016-11-07 15:04:30 +01:00
Norman Jäckel
20f8875dcd
Added view to follow recommendations.
...
for all motions of a motion block
2016-10-17 21:02:50 +02:00
Emanuel Schuetze
af10c5aa3d
Fixed typo in projector autoupdate ( Fixes #2492 )
2016-10-07 17:02:55 +02:00
Oskar Hahn
e209dd6dfe
Support to send many objects through the autoupdate system
2016-10-04 18:10:04 +02:00
Oskar Hahn
c4f6477a4d
Merge pull request #2475 from normanjaeckel/FixBroadcast
...
Fixed broadcast. Fixed #2467 .
2016-10-01 15:49:07 +02:00
Norman Jäckel
2e7555e720
Fixed broadcast. Fixed #2467 .
2016-10-01 14:37:04 +02:00
Oskar Hahn
962deca506
Send full_data through the channel.
...
Saves db queries.
2016-10-01 13:57:53 +02:00
Oskar Hahn
97bd526dd7
Fix config cache key
2016-10-01 12:37:43 +02:00
Norman Jäckel
039795beb7
Refactored projector requirements system for autoupdate.
2016-10-01 01:49:17 +02:00
Oskar Hahn
ac9c9f4ec3
More tests, development instructions and small changes.
2016-10-01 01:48:30 +02:00
Norman Jäckel
7cd70a568c
Added docstrings. Small changes.
2016-10-01 01:48:18 +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
Emanuel Schuetze
720c7e76a5
Hot fix for broadcast (will improved later).
2016-09-30 21:20:30 +02:00
Norman Jäckel
8427ffd816
Small changes for multiple projector feature.
2016-09-30 19:11:33 +02:00
Finn Stutzenstein
e6b9b21d41
Added support for multiple projectors.
2016-09-30 18:58:59 +02:00
Norman Jäckel
dc404d21f6
Implemented need_full_update check. Fixed #2396 .
2016-09-23 14:36:26 +02:00
Oskar Hahn
6abb0976c2
Change system for autoupdate on the projector ( #2394 )
...
* Second websocket channel for the projector
* Removed use of projector requirements for REST API requests.
Refactored data serializing for projector websocket connection.
* Refactor the way that the projector autoupdate get its data.
* Fixed missing assignment slide title for hidden items.
* Release all items for item list slide and list of speakers slide. Fixed error with motion workflow.
* Created CollectionElement class which helps to handle autoupdate.
2016-09-17 22:26:23 +02:00
Norman Jäckel
d7936c53e3
Updated settings files. Fixed timezone support.
2016-09-16 21:17:00 +02:00
Norman Jäckel
3ea46e9dc7
Fixed autoupdate for deleted instances. Fixed #2329 .
2016-08-29 16:37:53 +02:00
Norman Jäckel
aea602acb9
Merge pull request #2256 from ostcar/fix_2248
...
Only do an autoupdate after an ongoing transaction.
2016-08-16 00:14:15 +02:00
Oskar Hahn
ee2f6b500b
Only do an autoupdate after an ongoing transaction.
...
This needs at least django 1.9
Fixes : #2248
2016-08-13 10:08:10 +02:00
Finn Stutzenstein
12af0256dd
No crash without a browser ( fixes #2249 )
2016-08-09 08:22:04 +02:00
Emanuel Schütze
6cec9e9f87
Merge pull request #2251 from normanjaeckel/WooshAsync
...
Used whoosh.writing.AsyncWriter. See #2198 .
2016-08-03 21:42:58 +02:00
Norman Jäckel
7f1b894db4
Used whoosh.writing.AsyncWriter. See #2198 .
2016-08-03 16:46:52 +02:00
Norman Jäckel
f191956dd9
Fixed error in autoupdate. See #2248 .
2016-08-03 16:12: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