See #152: added management command to execute one-time migration scripts

This commit is contained in:
Eliot Berriot 2018-05-18 21:19:20 +02:00
parent a57d975183
commit ac7db73785
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
9 changed files with 202 additions and 4 deletions

View file

@ -0,0 +1,2 @@
from . import django_permissions_to_user_permissions
from . import test

View file

@ -0,0 +1,29 @@
"""
Convert django permissions to user permissions in the database,
following the work done in #152.
"""
from django.db.models import Q
from funkwhale_api.users import models
from django.contrib.auth.models import Permission
mapping = {
'dynamic_preferences.change_globalpreferencemodel': 'settings',
'music.add_importbatch': 'library',
'federation.change_library': 'federation',
}
def main(command, **kwargs):
for codename, user_permission in sorted(mapping.items()):
app_label, c = codename.split('.')
p = Permission.objects.get(
content_type__app_label=app_label, codename=c)
users = models.User.objects.filter(
Q(groups__permissions=p) | Q(user_permissions=p)).distinct()
total = users.count()
command.stdout.write('Updating {} users with {} permission...'.format(
total, user_permission
))
users.update(**{'permission_{}'.format(user_permission): True})

View file

@ -0,0 +1,8 @@
"""
This is a test script that does nothing.
You can launch it just to check how it works.
"""
def main(command, **kwargs):
command.stdout.write('Test script run successfully')