Hi all,

I've been digging in this problem and haven't found how to solve it. I've 
got two secure resources, ComplementoResource and ProductoResource defined 
as follow:

class ComplementoResource(CommonModelResource):
  restaurante = fields.ForeignKey(RestauranteResource, 'restaurante')
  restaurante_id = fields.IntegerField(attribute='restaurante_id')

  class Meta:
    queryset = Complemento.objects.all()
    resource_name = 'complementos'
    list_allowed_methods = ['get', 'post', 'put', 'delete']
    authentication = tastypie.authentication.ApiKeyAuthentication()
    authorization = tastypie.authorization.Authorization()

  def alter_list_data_to_serialize(self, request, data):
    return self.alter_json_list(data, 'complementos')

  def apply_authorization_limits(self, request, object_list):
    return object_list.filter(restaurante__user=request.user)


class ProductoResource(CommonModelResource):
  restaurante = fields.ForeignKey(RestauranteResource, 'restaurante')
  restaurante_id = fields.IntegerField(attribute='restaurante_id')
  complementos = fields.ManyToManyField(ComplementoResource, 
'complementos', full=True)

  class Meta:
    queryset = Producto.objects.all()
    resource_name = 'productos'
    list_allowed_methods = ['get', 'post', 'put', 'delete']
    authentication = tastypie.authentication.ApiKeyAuthentication()
    authorization = tastypie.authorization.Authorization()

  def alter_list_data_to_serialize(self, request, data):
    return self.alter_json_list(data, 'productos')

  def apply_authorization_limits(self, request, object_list):
    return object_list.filter(restaurante__user=request.user)

The problem comes when I try to post a new entity Producto with one or more 
entities from Complemento. I get "'NoneType' object has no attribute 
'user'" error message. The request parameter in the 
method apply_authorization_limits of CombinadoResource get's a value of 
None. After digging a bit, I've seen that in the  file fields.py, there is 
a method called resource_from_data used, and in line 548 (at least in my 
version) that says:

return fk_resource.obj_update(fk_bundle, **data)

This method has the correct request value, but doesn't pass it 
to fk_resource.obj_updat, so it get's the default value (None) and after 
two or three mor calls the error raises. And the funny thing is that I get 
an error but the new entity Producto is inserted (without entities of 
Complementos).

Anybody knows if I'm going in the wrong way and this things have to be done 
otherwise? And the other question, anybody knows how to abort the insertion 
of the entity Producto if entities of Complement are not inserted?

Thank you all very much

Alberto

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-developers/-/nj9wpfS-urEJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to