dynamically creating html code with python...

2008-08-11 Thread anartz
Hi,

how can I combine some dynamically generated html code (using python) with the 
output of a urllib.openurl() call?

I have tried to use the StringIO() class with .write functions, but it did not 
work. Below is the code that does not work.

[CODE]
f=StringIO.StringIO()
f.write('data analysis')
f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";, 
urllib.urlencode(TheData)))
f.write("")

print "Content-type: text/html\n"
print f.read()
f.close()
[/CODE]

What is wrong with this approach/code? Is there an easier way of doing it?

Thanks.



--
http://mail.python.org/mailman/listinfo/python-list


Re: dynamically creating html code with python...

2008-08-11 Thread anartz
Sorry, my fault...

I am trying to build a web application for data analysis. Basically some data 
will be read from a database and passed to a python script (myLibs.py) to build 
an image as follows.

[CODE]
f=urllib.urlopen("http://localhost/path2Libs/myLibs.py",urllib.urlencode(TheData))
print "Content-type: image/png\n"
print f.read()
f.close()
[/CODE]

This section behaves as expected, and I can see the chart on the web-page.

Now, I would like to add some text and possibly more charts (generated in the 
same way) to my web-page. This is what I need help with.

I tried to add some html code to the f variable (file-type variable) before and 
after the plot generated (see first post). When I load the page in a browser, I 
get a blank page, not even the chart (that I used to get) appears any more.

There is no error messages in the server's error log, and when I run it as a 
python script I get the following output:

Content-type: image/png\n

My question:
How can I use python to dynamically add descriptive comments (text), and 
possibly more charts to the web-page?

Hope this is more explanatory.

Thanks

[EMAIL PROTECTED] wrote :

> Hi,
> 
> how can I combine some dynamically generated html code (using python) with 
> the output of a urllib.openurl() call?
> 
> I have tried to use the StringIO() class with .write functions, but it did 
> not work. Below is the code that does not work.
> 
> [CODE]
> f=StringIO.StringIO()
> f.write('data analysis')
> f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";, 
> urllib.urlencode(TheData)))
> f.write("")
> 
> print "Content-type: text/html\n"
> print f.read()
> f.close()
> [/CODE]
> 
> What is wrong with this approach/code? Is there an easier way of doing it?
> 
> Thanks.
> 
> 
> 
> --
> http://mail.python.org/mailman/listinfo/python-list



--
http://mail.python.org/mailman/listinfo/python-list


Re: dynamically creating html code with python...

2008-08-11 Thread anartz
I have tried calling a script containing the code below from a web browser and 
it did not get the text.

[CODE]
#!c:/Python25/python.exe -u

import StringIO

f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write("")

print "Content-type: text/html\n"
print f.read()
f.close()
[/CODE]

So, I assume this is not the way to create web pages any links that can 
help me take the right way? 

Thanks!


Jerry Hill <[EMAIL PROTECTED]> wrote :

> On Mon, Aug 11, 2008 at 9:15 AM,  <[EMAIL PROTECTED]> wrote:
> > [CODE]
> > f=StringIO.StringIO()
> > f.write('data analysis')
> > f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";, 
> > urllib.urlencode(TheData)))
> > f.write("")
> >
> > print "Content-type: text/html\n"
> > print f.read()
> > f.close()
> > [/CODE]
> >
> > What is wrong with this approach/code? Is there an easier way of doing it?
> 
> A StringIO object works a lot like a file.  When you write to it, it
> keeps track of the current position in the file.  When you read from
> it, it reads from the current position to the end of the file.  Once
> you're done writing to the StringIO object, you can rewind the
> position to the beggining and then read to the end, like this:
> 
> f = StringIO.StringIO()
> f.write('This is some data')
> f.seek(0)
> print f.read()
> 
> StringIO objects also have a special getvalue() method, which allows
> you to get the entire contents without changing the current position.
> You can replace your f.read() with f.getvalue() without having to mess
> with seek(), but then your code won't work with real files, if that's
> important.
> 
> -- 
> Jerry
> --
> http://mail.python.org/mailman/listinfo/python-list



