You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

228 lines
6.4 KiB

import json
from django import forms
from limitless_dashboard.fields.tinyeditor import TinyWidget
# from limitless_dashboard.fields.summernote import
from dynamic_preferences.preferences import Section
from dynamic_preferences.registries import global_preferences_registry
from dynamic_preferences.types import BasePreferenceType, BaseSerializer, LongStringPreference, StringPreference, \
FilePreference
from utils.json_editor_field import JsonEditorWidget
from unfold.contrib.forms.widgets import WysiwygWidget, ArrayWidget
from unfold.widgets import UnfoldAdminTextareaWidget
class EditorPreferences(LongStringPreference):
widget = WysiwygWidget(attrs={'class': 'editor-field'})
class EditorTextPreferences(LongStringPreference):
widget = UnfoldAdminTextareaWidget(attrs={'class': 'editor-field', 'rows': 20})
@global_preferences_registry.register
class AboutUsConfig(EditorPreferences):
section = Section('aboutus', verbose_name='AboutUsConfig')
name = 'aboutus'
required = False
verbose_name = 'About Us'
default = ''
class JsonSerializer(BaseSerializer):
@classmethod
def serialize(cls, value, **kwargs):
return json.dumps(value, ensure_ascii=False)
@classmethod
def to_python(cls, value, **kwargs):
if isinstance(value, str) and len(value.strip()) > 0:
try:
return json.loads(value)
except json.JSONDecodeError as e:
try:
value_replaced = value.replace("'", '"')
return json.loads(value_replaced)
except json.JSONDecodeError as e2:
return {}
return value
get_fqa_courses_schema = {
'type': "array",
'format': 'table',
'title': ' ',
'items': {
'type': 'object',
'title': str('Questions about courses'),
'properties': {
'question': {'type': 'string', "format": "textarea", 'title': str('Question')},
'answer': {
'type': "string",
"format": "textarea",
'title': str('Answer')
}
}
}
}
class JsonFieldFAQCourse(BasePreferenceType):
field_class = forms.JSONField
serializer = JsonSerializer
widget = JsonEditorWidget(attrs={'schema': get_fqa_courses_schema})
@global_preferences_registry.register
class FAQCourseConfig(JsonFieldFAQCourse):
widget = JsonEditorWidget(attrs={'schema': get_fqa_courses_schema})
section = Section('FAQ_Course', verbose_name='Questions about courses')
name = 'FAQ_Course'
required = False
verbose_name = 'FAQ Course'
default = {}
get_fqa_general_schema = {
'type': "array",
'format': 'table',
'title': ' ',
'items': {
'type': 'object',
'title': str('Questions General'),
'properties': {
'question': {'type': 'string', "format": "textarea", 'title': str('Question')},
'answer': {
'type': "string",
"format": "textarea",
'title': str('Answer')
}
}
}
}
class JsonFieldFAQGeneral(BasePreferenceType):
field_class = forms.JSONField
serializer = JsonSerializer
widget = JsonEditorWidget(attrs={'schema': get_fqa_general_schema})
@global_preferences_registry.register
class FAQGeneralConfig(JsonFieldFAQGeneral):
widget = JsonEditorWidget(attrs={'schema': get_fqa_general_schema})
section = Section('FAQ_General', verbose_name='Questions General')
name = 'FAQ_General'
required = False
verbose_name = 'FAQ General'
default = {}
support_fields = {
"type": "object",
"format": "table",
"title": "",
"required_by_default": 1,
"required": ['telegram_number', "whatsapp_number"],
"properties": {
"telegram_number": {"type": "string", "title": "Telegram Number"},
"whatsapp_number": {"type": "string", "title": "Whatsapp Number"},
}
}
class JsonFieldSupport(BasePreferenceType):
field_class = forms.JSONField
serializer = JsonSerializer
widget = JsonEditorWidget(attrs={'schema': support_fields})
@global_preferences_registry.register
class SupportConfig(JsonFieldSupport):
section = Section('support', verbose_name='Support Detail')
name = 'support'
required = False
verbose_name = 'Support Detail'
default = {}
card_fields = {
"type": "object",
"format": "table",
"title": "",
"required_by_default": 1,
"required": ['card_number', 'card_name',"whatsapp_number"],
"properties": {
"card_number": {"type": "string", "title": "Card Number"},
"card_name": {"type": "string", "title": "Card Name"},
"whatsapp_number": {"type": "string", "title": "Whatsapp Number"},
}
}
class JsonFieldCard(BasePreferenceType):
field_class = forms.JSONField
serializer = JsonSerializer
widget = JsonEditorWidget(attrs={'schema': card_fields})
@global_preferences_registry.register
class SupportConfig(JsonFieldCard):
section = Section('card', verbose_name='Card Detail')
name = 'card'
required = False
verbose_name = 'Card Detail'
default = {}
@global_preferences_registry.register
class CalendarAdjustmentConfig(EditorTextPreferences):
section = Section('calendar', verbose_name='CalendarAdjustmentConfig')
name = 'Adjustment'
required = False
verbose_name = 'Calendar Adjustment Config'
default = ''
about_us_dobodi = {
"type": "object",
"format": "table",
"title": "",
"required_by_default": 1,
"required": ['arabic_text', 'translated_text', 'title', 'content'],
"properties": {
"arabic_text": {"type": "string", "title": "text arabic"},
"translated_text": {"type": "string", "title": "translated text"},
"title": {"type": "string", "title": "title"},
"content": {"type": "string", "format": "textarea", "title": "Content", "rows": 8},
}
}
class JsonFieldAbout(BasePreferenceType):
field_class = forms.JSONField
serializer = JsonSerializer
widget = JsonEditorWidget(attrs={'schema': about_us_dobodi})
@global_preferences_registry.register
class SupportConfig(JsonFieldAbout):
section = Section('about_us_dobodi', verbose_name='about Us Detail')
name = 'about_us_dobodi'
required = False
verbose_name = 'About Us Dobodi'
default = {}