mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-25 19:15:18 +02:00
Merge pull request #397 from MODSetter/dev
refactor: updated SearxNG connector migration and fixed validation for SearxNG host URL
This commit is contained in:
commit
30b8852ba7
4 changed files with 16 additions and 15 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
"""Add SearxNG connector enum value
|
"""Add SearxNG connector enum value
|
||||||
|
|
||||||
Revision ID: 26
|
Revision ID: 27
|
||||||
Revises: 25
|
Revises: 26
|
||||||
Create Date: 2025-01-18 00:00:00.000000
|
Create Date: 2025-01-18 00:00:00.000000
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
@ -11,8 +11,8 @@ from collections.abc import Sequence
|
||||||
from alembic import op
|
from alembic import op
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
# revision identifiers, used by Alembic.
|
||||||
revision: str = "26"
|
revision: str = "27"
|
||||||
down_revision: str | None = "25"
|
down_revision: str | None = "26"
|
||||||
branch_labels: str | Sequence[str] | None = None
|
branch_labels: str | Sequence[str] | None = None
|
||||||
depends_on: str | Sequence[str] | None = None
|
depends_on: str | Sequence[str] | None = None
|
||||||
|
|
||||||
|
|
@ -39,4 +39,3 @@ def upgrade() -> None:
|
||||||
def downgrade() -> None:
|
def downgrade() -> None:
|
||||||
"""Downgrade not supported for enum edits."""
|
"""Downgrade not supported for enum edits."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -432,7 +432,7 @@ class ConnectorService:
|
||||||
safesearch_clean = safesearch.strip()
|
safesearch_clean = safesearch.strip()
|
||||||
if safesearch_clean.isdigit():
|
if safesearch_clean.isdigit():
|
||||||
safesearch_value = int(safesearch_clean)
|
safesearch_value = int(safesearch_clean)
|
||||||
elif isinstance(safesearch, (int, float)):
|
elif isinstance(safesearch, int | float):
|
||||||
safesearch_value = int(safesearch)
|
safesearch_value = int(safesearch)
|
||||||
|
|
||||||
if safesearch_value is not None and not (0 <= safesearch_value <= 2):
|
if safesearch_value is not None and not (0 <= safesearch_value <= 2):
|
||||||
|
|
@ -444,7 +444,7 @@ class ConnectorService:
|
||||||
if isinstance(value, str):
|
if isinstance(value, str):
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
return value or None
|
return value or None
|
||||||
if isinstance(value, (list, tuple, set)):
|
if isinstance(value, list | tuple | set):
|
||||||
cleaned = [str(item).strip() for item in value if str(item).strip()]
|
cleaned = [str(item).strip() for item in value if str(item).strip()]
|
||||||
return ",".join(cleaned) if cleaned else None
|
return ",".join(cleaned) if cleaned else None
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
|
||||||
|
|
@ -412,7 +412,7 @@ def validate_connector_config(
|
||||||
raise ValueError(f"Invalid email format for {connector_name} connector")
|
raise ValueError(f"Invalid email format for {connector_name} connector")
|
||||||
|
|
||||||
def validate_url_field(key: str, connector_name: str) -> None:
|
def validate_url_field(key: str, connector_name: str) -> None:
|
||||||
if not validators.url(config.get(key, "")):
|
if not validators.url(config.get(key, "").strip(), simple_host=True):
|
||||||
raise ValueError(f"Invalid base URL format for {connector_name} connector")
|
raise ValueError(f"Invalid base URL format for {connector_name} connector")
|
||||||
|
|
||||||
def validate_list_field(key: str, field_name: str) -> None:
|
def validate_list_field(key: str, field_name: str) -> None:
|
||||||
|
|
@ -435,9 +435,7 @@ def validate_connector_config(
|
||||||
"SEARXNG_VERIFY_SSL",
|
"SEARXNG_VERIFY_SSL",
|
||||||
],
|
],
|
||||||
"validators": {
|
"validators": {
|
||||||
"SEARXNG_HOST": lambda: validate_url_field(
|
"SEARXNG_HOST": lambda: validate_url_field("SEARXNG_HOST", "SearxNG")
|
||||||
"SEARXNG_HOST", "SearxNG"
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"LINKUP_API": {"required": ["LINKUP_API_KEY"], "validators": {}},
|
"LINKUP_API": {"required": ["LINKUP_API_KEY"], "validators": {}},
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,9 @@ export default function SearxngConnectorPage() {
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input placeholder="google,bing,duckduckgo" {...field} />
|
<Input placeholder="google,bing,duckduckgo" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormDescription>Comma-separated list to target specific engines.</FormDescription>
|
<FormDescription>
|
||||||
|
Comma-separated list to target specific engines.
|
||||||
|
</FormDescription>
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
|
|
@ -273,7 +275,9 @@ export default function SearxngConnectorPage() {
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input placeholder="general,it,science" {...field} />
|
<Input placeholder="general,it,science" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormDescription>Comma-separated list of SearxNG categories.</FormDescription>
|
<FormDescription>
|
||||||
|
Comma-separated list of SearxNG categories.
|
||||||
|
</FormDescription>
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
|
|
@ -308,8 +312,8 @@ export default function SearxngConnectorPage() {
|
||||||
<Input placeholder="0 (off), 1 (moderate), 2 (strict)" {...field} />
|
<Input placeholder="0 (off), 1 (moderate), 2 (strict)" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormDescription>
|
<FormDescription>
|
||||||
Set 0, 1, or 2 to adjust SafeSearch filtering. Leave blank to use the instance
|
Set 0, 1, or 2 to adjust SafeSearch filtering. Leave blank to use the
|
||||||
default.
|
instance default.
|
||||||
</FormDescription>
|
</FormDescription>
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue