Coverage for functions \ flipdare \ wrapper \ content_wrapper.py: 73%
113 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
1#!/usr/bin/env python
2# Copyright (c) 2026 Flipdare Pty Ltd. All rights reserved.
3#
4# This file is part of Flipdare's proprietary software and contains
5# confidential and copyrighted material. Unauthorised copying,
6# modification, distribution, or use of this file is strictly
7# prohibited without prior written permission from Flipdare Pty Ltd.
8#
9# This software includes third-party components licensed under MIT,
10# BSD, and Apache 2.0 licences. See THIRD_PARTY_NOTICES for details.
11#
13from __future__ import annotations
15from flipdare.generated.model.content_model import ContentKeys, ContentModel
16from flipdare.generated.model.internal.image_model import ImageModel
17from flipdare.generated.model.internal.video_model import VideoModel
18from flipdare.generated.model.internal.view_stats_model import ViewStatsModel
19from flipdare.generated.shared.model.model_obj_type import ModelObjType
20from flipdare.wrapper._persisted_wrapper import PersistedWrapper
22__all__ = ["ContentWrapper"]
24_K = ContentKeys
27class ContentWrapper(PersistedWrapper[ContentModel]):
28 MODEL_CLASS = ContentModel
30 @property
31 def searchable_values(self) -> list[str]:
32 return [self.description] if self.description is not None else []
34 @property
35 def is_user(self) -> bool:
36 return self.model.obj_type == ModelObjType.USER
38 @property
39 def is_group(self) -> bool:
40 return self.model.obj_type == ModelObjType.GROUP
42 @property
43 def is_video(self) -> bool:
44 return self.model.video is not None
46 @property
47 def is_image(self) -> bool:
48 return self.model.image is not None
50 @property
51 def processing_complete(self) -> bool:
52 return (
53 self.processed
54 and self.thumbnail_created
55 and self.hash_created
56 and self.optimized_video
57 and self.search_indexed
58 )
60 # <AUTO_GENERATED_CONTENT> - do not edit
62 @property
63 def obj_id(self) -> str:
64 return self._model.obj_id
66 @obj_id.setter
67 def obj_id(self, value: str) -> None:
68 self.update_field(_K.OBJ_ID, value)
70 @property
71 def uid(self) -> str:
72 return self._model.uid
74 @uid.setter
75 def uid(self, value: str) -> None:
76 self.update_field(_K.UID, value)
78 @property
79 def obj_type(self) -> ModelObjType:
80 return self._model.obj_type
82 @obj_type.setter
83 def obj_type(self, value: ModelObjType) -> None:
84 self.update_field(_K.OBJ_TYPE, value)
86 @property
87 def view_stats(self) -> ViewStatsModel:
88 return self._model.view_stats
90 @view_stats.setter
91 def view_stats(self, value: ViewStatsModel) -> None:
92 self.update_field(_K.VIEW_STATS, value)
94 @property
95 def video(self) -> VideoModel | None:
96 return self._model.video
98 @video.setter
99 def video(self, value: VideoModel | None) -> None:
100 self.update_field(_K.VIDEO, value)
102 @property
103 def image(self) -> ImageModel | None:
104 return self._model.image
106 @image.setter
107 def image(self, value: ImageModel | None) -> None:
108 self.update_field(_K.IMAGE, value)
110 @property
111 def description(self) -> str | None:
112 return self._model.description
114 @description.setter
115 def description(self, value: str | None) -> None:
116 self.update_field(_K.DESCRIPTION, value)
118 # base internal fields
119 @property
120 def version(self) -> int:
121 return self._model.version
123 @version.setter
124 def version(self, value: int) -> None:
125 self.update_field(_K.VERSION, value)
127 @property
128 def processed(self) -> bool:
129 return self._model.processed
131 @processed.setter
132 def processed(self, value: bool) -> None:
133 self.update_field(_K.PROCESSED, value)
135 @property
136 def error_count(self) -> int:
137 return self._model.error_count
139 @error_count.setter
140 def error_count(self, value: int) -> None:
141 self.update_field(_K.ERROR_COUNT, value)
143 # content specific internal fields
144 @property
145 def thumbnail_created(self) -> bool:
146 return self._model.thumbnail_created
148 @thumbnail_created.setter
149 def thumbnail_created(self, value: bool) -> None:
150 self.update_field(_K.THUMBNAIL_CREATED, value)
152 @property
153 def hash_created(self) -> bool:
154 return self._model.hash_created
156 @hash_created.setter
157 def hash_created(self, value: bool) -> None:
158 self.update_field(_K.HASH_CREATED, value)
160 @property
161 def optimized_video(self) -> bool:
162 return self._model.optimized_video
164 @optimized_video.setter
165 def optimized_video(self, value: bool) -> None:
166 self.update_field(_K.OPTIMIZED_VIDEO, value)
168 @property
169 def search_indexed(self) -> bool:
170 return self._model.search_indexed
172 @search_indexed.setter
173 def search_indexed(self, value: bool) -> None:
174 self.update_field(_K.SEARCH_INDEXED, value)
176 # </AUTO_GENERATED_CONTENT> - do not edit