Thank you, Luis-José Torres!

On the basis of your code I added the following to my migrations:

def fix_perms(*app_labels):
    def wrapped(apps, schema_editor):
        from django.apps.registry import apps
        from django.contrib.contenttypes.management import 
update_contenttypes
        from django.contrib.auth.management import create_permissions
        for app in app_labels:
            app_conf = apps.get_app_config(app)
            update_contenttypes(app_conf, app_conf.get_models())
            create_permissions(app_conf, interactive=False)
    return wrapped


class Migration(migrations.Migration):
    operations = [
        migrations.RunPython(fix_perms("books")),
        migrations.RunPython(add_some_group_permissions_on_books),
    ]



четверг, 15 января 2015 г., 22:03:07 UTC+3 пользователь Luis-José Torres 
написал:
>
> Hi,
>
> This worked for me:
>
> from django.apps.registry import apps as apps_alt
> from django.contrib.auth.management import create_permissions
>
> for app_config in apps_alt.get_app_configs():
>     create_permissions(app_config)
>
>
>
>
> On Tuesday, December 30, 2014 at 11:01:11 PM UTC-6, Adam Venturella wrote:
>>
>> Attempting this approach, calling :
>>
>> create_permissions(my_app_config)
>>
>> from within my migration fails to create the permissions. It looks like 
>> *create_permissions 
>> *checks for *models_module* on the provided app config. However, when my 
>> migration runs, my *models_module* is *None. *
>>
>> So is there a better time when models_module is available?  My 
>> understanding of models_module is that I have a models.py in my app, which 
>> I indeed do. I can call 
>>
>> my_app_config.get_models()
>>
>> and I get a list of all of my models, but *my_app_config.models_module* 
>> remains *None*
>>
>> If I try this from the django shell:
>>
>> from django.apps import apps
>> apps.get_app_config('my_app').models_module
>>
>>
>> The result here is not *None*, so it seems the issue is migration 
>> related.
>>
>>
>>
>>
>> On Tuesday, October 14, 2014 7:09:55 PM UTC-7, Andrew Godwin wrote:
>>>
>>> As the ticket suggests, you can call the function to create permissions 
>>> yourself in the data migration, and then you can assign them as normal. 
>>> There's no need to use fixtures (in fact, migrations are better without 
>>> fixtures, as there's no easy way to load them).
>>>
>>> Andrew
>>>
>>> On Tue, Oct 14, 2014 at 6:56 PM, Michael <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> Since the permissions are not yet created when the migrations are run, 
>>>> it is not possible to have a data migration that creates a group and 
>>>> assigns permissions.
>>>>
>>>> Based on this ticket: https://code.djangoproject.com/ticket/23422, I 
>>>> understand there will not be a fix. Do you recommend to keep using an 
>>>> initial fixture to create a group?
>>>>
>>>> Thanks
>>>> Michael
>>>>
>>>>
>>>>
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Django developers (Contributions to Django itself)" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/django-developers.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/django-developers/cce3b138-6524-417c-b05e-cd3c25742e3b%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/django-developers/cce3b138-6524-417c-b05e-cd3c25742e3b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/976a39e0-dbed-406a-89af-5156678aef2e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to