44
app/core/classes/badge.py
Normal file
44
app/core/classes/badge.py
Normal file
@ -0,0 +1,44 @@
|
||||
from core.classes.icon import Icon
|
||||
|
||||
|
||||
|
||||
class Badge:
|
||||
|
||||
icon: Icon
|
||||
|
||||
text: str
|
||||
|
||||
text_style:str
|
||||
|
||||
url:str
|
||||
|
||||
|
||||
def __init__(self,
|
||||
icon_name: str = None,
|
||||
icon_style: str = None,
|
||||
text: str = None,
|
||||
text_style: str = None,
|
||||
url: str = None
|
||||
):
|
||||
|
||||
self.icon = Icon(
|
||||
name=icon_name,
|
||||
style = icon_style
|
||||
)
|
||||
|
||||
self.text = text
|
||||
|
||||
self.text_style = text_style
|
||||
|
||||
self.url = url
|
||||
|
||||
|
||||
@property
|
||||
def to_json(self):
|
||||
|
||||
return {
|
||||
'icon': self.icon.to_json,
|
||||
'text': self.text,
|
||||
'text_style': self.text_style,
|
||||
'url': self.url,
|
||||
}
|
34
app/core/fields/badge.py
Normal file
34
app/core/fields/badge.py
Normal file
@ -0,0 +1,34 @@
|
||||
from rest_framework import serializers
|
||||
from rest_framework.fields import empty
|
||||
|
||||
from core.classes.badge import Badge
|
||||
|
||||
from core.fields.icon import Icon, IconField
|
||||
|
||||
|
||||
|
||||
class BadgeField(serializers.Field):
|
||||
|
||||
source = ''
|
||||
|
||||
label = ''
|
||||
|
||||
|
||||
def __init__(self, *, read_only=True, write_only=False,
|
||||
required=None, default=empty, initial=empty, source=None,
|
||||
label=None, help_text=None, style=None,
|
||||
error_messages=None, validators=None, allow_null=False):
|
||||
|
||||
super().__init__(read_only=read_only, write_only=write_only,
|
||||
required=required, default=default, initial=initial, source=source,
|
||||
label=label, help_text=help_text, style=style,
|
||||
error_messages=error_messages, validators=validators, allow_null=allow_null)
|
||||
|
||||
|
||||
def to_representation(self, badge: Badge):
|
||||
|
||||
return badge.to_json
|
||||
|
||||
|
||||
def to_internal_value(self, data):
|
||||
return Badge(data.icon,data.colour, data.url)
|
Reference in New Issue
Block a user