OpenSlides/openslides/mediafiles/signals.py
Norman Jäckel c4ec26c4c0 User without permission to see users can now see some required users.
These are
- agenda item speakers,
- motion submitters and supporters,
- assignment candidates,
- mediafile uploader and
- chat message users
but only if the user has respective permissions. Fixed #3002.
2017-04-11 17:10:49 +02:00

32 lines
1.2 KiB
Python

from django.apps import apps
from ..utils.auth import has_perm
from ..utils.collection import Collection
from .models import Mediafile
def get_permission_change_data(sender, permissions=None, **kwargs):
"""
Yields all necessary collections if 'mediafiles.can_see' permission changes.
"""
mediafiles_app = apps.get_app_config(app_label='mediafiles')
for permission in permissions:
# There could be only one 'mediafiles.can_see' and then we want to return data.
if permission.content_type.app_label == mediafiles_app.label and permission.codename == 'can_see':
yield from mediafiles_app.get_startup_elements()
def is_user_data_required(sender, request_user, user_data, **kwargs):
"""
Returns True if request user can see mediafiles and user_data is required
to be displayed as uploader.
"""
result = False
if has_perm(request_user, 'mediafiles.can_see'):
for mediafile_collection_element in Collection(Mediafile.get_collection_string()).element_generator():
full_data = mediafile_collection_element.get_full_data()
if user_data['id'] == full_data['uploader_id']:
result = True
break
return result