mirror of
https://github.com/Hopiu/django-fobi.git
synced 2026-05-10 22:03:09 +00:00
644 lines
20 KiB
Python
644 lines
20 KiB
Python
import copy
|
|
from collections import OrderedDict
|
|
import datetime
|
|
# from decimal import Decimal
|
|
|
|
from django.utils.text import force_text
|
|
|
|
from faker import Faker
|
|
|
|
from fobi.contrib.plugins.form_elements.content \
|
|
.content_image.fobi_form_elements import ContentImagePlugin
|
|
from fobi.contrib.plugins.form_elements.content \
|
|
.content_text.fobi_form_elements import ContentTextPlugin
|
|
# from fobi.contrib.plugins.form_elements.content \
|
|
# .content_video.fobi_form_elements import ContentVideoPlugin
|
|
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.boolean.fobi_form_elements import BooleanSelectPlugin
|
|
# from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple \
|
|
# .fobi_form_elements import CheckboxSelectMultipleInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.date.fobi_form_elements import DateInputPlugin
|
|
# from fobi.contrib.plugins.form_elements.fields \
|
|
# .date_drop_down.fobi_form_elements import DateDropDownInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.datetime.fobi_form_elements import DateTimeInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.decimal.fobi_form_elements import DecimalInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.email.fobi_form_elements import EmailInputPlugin
|
|
# from fobi.contrib.plugins.form_elements.fields \
|
|
# .file.fobi_form_elements import FileInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.float.fobi_form_elements import FloatInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.hidden.fobi_form_elements import HiddenInputPlugin
|
|
# from fobi.contrib.plugins.form_elements.fields.hidden_model_object \
|
|
# .fobi_form_elements import HiddenModelObjectInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.integer.fobi_form_elements import IntegerInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.ip_address.fobi_form_elements import IPAddressInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.null_boolean.fobi_form_elements import NullBooleanSelectPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.select.fobi_form_elements import SelectInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields.select_model_object \
|
|
.fobi_form_elements import SelectModelObjectInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.select_multiple.fobi_form_elements import SelectMultipleInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields.slug \
|
|
.fobi_form_elements import SlugInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.text.fobi_form_elements import TextInputPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.textarea.fobi_form_elements import TextareaPlugin
|
|
from fobi.contrib.plugins.form_elements.fields \
|
|
.url.fobi_form_elements import URLInputPlugin
|
|
|
|
from fobi.contrib.plugins.form_handlers \
|
|
.db_store.fobi_form_handlers import DBStoreHandlerPlugin
|
|
from fobi.contrib.plugins.form_handlers \
|
|
.mail.fobi_form_handlers import MailHandlerPlugin
|
|
from fobi.contrib.plugins.form_handlers \
|
|
.http_repost.fobi_form_handlers import HTTPRepostHandlerPlugin
|
|
|
|
__title__ = 'fobi.tests.data'
|
|
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
|
|
__copyright__ = '2014-2017 Artur Barseghyan'
|
|
__license__ = 'GPL 2.0/LGPL 2.1'
|
|
__all__ = (
|
|
'TEST_DYNAMIC_FORMS_DEFINITION_DATA',
|
|
'TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF',
|
|
# 'TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE',
|
|
'TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE',
|
|
'TEST_DYNAMIC_FORMS_PUT_DATA',
|
|
'TEST_DYNAMIC_FORMS_PUT_DATA_ALL',
|
|
'TEST_FORM_ELEMENT_PLUGIN_DATA',
|
|
'TEST_FORM_FIELD_DATA',
|
|
'TEST_FORM_HANDLER_PLUGIN_DATA',
|
|
'TEST_MAILCHIMP_IMPORTER_FORM_DATA',
|
|
)
|
|
|
|
TEST_FORM_ELEMENT_PLUGIN_DATA = {
|
|
# Add a "Boolean (checkbox)" plugin.
|
|
force_text(BooleanSelectPlugin.name): {
|
|
'label': "Test boolean",
|
|
'help_text': "Lorem ipsum boolean",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "Select multiple" (select multiple input) form elelement
|
|
# force_text(CheckboxSelectMultipleInputPlugin.name): {
|
|
# 'label': "Test checkbox select multiple input",
|
|
# 'help_text': "Lorem ipsum select multiple input",
|
|
# 'required': False,
|
|
# },
|
|
|
|
# Add a "Date" input form element
|
|
force_text(DateInputPlugin.name): {
|
|
'label': "Test date input",
|
|
'help_text': "Lorem ipsum select multiple input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "DateTime" input form element
|
|
force_text(DateTimeInputPlugin.name): {
|
|
'label': "Test datetime input",
|
|
'help_text': "Lorem ipsum select multiple input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add an decimal input plugin
|
|
force_text(DecimalInputPlugin.name): {
|
|
'label': "Test decimal input",
|
|
'help_text': "Lorem ipsum email",
|
|
'required': True,
|
|
},
|
|
|
|
# Add an email input plugin
|
|
force_text(EmailInputPlugin.name): {
|
|
'label': "Test email input",
|
|
'help_text': "Lorem ipsum email",
|
|
'required': True,
|
|
},
|
|
|
|
# TODO: Add file test.
|
|
# Add a "File" (file) form element
|
|
# force_text(FileInputPlugin.name): {
|
|
# 'label': "Test file input",
|
|
# #'name': "test_file_input",
|
|
# 'help_text': "Lorem ipsum hidden",
|
|
# 'required': False,
|
|
# },
|
|
|
|
# Add an float input plugin
|
|
force_text(FloatInputPlugin.name): {
|
|
'label': "Test float input",
|
|
'help_text': "Lorem ipsum email",
|
|
'required': True,
|
|
},
|
|
|
|
# TODO: Find out why selenium fails here!
|
|
# Add a "Hidden" (boolean) form element
|
|
# force_text(HiddenInputPlugin.name): {
|
|
# 'label': "Test hidden input",
|
|
# #'name': "test_hidden_input",
|
|
# 'help_text': "Lorem ipsum hidden",
|
|
# 'required': True,
|
|
# },
|
|
|
|
# Add a "Integer" (text input) form element
|
|
force_text(IntegerInputPlugin.name): {
|
|
'label': "Test integer",
|
|
'help_text': "Lorem ipsum text input",
|
|
'required': True,
|
|
},
|
|
|
|
# Add a "IP address" (text input) form element
|
|
force_text(IPAddressInputPlugin.name): {
|
|
'label': "Test IP address",
|
|
'help_text': "Lorem ipsum text input",
|
|
'required': True,
|
|
},
|
|
|
|
# Add a "null boolean" form element
|
|
force_text(NullBooleanSelectPlugin.name): {
|
|
'label': "Test null boolean",
|
|
'help_text': "Lorem ipsum text input",
|
|
'required': True,
|
|
},
|
|
|
|
# Add a "Select Input" (select input) form element
|
|
force_text(SelectInputPlugin.name): {
|
|
'label': "Test select",
|
|
'help_text': "Lorem ipsum text input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "Select model object" (select input) form element
|
|
force_text(SelectModelObjectInputPlugin.name): {
|
|
'label': "Test select model object",
|
|
'help_text': "Lorem ipsum select model object input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "Select multiple" (select multiple input) form element
|
|
force_text(SelectMultipleInputPlugin.name): {
|
|
'label': "Test select multiple input",
|
|
'help_text': "Lorem ipsum select multiple input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "Select multiple" (select multiple input) form element
|
|
force_text(SlugInputPlugin.name): {
|
|
'label': "Test slug input",
|
|
'help_text': "Lorem ipsum select multiple input",
|
|
'required': False,
|
|
},
|
|
|
|
# Add a "Text" (text input) form element
|
|
force_text(TextInputPlugin.name): {
|
|
'label': "Test text",
|
|
'help_text': "Lorem ipsum text input",
|
|
'required': True,
|
|
},
|
|
|
|
# Add a "Textarea" (text area) form element
|
|
force_text(TextareaPlugin.name): {
|
|
'label': "Test text area",
|
|
'help_text': "Lorem ipsum text area",
|
|
'required': True,
|
|
},
|
|
|
|
# Add a "URL input" form element
|
|
force_text(URLInputPlugin.name): {
|
|
'label': "Test URL input",
|
|
'help_text': "Lorem ipsum text area",
|
|
'required': True,
|
|
},
|
|
}
|
|
|
|
TEST_FORM_FIELD_DATA = {
|
|
'test_boolean': True,
|
|
# 'test_checkbox_select_multiple_input': '',
|
|
'test_date_input': datetime.date.today().strftime("%Y-%m-%d"),
|
|
'test_datetime_input': datetime.datetime.now().strftime(
|
|
"%Y-%m-%d %H:%M:%S"
|
|
),
|
|
'test_decimal_input': '10.01', # Decimal(10.01),
|
|
'test_email_input': 'john@doe.net',
|
|
# 'test_file_input': '',
|
|
'test_float_input': '10.01',
|
|
# 'test_hidden_input': '',
|
|
'test_integer': '2014',
|
|
'test_null_boolean': False,
|
|
'test_ip_address': '127.0.0.1',
|
|
'test_select': '',
|
|
'test_select_model_object': '',
|
|
'test_select_multiple_input': '',
|
|
'test_slug_input': 'lorem-ipsum',
|
|
'test_text': 'Lorem ipsum',
|
|
'test_text_area': 'Dolor sit amet',
|
|
'test_url_input': 'http://dev.example.com',
|
|
}
|
|
|
|
TEST_FORM_HANDLER_PLUGIN_DATA = {
|
|
force_text(DBStoreHandlerPlugin.name): None,
|
|
force_text(MailHandlerPlugin.name): {
|
|
'from_name': "From me",
|
|
'from_email': "from@example.com",
|
|
'to_name': "To you",
|
|
'to_email': "to@example.com",
|
|
'subject': "Test email subject",
|
|
'body': "Test email body",
|
|
},
|
|
force_text(HTTPRepostHandlerPlugin.name): {
|
|
'endpoint_url': 'http://dev.example.com'
|
|
}
|
|
}
|
|
|
|
|
|
TEST_MAILCHIMP_IMPORTER_FORM_DATA = [
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'email',
|
|
u'helptext': u'',
|
|
u'id': 0,
|
|
u'name': u'Email Address',
|
|
u'order': u'1',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'EMAIL'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'text',
|
|
u'helptext': u'',
|
|
u'id': 1,
|
|
u'name': u'First Name',
|
|
u'order': u'2',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'FNAME'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'text',
|
|
u'helptext': u'',
|
|
u'id': 2,
|
|
u'name': u'Last Name',
|
|
u'order': u'3',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'LNAME'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'text',
|
|
u'helptext': u'',
|
|
u'id': 3,
|
|
u'name': u'Organisation',
|
|
u'order': u'4',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'ORG'
|
|
},
|
|
{
|
|
u'default': u'Type Text Default Value',
|
|
u'field_type': u'text',
|
|
u'helptext': u'Type Text Help Text',
|
|
u'id': 4,
|
|
u'name': u'type_text',
|
|
u'order': u'5',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_TEXT'
|
|
},
|
|
{
|
|
u'default': u'1',
|
|
u'field_type': u'number',
|
|
u'helptext': u'Type Number Help Text',
|
|
u'id': 5,
|
|
u'name': u'type_number',
|
|
u'order': u'6',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_NUMBE'
|
|
},
|
|
{
|
|
u'choices': [u'First Choice', u'Second Choice', u'Third Choice'],
|
|
u'default': u'Second Choice',
|
|
u'field_type': u'radio',
|
|
u'helptext': u'Type Radio Buttons Help Text',
|
|
u'id': 6,
|
|
u'name': u'type_radio_buttons',
|
|
u'order': u'7',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_RADIO'
|
|
},
|
|
{
|
|
u'choices': [u'First Choice', u'Second Choice', u'Third Choice'],
|
|
u'default': u'Third Choice',
|
|
u'field_type': u'dropdown',
|
|
u'helptext': u'Drop Down Help Text',
|
|
u'id': 7,
|
|
u'name': u'type_drop_down',
|
|
u'order': u'9',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_DROPD'
|
|
},
|
|
{
|
|
u'dateformat': u'MM/DD/YYYY',
|
|
u'default': u'',
|
|
u'field_type': u'date',
|
|
u'helptext': u'Type Date Help Text',
|
|
u'id': 8,
|
|
u'name': u'type_date',
|
|
u'order': u'10',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_DATE'
|
|
},
|
|
{
|
|
u'dateformat': u'MM/DD',
|
|
u'default': u'',
|
|
u'field_type': u'birthday',
|
|
u'helptext': u'Type Birthday Help Text',
|
|
u'id': 9,
|
|
u'name': u'type_birthday',
|
|
u'order': u'11',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_BIRTH'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'defaultcountry': u'109',
|
|
u'defaultcountry_cc': u'NL',
|
|
u'defaultcountry_name': u'Netherlands',
|
|
u'field_type': u'address',
|
|
u'helptext': u'Type Address Help Text',
|
|
u'id': 10,
|
|
u'name': u'type_address',
|
|
u'order': u'12',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_ADDRE'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'zip',
|
|
u'helptext': u'Type Zip Code Help Text',
|
|
u'id': 11,
|
|
u'name': u'type_zip_code',
|
|
u'order': u'13',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_ZIP_C'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'phone',
|
|
u'helptext': u'Type Phone Help Text',
|
|
u'id': 12,
|
|
u'name': u'type_phone',
|
|
u'order': u'14',
|
|
u'phoneformat': u'none',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_PHONE'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'url',
|
|
u'helptext': u'Type Website Help Text',
|
|
u'id': 13,
|
|
u'name': u'type_website',
|
|
u'order': u'15',
|
|
u'public': True,
|
|
u'req': True,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_WEBSI'
|
|
},
|
|
{
|
|
u'default': u'',
|
|
u'field_type': u'imageurl',
|
|
u'helptext': u'Type Image Help Text',
|
|
u'id': 14,
|
|
u'name': u'type_image',
|
|
u'order': u'16',
|
|
u'public': True,
|
|
u'req': False,
|
|
u'show': True,
|
|
u'size': u'25',
|
|
u'tag': u'TYPE_IMAGE'
|
|
}
|
|
]
|
|
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA = OrderedDict([
|
|
(
|
|
'username',
|
|
(
|
|
TextInputPlugin.uid,
|
|
'{'
|
|
'"name": "username", '
|
|
'"required": true, '
|
|
'"max_length": 200, '
|
|
'"label": "Username", '
|
|
'"placeholder": "delusionalinsanity"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'email',
|
|
(
|
|
EmailInputPlugin.uid,
|
|
'{'
|
|
'"name": "email", '
|
|
'"required": true, '
|
|
'"label": "E-mail"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'age',
|
|
(
|
|
IntegerInputPlugin.uid,
|
|
'{'
|
|
'"name": "age", '
|
|
'"required": true, '
|
|
'"max_value": 200, '
|
|
'"label": "Age"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'drivers_license',
|
|
(
|
|
BooleanSelectPlugin.uid,
|
|
'{'
|
|
'"name": "drivers_license", '
|
|
'"required": false, '
|
|
'"label": "Drivers license?"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'special_fields',
|
|
(
|
|
HiddenInputPlugin.uid,
|
|
'{'
|
|
'"name": "special_fields", '
|
|
'"required": false, '
|
|
'"label": "Special fields"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'ignore_01',
|
|
(
|
|
ContentImagePlugin.uid, '{'
|
|
'"fit_method": "center", '
|
|
'"file": "fobi_plugins/content_plugin_images/'
|
|
'04.jpg", '
|
|
'"alt": "Cute girl"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'number_of_children',
|
|
(
|
|
IntegerInputPlugin.uid,
|
|
'{'
|
|
'"name": "number_of_children", '
|
|
'"required": false, '
|
|
'"label": "Number of children"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'bio',
|
|
(
|
|
TextareaPlugin.uid,
|
|
'{'
|
|
'"name": "bio", '
|
|
'"required": true, '
|
|
'"label": "Biography"'
|
|
'}'
|
|
)
|
|
),
|
|
(
|
|
'ignore_02',
|
|
(
|
|
ContentTextPlugin.uid,
|
|
'{'
|
|
'"text": "Suspendisse potenti. Etiam in nunc '
|
|
'sodales, congue lectus ut, suscipit massa. In '
|
|
'commodo fringilla orci, in varius eros gravida '
|
|
'a! Aliquam erat volutpat. Donec sodales orci nec '
|
|
'massa aliquam bibendum. Aenean sed condimentum '
|
|
'velit. Mauris luctus bibendum nulla vel tempus. '
|
|
'Integer tempor condimentum ligula sed feugiat. '
|
|
'Aenean scelerisque ultricies vulputate. Donec '
|
|
'semper lorem rhoncus sem cras amet."'
|
|
'}'
|
|
)
|
|
)
|
|
])
|
|
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF = copy.copy(
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA
|
|
)
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('ignore_01')
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('ignore_02')
|
|
TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('special_fields')
|
|
|
|
# TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE = copy.copy(
|
|
# TEST_DYNAMIC_FORMS_DEFINITION_DATA
|
|
# )
|
|
#
|
|
# for __key, __value
|
|
# in TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE.items():
|
|
# if __key not in ('special_fields',):
|
|
# TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE.pop(__key)
|
|
|
|
FAKER = Faker()
|
|
|
|
TEST_DYNAMIC_FORMS_PUT_DATA_ALL = {
|
|
'username': FAKER.user_name(),
|
|
'email': FAKER.email(),
|
|
'age': FAKER.random_int(min=0, max=200),
|
|
'drivers_license': FAKER.pybool(),
|
|
'special_fields': FAKER.pystr(),
|
|
'number_of_children': FAKER.pyint(),
|
|
'bio': FAKER.text(),
|
|
}
|
|
|
|
TEST_DYNAMIC_FORMS_PUT_DATA = copy.copy(TEST_DYNAMIC_FORMS_PUT_DATA_ALL)
|
|
TEST_DYNAMIC_FORMS_PUT_DATA.pop('special_fields')
|
|
|
|
TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE = OrderedDict([
|
|
(u'username', OrderedDict([(u'type', u'string'),
|
|
(u'required', True),
|
|
(u'read_only', False),
|
|
(u'label', u'Username'),
|
|
(u'max_length', 200),
|
|
(u'placeholder', 'delusionalinsanity')])),
|
|
(u'email', OrderedDict([(u'type', u'email'),
|
|
(u'required', True),
|
|
(u'read_only', False),
|
|
(u'label', u'E-mail'),
|
|
(u'max_length', 255)])),
|
|
(u'age', OrderedDict([(u'type', u'integer'),
|
|
(u'required', True),
|
|
(u'read_only', False),
|
|
(u'label', u'Age'),
|
|
('max_value', 200)])),
|
|
(u'drivers_license', OrderedDict([(u'type', u'boolean'),
|
|
(u'required', False),
|
|
(u'read_only', False),
|
|
(u'label', u'Drivers license?')])),
|
|
# (u'special_fields', OrderedDict([(u'type', u'field'),
|
|
# (u'required', False),
|
|
# (u'read_only', False),
|
|
# (u'label', u'Special fields')])),
|
|
(u'number_of_children', OrderedDict([(u'type', u'integer'),
|
|
(u'required', False),
|
|
(u'read_only', False),
|
|
(u'label', u'Number of children')])),
|
|
(u'bio', OrderedDict([(u'type', u'string'),
|
|
(u'required', True),
|
|
(u'read_only', False),
|
|
(u'label', u'Biography')]))
|
|
])
|