Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Adam GROSZER
Hello,

You forgot to paste interfaces.IMyObject definition.

On Tue, 23 Aug 2011 13:16:24 +0530 you wrote:

 Hello all,
   While trying to get the length of zope.schema.List field in a view
 (like this: len(self.context.list_field) I get the following error

  ForbiddenAttribute: ('__len__', [])

 Even though my zcml configuration for that class is defined as below

class class=.app.MyObject

  require
  permission=zope.Public
  interface=.interfaces.IMyObject
  /

  require
  permission=zope.Public
  set_schema=.interfaces.IMyObject
  /
/class

 I still get the above error. To circumvent this issue, I added a method
 in the interface like say 'getListSize()' which has the following
 implementation

  class MyObject(persistent.Persistent):
  implements(IMyObject)

  name = u''
  list_field = PersistentList()
  ...

  def getListSize(self):
  return len(self.list_field)

 This solves my issue. However, I am curious to know whether is this the
 only solution available to the above issue. Am I going in the right
 direction?

 Please guide me.




 ___
 Zope-Dev maillist  -  Zope-Dev@zope.org
 https://mail.zope.org/mailman/listinfo/zope-dev
 **  No cross posts or HTML encoding!  **
 (Related lists -
   https://mail.zope.org/mailman/listinfo/zope-announce
   https://mail.zope.org/mailman/listinfo/zope )


-- 
Best regards,
  Adam GROSZER
--
Quote of the day:
Two men please God: who serves Him with all his heart because he knows 
Him; who seeks Him with all his heart because he knows Him not.
- Nikita Ivanovich Panin
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Joshua Immanuel
Hello all,
On Tue, 2011-08-23 at 13:16 +0530, Joshua Immanuel wrote:
 def getListSize(self):
 return len(self.list_field)
 
 This solves my issue. 

This solves just the '__len__' issue. But if do the slice operation like
this

self.context.list_field[offset:limit]

I get the following error

ForbiddenAttribute: ('__getslice__',[...])

I guess my approach is flawed. Implementing all the functionality (like
the one I did for length) that a list provides is a overkill. So, please
guide me in this regard.

Thanks
-- 
Joshua Immanuel
HiPro IT Solutions Private Limited
http://hipro.co.in


signature.asc
Description: This is a digitally signed message part
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Charlie Clark
Am 23.08.2011, 13:34 Uhr, schrieb Joshua Immanuel j...@hipro.co.in:

 This solves just the '__len__' issue. But if do the slice operation like
 this
self.context.list_field[offset:limit]
 I get the following error
ForbiddenAttribute: ('__getslice__',[...])
 I guess my approach is flawed. Implementing all the functionality (like
 the one I did for length) that a list provides is a overkill. So, please
 guide me in this regard.

Joshua,

I think it's really difficult to work out what you are trying to do.  
Please state your problem more clearly. Are you still using zope.form or  
are you using z3c.form?

Charlie
-- 
Charlie Clark
Managing Director
Clark Consulting  Research
German Office
Helmholtzstr. 20
Düsseldorf
D- 40215
Tel: +49-211-600-3657
Mobile: +49-178-782-6226
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Joshua Immanuel
Hello Charlie,

Thanks for the reply.

On Tue, 2011-08-23 at 13:56 +0200, Charlie Clark wrote:
 I think it's really difficult to work out what you are trying to do.  
 Please state your problem more clearly. Are you still using zope.form
 or are you using z3c.form? 

I am still using zope.formlib. I guess I found the root of the problem.
All the schema fields are security proxied I guess. Removing the
security proxy from those fields before accessing the field's inbuilt
methods solves the problem. So, my code now looks like this

from zope.security.proxy import removeSecurityProxy

sz = len(removeSecurityProxy(self.context.list_field))
...

li = removeSecurityProxy(self.context.list_field)
res = li[offset:limit]

I guess this is a cleaner approach.

Regards
-- 
Joshua Immanuel
HiPro IT Solutions Private Limited
http://hipro.co.in


signature.asc
Description: This is a digitally signed message part
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Adam GROSZER
Hello,

Well using removeSecurityProxy is not so nice.

If there's really a list in your property, then zope should give you 
zope.Public access:

_default_checkers = {
...
 list: NamesChecker(['__getitem__', '__getslice__', '__len__', 
'__iter__',
 '__contains__', 'index', 'count', '__str__',
 '__add__', '__radd__', ]),
...

Can you do:

   from zope.security.proxy import removeSecurityProxy

   li = removeSecurityProxy(self.context.list_field)
  print type(li)

On Tue, 23 Aug 2011 17:43:22 +0530 you wrote:

 Hello Charlie,

 Thanks for the reply.

 On Tue, 2011-08-23 at 13:56 +0200, Charlie Clark wrote:
 I think it's really difficult to work out what you are trying to do.
 Please state your problem more clearly. Are you still using zope.form
 or are you using z3c.form?

 I am still using zope.formlib. I guess I found the root of the problem.
 All the schema fields are security proxied I guess. Removing the
 security proxy from those fields before accessing the field's inbuilt
 methods solves the problem. So, my code now looks like this

  from zope.security.proxy import removeSecurityProxy

  sz = len(removeSecurityProxy(self.context.list_field))
  ...

  li = removeSecurityProxy(self.context.list_field)
  res = li[offset:limit]

 I guess this is a cleaner approach.

 Regards



 ___
 Zope-Dev maillist  -  Zope-Dev@zope.org
 https://mail.zope.org/mailman/listinfo/zope-dev
 **  No cross posts or HTML encoding!  **
 (Related lists -
   https://mail.zope.org/mailman/listinfo/zope-announce
   https://mail.zope.org/mailman/listinfo/zope )


-- 
Best regards,
  Adam GROSZER
--
Quote of the day:
The celestial order and the beauty of the universe compel me to admit 
that there is some excellent and eternal Being, Who deserves the respect 
and homage of men.
- Cicero
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] getting size of zope.schema.List from a view in bluebream

2011-08-23 Thread Joshua Immanuel
Hello Adam,

Thanks for the reply.

On Tue, 2011-08-23 at 14:39 +0200, Adam GROSZER wrote:
 Well using removeSecurityProxy is not so nice.
 
 If there's really a list in your property, then zope should give you 
 zope.Public access:
 
 _default_checkers = {
 ...
  list: NamesChecker(['__getitem__', '__getslice__', '__len__', 
 '__iter__',
  '__contains__', 'index', 'count', '__str__',
  '__add__', '__radd__', ]),
 ...
 
 Can you do:
 
from zope.security.proxy import removeSecurityProxy
 
li = removeSecurityProxy(self.context.list_field)
   print type(li) 

As I am using the persistent List in the implementation of IMyObject,
the output of the above is

class 'persistent.list.PersistentList'

So, How can I access its inbuilt methods without removing the security
proxy. Please guide me.

Regards
-- 
Joshua Immanuel
HiPro IT Solutions Private Limited
http://hipro.co.in


signature.asc
Description: This is a digitally signed message part
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )