fobi.contrib.apps.drf_integration package

Subpackages

Submodules

fobi.contrib.apps.drf_integration.apps module

class fobi.contrib.apps.drf_integration.apps.Config(app_name, app_module)[source]

Bases: django.apps.config.AppConfig

Config.

label = 'fobi_contrib_apps_drf_integration'
name = 'fobi.contrib.apps.drf_integration'

fobi.contrib.apps.drf_integration.base module

class fobi.contrib.apps.drf_integration.base.DRFIntegrationFormElementPluginProcessor(*args, **kwargs)[source]

Bases: fobi.base.IntegrationFormElementPluginProcessor

Django REST framework field instance processor.

process_custom_form_field_instance(form_element_entry, form_entry, request, form_element_plugin=None)[source]

Process.

class fobi.contrib.apps.drf_integration.base.DRFSubmitPluginFormDataMixin[source]

Bases: object

Submit plugin form data mixin.

submit_plugin_form_data(form_element_plugin, form_entry, request, serializer, form_element_entries=None, **kwargs)[source]

Submit plugin form data.

Called on form submission (when user actually posts the data to assembled form).

Parameters
  • form_element_plugin

  • form_entry (fobi.models.FormEntry) – Instance of fobi.models.FormEntry.

  • request (django.http.HttpRequest) –

  • serializer (rest_framework.serializers.Serializer) –

  • form_element_entries (iterable) –

fobi.contrib.apps.drf_integration.base.get_cleaned_data(serializer, keys_to_remove=[], values_to_remove=[])[source]

Get cleaned data.

Gets cleaned data, having the trash (fields without values) filtered out.

Parameters
  • serializer

  • keys_to_remove (iterable) –

  • values_to_remove (iterable) –

Return dict

fobi.contrib.apps.drf_integration.base.get_field_name_to_label_map(serializer, keys_to_remove=[], values_to_remove=[])[source]

Get field name to label map.

Parameters
  • serializer

  • keys_to_remove (iterable) –

  • values_to_remove (iterable) –

Return dict

fobi.contrib.apps.drf_integration.base.get_processed_serializer_data(serializer, form_element_entries)[source]

Gets processed serializer data.

Simply fires both fobi.base.get_cleaned_data and fobi.base.get_field_name_to_label_map functions and returns the result.

Parameters
  • serializer

  • form_element_entries (iterable) – Iterable of form element entries.

Return tuple

fobi.contrib.apps.drf_integration.base.run_form_handlers(form_entry, request, serializer, form_element_entries=None)[source]

Run form handlers.

Parameters
  • form_entry (fobi.models.FormEntry) –

  • request (django.http.HttpRequest) –

  • serializer (rest_framework.serializers.Serializer) –

  • form_element_entries (iterable) –

Return tuple

List of success responses, list of error responses

fobi.contrib.apps.drf_integration.base.submit_plugin_form_data(form_entry, request, serializer, form_element_entries=None, **kwargs)[source]

Submit plugin form data for all plugins.

Parameters
  • form_entry (fobi.models.FormEntry) – Instance of fobi.models.FormEntry.

  • request (django.http.HttpRequest) –

  • serializer (rest_framework.serializers.Serializer) –

  • form_element_entries (iterable) –

fobi.contrib.apps.drf_integration.dynamic module

fobi.contrib.apps.drf_integration.dynamic.assemble_serializer_class(form_entry, request=None, origin=None, origin_kwargs_update_func=None, origin_return_func=None, form_element_entries=None, has_value=None, declared_fields=None, declared_fields_metadata=None)[source]

Assemble a serializer class by given entry.

Parameters
  • form_entry

  • base_class

  • request (django.http.HttpRequest) –

  • origin (string) –

  • origin_kwargs_update_func (callable) –

  • origin_return_func (callable) –

  • form_element_entries (iterable) – If given, used instead of form_entry.formelemententry_set.all (no additional database hit).

  • has_value (bool) –

fobi.contrib.apps.drf_integration.dynamic.get_declared_fields(form_entry, request=None, origin=None, origin_kwargs_update_func=None, origin_return_func=None, form_element_entries=None, has_value=None)[source]

Get declared fields.

fobi.contrib.apps.drf_integration.fields module

class fobi.contrib.apps.drf_integration.fields.ContentImageField(*args, **kwargs)[source]

Bases: fobi.contrib.apps.drf_integration.fields.NoneField

Content image field.

class fobi.contrib.apps.drf_integration.fields.ContentMarkdownField(*args, **kwargs)[source]

Bases: fobi.contrib.apps.drf_integration.fields.NoneField

Content markdown field.

class fobi.contrib.apps.drf_integration.fields.ContentRichTextField(*args, **kwargs)[source]

Bases: fobi.contrib.apps.drf_integration.fields.NoneField

Content rich text field.

