2017-02-21 09:34:24 +01:00
|
|
|
from django.apps import apps
|
|
|
|
|
2017-04-10 16:28:38 +02:00
|
|
|
from ..utils.auth import has_perm
|
|
|
|
from ..utils.collection import Collection
|
|
|
|
from .models import Mediafile
|
|
|
|
|
2017-02-21 09:34:24 +01:00
|
|
|
|
|
|
|
def get_permission_change_data(sender, permissions=None, **kwargs):
|
|
|
|
"""
|
2017-03-06 16:34:20 +01:00
|
|
|
Yields all necessary collections if 'mediafiles.can_see' permission changes.
|
2017-02-21 09:34:24 +01:00
|
|
|
"""
|
2017-03-06 16:34:20 +01:00
|
|
|
mediafiles_app = apps.get_app_config(app_label='mediafiles')
|
2017-02-21 09:34:24 +01:00
|
|
|
for permission in permissions:
|
|
|
|
# There could be only one 'mediafiles.can_see' and then we want to return data.
|
2017-03-06 16:34:20 +01:00
|
|
|
if permission.content_type.app_label == mediafiles_app.label and permission.codename == 'can_see':
|
|
|
|
yield from mediafiles_app.get_startup_elements()
|
2017-04-10 16:28:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
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.
|
2017-04-28 00:50:37 +02:00
|
|
|
|
|
|
|
If request_user can see mediafiles, then returns all user ids that are
|
|
|
|
displayed as uploader. Else, it returns an empty set.
|
2017-04-10 16:28:38 +02:00
|
|
|
"""
|
2017-04-28 00:50:37 +02:00
|
|
|
user_ids = set()
|
2017-04-10 16:28:38 +02:00
|
|
|
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()
|
2017-04-28 00:50:37 +02:00
|
|
|
user_ids.add(full_data['uploader_id'])
|
|
|
|
return user_ids
|