ferrosoft.apps.ferrobase.api package

Submodules

ferrosoft.apps.ferrobase.api.exception module

ferrosoft.apps.ferrobase.api.exception.ferrobase_exception_handler(exc, context)[source]

Custom DRF exception handler that catches all otherwise-unhandled exceptions.

DRF’s built-in handler only converts a small set of framework exceptions into API responses. Any other exception propagates as a 500 HTML error page. This handler intercepts those cases, logs them, and returns a generic APIException response so callers always receive a structured JSON body.

Parameters:
  • exc – The exception raised during request processing.

  • context – DRF handler context dict (contains view and request).

Returns:

A DRF Response for the given exception, or a generic 500

response when the exception is not natively handled by DRF.

Return type:

Response

ferrosoft.apps.ferrobase.api.router module

ferrosoft.apps.ferrobase.api.serializers module

class ferrosoft.apps.ferrobase.api.serializers.BusinessPartnerSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializes BusinessPartner instances including full address fields.

class Meta[source]

Bases: object

fields = ['id', 'name', 'first_name', 'last_name', 'company', 'additional_lines', 'street', 'house_no', 'city', 'postal_code', 'country']
model

alias of BusinessPartner

class ferrosoft.apps.ferrobase.api.serializers.CountrySerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializes Country catalog entries with ISO code and localized name.

class Meta[source]

Bases: object

fields = ['id', 'iso_code', 'english_name', 'localized_name']
model

alias of Country

class ferrosoft.apps.ferrobase.api.serializers.MaterialSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializes Material records (product code and name).

class Meta[source]

Bases: object

fields = ['id', 'name', 'code']
model

alias of Material

class ferrosoft.apps.ferrobase.api.serializers.MeasurementUnitSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializes MeasurementUnit records (symbol and name).

class Meta[source]

Bases: object

fields = ['id', 'symbol', 'name']
model

alias of MeasurementUnit

class ferrosoft.apps.ferrobase.api.serializers.SignupSerializer(*args, **kwargs)[source]

Bases: Serializer

Validates the payload for self-service signup requests.

ferrosoft.apps.ferrobase.api.views module

class ferrosoft.apps.ferrobase.api.views.BusinessPartnerViewSet(**kwargs)[source]

Bases: ModelViewSet

Full CRUD REST endpoint for BusinessPartner records.

basename = None
description = None
detail = None
name = None
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
queryset = <QuerySet [BusinessPartner]>
serializer_class

alias of BusinessPartnerSerializer

suffix = None
class ferrosoft.apps.ferrobase.api.views.CountryViewSet(**kwargs)[source]

Bases: ModelViewSet

Full CRUD REST endpoint for Country catalog entries.

basename = None
description = None
detail = None
name = None
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
queryset = <QuerySet [Country]>
serializer_class

alias of CountrySerializer

suffix = None
class ferrosoft.apps.ferrobase.api.views.MaterialViewSet(**kwargs)[source]

Bases: ModelViewSet

Full CRUD REST endpoint for Material records.

basename = None
description = None
detail = None
name = None
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
queryset = <QuerySet [Material]>
serializer_class

alias of MaterialSerializer

suffix = None
class ferrosoft.apps.ferrobase.api.views.MeasurementUnitViewSet(**kwargs)[source]

Bases: ModelViewSet

Full CRUD REST endpoint for MeasurementUnit records.

basename = None
description = None
detail = None
name = None
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
queryset = <QuerySet [MeasurementUnit]>
serializer_class

alias of MeasurementUnitSerializer

suffix = None
class ferrosoft.apps.ferrobase.api.views.SignupView(**kwargs)[source]

Bases: APIView

Public endpoint that initiates self-service tenant onboarding.

Accepts signup data, dispatches the onboarding task to the background task queue, waits for its completion, and returns a success flag. No authentication is required so that prospective users can register.

TASK_RESULT_GROUP = 'api_signup_%s'
permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
post(request)[source]

Handle signup POST request.

Parameters:

request (Request) – DRF request containing email, first_name, last_name, company, and language fields.

Returns:

{"success": True} on success, or a 400 response

with validation errors.

Return type:

Response