[Zope] Re: Calling a dtml-method that has an extension (Was: Re: [Zope] Creating files on server)

Tino Wildenhain tino@wildenhain.de
Wed, 25 Apr 2001 15:49:19 +0200


Hi Gitte,

are you sure, the extension .smil is really needed?
Setting the mime-type in return should be sufficient:

<dtml-call "RESPONSE.setHeader('application/smilwhatever')">

of course you have to know how the mime-type is called
actually ;)

Can you explain in short what you really want to do?
Do you link to a page which should serve the
smil-file? Then you have something like
<a href="/where/you/did/your/smilgenerator_put.smil">

eventually with several url-encoded parameters after it.

HTH
Tino Wildenhain

--On Mittwoch, 25. April 2001 11:02 +0200 Gitte Wange <gitte@babytux.dk> 
wrote:

> Hi again,
>
> For secure reasons I have dropped the idea of creating a physical file
> on the server. Instead I can create the files dynamically inside Zope
> and link to the method.
>
> I have a method called fncSmileGenerate.smil
>
> I call this from another method. Now when doing this I get the following
> NameError:
>
> Error Type: NameError
> Error Value: fncSmileGenerate
>
> The traceback is this:
> Traceback (innermost last):
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/ZPublisher/Publish.py, line
> 223, in publish_module
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/ZPublisher/Publish.py, line
> 187, in publish
>   File /usr/local/Zope-2.3.0-linux2-x86/lib/python/Zope/__init__.py,
> line 221, in zpublisher_exception_hook
>     (Object: Traversable)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/ZPublisher/Publish.py, line
> 171, in publish
>   File /usr/local/Zope-2.3.0-linux2-x86/lib/python/ZPublisher/mapply.py,
> line 160, in mapply
>     (Object: index_html)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/ZPublisher/Publish.py, line
> 112, in call_object
>     (Object: index_html)
>   File /usr/local/Zope-2.3.0-linux2-x86/lib/python/OFS/DTMLMethod.py,
> line 189, in __call__
>     (Object: index_html)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_String.py
> , line 538, in __call__     (Object: index_html)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_With.py,
> line 146, in render
>     (Object: portal_properties)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_With.py,
> line 146, in render
>     (Object: admin)
>   File /usr/local/Zope-2.3.0-linux2-x86/lib/python/OFS/DTMLDocument.py,
> line 182, in __call__
>     (Object: index)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_String.py
> , line 538, in __call__     (Object: index)
>   File /usr/local/Zope-2.3.0-linux2-x86/lib/python/OFS/DTMLMethod.py,
> line 182, in __call__
>     (Object: dspDisplayShow)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_String.py
> , line 538, in __call__     (Object: dspDisplayShow)
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_In.py,
> line 713, in renderwob
>     (Object: sqlGetShowClips(showid=showid))
>   File
> /usr/local/Zope-2.3.0-linux2-x86/lib/python/DocumentTemplate/DT_Util.py,
> line 334, in eval
>     (Object: fncSmileGenerate.smil(clipid=clipid))
>     (Info: fncSmileGenerate)
>   File <string>, line 0, in ?
> NameError: (see above)
>
> It seems to me that Zope won't recognize the .smil extension. Is it
> possible in any way to make it do so ?
> I need the extension because of RealServer.
>
> Regards,
> Gitte
>
>
> On 24 Apr 2001 18:27:00 +0200, Tino Wildenhain wrote:
>> Hi Gitte,
>>
>> the built in "open()" is a high security risk and therefore not
>> exposed to pythonmethods. For this you should stick to
>> Chris' solution with external method. However keep sure
>> your script cannot be tricked to write files anywhere on the filesystem!
>> Dont use + to concenat pathname parts. Use os.path.join() instead.
>> Try os.path.split(os.path.normpath(os.path.join(part,of,your,pathname)))
>> to see the result of the concenation and if its still in the directory
>> you want it to be. (someone could feed '../../name' into your script)
>>
>> HTH
>> Tino
>>
>> --On Dienstag, 24. April 2001 13:48 +0200 Gitte Wange
>> <gitte@mmmanager.org>  wrote:
>>
>> > On 24 Apr 2001 12:31:08 +0100, Chris Withers wrote:
>> >> Gitte Wange wrote:
>> >> >
>> >> > Okay maybe I didn't express myself very clear.
>> >> > Can anyone tell me how I - in somw way - create a file on the server
>> >> > through Zope ?
>> >>
>> >> On the filesystem? LocalFS might be right, read the documentation for
>> >> it (it can eb a bit tricky to find the useful bits from what I
>> >> remember ;-)
>> >>
>> >> Failing that, use an external method:
>> >>
>> >> def write_stuff(self,path,stuff):
>> >>    f = open(path,'w')
>> >>    f.write(stuff)
>> >>    f.close()
>> >>
>> >> cheers,
>> >>
>> >> Chris
>> >
>> >
>> > I have tried the following:
>> > I added a script(Python):
>> > argument list: server, mediafile, tcin, tcout, id, clipname
>> >
>> > The code looks like this:
>> > fil = open("/root/Real/Content/" + id + clipname + ".smil", 'w')
>> > #Open file
>> > text = "<smil>\n\t<body>\n\t\t<audio src=\"rtps://" + server + "/" +
>> > mediafile + " clip-begin=\"" + tcin + "\" clip-end=\"" + tcout +
>> > "\">\n\t</body>\n\n</smil>"
>> > fil.write(text)
>> > fil.close()
>> >
>> > Now when running this script I get a NameError on "open".
>> > What is wrong ?
>> >
>> > Regards,
>> > Gitte
>> >
>> >
>> > _______________________________________________
>> > 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 )
>>
>>
>>
>
>
>