replace route_url by fa_url

This commit is contained in:
Gael Pasgrimaud
2011-02-23 19:26:42 +01:00
parent 29940c5e43
commit a935b551a3
4 changed files with 44 additions and 25 deletions
BIN
View File
Binary file not shown.
+20 -6
View File
@@ -7,18 +7,23 @@ class Base(object):
self.__parent__ = None
self.request = request
if hasattr(self, '__fa_route_name__'):
request.forms = self.__forms__
request.model = self.__models__
request.route_name = self.__fa_route_name__
request.session_factory = self.__session_factory__
request.route_name = self.__fa_route_name__
request.model = self.__models__
request.forms = self.__forms__
request.fa_url = self.fa_url
request.model_name = None
request.model_id = None
request.format = 'html'
class Models(Base):
def __init__(self, request):
Base.__init__(self, request, None)
request.model_name = None
request.model_id = None
request.format = 'html'
def fa_url(self, *args):
return self.request.route_url(self.__fa_route_name__,
traverse='/'.join([str(a) for a in args]))
def __getitem__(self, item):
if item in ('json', 'xhr'):
@@ -34,6 +39,10 @@ class ModelListing(Base):
Base.__init__(self, request, name)
request.model_name = name
def fa_url(self, *args):
args = args[1:]
return self.request.route_url(self.__fa_route_name__,
traverse='/'.join([str(a) for a in args]))
def __getitem__(self, item):
if item in ('json', 'xhr'):
self.request.format = item
@@ -46,6 +55,11 @@ class ModelListing(Base):
class Model(Base):
def fa_url(self, *args):
args = args[2:]
return self.request.route_url(self.__fa_route_name__,
traverse='/'.join([str(a) for a in args]))
def __init__(self, request, name):
Base.__init__(self, request, name)
request.model_id = name
+10 -2
View File
@@ -5,8 +5,16 @@
tal:attributes="action request.route_url(request.route_name, traverse=request.model_name)"
>
<div tal:content="structure fs.render()" />
<div metal:use-macro="main.macros['buttons']">
</div>
<p class="fa_field">
<a class="ui-widget-header ui-widget-link ui-widget-button ui-corner-all" href="#">
<input type="submit" value="${F_('Save')}" />
</a>
<a class="ui-widget-header ui-widget-link ui-corner-all"
tal:attributes="href request.route_url(request.route_name, traverse=request.model_name)">
<span class="ui-icon ui-icon-circle-arrow-w"></span>
${F_('Cancel')}
</a>
</p>
</form>
</div>
</body>
+14 -17
View File
@@ -58,9 +58,6 @@ class ModelView(object):
except AttributeError:
return None
def route_url(self, *args):
return self.request.route_url(self.request.route_name, traverse='/'.join([str(a) for a in args]))
def Session(self):
"""return a Session object. You **must** override this."""
return self.request.session_factory()
@@ -72,14 +69,14 @@ class ModelView(object):
if isinstance(request.model, list):
for model in request.model:
key = model.__name__
models[key] = self.route_url(key, request.format)
models[key] = request.fa_url(key, request.format)
else:
for key, obj in request.model.__dict__.iteritems():
if not key.startswith('_'):
if Document is not None:
try:
if issubclass(obj, Document):
models[key] = self.route_url(key, request.format)
models[key] = request.fa_url(key, request.format)
continue
except:
pass
@@ -89,7 +86,7 @@ class ModelView(object):
continue
if not isinstance(obj, type):
continue
models[key] = self.route_url(key, request.format)
models[key] = request.fa_url(key, request.format)
return self.render(models=models)
def get_model(self):
@@ -150,13 +147,13 @@ class ModelView(object):
request = self.request
model_name = request.model_name
id = request.model_id
items.append((self.route_url(), 'root'))
items.append((request.fa_url(), 'root'))
if self.model_name:
items.append((self.route_url(model_name), model_name))
items.append((request.fa_url(model_name), model_name))
if id and hasattr(fs.model, '__unicode__'):
items.append((self.route_url(model_name, id), u'%s' % fs.model))
items.append((request.fa_url(model_name, id), u'%s' % fs.model))
elif id:
items.append((self.route_url(model_name, id), id))
items.append((request.fa_url(model_name, id), id))
return items
def render(self, **kwargs):
@@ -190,7 +187,7 @@ class ModelView(object):
data = dict(fields=fields)
pk = _pk(fs.model)
if pk:
data['item_url'] = self.route_url(self.model_name, 'json', pk)
data['item_url'] = request.fa_url(self.model_name, 'json', pk)
else:
data = {}
data.update(kwargs)
@@ -324,14 +321,14 @@ class ModelView(object):
<form action="%(url)s" method="GET" class="ui-grid-icon ui-widget-header ui-corner-all">
<input type="submit" class="ui-grid-icon ui-icon ui-icon-pencil" title="%(label)s" value="%(label)s" />
</form>
''' % dict(url=self.route_url(self.model_name, _pk(item), 'edit'),
''' % dict(url=self.request.fa_url(self.model_name, _pk(item), 'edit'),
label=get_translator().gettext('edit'))
def delete_link():
return lambda item: '''
<form action="%(url)s" method="POST" class="ui-grid-icon ui-state-error ui-corner-all">
<input type="submit" class="ui-icon ui-icon-circle-close" title="%(label)s" value="%(label)s" />
</form>
''' % dict(url=self.route_url(self.model_name, _pk(item), 'delete'),
''' % dict(url=self.request.fa_url(self.model_name, _pk(item), 'delete'),
label=get_translator().gettext('delete'))
grid.append(Field('edit', fatypes.String, edit_link()))
grid.append(Field('delete', fatypes.String, delete_link()))
@@ -350,7 +347,7 @@ class ModelView(object):
pk = _pk(item)
fs._set_active(item)
value = dict(id=pk,
item_url=self.route_url(request.model_name, pk))
item_url=request.fa_url(request.model_name, pk))
if 'jqgrid' in request.GET:
fields = [_stringify(field.render_readonly()) for field in fs.render_fields.values()]
value['cell'] = [pk] + fields
@@ -392,7 +389,7 @@ class ModelView(object):
response.content_type = 'text/plain'
return ''
return exc.HTTPFound(
location=self.route_url(request.model_name))
location=request.fa_url(request.model_name))
else:
fs.rebind(fs.model, data=None)
return self.render(fs=fs)
@@ -411,7 +408,7 @@ class ModelView(object):
response = Response()
response.content_type = 'text/plain'
return response
return exc.HTTPFound(location=self.route_url(request.model_name))
return exc.HTTPFound(location=request.fa_url(request.model_name))
return self.render(id=id)
def show(self):
@@ -451,7 +448,7 @@ class ModelView(object):
response.content_type = 'text/plain'
return ''
return exc.HTTPFound(
location=self.route_url(request.model_name, _pk(fs.model)))
location=request.fa_url(request.model_name, _pk(fs.model)))
else:
return self.render(fs=fs, status=0)
if request.format == 'html':