Skip to content

Commit

Permalink
feat(api): Support setting char field as an anchor field using .urls.…
Browse files Browse the repository at this point in the history
  • Loading branch information
jon-nfc committed Nov 27, 2024
1 parent e94e28a commit d7c24c3
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 1 deletion.
9 changes: 9 additions & 0 deletions app/api/react_ui_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,14 +271,23 @@ def get_field_info(self, field):
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",
Expand Down
11 changes: 10 additions & 1 deletion app/core/fields/char.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,23 @@

class CharField(serializers.CharField):

autolink: bool = False

source = ''

label = ''

textarea: bool


def __init__(self, multiline = False, **kwargs):
def __init__(
self,
autolink = False,
multiline = False,
**kwargs
):

self.autolink = autolink

self.textarea = multiline

Expand Down
4 changes: 4 additions & 0 deletions app/core/serializers/celery_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

from app.serializers.user import UserBaseSerializer

from core import fields as centurion_field



class TaskResultBaseSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -57,6 +59,8 @@ def get_url(self, item) -> dict:
),
}

task_id = centurion_field.CharField( autolink = True )


class Meta:

Expand Down
29 changes: 29 additions & 0 deletions docs/projects/centurion_erp/development/fields.md
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 2 additions & 0 deletions docs/projects/centurion_erp/development/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit d7c24c3

Please sign in to comment.