Exemplo n.º 1
0
    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'])
Exemplo n.º 2
0
    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