--
http://mail.python.org/mailman/listinfo/python-list


Re: dynamically creating html code with python...

2008-08-11 Thread anartz
Hi,

Thanks for your patience.

I got the text displayed in the web browser with the following code:

[CODE]
f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write("")

print "Content-type: text/html\n"
print f.getvalue()
f.close()
[/CODE]

Now I am trying to put both the image and the text together, but the following 
lines do not create the text with the chart that I expected.

[CODE]
f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write(urllib.urlopen("http://localhost/myLibs/ChartLib.py",urllib.urlencode(TheData)))
f.write("")

print "Content-type: text/html\n"
print f.getvalue()
f.close()
[/CODE]

I am wondering if urllib.urlopen is the command I need to revise.

Thanks for the pointers as well. I will look into them.




Jerry Hill <[EMAIL PROTECTED]> wrote :

> On Mon, Aug 11, 2008 at 12:26 PM,  <[EMAIL PROTECTED]> wrote:
> > I have tried calling a script containing the code below from a web browser 
> > and it did not get the text.
> 
> You quoted my post that answered this question, but did not implement
> either of the two solutions I suggested.  I continue to suggest that
> you either: f.seek(0) before you f.read(), or that you replace
> f.read() with f.getvalue().
> 
> Also, you may want to read the docs on
> StringIO - http://docs.python.org/lib/module-StringIO.html
> File objects - http://docs.python.org/lib/bltin-file-objects.html
> 
> -- 
> Jerry
> --
> http://mail.python.org/mailman/listinfo/python-list



--
http://mail.python.org/mailman/listinfo/python-list


Re: dynamically creating html code with python...

2008-08-11 Thread anartz
This makes sense. Thanks!

I managed to get what I wanted with something similar to what you suggested:

[CODE]
print "Content-Type: text/html\n\n"
html="""



data analysis site



This is a test

After image text

"""

print html % myChartsLib.myPlotType(TheData)
[/CODE]

and the script returns

[CODE]
f = StringIO.StringIO()
pylab.savefig(f)
return 'data:image/png,' + urllib.quote(f.getvalue())
[/CODE]

This works fine in Firefox, but not in IE7. Any ideas why?

BTW, you are right about me not having a clue about http. It's the first time I 
try to do something with it. May be you could point me out to some good links 
where I can learn.

I will take a look into Mako too.

Thanks again.

Bruno Desthuilliers <[EMAIL PROTECTED]> wrote :

> [EMAIL PROTECTED] a écrit :
> > Sorry, my fault...
> > 
> > I am trying to build a web application for data analysis. Basically
> > some data will be read from a database and passed to a python script
> > (myLibs.py) to build an image as follows.
> > 
> > [CODE] 
> > f=urllib.urlopen("http://localhost/path2Libs/myLibs.py",urllib.urlencode(TheData))
> >  print "Content-type: image/png\n" 
>  > print f.read()
>  > f.close()
>  > [/CODE]
> > 
> > This section behaves as expected, and I can see the chart on the
> > web-page.
> 
> Indeed. Using an http request to call a local script is totally 
> braindead, but this is another problem.
> 
> > Now, I would like to add some text and possibly more charts
> > (generated in the same way) to my web-page.
> 
> Which one ? What you showed is a way to generate an image resource (with 
> mime-type 'image/png'), not an html page resource (mime-type : 
> text/html). Images resources are not directly embedded in html pages - 
> they are *referenced* from web pages (using an  tag), then it's up 
> to the user-agent (usually, the browser) to emit another http request to 
> get the image.
> 
> 
> > This is what I need help
> > with.
> 
> Not tested (obviously), but what you want is something like:
> 
> print "Content-type: text/html\n"
> print """
> 
>
>  data analysis site
>
>
>  This is a trial test
>  http://localhost/myLibs/ChartLib.py?%s"; />
>
> 
> """ % urllib.urlencode(TheData)
> 
> 
> > My question: How can I use python to dynamically add descriptive
> > comments (text), and possibly more charts to the web-page?
> 
> The code you showed so far either tried to add text/html to an image 
> (that is, binary data), or to embed the image's binary data into 
> text/html. None of this makes sense. Period.  The problem is not with 
> Python. The problem is that you can't seriously hope to do web 
> programming without any knowledge of the http protocol.
> 
> Also and FWIW, you'd be better using a decent templating system (mako, 
> cheetah, genshi, tal, whatever fits your brain) instead of generating 
> html that way.
> --
> http://mail.python.org/mailman/listinfo/python-list



