PS : I' m answering directly over the Google interface ....how can I make it plain text ?
Thanks dude for your help ...the significant help was the : enctype="multipart/form-data"
I didn't put that in my template and the whole code get crazy cause of that :)
So I'm putting my code here for those who wants to reuse it or for better suggestions :
The Python class :
class ProjectPlugin(Component):
implements(INavigationContributor, IRequestHandler, ITemplateProvider)
# INavigationContributor methods
def get_active_navigation_item(self, req):
return 'helloworldv2linkIdentifier'
def get_navigation_items(self, req):
yield ('mainnav', 'helloworldv2linkIdentifier',
tag.a('Gantt Export', href=req.href.myapppp()))
# IRequestHandler methods
def match_request(self, req):
return re.match(r'/myapppp(?:_trac)?(?:/.*)?$', req.path_info)
def process_request(self, req):
# add the implements and chek the imports ! and the indents
data = {}
if req.method=='POST':
if 'DispFile' in req.args:
myFile=req.args.get('Fily','value')
data.update({
'myFile': myFile
})
dummy=req.args.get('Fily','value').filename
data.update({
'dummy': dummy
})
# file reading
mystream = myFile.file.read()
# This tuple is for Genshi (template_name, data, content_type)
# Without data the trac layout will not appear.
return 'GanttTemplate.html', data, None
# ITemplateProvider methods
# Used to add the plugin's templates and htdocs
def get_templates_dirs(self):
from pkg_resources import resource_filename
return [resource_filename(__name__, 'templates')]
def get_htdocs_dirs(self):
return []
The GanttTemplate.html file :
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml"
xmlns:py="
http://genshi.edgewall.org/"
xmlns:xi="
http://www.w3.org/2001/XInclude">
<xi:include href="layout.html" />
<head>
<title>Gant Export Tool</title>
</head>
<body>
<form id="GanttForm1" name="inputForm2" action="" method="POST" enctype="multipart/form-data">
<fieldset id="operations" >
<legend >
Configuration
</legend>
<label for="Fily">URL :</label>
<input type="file" name="Fily" value=""/><br /><br />
Dummy variable = $dummy <br/>
<input type="submit" name="DispFile" value="Display the file"/><br /><br />
</fieldset>
</form>
<br /><br /><br /><br /><br />
</body>
</html>
Just one more question :
How can I redirect the modified stream to a window which ables the user to choose a file name and emplacement ?
Thanks a lot !
On Wednesday, September 19, 2012 10:14:50 AM UTC+2, cyberbrain wrote:
|
I'm trying to write a plugin for trac but I'm missing sthg.
|
I'm trying to upload a file to the sever using the POST method this a simplified example :
<form id="MyForm" name="input" action="" method="post">
<label for="attachment">URL :</label>
<input type="file" name="GanttFile" value=""/>
</form>
Now I'm trying to process the uploaded file ,read it and do some
modifications than save it or ask the user to choose where he wants to
save the file (export some data from the trac database)...I'm still
blocked at this level :
def process_request(self, req):
data = {}
if req.method=='POST':
file=req.args.get('GanttFile', 'value')
# and now I'm blocked !! how can I modify this file
# and then redirect or save it !
|