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(**kwargs)[source]

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

Content image field.

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

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

Content markdown field.

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

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

Content rich text field.

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

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

Content text field.

class fobi.contrib.apps.drf_integration.fields.ContentVideoField(**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': <django.utils.functional.lazy.<locals>.__proxy__ object>, 'invalid_choice': <django.utils.functional.lazy.<locals>.__proxy__ object>, 'max_choices': <django.utils.functional.lazy.<locals>.__proxy__ object>, 'not_a_list': <django.utils.functional.lazy.<locals>.__proxy__ object>}
to_internal_value(data)[source]

Transform the incoming primitive data into a native value.

class fobi.contrib.apps.drf_integration.fields.NoneField(**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(instance=None, data=<class 'rest_framework.fields.empty'>, **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.

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

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

Module contents