Skip to content

Implementar modelos de dominio compartido en core/models.py #50

@eduranm

Description

@eduranm

Descripción de la nueva funcionalidad

Yo, como desarrollador backend, quiero que los modelos Gender, Language, License, LicenseStatement, FlexibleDate, TextWithLang, TextLanguageMixin, RichTextWithLanguage y FileWithLang existan en core/models.py, para que los distintos módulos de la aplicación puedan reutilizar entidades comunes sin redefinirlas.

Criterios de aceptación

  • Language debe tener los campos name y code2, y el método de clase get_or_create que normaliza code2 usando language_iso() antes de buscar o crear el registro.
  • Language.load(user) debe poblar la tabla a partir de choices.LANGUAGE solo si está vacía.
  • Gender debe tener unique_together = [("code", "gender")] y el método create_or_update.
  • License debe tener unique_together = [("license_type",)] e índice en license_type; el método get debe usar iexact.
  • LicenseStatement debe tener unique_together = [("url", "license_p", "language")] e índice en url.
  • LicenseStatement.parse_url(url) debe extraer license_type y license_version a partir de una URL de Creative Commons.
  • LanguageFallbackManager.get_object_in_preferred_language debe retornar resultados en el idioma solicitado y, como fallback, en orden pt → es → en.
  • FlexibleDate debe exponer la propiedad data como diccionario con claves date__year, date__month, date__day.
  • FileWithLang debe exponer la propiedad filename usando os.path.basename.
  • Todos los modelos abstractos no deben generar migraciones propias.
  • Debe existir la migración core/migrations/0001_initial.py contemplando los modelos concretos: Gender, Language, License, LicenseStatement, FlexibleDate.

Anexos

  • RichTextWithLanguage, TextWithLang, TextLanguageMixin y FileWithLang son abstractos y no requieren migración.

Referencias

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions