AW: AW: [Zope] Source from form result.

Tino Wildenhain tino@wildenhain.de
Thu, 03 May 2001 22:50:30 +0200


Hi Marc,

its simply:

<dtml-with "web_client('http://server/',x='a',y='b')">
<dtml-var body>
</dtml-with>

in your case :)
x and y go into this **kw argument. If this is set,
webclient uses POST.

HTH
Tino Wildenhain.

--On Mittwoch, 2. Mai 2001 20:45 +0200 Marc Fischer <marcbpc@gmx.de> wrote:

> Hi Tino,
>
> I think, thats it, what I am looking for. Your Example works fine so far.
> But my understanding in python I so low, that I am not able change it in
> my needed way. Perhabs you could tell me how to realize this:
>
> <form action="http://server" method=POST>
> <input type=hidden name="x" value="a">
> <input type=hidden name="y" value="b">
> <input type=submit>
> </form>
>
> and show me how to get the source of the result page?! :-)
>
> I would be very happy, ... thanx a lot ...
>
> Marc
>
>
>
>
>> -----Ursprungliche Nachricht-----
>> Von: zope-admin@zope.org [mailto:zope-admin@zope.org]Im Auftrag von Tino
>> Wildenhain
>> Gesendet: Mittwoch, 2. Mai 2001 15:37
>> An: Marc Fischer; Danny William Adair; Paula Mangas
>> Cc: zope@zope.org
>> Betreff: Re: AW: [Zope] Source from form result.
>>
>>
>> Hi Marc,
>>
>> zope has a "client" deep in its core :)
>> See lib/python/ZPublisher/Client.py
>> for more info.
>>
>> I currently use a external method like this:
>>
>> > from ZPublisher import Client
>>
>> def web_client(url = '', username = None, password = None, **kw):
>>      '''access http servers'''
>>      class gen_res:
>>          __allow_access_to_unprotected_subobjects__=1
>>      f=gen_res()
>>      if kw:
>>          f.headers,f.body=Client.call(url,username,password,kw)
>>      else:
>>          f.headers,f.body=Client.call(url,username,password)
>>      return(f)
>>
>>
>> And use it like this:
>>
>> <dtml-with "web_client('http://server/uri')">
>> <dtml-var body>
>> </dtml-with>
>>
>> In Client.py are also methods and functions to map arguments
>> to a POST request as you wish.
>>
>> I think, the above could be a starting point for you.
>>
>> HTH
>> Tino Wildenhain
>>
>> --On Mittwoch, 2. Mai 2001 12:12 +0200 Marc Fischer
>> <marcbpc@gmx.de> wrote:
>>
>> > Hi Danny,
>> >
>> > first of all thank you for your detailed help!!! That is
>> nearly, what I am
>> > looking for, but one problem exists:
>> > The page I want to extract (you are right ... its on an external
>> > server) does not work with passing the variables in the url. I mean ...
>> >
>> > http://server?x=a&y=b does not work.
>> >
>> > I need to do it with a form like:
>> >
>> > <form action="http://server" method=POST>
>> > <input type=hidden name="x" value="a">
>> > <input type=hidden name="y" value="b">
>> > <input type=submit>
>> > </form>
>> >
>> > That's my big big problem. Btw, ... its legal :-)))
>> >
>> > Marc
>> >
>> >
>> >
>> >
>> >
>> >
>> >> -----Ursprungliche Nachricht-----
>> >> Von: Danny William Adair [mailto:Danny@Adair.net]
>> >> Gesendet: Mittwoch, 2. Mai 2001 01:26
>> >> An: Marc Fischer; Paula Mangas
>> >> Cc: zope@zope.org
>> >> Betreff: Re: [Zope] Source from form result.
>> >>
>> >>
>> >> Hi Marc,
>> >>
>> >> When you submit a form to one of your DTML methods or
>> documents, all the
>> >> form variables will be available without any further work to be done
>> >> (REQUEST object, see docs). But if I get you right, you are not
>> >> submitting your form to a method of your own. So things are a bit
>> >> different here.
>> >>
>> >> As I understand it, you are submitting your form to someone
>> else's server
>> >> (since otherwise you would produce the output yourself). Maybe you're
>> >> providing an input form that is directed to a search engine,
>> or something
>> >> similar.
>> >>
>> >> --------------------------------------------
>> >> <form action="http://server" method=POST>
>> >> <input type=hidden name="x" value="a">
>> >> <input type=hidden name="y" value="b">
>> >>
>> >> <input type="text" name="myInput">
>> >>
>> >> <input type=submit>
>> >> </form>
>> >> --------------------------------------------
>> >>
>> >> If so, then you should take a look at the "KebasData" Product:
>> >> http://www.zope.org/Members/kedai/KebasData
>> >>
>> >> Just instantiate a KebasData object, let's say "results". Take a
>> >> look at the
>> >> product's documentation to see how you can extract the
>> relevant code from
>> >> the external server's result page. I'll try to get you started right
>> >> away:
>> >>
>> >> Set the regular expression patterns properly, start with
>> >>
>> >> .*
>> >>
>> >> as the search pattern and leave the rest blank ("url" will be set
>> >> by a DTML
>> >> method you create, see below), then you'll get the entire
>> >> external page, you
>> >> can change that later to fit your needs.
>> >>
>> >> Then create a DTML method next to it, lets say "getResults". It could
>> >> look like this:
>> >>
>> >> <dtml-var standard_html_header>
>> >> <h2>RESULTS</h3>
>> >> <dtml-with results>
>> >>   <dtml-call "REQUEST.set('new_url', 'http://server?search=' +
>> myInput)">
>> >>   <dtml-call "get_matched(new_url)">
>> >>   <dtml-in match>
>> >>     <dtml-var result><br/>
>> >>   </dtml-in>
>> >> </dtml-with>
>> >> <dtml-var standard_html_footer>
>> >>
>> >> This will fetch the page you want to display by calling
>> >> "get_matched(new_url)", you construct that new_url dynamically, using
>> >> your form variable "myInput". Then it iterates through the results
>> >> list and spits
>> >> out the parts that matched your query, appending a <br/> after
>> each match
>> >> (if you started with .* as the pattern, the list will only
>> have one item,
>> >> holding the complete page).
>> >>
>> >> Oh, right: your DTML method should have a proxy role that has the
>> >> right to "change KebasData" (or maybe even "View
>> >> management_screens"?) on the KebasData object "results", since it
>> >> calls its function
>> >> "get_matched", which
>> >> is usually only called by clicking "Initialize!" in the
>> >> management screen of
>> >> the KebasData object.
>> >>
>> >> Now you just send your form to "getResults" (instead of the
>> >> external server
>> >> directly), and let your DTML method do the rest:
>> >>
>> >> --------------------------------------------
>> >> <form action="getResults" method=POST>
>> >> <input type=hidden name="x" value="a">
>> >> <input type=hidden name="y" value="b">
>> >>
>> >> <input type="text" name="myInput">
>> >>
>> >> <input type=submit>
>> >> </form>
>> >> --------------------------------------------
>> >>
>> >> Later, you could put the "getResults" code in a python script,
>> then it's
>> >> easier to do further processing with your fetched data.
>> >>
>> >> hth,
>> >> Danny
>> >>
>> >> P.S.: Check the legal stuff before extracting other people's pages ;-)
>> >>
>> >> >>> -----Ursprungliche Nachricht-----
>> >> >>> Von: zope-admin@zope.org [mailto:zope-admin@zope.org]Im
>> >> Auftrag von Marc
>> >> >>> Fischer
>> >> >>> Gesendet: Dienstag, 1. Mai 2001 11.43p
>> >> >>> An: Paula Mangas; Marc Fischer
>> >> >>> Cc: zope@zope.org
>> >> >>> Betreff: AW: [Zope] Source from form result.
>> >> >>>
>> >> >>>
>> >> >>> Hi,
>> >> >>>
>> >> >>> I think there was an understanding problem. I want to get the
>> >> >>> source code of
>> >> >>> the result that is displayed in the browser, after klicking on
>> >> >>> the submit
>> >> >>> button. I want to be able to handle this source perhabs to create
>> >> >>> a dtmlmethod wiht it, or do some string extractions with it.
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> > -----Ursprungliche Nachricht-----
>> >> >>> > Von: Paula Mangas [mailto:pamm@students.si.fct.unl.pt]
>> >> >>> > Gesendet: Dienstag, 1. Mai 2001 13:25
>> >> >>> > An: Marc Fischer
>> >> >>> > Cc: zope@zope.org
>> >> >>> > Betreff: Re: [Zope] Source from form result.
>> >> >>> >
>> >> >>> >
>> >> >>> > On Tue, 1 May 2001, Marc Fischer wrote:
>> >> >>> >
>> >> >>> > > Hi,
>> >> >>> > >
>> >> >>> > > I want to get the HTML result from a form into a dtml method.
>> >> >>> > So I need a
>> >> >>> > > way to handle this result, but HOW.
>> >> >>> > >
>> >> >>> > > The form ist like this:
>> >> >>> > >
>> >> >>> > > <form action="http://server" method=POST>
>> >> >>> > > <input type=hidden name="x" value="a">
>> >> >>> > > <input type=hidden name="y" value="b">
>> >> >>> > > <input type=submit>
>> >> >>> > > </form>
>> >> >>> > >
>> >> >>> > > If I klick on submit, I get the result displayed in the
>> >> >>> Browser, but I
>> >> >>> > > cannot work with it.
>> >> >>> > > Perhaps someone could help me???
>> >> >>> >
>> >> >>> >
>> >> >>> > Hi,
>> >> >>> >
>> >> >>> >
>> >> >>> > I think that, if you try
>> >> >>> > <form action="http://server/the_method_you_want_to_call"
>> >> method=POST>
>> >> >>> >
>> >> >>> > it will work.
>> >> >>> >
>> >> >>> > Paula
>> >> >>> >
>> >> >>>
>> >> >>>
>> >> >>> _______________________________________________
>> >> >>> Zope maillist  -  Zope@zope.org
>> >> >>> http://lists.zope.org/mailman/listinfo/zope
>> >> >>> **   No cross posts or HTML encoding!  **
>> >> >>> (Related lists -
>> >> >>>  http://lists.zope.org/mailman/listinfo/zope-announce
>> >> >>>  http://lists.zope.org/mailman/listinfo/zope-dev )
>> >> >>>
>> >>
>> >
>> >
>> > _______________________________________________
>> > Zope maillist  -  Zope@zope.org
>> > http://lists.zope.org/mailman/listinfo/zope
>> > **   No cross posts or HTML encoding!  **
>> > (Related lists -
>> >  http://lists.zope.org/mailman/listinfo/zope-announce
>> >  http://lists.zope.org/mailman/listinfo/zope-dev )
>>
>>
>>
>>
>>
>> _______________________________________________
>> Zope maillist  -  Zope@zope.org
>> http://lists.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -
>>  http://lists.zope.org/mailman/listinfo/zope-announce
>>  http://lists.zope.org/mailman/listinfo/zope-dev )
>>
>