diff --git a/.coverage b/.coverage new file mode 100644 index 0000000..5bca098 Binary files /dev/null and b/.coverage differ 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)" >
-+ + + + + + ${F_('Cancel')} + +