Skip to content

transformation_services

django_spire.knowledge.entry.services.transformation_services

EntryTransformationService

Bases: BaseDjangoModelService['Entry']

Source code in django_spire/contrib/constructor/constructor.py
def __init__(self, obj: Any = None):
    self._obj_type_name: str = str(
        list(self.__class__.__annotations__.values())[0]
    ).split('.')[-1]

    if obj is None:
        return

    self._obj_mro_type_names = [cls.__name__ for cls in obj.__class__.__mro__]

    if not self._obj_type_name in self._obj_mro_type_names:
        raise ConstructorException(
            f'{self.__class__.__name__} was instantiated with obj type "{obj.__class__.__name__}" and failed as it was expecting "{self._obj_type_name}".'
        )

    self._obj_type: type[TypeAny] = obj.__class__

    if self._obj_type is None or self._obj_type is ...:
        raise ConstructorException(
            f'{self.__class__.__name__} top class attribute must have an annotated type.')

    self.obj: TypeAny = obj

    if ABC not in self.__class__.__bases__:
        if not self._obj_is_valid:
            raise ConstructorException(f'{self._obj_type_name} failed to validate on {self.__class__.__name__}')

    self.__post_init__()

obj instance-attribute

queryset_to_navigation_list staticmethod

Source code in django_spire/knowledge/entry/services/transformation_services.py
@staticmethod
def queryset_to_navigation_list(queryset: QuerySet[Entry]) -> list[dict[str, str]]:
    json_list = []
    for entry in queryset:
        json_list.append(entry.services.transformation.to_dict())

    return json_list

to_dict

Source code in django_spire/knowledge/entry/services/transformation_services.py
def to_dict(self):
    site = Site.objects.get_current() if not settings.DEBUG else ''
    current_version = self.obj.current_version

    return {
        'entry_id': self.obj.pk,
        'name': self.obj.name,
        'version_id': current_version.id,
        'author': current_version.author.get_full_name(),
        'last_edit_datetime': (
            current_version.last_edit_datetime.strftime('%Y-%m-%d')
            if current_version.last_edit_datetime else ''
        ),
        'publish_datetime': (
            current_version.published_datetime.strftime('%Y-%m-%d')
            if current_version.published_datetime else ''
        ),
        'status': current_version.status,
        'delete_url': f'''
            {site}{
                reverse(
                    'django_spire:knowledge:entry:page:delete',
                    kwargs={'pk': self.obj.pk},
                )
            }
        ''',
        'edit_url': f'''
            {site}{
                reverse(
                    'django_spire:knowledge:entry:form:update',
                    kwargs={
                        'pk': self.obj.pk,
                        'collection_pk': self.obj.collection.pk
                    },
                )
            }
        ''',
        'view_url': f'''
            {site}{
                reverse(
                    'django_spire:knowledge:entry:version:page:detail',
                    kwargs={'pk': current_version.pk},
                )
            }
        ''',
        'edit_version_url': f'''
            {site}{
                reverse(
                    'django_spire:knowledge:entry:version:form:update',
                    kwargs={'pk': current_version.pk},
                )
            }
        '''
    }