[Grok-dev] Static dir with grok.PageTemplateFile
Alex Leach
albl500 at york.ac.uk
Sun May 13 18:05:46 UTC 2012
I have a few forms in separate modules that share the same template. Rather
than having the template in the <module_name>_templates/ directory, I've got
this one 'edit-form.pt' template in the bottom, src/ directory.
It worked fine, until I added a (conditional) include in the head of the page
template, so that it downloads a CSS stylesheet if the form request wasn't
done through an AJAX call.
So I'm getting an error now, whenever I request one of the forms which use
this template, as it fails to find the static directory holding the CSS. I've
tried adding `resource.style.need()` to the forms' update methods, but they
still don't find the static directory. Part of the traceback shows this:-
Line 5, Column 10
In expression: <PathExpr standard:u'static/css/style.css'>
- Names:
{'args': (),
'context': <server.app.Server object at 0x7f4878033668>,
'default': <object object at 0x7f4891c0a490>,
'loop': {},
'nothing': None,
'options': {},
'repeat': {},
'request': <zope.publisher.browser.BrowserRequest instance
URL=http://localhost:8080/develop2/addSQLdatabase>,
'static': None,
'template': <grokcore.view.components.TrustedFilePageTemplate object at
0x40bc8d0>,
'view': <server.BrowseSQL.AddSQLDatabaseForm object at 0x4b246d0>}
I reckon the problem is where it says: 'static' : None, but I don't know how
to rectify that...
The class declaration I have for this form is:-
class AddSQLDatabaseForm(grok.AddForm):
grok.context(Server)
grok.implements(ISQLDatabase)
grok.name('addSQLdatabase')
form_fields = grok.AutoFields(ISQLDatabase)
label = 'Add SQL database'
template = grok.PageTemplateFile("edit-form.pt")
@grok.action('New SQL database')
def new_database(self,**kwargs):
database = SQLDatabase(**kwargs)
database.creator = self.request.principal.title
database.creation_date = datetime.datetime.now()
database.modification_date = datetime.datetime.now()
dbname = kwargs.pop('database')
self.context[dbname] = database
def update(self):
resource.style.need()
The relevant part of the page template file (edit-form.pt) is:-
<metal:block tal:condition="python:request.get('HTTP_X_REQUESTED_WITH',None)
!='XMLHttpRequest'" >
<head>
<link rel="stylesheet" type="text/css" tal:attributes="href
static/css/style.css">
</head>
</metal:block>
Any idea why it can't find the CSS file? That same tal:attributes URL works in
all the module-specific page templates. Why not with this generic form
template?
Thanks for any and all help,
Alex
--
Alex Leach BSc. MRes.
Department of Biology
University of York
York YO10 5DD
United Kingdom
www: http://bioltfws1.york.ac.uk/~albl500
EMAIL DISCLAIMER: http://www.york.ac.uk/docs/disclaimer/email.htm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.zope.org/pipermail/grok-dev/attachments/20120513/dba18d80/attachment.html>
More information about the Grok-dev
mailing list