feat(api): Support setting char field as an anchor field using .urls._self

ref: #248 #385 #388 nofusscomputing/centurion_erp_ui#23
This commit is contained in:
2024-11-13 18:14:23 +09:30
parent e94e28ad33
commit d7c24c3910
6 changed files with 56 additions and 1 deletions

View File

@ -271,14 +271,23 @@ class ReactUIMetadata(OverRideJSONAPIMetadata):
else:
field_info["relationship_resource"] = get_related_resource_type(field)
if hasattr(field, 'autolink'):
if field.autolink:
field_info['autolink'] = field.autolink
field_info["required"] = getattr(field, "required", False)
if hasattr(field, 'style_class'):
field_info["style"]: dict = {
'class': field.style_class
}
attrs = [
"read_only",
"write_only",

View File

@ -4,6 +4,8 @@ from rest_framework import serializers
class CharField(serializers.CharField):
autolink: bool = False
source = ''
label = ''
@ -11,7 +13,14 @@ class CharField(serializers.CharField):
textarea: bool
def __init__(self, multiline = False, **kwargs):
def __init__(
self,
autolink = False,
multiline = False,
**kwargs
):
self.autolink = autolink
self.textarea = multiline

View File

@ -9,6 +9,8 @@ from access.serializers.organization import OrganizationBaseSerializer
from app.serializers.user import UserBaseSerializer
from core import fields as centurion_field
class TaskResultBaseSerializer(serializers.ModelSerializer):
@ -57,6 +59,8 @@ class TaskResultModelSerializer(TaskResultBaseSerializer):
),
}
task_id = centurion_field.CharField( autolink = True )
class Meta:

View File

@ -0,0 +1,29 @@
---
title: Fields
description: Centurion ERP Fields development documentation
date: 2024-11-13
template: project.html
about: https://github.com/nofusscomputing/centurion_erp
---
Fields are used by the serializers for the data. We have our fields specified in module `core.fields`. These fields are `rest_framework` fields.
## Char Field
This field extends `rest_framework.serializers.CharField` with additional attributes that are used by the UI. The additional attributes are:
- `autolink`, _Boolean_ The interface will render the field as an anchor using the url at path `_urls._self` of the objects data.
- `multiline`, _Boolean_. The field should be rendered as a `textarea` input field.
if attribute `multiline` is not specified, by default the field is rendered as an input text field.
## Markdown Field
This field extends `core.fields.CharField`. The field metadata sets the field type to `Markdown`, which tells the UI to render the field as markdown. The additional attributes are:
- `multiline`, _Boolean_. The field should be rendered as a `textarea` input field.
- `style_class` _String_ This field is a space seperated value (ssv) of CSS classes to use for the field. The UI will use this value as additional CSS classes to append to the field.

View File

@ -15,6 +15,8 @@ Centurion ERP is a Django Application. We have added a lot of little tid bits th
- [Application API Documentation](./api/index.md)
- [Fields](./fields.md)
- [Forms](./forms.md)
- [Models](./models.md)

View File

@ -145,6 +145,8 @@ nav:
- projects/centurion_erp/development/api/tests/notes_permissions.md
- projects/centurion_erp/development/fields.md
- projects/centurion_erp/development/forms.md
- projects/centurion_erp/development/models.md