def get_json_data(self, request, *args, **kwargs): doc_class_name = kwargs.get('document_class') doc_class_fields = DOCUMENT_FIELDS.get(doc_class_name) if not doc_class_fields: return [] return sorted([{ 'code': f.field_code, 'name': f.name, 'type': f.field_type.value } for f_name, f in doc_class_fields.items()], key=lambda k: k['name'])
def get_json_data(self, request, *args, **kwargs): if request.method == 'PUT': data = json.loads(request.body.decode('utf-8')) field_code = data.get('field') if not field_code: return { 'error': None, 'value': data.get('value') } doc_class_name, field = field_code.split('__') value = data['value'] doc_class_fields = DOCUMENT_FIELDS.get(doc_class_name) if not doc_class_fields: return { 'error': 'Unknown document class: {0}'.format(doc_class_name), 'value': None } field_config = doc_class_fields.get(field) if not field_config: return { 'error': 'Field {1} is not configured for document class: {0}'.format( doc_class_name, field), 'value': None } doc_id = kwargs.get('document_id') doc_class = field_config.document_class doc = doc_class.objects.get(pk=doc_id) if field_config: val = field_config.set_value_from_selection(doc, value) doc.save() return { 'error': None, 'value': val } else: return { 'error': 'No such field: {0}'.format(field), 'value': None } return None
def _get_doc_class(doc_class_name: str): field_configs = DOCUMENT_FIELDS.get(doc_class_name) if not field_configs: return None for field_config in field_configs.values(): return field_config.document_class