class fobi.contrib.apps.drf_integration.fields.ContentTextField(*args, **kwargs)[source]

Bases: fobi.contrib.apps.drf_integration.fields.NoneField

Content text field.

class fobi.contrib.apps.drf_integration.fields.ContentVideoField(*args, **kwargs)[source]

Bases: fobi.contrib.apps.drf_integration.fields.NoneField

Content video field.

class fobi.contrib.apps.drf_integration.fields.ModelChoiceField(*args, **kwargs)[source]

Bases: rest_framework.fields.ChoiceField, fobi.contrib.apps.drf_integration.fields.ModelChoiceFieldMixin

Model choice field.

class fobi.contrib.apps.drf_integration.fields.ModelMultipleChoiceField(*args, **kwargs)[source]

Bases: rest_framework.fields.MultipleChoiceField, fobi.contrib.apps.drf_integration.fields.ModelChoiceFieldMixin

Model choice field.

class fobi.contrib.apps.drf_integration.fields.MultipleChoiceWithMaxField(*args, **kwargs)[source]

Bases: rest_framework.fields.MultipleChoiceField

MultipleChoiceWithMaxField.

default_error_messages = {'empty': 'This selection may not be empty.', 'invalid_choice': '"{input}" is not a valid choice.', 'max_choices': 'Max number of choices reached.', 'not_a_list': 'Expected a list of items but got type "{input_type}".'}
to_internal_value(data)[source]

Transform the incoming primitive data into a native value.

class fobi.contrib.apps.drf_integration.fields.NoneField(*args, **kwargs)[source]

Bases: rest_framework.fields.Field

NoneField.

default_empty_html = ''
default_error_messages = {}
initial = ''
run_validation(data=<class 'rest_framework.fields.empty'>)[source]

Validate a simple representation and return the internal value.

The provided data may be empty if no representation was included in the input.

May raise SkipField if the field should not be included in the validated data.

to_internal_value(data)[source]

Transform the incoming primitive data into a native value.

to_representation(value)[source]

Transform the outgoing native value into primitive data.

fobi.contrib.apps.drf_integration.helpers module

fobi.contrib.apps.drf_integration.helpers.map_field_name_to_label(serializer)[source]

Takes a form and creates label to field name map.

Parameters

serializer – Instance of rest_framework.serializers.Serializer.

Return dict

fobi.contrib.apps.drf_integration.metadata module

class fobi.contrib.apps.drf_integration.metadata.FobiMetaData[source]

Bases: rest_framework.metadata.SimpleMetadata

Meta data for better representation of the form elements.

get_field_info(field)[source]

Get field info.

Given an instance of a serializer field, return a dictionary of metadata about it.

label_lookup = <rest_framework.utils.field_mapping.ClassLookupDict object>

fobi.contrib.apps.drf_integration.serializers module

class fobi.contrib.apps.drf_integration.serializers.FormEntrySerializer(*args, **kwargs)[source]

Bases: rest_framework.serializers.ModelSerializer

FormEntry serializer (read-only).

Used for detail and list views.

class Meta[source]

Bases: object

Options.

fields = ('url', 'id', 'slug', 'title')
model

alias of fobi.models.FormEntry

read_only_fields = ('url', 'id', 'slug', 'title')
get_fields_metadata(field_name=None)[source]

Just to make sure nothing breaks.

get_url(obj)[source]

Get URL.

fobi.contrib.apps.drf_integration.urls module

fobi.contrib.apps.drf_integration.utils module

fobi.contrib.apps.drf_integration.utils.get_serializer_class(form_entry, request=None, has_value=None, declared_fields=None)[source]

Get assembled serializer class.

Parameters
  • form_entry (fobi.models.FormEntry) –

  • request (django.http.HttpRequest) –

  • has_value (bool) –

  • declared_fields (list) –

Return django.forms.Form

fobi.contrib.apps.drf_integration.views module

class fobi.contrib.apps.drf_integration.views.FobiFormEntryViewSet(**kwargs)[source]

Bases: rest_framework.mixins.RetrieveModelMixin, rest_framework.mixins.UpdateModelMixin, rest_framework.mixins.ListModelMixin, rest_framework.viewsets.GenericViewSet

FormEntry view set.

basename = None
description = None
detail = None
get_object()[source]

Override get_object to get things done.

get_queryset()[source]

Get queryset.

We show all forms to authenticated users and show only public forms to non-authenticated users.

get_serializer(*args, **kwargs)[source]

Get the serializer.

get_serializer_class()[source]

Get serializer class.

has_value()[source]
lookup_field = 'slug'
lookup_url_kwarg = 'slug'
metadata_class

alias of fobi.contrib.apps.drf_integration.metadata.FobiMetaData

name = None
permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
queryset
suffix = None
update(request, *args, **kwargs)[source]

Module contents