def get_link(self, path, method, callback, view): """ Return a `coreapi.Link` instance for the given endpoint. """ fields = self.get_path_fields(path, method, callback, view) fields += self.get_serializer_fields(path, method, callback, view) fields += self.get_pagination_fields(path, method, callback, view) fields += self.get_filter_fields(path, method, callback, view) if fields and any( [field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, callback, view) else: encoding = None description = self.get_description(path, method, callback, view) return coreapi.Link( url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, description=description, fields=fields, transform=None, # Not handled, but here for future reference )
def get_link(self, path, method, view): """ Return a `coreapi.Link` instance for the given endpoint. """ fields = self.get_path_fields(path, method, view) fields += self.get_serializer_fields(path, method, view) fields += self.get_pagination_fields(path, method, view) fields += self.get_filter_fields(path, method, view) if fields and any([field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, view) else: encoding = None description = self.get_description(path, method, view) if self.url and path.startswith('/'): path = path[1:] return coreapi.Link( url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields, description=description )
def get_link(self, path, method, base_url): fields = self.get_path_fields(path, method) fields += self.get_serializer_fields(path, method) fields += self.get_pagination_fields(path, method) fields += self.get_filter_fields(path, method) if self._manual_fields is not None: by_name = {f.name: f for f in fields} for f in self._manual_fields: by_name[f.name] = f fields = list(by_name.values()) if fields and any([field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method) else: encoding = None description = self.get_description(path, method) if base_url and path.startswith('/'): path = path[1:] return coreapi.Link( url=urlparse.urljoin(base_url, path), action=method.lower(), encoding=encoding, fields=fields, description=description )
def get_link(self, path, method, base_url): fields = self.get_path_fields(path, method) fields += self.get_serializer_fields(path, method) fields += self.get_pagination_fields(path, method) fields += self.get_filter_fields(path, method) if self._manual_fields is not None: by_name = {f.name: f for f in fields} for f in self._manual_fields: by_name[f.name] = f fields = list(by_name.values()) if fields and any( [field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method) else: encoding = None description = self.get_description(path, method) if base_url and path.startswith('/'): path = path[1:] return coreapi.Link(url=urlparse.urljoin(base_url, path), action=method.lower(), encoding=encoding, fields=fields, description=description)
def get_link(self, path, method, callback): """ Return a `coreapi.Link` instance for the given endpoint. """ view = callback.cls() for attr, val in getattr(callback, 'initkwargs', {}).items(): setattr(view, attr, val) fields = self.get_path_fields(path, method, callback, view) fields += self.get_serializer_fields(path, method, callback, view) fields += self.get_pagination_fields(path, method, callback, view) fields += self.get_filter_fields(path, method, callback, view) if fields and any([field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, callback, view) else: encoding = None if self.url and path.startswith('/'): path = path[1:] return coreapi.Link( url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields )
def get_link(self, path, method, view): """ Return a `coreapi.Link` instance for the given endpoint. """ fields = [] getters = [ self.get_path_fields, self.get_serializer_fields, self.get_pagination_fields, self.get_filter_fields, self.get_docs_fields ] for getter in getters: try: fields.extend(getter(path, method, view)) except Exception: pass if fields and any( [field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, view) else: encoding = None description = self.get_description(path, method, view) permissions = self.get_permissions_docs(path, method, view) if permissions is not None: description = "{}\nPermissions:\n========\n{}".format( description, permissions) if self.url and path.startswith('/'): path = path[1:] return coreapi.Link(url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields, description=description)
def get_link(self, path, method, callback): """ Return a `coreapi.Link` instance for the given endpoint. """ view = callback.cls() for attr, val in getattr(callback, 'initkwargs', {}).items(): setattr(view, attr, val) fields = self.get_path_fields(path, method, callback, view) fields += self.get_serializer_fields(path, method, callback, view) fields += self.get_pagination_fields(path, method, callback, view) fields += self.get_filter_fields(path, method, callback, view) if fields and any( [field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, callback, view) else: encoding = None if self.url and path.startswith('/'): path = path[1:] return coreapi.Link(url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields)
def get_link(self, path, method, base_url): if base_url and path.startswith('/'): path = path[1:] return coreapi.Link(url=urlparse.urljoin(base_url, path), action=method.lower(), encoding=None, fields=self._fields, description=self._description) return self._link
def get_link(self, path, method, base_url): if base_url and path.startswith('/'): path = path[1:] return coreapi.Link( url=urlparse.urljoin(base_url, path), action=method.lower(), encoding=None, fields=self._fields, description=self._description ) return self._link
def get_link(self, path, method, view): fields = self.get_path_fields(path, method, view) yaml_doc = None func = getattr(view, view.action) if getattr(view, 'action', None) else None if func and func.__doc__: try: yaml_doc = yaml.load(func.__doc__) except: yaml_doc = None if yaml_doc and 'desc' in yaml_doc: desc = yaml_doc.get('desc', '') _method_desc = desc params = yaml_doc.get('parameters', []) for i in params: _name = i.get('name') _desc = i.get('desc') _required = i.get('required', True) _type = i.get('type', 'string') _location = i.get('location', 'query') _example = i.get('example') f = coreapi.Field(name=_name, location=_location, required=_required, description=_desc, type=_type, example=_example) fields.append(f) else: _method_desc = func.__doc__ if func and func.__doc__ else '' fields += self.get_serializer_fields(path, method, view) fields += self.get_pagination_fields(path, method, view) fields += self.get_filter_fields(path, method, view) if fields and any( [field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, view) else: encoding = None if self.url and path.startswith('/'): path = path[1:] return coreapi.Link(url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields, description=_method_desc)
def get_link(self, path, method, view): """ Return a `coreapi.Link` instance for the given endpoint. """ description = self.get_description(path, method, view) fields = [] if '---' not in description: fields += self.get_path_fields(path, method, view) fields += self.get_serializer_fields(path, method, view) fields += self.get_pagination_fields(path, method, view) fields += self.get_filter_fields(path, method, view) if description: vals = list(yaml.load_all(description)) description, para_lst = vals[0], vals[1] if para_lst and para_lst.get('parameters'): for para in para_lst['parameters']: fields.append(coreapi.Field( name=para['name'], required=para['required'], location=para.get('paramType', 'query'), description=para['description'], type=para.get('type', 'string') )) if fields and any([field.location in ('form', 'body') for field in fields]): # encoding = self.get_encoding(path, method, view) encoding = 'multipart/form-data' else: encoding = None if self.url and path.startswith('/'): path = path[1:] return coreapi.Link( url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields, description=description )
def get_link(self, path, method, callback): """ Return a `coreapi.Link` instance for the given endpoint. """ view = callback.cls() fields = self.get_path_fields(path, method, callback, view) fields += self.get_serializer_fields(path, method, callback, view) fields += self.get_pagination_fields(path, method, callback, view) fields += self.get_filter_fields(path, method, callback, view) if fields and any([field.location in ('form', 'body') for field in fields]): encoding = self.get_encoding(path, method, callback, view) else: encoding = None return coreapi.Link( url=urlparse.urljoin(self.url, path), action=method.lower(), encoding=encoding, fields=fields )