Пример #1
0
def permissions_import_json(request, ufp_id=0):
    upload_file = request.FILES.get('perms_upload')

    if upload_file:
        try:
            perms = json.loads(upload_file.read().decode('utf-8'))
            username = perms.get('username')

            if ufp_id:
                ufp = get_object_or_404(UserFieldPermissions, pk=ufp_id)
                if username == ufp.user.username:
                    # Clear the old field permissions
                    ufp.permissions.clear()
                else:
                    message = 'The wrong user is defined in the imported file'
                    messages.add_message(request, messages.ERROR, message)
            else:
                user = get_object_or_404(User, username=username)
                ufp = UserFieldPermissions(user=user)
                ufp.save()

            _add_permissions(request, ufp, perms)
            ufp_id = ufp.pk
        except Exception as e:
            message = 'Error in the import : %s' % e
            messages.add_message(request, messages.ERROR, message)
    else:
        message = 'Missing imported file'
        messages.add_message(request, messages.ERROR, message)

    return redirect(
        '/admin/rest_framework_fine_permissions/userfieldpermissions/%s' %
        ufp_id)