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 = {u'not_a_list': <django.utils.functional.__proxy__ object at 0x7f3c296c43d0>, 'max_choices': <django.utils.functional.__proxy__ object at 0x7f3c296e3e10>, u'invalid_choice': <django.utils.functional.__proxy__ object at 0x7f3c296c4350>, u'empty': <django.utils.functional.__proxy__ object at 0x7f3c296c4450>}
to_internal_value(data)[source]
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]
to_internal_value(data)[source]
to_representation(value)[source]

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 FormEntry

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

Just to make sure nothing breaks.

FormEntrySerializer.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 FobiMetaData

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

Module contents