@@ -5,12 +5,28 @@ class ApiEndpoint(object):
55
66 def __init__ (self , pattern , parent_pattern = None ):
77 self .pattern = pattern
8+ self .callback = pattern .callback
89 self .name = pattern .name
9- self .path = self ._get_path (parent_pattern )
10+ self .name_parent = simplify_regex (parent_pattern .regex .pattern ).replace ('/' , '' ) if parent_pattern else None
11+ self .path = self .__get_path__ (parent_pattern )
12+ self .allowed_methods = self .__get_allowed_methods__ ()
1013 self .view_name = pattern .callback .__name__
14+ self .fields = self .__get_serializer_fields__ ()
1115
12- def _get_path (self , parent_pattern ):
16+ def __get_path__ (self , parent_pattern ):
1317 if parent_pattern :
14- parent_path = simplify_regex (parent_pattern .regex .pattern )[:- 1 ]
15- return "{0}{1}" .format (parent_path , simplify_regex (self .pattern .regex .pattern ))
18+ return "/{0}{1}" .format (self .name_parent , simplify_regex (self .pattern .regex .pattern ))
1619 return simplify_regex (self .pattern .regex .pattern )
20+
21+ def __get_allowed_methods__ (self ):
22+ return [m .upper () for m in self .callback .cls .http_method_names if hasattr (self .callback .cls , m )]
23+
24+ def __get_serializer_fields__ (self ):
25+ fields = []
26+
27+ if hasattr (self .callback .cls , 'serializer_class' ) and hasattr (self .callback .cls .serializer_class , 'get_fields' ):
28+ serializer = self .callback .cls .serializer_class
29+ if hasattr (serializer , 'get_fields' ):
30+ fields = [{"name" : key , "type" : str (value .__class__ .__name__ )} for key , value in serializer ().get_fields ().items ()]
31+
32+ return fields
0 commit comments