Re: [Zope] External Method Working Directory?

2005-09-30 Thread jwithers

> When I've needed to do simple stuff with this is the past, I just 
> manipulate mailmain by send email from Zope to mailman's admin interface...
> 

Pipes seem easier to me. Responses from the command line scripts seem
much easier to use for confirmation. And there are things you can do
easily from the cli interface that you either can't do through email,
are difficult to do through email, or possibly I just don't know how to
do through email.

> > And yeah, tempfile would work, although, I have to
> > admit I really don't see the point of it when you are only storing one
> > file. I am probably missing some usecase or good programming practice
> > here, but it seems like it saves you a single line for the delete in
> > return for an extra module import. 
> 
> What happens when two users do something that creates one of these temp 
> files at exactly the same time? ;-)
> 

Yah, you and Tres Seaver (OL) both made this point, and thanks for
saving me from having much wailing and gnashing of teeth over my dimness
once this actually went live.

Thanks for the help,

J.P. Withers

___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-30 Thread Chris Withers

jwithers wrote:

Because I need to feed the file to Mailman for evil purposes of my own
(well, fairly mundane purposes of allowing my zope app to manipulate
mailman list memberships, really) that the prototype mailman adapter I
found doesn't meet. 


When I've needed to do simple stuff with this is the past, I just 
manipulate mailmain by send email from Zope to mailman's admin interface...



And yeah, tempfile would work, although, I have to
admit I really don't see the point of it when you are only storing one
file. I am probably missing some usecase or good programming practice
here, but it seems like it saves you a single line for the delete in
return for an extra module import. 


What happens when two users do something that creates one of these temp 
files at exactly the same time? ;-)


cheers,

Chris

--
Simplistix - Content Management, Zope & Python Consulting
   - http://www.simplistix.co.uk
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-29 Thread jwithers
On Thu, 2005-09-29 at 00:20, Chris Withers wrote:
> eep, another one, hope we're not related ;-)
> 
When I saw your posts on newsgroups years ago, I almost gave up python
programming altogether Chris, thinking that any given field of endeavor
needs only one Withers, but decided to go ahead and chance it.

> > Can anyone tell me what the default working directory for an external
> > method is?
> 
> You can't rely on it being anything. If you're working with files, you 
> need to be very careful...
> 
> > Further, I need this to create a file temporarily in Extensions. 
> 
> Why?

Because I need to feed the file to Mailman for evil purposes of my own
(well, fairly mundane purposes of allowing my zope app to manipulate
mailman list memberships, really) that the prototype mailman adapter I
found doesn't meet. And yeah, tempfile would work, although, I have to
admit I really don't see the point of it when you are only storing one
file. I am probably missing some usecase or good programming practice
here, but it seems like it saves you a single line for the delete in
return for an extra module import. 

Peter Bengtsson gave me the solution in just using the INSTANCE_HOME
variable directly, which is bound in external scripts. That beat the
daylights out of the solution that had come up wjth the help of some
folks on ICQ of using self.Control_Panel.getINSTANCE_HOME(). And Deiter
is right and it is dim to put the temporary file in Extensions and it
will be put in var instead. Not sure what I was thinking there.


John Withers 

> 
> > I would prefer not to have to hardwire the location of Extension into the
> > code, since that would make the script non-portable to other instances 
> > easily.
> > 
> > Any advice on this would be appreciated.
> 
> I'd suggest looking at python's tempfile module...
> 
> Chris

___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-29 Thread Dieter Maurer
jwithers wrote at 2005-9-28 15:43 -0700:
> ...
>I have an external method that at this point is made up of nothing but
>os.getcwd() and lives in my Extensions directory. When it is run, it
>reports the working directory as being one of my Products directories.

Some products are broken (they change the current working directory).
Apparently, you have one of them installed.

In general, it is a bad idea to change the current working directory
in a multi-threaded application (such as Zope).


An External Method does not have a specific working directory
"when it is run". Because Zope must not modify the working
directory, it cannot let it follow the "run of an External Method".
The current working directory remains what it was.

On a system with well behaving products, the current working
directory remains the "INSTANCE_HOME".

> ...
>Further, I need this to create a file temporarily in Extensions. 
>I would prefer not to have to hardwire the location of Extension into the
>code, since that would make the script non-portable to other instances easily.

The "Extensions" directory is a bad place for temporary files...

-- 
Dieter
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-29 Thread Chris Withers

jwithers wrote:

eep, another one, hope we're not related ;-)


Can anyone tell me what the default working directory for an external
method is?


You can't rely on it being anything. If you're working with files, you 
need to be very careful...


Further, I need this to create a file temporarily in Extensions. 


Why?


I would prefer not to have to hardwire the location of Extension into the
code, since that would make the script non-portable to other instances easily.

Any advice on this would be appreciated.


I'd suggest looking at python's tempfile module...

Chris

--
Simplistix - Content Management, Zope & Python Consulting
   - http://www.simplistix.co.uk

___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-28 Thread David Hassalevris

jwithers,

a) Is your os.getcwd() (in /Extensions) called from a Product (in 
/Products?)  Otherwise I have not idea


b) Regarding temporary files ..

I've used stuff like ...

import tempfile
   tmpFile2 = tempfile.mktemp()

   theFile=open( tmpFile2,'rb')
   result = theFile.read()
   theFile.close()
   os.remove(tmpFile2)

I think this may depreciated but do a google on "python tempfile" and 
you can use the updated modules if they apply to your issue.


David

jwithers wrote:


Folks,

I have an external method that at this point is made up of nothing but
os.getcwd() and lives in my Extensions directory. When it is run, it
reports the working directory as being one of my Products directories.

Can anyone tell me what the default working directory for an external
method is?

Further, I need this to create a file temporarily in Extensions. 
I would prefer not to have to hardwire the location of Extension into the

code, since that would make the script non-portable to other instances easily.

Any advice on this would be appreciated.

J. P. Withers





___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope-dev )


Re: [Zope] External Method Working Directory?

2005-09-28 Thread Peter Bengtsson
Products?? That is odd. I thought it was the var/ directory or at
least the zope instance home directory. From the External method you
should have access to INSTANCE_HOME and SOFTWARE_HOME. Try if these
are what you want. I doubt that you'll find your Extensions/ dir in
any of them so you might have do something like:

import os
return os.path.join(INSTANCE_HOME, 'Extensions')


2005/9/28, jwithers <[EMAIL PROTECTED]>:
> Folks,
>
> I have an external method that at this point is made up of nothing but
> os.getcwd() and lives in my Extensions directory. When it is run, it
> reports the working directory as being one of my Products directories.
>
> Can anyone tell me what the default working directory for an external
> method is?
>
> Further, I need this to create a file temporarily in Extensions.
> I would prefer not to have to hardwire the location of Extension into the
> code, since that would make the script non-portable to other instances easily.
>
> Any advice on this would be appreciated.
>
> J. P. Withers
>
> ___
> Zope maillist  -  Zope@zope.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope-dev )
>


--
Peter Bengtsson,
work www.fry-it.com
home www.peterbe.com
hobby www.issuetrackerproduct.com
___
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )