def add_titles(self, model): titles = {} for field in model._meta.fields: if is_excluded(model, field.name): continue key = field.name if self.camelcase: key = underscore_to_camel_case(key) titles[key] = field.verbose_name.title() if titles: self.models[get_model_name(model)]['titles'] = titles
def add_descriptions(self, model): subtitles = {} for field in model._meta.fields: if is_excluded(model, field.name): continue if hasattr(field, 'help_text') and field.help_text: key = field.name if self.camelcase: key = underscore_to_camel_case(key) subtitles[key] = force_unicode(field.help_text) if subtitles: self.models[get_model_name(model)]['subtitles'] = subtitles
def add_parse(self, model): fields = [] for field in model._meta.fields: if is_excluded(model, field.name): continue # Parse DateField and DateTimeFields, but not TimeFields if isinstance(field, DateField): if self.camelcase: fields.append("'%s'" % underscore_to_camel_case(field.name)) else: fields.append("'%s'" % field.name) if fields: self.models[get_model_name(model)]['parse'] = ', '.join(fields)
def add_validation(self, model): rules = {} for field in model._meta.fields: if is_excluded(model, field.name) or is_readonly(model, field.name) or is_included(model, field.name): continue key = field.name if self.camelcase: key = underscore_to_camel_case(key) rules[key] = ApiFieldRule(field).rule if rules: self.models[get_model_name(model)]['rules'] = rules if not self.cord: self.models[get_model_name(model)]['validate'] = 'validate'
def add_defaults(self, model): name = get_model_name(model) for field in model._meta.fields: if is_excluded(model, field.name) or is_readonly(model, field.name): continue default = field.default if isinstance(default, type): default = default() if default is not NOT_PROVIDED and not callable(default): if not self.models[name].has_key('defaults'): self.models[name]['defaults'] = {} key = field.name if self.camelcase: key = underscore_to_camel_case(key) self.models[name]['defaults'][key] = default
def add_choices(self, model): choices = {} for field in model._meta.fields: if is_excluded(model, field.name): continue if hasattr(field, 'choices') and field.choices: field_choices = {} for choice in field.choices: field_choices[choice[0]] = choice[1] key = field.name if self.camelcase: key = underscore_to_camel_case(key) choices[key] = field_choices if choices: self.models[get_model_name(model)]['choices'] = choices
def get_readonly_fields(self, model): fields = [] included_fields = [] name = get_model_name(model) for field in model._meta.fields: if is_excluded(model, field.name): continue if is_readonly(model, field.name): key = field.name if self.camelcase: key = underscore_to_camel_case(key) if is_included(model, field.name): included_fields.append(key) fields.append(key) if field: self.readonly_fields[name] = fields if included_fields: self.readonly_included_fields[name] = included_fields
def add_instructions(self, model): instructions = {} for field in model._meta.fields: if is_excluded(model, field.name): continue key = field.name if self.camelcase: key = underscore_to_camel_case(key) message = force_unicode(field.error_messages.get('invalid', field.error_messages.get('invalid_choice', ''))) default_invalid = default_invalid_choice = None for cls in reversed([field.__class__] + get_base_classes(field.__class__)): if not hasattr(cls, 'default_error_messages'): continue default_invalid = cls.default_error_messages.get('invalid', default_invalid) default_invalid_choice = cls.default_error_messages.get('invalid_choice', default_invalid_choice) if message and message != default_invalid and message != default_invalid_choice: instructions[key] = message if instructions: self.models[get_model_name(model)]['instructions'] = instructions