示例#1
0
def create_form_with_entries(user=None, create_entries_if_form_exist=True):
    """Create test form with entries.

    Fills the form with pre-defined plugins.

    :param django.contrib.auth.models.User user:
    :param bool create_entries_if_form_exist: If set to True, entries
        are being created even if form already exists (a database
        record).
    :return fobi.models.FormEntry: Instance of ``fobi.models.FormEntry``
        with a number of form elements and handlers filled in.
    """
    if not user:
        user = get_or_create_admin_user()

    try:
        form_entry = FormEntry._default_manager.get(slug=TEST_FORM_SLUG)
        if not create_entries_if_form_exist:
            return None
    except Exception as err:
        form_entry = FormEntry(
            name=TEST_FORM_NAME,
            slug=TEST_FORM_SLUG,
            user=user
        )
        form_entry.save()

    # *************************************************************************
    # ******************************** Form elements **************************
    # *************************************************************************
    position = 1
    # Text input
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=TextInputPlugin.uid,
        plugin_data='{"name": "username", "required": true, '
                    '"max_length": "200", "label": "Username"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Email
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=EmailInputPlugin.uid,
        plugin_data='{"name": "email", "required": true, "label": "E-mail"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Integer
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=IntegerInputPlugin.uid,
        plugin_data='{"name": "age", "required": true, '
                    '"max_value": "200", "label": "Age"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Boolean select
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=BooleanSelectPlugin.uid,
        plugin_data='{"name": "drivers_license", "required": false, '
                    '"label": "Drivers license?"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Hidden
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=HiddenInputPlugin.uid,
        plugin_data='{"name": "special_fields", "required": false, '
                    '"label": "Special fields"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Content image
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=ContentImagePlugin.uid,
        plugin_data='{"fit_method": "center", '
                    '"file": "fobi_plugins/content_plugin_images/04.jpg", '
                    '"alt": "Cute girl"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Integer
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=IntegerInputPlugin.uid,
        plugin_data='{"name": "number_of_children", "required": false, '
                    '"label": "Number of children"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Textarea
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=TextareaPlugin.uid,
        plugin_data='{"name": "bio", "required": true, "label": "Biography"}',
        position=position
    )
    form_element_entry.save()
    position += 1

    # Content text
    form_element_entry = FormElementEntry(
        form_entry=form_entry,
        plugin_uid=ContentTextPlugin.uid,
        plugin_data=''
                    '{"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."}',
        position=9
    )
    form_element_entry.save()
    position += 1

    # *************************************************************************
    # ******************************** Form handlers **************************
    # *************************************************************************

    # DB save
    form_handler_entry = FormHandlerEntry(
        form_entry=form_entry,
        plugin_uid=DBStoreHandlerPlugin.uid,
        plugin_data=''
    )
    form_handler_entry.save()

    # Mail
    form_handler_entry = FormHandlerEntry(
        form_entry=form_entry,
        plugin_uid=MailHandlerPlugin.uid,
        plugin_data='{"from_name": "Fobi administration", '
                    '"from_email": "*****@*****.**", '
                    '"to_name": "Artur Barseghyan", '
                    '"to_email": "*****@*****.**", '
                    '"subject": "Test mail", "body": "Test body"}'
    )
    form_handler_entry.save()

    return form_entry
示例#2
0
def create_form_with_entries(user=None,
                             create_entries_if_form_exist=True,
                             data={},
                             is_public=False,
                             name=TEST_FORM_NAME,
                             slug=TEST_FORM_SLUG):
    """Create test form with entries.

    Fills the form with pre-defined plugins.

    :param django.contrib.auth.models.User user:
    :param bool create_entries_if_form_exist: If set to True, entries
        are being created even if form already exists (a database
        record).
    :param dict data:
    :param bool is_public:
    :param str name:
    :param str slug:
    :return fobi.models.FormEntry: Instance of ``fobi.models.FormEntry``
        with a number of form elements and handlers filled in.
    """
    if not user:
        user = get_or_create_admin_user()

    try:
        form_entry = FormEntry._default_manager.get(slug=slug)
        if not create_entries_if_form_exist:
            return None
    except Exception as err:
        form_entry = FormEntry(
            name=name,
            slug=slug,
            user=user,
            is_public=is_public,
        )
        form_entry.save()

    # ************************************************************************
    # ******************************** Form elements *************************
    # ************************************************************************
    position = 1
    for key, entry_data in data.items():
        form_element_entry = FormElementEntry(
            form_entry=form_entry,
            plugin_uid=entry_data[0],
            plugin_data=entry_data[1],
            position=position
        )
        form_element_entry.save()
        position += 1

    # ************************************************************************
    # ******************************** Form handlers *************************
    # ************************************************************************

    # DB save
    form_handler_entry = FormHandlerEntry(
        form_entry=form_entry,
        plugin_uid=DBStoreHandlerPlugin.uid,
        plugin_data=''
    )
    form_handler_entry.save()

    # Mail
    form_handler_entry = FormHandlerEntry(
        form_entry=form_entry,
        plugin_uid=MailHandlerPlugin.uid,
        plugin_data='{'
                    '"from_name": "Fobi administration", '
                    '"from_email": "*****@*****.**", '
                    '"to_name": "Artur Barseghyan", '
                    '"to_email": "*****@*****.**", '
                    '"subject": "Test mail", "body": "Test body"'
                    '}'
    )
    form_handler_entry.save()

    return form_entry