--
http://mail.python.org/mailman/listinfo/python-list

Re: dynamically creating html code with python...

2008-08-11 Thread anartz
btw, credits for the code shown below also for:

http://bitworking.org/news/Sparklines_in_data_URIs_in_Python

[EMAIL PROTECTED] wrote :

> This makes sense. Thanks!
> 
> I managed to get what I wanted with something similar to what you suggested:
> 
> [CODE]
> print "Content-Type: text/html\n\n"
> html="""
> 
> 
> 
> data analysis site
> 
> 
> 
> This is a test
> 
> After image text
> 
> """
> 
> print html % myChartsLib.myPlotType(TheData)
> [/CODE]
> 
> and the script returns
> 
> [CODE]
> f = StringIO.StringIO()
> pylab.savefig(f)
> return 'data:image/png,' + urllib.quote(f.getvalue())
> [/CODE]
> 
> This works fine in Firefox, but not in IE7. Any ideas why?
> 
> BTW, you are right about me not having a clue about http. It's the first time 
> I try to do something with it. May be you could point me out to some good 
> links where I can learn.
> 
> I will take a look into Mako too.
> 
> Thanks again.
> 
> Bruno Desthuilliers <[EMAIL PROTECTED]> wrote :
> 
> > [EMAIL PROTECTED] a écrit :
> > > Sorry, my fault...
> > > 
> > > I am trying to build a web application for data analysis. Basically
> > > some data will be read from a database and passed to a python script
> > > (myLibs.py) to build an image as follows.
> > > 
> > > [CODE] 
> > > f=urllib.urlopen("http://localhost/path2Libs/myLibs.py",urllib.urlencode(TheData))
> > >  print "Content-type: image/png\n" 
> >  > print f.read()
> >  > f.close()
> >  > [/CODE]
> > > 
> > > This section behaves as expected, and I can see the chart on the
> > > web-page.
> > 
> > Indeed. Using an http request to call a local script is totally 
> > braindead, but this is another problem.
> > 
> > > Now, I would like to add some text and possibly more charts
> > > (generated in the same way) to my web-page.
> > 
> > Which one ? What you showed is a way to generate an image resource (with 
> > mime-type 'image/png'), not an html page resource (mime-type : 
> > text/html). Images resources are not directly embedded in html pages - 
> > they are *referenced* from web pages (using an  tag), then it's up 
> > to the user-agent (usually, the browser) to emit another http request to 
> > get the image.
> > 
> > 
> > > This is what I need help
> > > with.
> > 
> > Not tested (obviously), but what you want is something like:
> > 
> > print "Content-type: text/html\n"
> > print """
> > 
> >
> >  data analysis site
> >
> >
> >  This is a trial test
> >  http://localhost/myLibs/ChartLib.py?%s"; />
> >
> > 
> > """ % urllib.urlencode(TheData)
> > 
> > 
> > > My question: How can I use python to dynamically add descriptive
> > > comments (text), and possibly more charts to the web-page?
> > 
> > The code you showed so far either tried to add text/html to an image 
> > (that is, binary data), or to embed the image's binary data into 
> > text/html. None of this makes sense. Period.  The problem is not with 
> > Python. The problem is that you can't seriously hope to do web 
> > programming without any knowledge of the http protocol.
> > 
> > Also and FWIW, you'd be better using a decent templating system (mako, 
> > cheetah, genshi, tal, whatever fits your brain) instead of generating 
> > html that way.
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> 
> 
> 
> --
> http://mail.python.org/mailman/listinfo/python-list



--
http://mail.python.org/mailman/listinfo/python-list