funkwhale/api/funkwhale_api/common/scripts/django_permissions_to_user_...

29 wiersze
903 B
Python
Czysty Zwykły widok Historia

"""
Convert django permissions to user permissions in the database,
following the work done in #152.
"""
2018-06-10 08:55:16 +00:00
from django.contrib.auth.models import Permission
from django.db.models import Q
2018-06-10 08:55:16 +00:00
from funkwhale_api.users import models
mapping = {
2018-06-09 13:36:16 +00:00
"dynamic_preferences.change_globalpreferencemodel": "settings",
"music.add_importbatch": "library",
}
def main(command, **kwargs):
for codename, user_permission in sorted(mapping.items()):
2018-06-09 13:36:16 +00:00
app_label, c = codename.split(".")
p = Permission.objects.get(content_type__app_label=app_label, codename=c)
users = models.User.objects.filter(
2018-06-09 13:36:16 +00:00
Q(groups__permissions=p) | Q(user_permissions=p)
).distinct()
total = users.count()
2018-06-09 13:36:16 +00:00
command.stdout.write(
f"Updating {total} users with {user_permission} permission..."
2018-06-09 13:36:16 +00:00
)
users.update(**{f"permission_{user_permission}": True})