Factorizer/Cluster ERP WikiCluster ERP Türkçe
Home / Business modules

Reference

Person languages reference

Reference for parties/person_languages, the languages a party speaks and the proficiency level of each.

This page lists the fields, routes, and rules of the person_languages sub-module in src/cluster_erp/modules/parties/person_languages/. A row records one language a party speaks and how well; a person can have several rows. On the party card the rows appear in the Spoken Languages tab (src/cluster_erp/modules/parties/parties/metadata.py:529-534).

Scope and source

  • Defined in: src/cluster_erp/modules/parties/person_languages/models.py (PersonLanguage), schemas.py, services.py (PersonLanguageService), routes.py, metadata.py (PERSON_LANGUAGE_META).
  • Count: 1 table; 6 routes (@router. decorators in routes.py); 25 language choices and 5 proficiency choices (ChoiceMeta( entries in metadata.py, 30 in total).

Fields

Name Type Meaning Source
party_id FK to parties_parties.id The party src/cluster_erp/modules/parties/person_languages/models.py:20-22
language String(10) ISO 639-1 code, for example tr or en src/cluster_erp/modules/parties/person_languages/models.py:23-25
proficiency_level String(20) native, fluent, advanced, intermediate, or beginner src/cluster_erp/modules/parties/person_languages/models.py:26-27

The table has no code column; the service does not draw a business key (src/cluster_erp/modules/parties/person_languages/services.py:35-41).

Routes

All paths are under /api/v1/parties.

Method and path Purpose Permission Source
GET /{party_id}/languages Languages of one party, oldest first person_language.read src/cluster_erp/modules/parties/person_languages/routes.py:22-30, src/cluster_erp/modules/parties/person_languages/services.py:19-26
POST /{party_id}/languages Add a language person_language.create src/cluster_erp/modules/parties/person_languages/routes.py:33-42
GET /languages/{language_id} One row person_language.read src/cluster_erp/modules/parties/person_languages/routes.py:45-55
PUT /languages/{language_id} Update person_language.update src/cluster_erp/modules/parties/person_languages/routes.py:58-69
POST /languages/bulk-delete Soft-delete several person_language.bulk_delete src/cluster_erp/modules/parties/person_languages/routes.py:72-80
DELETE /languages/{language_id} Soft-delete one person_language.delete src/cluster_erp/modules/parties/person_languages/routes.py:83-91

Constraints and validation

  • The schemas limit language to 10 characters and proficiency_level to 20 (src/cluster_erp/modules/parties/person_languages/schemas.py:10-16). The allowed values are declared as metadata choices for the form (src/cluster_erp/modules/parties/person_languages/metadata.py:18-52); the schemas do not restrict the values to those choices.
  • The form marks both fields as required and shows them as enum pickers (src/cluster_erp/modules/parties/person_languages/metadata.py:109-116).
  • The rows are part of the party's data-subject copy and are anonymised with the party (src/cluster_erp/modules/parties/privacy_handlers.py:77, src/cluster_erp/modules/parties/privacy_handlers.py:242).

Discrepancies

Terms introduced

Term Code identifier Definition Turkish term Source
spoken language PersonLanguage A language a party speaks, with a proficiency level. Konuştuğu dil src/cluster_erp/modules/parties/person_languages/models.py:15
proficiency level proficiency_level How well the party speaks the language. Seviye src/cluster_erp/modules/parties/person_languages/models.py:27

Verified against commit 92f8051 on 2026-11-13.

Verified against commit 92f8051 · 2026-11-13