From a935b551a38acb07d3a314d9cacaca3d674f2c2c Mon Sep 17 00:00:00 2001 From: Gael Pasgrimaud Date: Wed, 23 Feb 2011 19:26:42 +0100 Subject: [PATCH] replace route_url by fa_url --- .coverage | Bin 0 -> 2013 bytes pyramid_formalchemy/resources.py | 26 +++++++++++++---- pyramid_formalchemy/templates/admin/new.pt | 12 ++++++-- pyramid_formalchemy/views.py | 31 ++++++++++----------- 4 files changed, 44 insertions(+), 25 deletions(-) create mode 100644 .coverage diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..5bca09838ca7a2b196f1771e449e07ff8e35878d GIT binary patch literal 2013 zcmbW2X^a$Q7=*1xR4%!f1q2pQ=v8+HSzu9-LoTr_FC0Xm8OGUW88W*wJv{>q2D|{l zlN(gj04fP+BB0SImne#Y;x82s4i$qSDqjCIcK7TWNJz~1_v_^C@2je(-usL>4$MfC zcq*B+6Lq%hoIl5DY)1NrBd(os!!@y)b~0?& z)VSfglxtU973ve}Q<2X14Gjo+r@>)3W4pOzHk8gg7g)}PCVR0rO_uWtUdb9xV}jFJ z%Q`z!SIij$x|YHz5-P^qDghFzQz$yBV` z&iJ=(YB|kJ-oo2>JIC@4MmUalaRMiD5-m<*YFuW%jdX(8@Y+Ea5G=!YuwHq+@)SnZ^(qop$cd)Gz1z74TG+ShC?Hu zk?S`Tf6 zHbL8=9nel_7qka%QdP`^L~S~i$rcp9*m7E$EMY0j z*quFiDKGPKSiul0Ie=BXn%D4J4&q=A;ZP3e2#(|^j^+&<<9Rba@a9Zsd|w`_cc#IY z<#y!Gv+kG9ho`18wXtM;nq8ZZrZcJO9$?{gJ`<}=R7cPFcFwbCG*OqxMx(v}tt_Xt z$wq9#rfgSzTIa1 zp>BrC40Siu!%(@QzJ@9d4e;t}a50)U#HKb@=PiPuw@NLiqZu^T`1-z@%xc=6)_#XO zbeZK0&g4B_Pp#!TuJ<&4nOk|9zw$T!&Oi94T^z%%UD!!}+&WoKXOlfWa{c{Lh+75w zd;AuXZ8xx3M9P{^mHuBL(OA9gp!if8Yt8 z;b}WE?Ei>oXELcwJQ;Ic{{@#=P8YMjyMrVaiGkN3v-19+u9nlyWLJ+k Uzrw<2)YniChyo5{?OZPO55F3mP5=M^ literal 0 HcmV?d00001 diff --git a/pyramid_formalchemy/resources.py b/pyramid_formalchemy/resources.py index 5d2180b..4764fe7 100644 --- a/pyramid_formalchemy/resources.py +++ b/pyramid_formalchemy/resources.py @@ -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 diff --git a/pyramid_formalchemy/templates/admin/new.pt b/pyramid_formalchemy/templates/admin/new.pt index a06b8cb..a0a1d7d 100644 --- a/pyramid_formalchemy/templates/admin/new.pt +++ b/pyramid_formalchemy/templates/admin/new.pt @@ -5,8 +5,16 @@ tal:attributes="action request.route_url(request.route_name, traverse=request.model_name)" > diff --git a/pyramid_formalchemy/views.py b/pyramid_formalchemy/views.py index 746e35c..a892c30 100644 --- a/pyramid_formalchemy/views.py +++ b/pyramid_formalchemy/views.py @@ -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):
- ''' % 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: '''
- ''' % 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':