def run(self):
module_parts = self.content[0].split(".")
module = ".".join(module_parts[0:len(module_parts) - 1])
member = module_parts[len(module_parts) - 1]
api_module = __import__(module, fromlist = ['a'])
api = api_module.__dict__[member]
#parser = Parser()
#publisher = Publisher()
request = HttpRequest()
top_level_response = api.top_level(request, None)
top_level_doc = json.loads(top_level_response.content)
for name in sorted(api._registry.keys()):
resource_dict = top_level_doc[name]
resource = api._registry[name]
resource_dict['schema'] = resource.build_schema()
resource_dict['schema']['field_list'] = [{'name': field, 'meta': meta} for field, meta in resource_dict['schema']['fields'].items()]
for field, field_meta in resource_dict['schema']['fields'].items():
if field == 'id':
field_meta['help_text'] = "Integer record identifier, unique for objects of this type"
elif field == 'content_type_id':
field_meta['help_text'] = "Integer type identifier"
elif field == 'state' and field_meta['help_text'] == tastypie.fields.CharField.help_text:
field_meta['help_text'] = "Unicode string, may be set based on ``available_transitions`` field"
elif field == 'immutable_state' and field_meta['help_text'] == tastypie.fields.BooleanField.help_text:
field_meta['help_text'] = "If ``true``, this object may not have its state modified by the user (monitoring only)"
elif field == 'resource_uri':
field_meta['help_text'] = "URL for this object"
elif field == 'available_transitions':
field_meta['help_text'] = "List of {'verb':"", 'state':""} for possible states (for use with POST)"
elif field == 'available_jobs':
field_meta['help_text'] = "List of {'args':{}, 'class_name':"", 'confirmation':"", verb: ""} for possible " \
"non-state-change jobs (for use with the ``command`` resource)"
elif field == 'label':
field_meta['help_text'] = "Non-unique human readable name for presentation"
resource_dict['list_allowed_methods'] = [m.upper() for m in resource._meta.list_allowed_methods]
resource_dict['detail_allowed_methods'] = [m.upper() for m in resource._meta.detail_allowed_methods]
resource_dict['ordering'] = resource._meta.ordering
resource_dict['filtering'] = resource._meta.filtering
for field, methods in resource_dict['filtering'].items():
if methods == tastypie.constants.ALL_WITH_RELATIONS:
resource_dict['filtering'][field] = ["including dereferenced attributes"]
if methods == tastypie.constants.ALL:
resource_dict['filtering'][field] = ["any filter type"]
resource_dict['doc'] = resource.__doc__
path = os.path.dirname(__file__)
rst_template = open(path + "/tasty-endpoint-template.rst").read()
template_vars = {
'endpoints': top_level_doc,
}
django_template = Template(rst_template)
output_rst = django_template.render(Context(template_vars))
#open('dump.rst', 'w').write(output_rst)
doctree = publish_doctree(output_rst)
return doctree.children
评论列表
文章目录