Is there a reason this can't be done using the session?
Anthony
On Friday, August 2, 2013 3:10:55 PM UTC-4, David Marko wrote:
>
> I'm trying to implement the viewScope variables for web2py controller
> methods. Idea behind is to mimic a behaviour of JAVA frameworks like JSF or
> Spring that use the concept of viewScope variables. Such variables live
> during the all posts to same controller action / to the same form. This is
> very handy when one is doing some heavy form actions or wizard actions etc.
> that we do all the time in corporate development. Using the viewScope
> variable one can avoid using a hidden fields (which using is rather a
> security issue as user can easily change the value in browser using dev
> tools.)
>
> Now my idea expressed in code snippet below is to generate UUID value
> during the get request (the first request to controller action) and store
> it into hidden form field. This hidden UUID is used as a key for cache.ram
> value that expresses the viewScope variable. I use Storage() object as a
> viewScope object as it is very easy to use. Now everything is working as
> expected and during the all posts to same action (all posts of SQLFORM)
> the hidden key is available and I can access the the same cach.ram
> Storage() object, read and update values and everything is working fine.
> What is not fine is fact that cache expire_time is timeout counted from the
> first cache object creation time and expires in defined time. What I need
> here is to have the expire time but prolonged each time I access the cache
> so the expire time reflects users inactivity. Is there a way how to
> accomplish this idea using the cache.ram? Also is there anyone who tried
> to solve this already? I would appreciate your ideas / comments.
>
> BTW: Despite the fact that HTTP is not statefull .. the statefull
> framework features are very important during corporate development (during
> forking with large form that requires many post submits until saved
> finaly). I would really appreciate having some statefull ideas implemented
> in web2py core. But its completely separate topic.
>
> (Code below is just a proof of concept more than some final nice code. :-)
> )
>
> class ViewState:
>
> @staticmethod
> def getStateObject(state_id=None):
> if state_id==None:
> state_id=ViewState.getStateId()
> from gluon.storage import Storage
> return cache.ram('form_'+state_id, lambda:Storage(), time_expire=
> 10)
>
> @staticmethod
> def getStateId(state_field='state_id'):
> import uuid
> return (request.post_vars.state_id or str(uuid.uuid4()))
>
> def index():
> state_id=ViewState.getStateId()
> sc=ViewState.getStateObject(state_id)
>
> form=SQLFORM.factory(
> Field('jmeno','string',requires=IS_NOT_EMPTY()),
> Field('prijmeni','string'),
> hidden=dict(state_id=state_id)
> )
> ....
>
>
>
>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.