2013-08-28 2 views
0

에 일치하는보기를 얻기 나는이 같은 피라미드 서비스와 코드가 다음 ResultView.get 내부피라미드

@view_defaults(route_name="result", context=Result, renderer="json") 
class ResultView(RESTView): 
    """ 
    Rest view for exercise results 
    """ 

    @view_config(request_method='GET', permission='view', role="owner") 
    @view_config(request_method='GET', permission='view', role="admin") 
    @view_config(request_method='GET', permission='view', role="gadmin") 
    @schema(Result) 
    @log("get result") 
    def get(self): 
     """ 
     Gets result 
     """ 

     return self.get.__schema__.dictirialize(self.context, prepare_json=True) 

...... 

어떻게 내가이 일치 얻을 수있는보기?

+0

여기에서 무엇을 찾고 계십니까? 일치 된 역할은 무엇입니까? –

+0

함수를 호출 할 때 일치하는보기 구성 객체가 없습니다. 나는 다른 접근 방식을 취해야 할 수도 있다는 것을 깨닫기 시작했습니다. – offlinehacker

+0

"view config"객체가 없습니다. 이것은 XY 문제처럼 느껴집니다. –

답변

0

나는 을 첨부 한 사용자 정의보기 데코레이터를 작성하여 request에이 문제를 해결했습니다. 이 데코레이터는 어떤 뷰 구성이 활성화되는지에 따라 호출됩니다.

@view_config(request_method='GET', role="owner", permission="view", decorator=view_id("owner")) 
    @view_config(request_method='GET', role="admin", permission="view", decorator=view_id("admin")) 
    @view_config(request_method='GET', permission="view") 
    @schema(User, excludes=('password', 'deleted'), key="owner") 
    @schema(User, key="admin") 
    @log("get user") 
    def get(self): 
     return self.get.__schema__[self.request.id].dictify(self.context) 

그리고 장식 :

def view_id(id): 
    """ 
    Pyramid view decorator that remembers the view id and assigns it to request 
    """ 

    def _view_id(view): 
     def view_callable(context, request): 
      request.id = id 
      return view(context, request) 

     return view_callable 

    return _view_id 

그것은 나를 위해 일을 얻을 여기에 예입니다.