1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from django.contrib.auth import get_user_model
- from django.core.management.base import CommandError, BaseCommand
- from misago.core.pgutils import chunk_queryset
- UserModel = get_user_model()
- class Command(BaseCommand):
- help = "Deletes specified profile field from database."
- def add_arguments(self, parser):
- parser.add_argument(
- 'fieldname',
- help="field to delete",
- nargs='?',
- )
- def handle(self, *args, **options):
- fieldname = options['fieldname']
- if not fieldname:
- self.stderr.write("Specify fieldname to delete.")
- return
- fields_deleted = 0
- queryset = UserModel.objects.filter(
- profile_fields__has_keys=[fieldname],
- )
- for user in chunk_queryset(queryset):
- if fieldname in user.profile_fields.keys():
- user.profile_fields.pop(fieldname)
- user.save(update_fields=['profile_fields'])
- fields_deleted += 1
- self.stdout.write(
- '"{}" profile field has been deleted from {} users.'.format(
- fieldname, fields_deleted
- )
- )
|