def build_schema(self): schema = Resource.build_schema(self) for field_name, field_object in self.fields.items(): help_text = field_object.help_text if field_object.attribute: mf = self._meta.object_model._meta.get_field_by_name(field_object.attribute)[0] # try to fix help_text from the model field if not help_text or help_text == type(field_object).help_text: ht = mf.help_text if ht: help_text = ht # try to fix help_text from other side verbose name for relationships if not help_text or help_text == type(field_object).help_text: if isinstance(field_object,SetField): help_text = mf.rel.to._meta.verbose_name_plural elif isinstance(field_object,ToOneField): help_text = mf.rel.to._meta.verbose_name schema['fields'][field_name]['verbose_name'] = mf.verbose_name if isinstance(field_object,RelatedField): # add embedded field descriptors for full-filled relation if field_object.full: fields = field_object.to_class().build_schema()['fields'] for fn,fo in field_object.to_class().fields.items(): if getattr(fo,'hidden',False): del fields[fn] schema['fields'][field_name]['fields'] = fields schema['fields'][field_name]['help_text'] = help_text if hasattr(field_object,'full'): schema['fields'][field_name]['full'] = field_object.full if not field_object.full: schema['fields'][field_name]['schema_uri'] = field_object.to_class()._build_reverse_url( "api_get_schema", kwargs=field_object.to_class().resource_uri_kwargs() ) if 'resource_uri' in schema['fields']: schema['fields']['resource_uri']['help_text'] = _("URI to access the object using API") schema['fields']['resource_uri']['verbose_name'] = _("Resource URI") return schema
def build_schema(self): schema = Resource.build_schema(self) for field_name, field_object in self.fields.items(): help_text = field_object.help_text if field_object.attribute: mf = self._meta.object_model._meta.get_field_by_name(field_object.attribute)[0] # try to fix help_text from the model field if not help_text or help_text == type(field_object).help_text: ht = mf.help_text if ht: help_text = ht # try to fix help_text from other side verbose name for relationships if not help_text or help_text == type(field_object).help_text: if isinstance(field_object, SetField): help_text = mf.rel.to._meta.verbose_name_plural elif isinstance(field_object, ToOneField): help_text = mf.rel.to._meta.verbose_name schema["fields"][field_name]["verbose_name"] = mf.verbose_name if isinstance(field_object, RelatedField): # add embedded field descriptors for full-filled relation if field_object.full: fields = field_object.to_class().build_schema()["fields"] for fn, fo in field_object.to_class().fields.items(): if getattr(fo, "hidden", False): del fields[fn] schema["fields"][field_name]["fields"] = fields schema["fields"][field_name]["help_text"] = help_text if hasattr(field_object, "full"): schema["fields"][field_name]["full"] = field_object.full if not field_object.full: schema["fields"][field_name]["schema_uri"] = field_object.to_class()._build_reverse_url( "api_get_schema", kwargs=field_object.to_class().resource_uri_kwargs() ) if "resource_uri" in schema["fields"]: schema["fields"]["resource_uri"]["help_text"] = _("URI to access the object using API") schema["fields"]["resource_uri"]["verbose_name"] = _("Resource URI") return schema