Skip to content
Snippets Groups Projects

WIP: Resolve "Support recordings"

Open Nik | Klampfradler requested to merge 6-support-recordings into master
1 file
+ 35
4
Compare changes
  • Side-by-side
  • Inline
@@ -34,8 +34,16 @@ class PreviewImage:
@@ -34,8 +34,16 @@ class PreviewImage:
self.format.preview_images.append(self)
self.format.preview_images.append(self)
def _update_from_response(self, res: Dict[str, Any]) -> None:
def _update_from_response(self, res: Dict[str, Any]) -> None:
pass
for name, value in res.items():
# FIXME Find out how to get to attributes and text nodes
name = name.lstrip("@#")
 
 
if name == "text":
 
self.url = value
 
else:
 
snake_name = camel_to_snake(name)
 
 
if hasattr(self, snake_name):
 
setattr(self, snake_name, to_field_type(self, snake_name, value))
def to_dict(self, *args: str, **kwargs: str) -> Dict[str, Any]:
def to_dict(self, *args: str, **kwargs: str) -> Dict[str, Any]:
"""Return relevant data of this image as a dictionary.
"""Return relevant data of this image as a dictionary.
@@ -49,9 +57,28 @@ class PreviewImage:
@@ -49,9 +57,28 @@ class PreviewImage:
If attribute names are passed as names of keyword arguments,
If attribute names are passed as names of keyword arguments,
they are renamed to the string passed as value in the dictionary.
they are renamed to the string passed as value in the dictionary.
"""
"""
 
res: Dict[str, Any] = {}
pass
for name, value in self.__dict__.items():
#FIXME FInd out how to build a dict for attributes and text nodes
if args and name not in args and name not in kwargs:
 
continue
 
 
if name == "url":
 
res["#text"] = value
 
elif value is not None:
 
if name in kwargs:
 
camel_name = kwargs[name]
 
else:
 
camel_name = snake_to_camel(name)
 
 
if isinstance(value, bool):
 
str_value = "true" if value else "false"
 
else:
 
str_value = str(value)
 
 
res[f"@{camel_name}"] = str_value
 
 
return res
@dataclass
@dataclass
@@ -78,6 +105,8 @@ class PlaybackFormat:
@@ -78,6 +105,8 @@ class PlaybackFormat:
def _update_from_response(self, res: Dict[str, Any]) -> None:
def _update_from_response(self, res: Dict[str, Any]) -> None:
for name, value in res.items():
for name, value in res.items():
 
name = name.lstrip("@#")
 
if name == "preview":
if name == "preview":
if not value or not value["images"] or not value["images"]["image"]:
if not value or not value["images"] or not value["images"]["image"]:
self.preview_images.clear()
self.preview_images.clear()
@@ -164,6 +193,8 @@ class Recording:
@@ -164,6 +193,8 @@ class Recording:
def _update_from_response(self, res: Dict[str, Any]) -> None:
def _update_from_response(self, res: Dict[str, Any]) -> None:
for name, value in res.items():
for name, value in res.items():
 
name = name.lstrip("@#")
 
if name == "playback":
if name == "playback":
if not value or not value["format"]:
if not value or not value["format"]:
self.formats.clear()
self.formats.clear()
Loading