On Dec 17, 2009, at 10:48 AM, Jay wrote:
> The file is named 0_redefine_url.py and is in my applications/init/
> models folder. It contains:
Massimo may know what's going on, but the new URL() isn't getting called. In
the meantime, how about trying this to make an https URL; seems simpler:
def SURL(*a, **b):
return 'https://' + request.env.http_host + URL(*a,**b)
>
> _URL=URL
> def URL(*a,**b):
> if not 'secure' in b:
> return _URL(*a,**b)
> elif b['secure']:
> del b['secure']
> return 'https://'+request.env.http_host + _URL(*a,**b)
> else:
> del b['secure']
> return 'http://'+request.env.http_host + _URL(*a,**b)
>
> Here is the complete traceback:
> Error traceback
>
> Traceback (most recent call last):
> File "/home/jayr/workspace/newsite/app/gluon/restricted.py", line
> 178, in restricted
> exec ccode in environment
> File "/home/jayr/workspace/newsite/app/applications/init/controllers/
> profile.py", line 248, in <module>
> File "/home/jayr/workspace/newsite/app/gluon/globals.py", line 102,
> in <lambda>
> self._caller = lambda f: f()
> File "/home/jayr/workspace/newsite/app/gluon/tools.py", line 1418,
> in f
> return action(*a, **b)
> File "/home/jayr/workspace/newsite/app/applications/init/controllers/
> profile.py", line 199, in notes
> print_notes = URL(r=request, a=request.application, c='profile',
> f='notes_print', secure='True')
> TypeError: URL() got an unexpected keyword argument 'secure'
>
> Thanks,
>
> - Jay
>
> On Dec 17, 10:58 am, Jonathan Lundell <[email protected]> wrote:
>> On Dec 17, 2009, at 6:38 AM, Jay wrote:
>>
>>> I cant seem to make this work. I created the file in models
>>> and modified a url helper to use it and received the following error:
>>
>>> TypeError: URL() got an unexpected keyword argument 'secure'
>>
>> It might help to see the entire traceback.
>>
>>
>>
>>> A few follow up questions:
>>> 1. Did you intend to say 'model' rather than module?
>>
>> 'models'
>>
>>> 2. How do I integrate 0_redefine_url.py into my app such that the
>>> URL
>>> helper will accept the keyword argument 'secure'?
>>
>> The idea is to stick it in applications/yourapp/models/, which makes it
>> visible to the entire app. The prepended '0' makes it sort to the beginning,
>> so it's also available to the other model files.
>>
>>
>>
>>
>>
>>> Thanks
>>
>>> - Jay
>>
>>> On Dec 17, 1:20 am, mdipierro <[email protected]> wrote:
>>>> I do not think it is a idea because would encourage people to use it
>>>> and build non-portable applications.
>>>> If users were doing that, the applications may break when running on
>>>> port 8000 or would break when being a proxy if it where to detect the
>>>> port. There is no definitive way for the app to know the public URL.
>>
>>>> Moreover it would only form when called with URL(r=request,...) but
>>>> not when called with URL(app,...) because it would have no knowledge
>>>> of the request object.
>>
>>>> I think whether to use https and/or https should be handled outside
>>>> the application.
>>
>>>> Massimo
>>
>>>> On Dec 16, 10:52 pm, Jonathan Lundell <[email protected]> wrote:
>>
>>>>> On Dec 16, 2009, at 6:58 PM, Álvaro Justen [Turicas] wrote:
>>
>>>>>> On Thu, Dec 10, 2009 at 20:50, mdipierro <[email protected]> wrote:
>>>>>>> I would suggest creating a model 0_redefine_url.py that contains:
>>
>>>>>>> _URL=URL
>>>>>>> def URL(*a,**b):
>>>>>>> if not 'secure' in b:
>>>>>>> return _URL(*a,**b)
>>>>>>> elif b['secure']:
>>>>>>> del b['secure']
>>>>>>> return 'https://'+request.env.http_host + _URL(*a,**b)
>>>>>>> else:
>>>>>>> del b['secure']
>>>>>>> return 'http://'+request.env.http_host + _URL(*a,**b)
>>
>>>>>>> and use URL(....,secure=True), URL(...secure=False) as required
>>
>>>>>> I think this is very useful. Can we add this in trunk?
>>
>>>>> It *would* be useful, I think. If URL() defaults secure=None ...
>>
>>>>>>> Massimo
>>
>>>>>>> 'https://'+request.env.http_host +'/app/default/logon')
>>
>>>>>>> On Dec 10, 2:11 pm, Wes James <[email protected]> wrote:
>>>>>>>> Actually, I don't think it would matter if there were a proxy or not??
>>
>>>>>>>> On Thu, Dec 10, 2009 at 1:06 PM, Wes James <[email protected]> wrote:
>>>>>>>>> As long as you don't have a proxy between your users and the server
>>>>>>>>> something with request.env could be used
>>
>>>>>>>>> def login():
>>>>>>>>> if request.env.port != 443:
>>>>>>>>> redirect('https://'+request.env.http_host +'/app/default/logon')
>>
>>>>>>>>> -wes
>>
>>>>>>>>> On Thu, Dec 10, 2009 at 11:42 AM, Jay <[email protected]> wrote:
>>>>>>>>>> I am new to web2py and Apache w/mod_ssl and I have been searching
>>>>>>>>>> for
>>>>>>>>>> a solution related to this topic but I must be missing a basic
>>>>>>>>>> understanding of the necessary pieces in order to accomplish this.
>>
>>>>>>>>>> Our web2py apache setup seems to be fine. I can access our app's
>>>>>>>>>> pages using both http and https if I manually add the 's' to the
>>>>>>>>>> url.
>>
>>>>>>>>>> What we are trying to do is smoothly transition from one controller/
>>>>>>>>>> function using http to another using https.
>>>>>>>>>> Example, a user arrives athttp://init/default/indexandthenthe
>>>>>>>>>> user
>>>>>>>>>> selects ‘Login’ and they are sent to https:/init/default/login. We
>>>>>>>>>> need some controller functions to use http and some https. Can this
>>>>>>>>>> be done from within the controller/function? If not, what is the
>>>>>>>>>> ‘best practice’ approach to accomplishing this?
>>
>>>>>>>>>> - Jay
--
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
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/web2py?hl=en.