feat(api): cast StreamSetting raw_value to value (#1991)
This commit is contained in:
parent
e75426bc4c
commit
951dc68394
3 changed files with 53 additions and 3 deletions
|
@ -1,5 +1,10 @@
|
|||
import logging
|
||||
from typing import Optional, Union
|
||||
|
||||
from django.db import models
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Preference(models.Model):
|
||||
user = models.ForeignKey(
|
||||
|
@ -34,15 +39,32 @@ class StreamSetting(models.Model):
|
|||
max_length=64,
|
||||
db_column="keyname",
|
||||
)
|
||||
value = models.CharField(
|
||||
raw_value = models.CharField(
|
||||
max_length=255,
|
||||
blank=True,
|
||||
null=True,
|
||||
db_column="value",
|
||||
)
|
||||
type = models.CharField(
|
||||
max_length=16,
|
||||
)
|
||||
|
||||
@property
|
||||
def value(self) -> Optional[Union[bool, int, str]]:
|
||||
# Ignore if value is an empty string
|
||||
if not self.raw_value:
|
||||
return None
|
||||
|
||||
if self.type == "boolean":
|
||||
return self.raw_value.lower() == "true"
|
||||
if self.type == "integer":
|
||||
return int(self.raw_value)
|
||||
if self.type == "string":
|
||||
return self.raw_value
|
||||
|
||||
logger.warning(f"StreamSetting {self.key} has invalid type {self.type}")
|
||||
return self.raw_value
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = "cc_stream_setting"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue