♻️(backend) stylistic and consistency changes
Refactored converter services based on PR #1609 review comments: - Renamed parameter to `data` across all convert methods for consistency - Replaced recursive call with explicit sequential calls for readability - Hardcoded CONVERSION_API_SECURE=True in Production class for security - Removed unused YdocConverter import from viewsets.py - Updated tests to match new error message wording Signed-off-by: Stephan Meijer <me@stephanmeijer.com>
This commit is contained in:
committed by
Anthony LC
parent
767710231d
commit
f0cc29e779
@@ -25,7 +25,7 @@ class ServiceUnavailableError(ConversionError):
|
|||||||
class ConverterProtocol(typing.Protocol):
|
class ConverterProtocol(typing.Protocol):
|
||||||
"""Protocol for converter classes."""
|
"""Protocol for converter classes."""
|
||||||
|
|
||||||
def convert(self, text, content_type, accept):
|
def convert(self, data, content_type, accept):
|
||||||
"""Convert content from one format to another."""
|
"""Convert content from one format to another."""
|
||||||
|
|
||||||
|
|
||||||
@@ -43,10 +43,11 @@ class Converter:
|
|||||||
"""Convert input into other formats using external microservices."""
|
"""Convert input into other formats using external microservices."""
|
||||||
|
|
||||||
if content_type == mime_types.DOCX and accept == mime_types.YJS:
|
if content_type == mime_types.DOCX and accept == mime_types.YJS:
|
||||||
return self.convert(
|
blocknote_data = self.docspec.convert(
|
||||||
self.docspec.convert(data, mime_types.DOCX, mime_types.BLOCKNOTE),
|
data, mime_types.DOCX, mime_types.BLOCKNOTE
|
||||||
mime_types.BLOCKNOTE,
|
)
|
||||||
mime_types.YJS,
|
return self.ydoc.convert(
|
||||||
|
blocknote_data, mime_types.BLOCKNOTE, mime_types.YJS
|
||||||
)
|
)
|
||||||
|
|
||||||
return self.ydoc.convert(data, content_type, accept)
|
return self.ydoc.convert(data, content_type, accept)
|
||||||
@@ -111,16 +112,16 @@ class YdocConverter:
|
|||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def convert(self, text, content_type=mime_types.MARKDOWN, accept=mime_types.YJS):
|
def convert(self, data, content_type=mime_types.MARKDOWN, accept=mime_types.YJS):
|
||||||
"""Convert a Markdown text into our internal format using an external microservice."""
|
"""Convert a Markdown text into our internal format using an external microservice."""
|
||||||
|
|
||||||
if not text:
|
if not data:
|
||||||
raise ValidationError("Input text cannot be empty")
|
raise ValidationError("Input data cannot be empty")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = self._request(
|
response = self._request(
|
||||||
f"{settings.Y_PROVIDER_API_BASE_URL}{settings.CONVERSION_API_ENDPOINT}/",
|
f"{settings.Y_PROVIDER_API_BASE_URL}{settings.CONVERSION_API_ENDPOINT}/",
|
||||||
text,
|
data,
|
||||||
content_type,
|
content_type,
|
||||||
accept,
|
accept,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ def test_auth_header(settings):
|
|||||||
|
|
||||||
|
|
||||||
def test_convert_empty_text():
|
def test_convert_empty_text():
|
||||||
"""Should raise ValidationError when text is empty."""
|
"""Should raise ValidationError when data is empty."""
|
||||||
converter = YdocConverter()
|
converter = YdocConverter()
|
||||||
with pytest.raises(ValidationError, match="Input text cannot be empty"):
|
with pytest.raises(ValidationError, match="Input data cannot be empty"):
|
||||||
converter.convert("")
|
converter.convert("")
|
||||||
|
|
||||||
|
|
||||||
@@ -143,5 +143,5 @@ def test_convert_none_input():
|
|||||||
"""Should raise ValidationError when input is None."""
|
"""Should raise ValidationError when input is None."""
|
||||||
converter = YdocConverter()
|
converter = YdocConverter()
|
||||||
|
|
||||||
with pytest.raises(ValidationError, match="Input text cannot be empty"):
|
with pytest.raises(ValidationError, match="Input data cannot be empty"):
|
||||||
converter.convert(None)
|
converter.convert(None)
|
||||||
|
|||||||
@@ -1057,6 +1057,9 @@ class Production(Base):
|
|||||||
# Privacy
|
# Privacy
|
||||||
SECURE_REFERRER_POLICY = "same-origin"
|
SECURE_REFERRER_POLICY = "same-origin"
|
||||||
|
|
||||||
|
# Conversion API: Always verify SSL in production
|
||||||
|
CONVERSION_API_SECURE = True
|
||||||
|
|
||||||
CACHES = {
|
CACHES = {
|
||||||
"default": {
|
"default": {
|
||||||
"BACKEND": "django_redis.cache.RedisCache",
|
"BACKEND": "django_redis.cache.RedisCache",
|
||||||
|
|||||||
Reference in New Issue
Block a user