Add using read only user.

pull/550/head
Andrey Dolgolev 2022-03-08 17:06:50 +02:00
rodzic 3c59048459
commit 542f411449
5 zmienionych plików z 43 dodań i 12 usunięć

Wyświetl plik

@ -57,6 +57,12 @@ class StatusAPIException(Exception):
"""
class NameNormalizationException(Exception):
"""
Raised on actions when slugify can't normalize name.
"""
class LabelNames(Enum):
ETHERSCAN_SMARTCONTRACT = "etherscan_smartcontract"
COINMARKETCAP_TOKEN = "coinmarketcap_token"
@ -539,8 +545,9 @@ def name_normalization(query_name: str) -> str:
try:
normalized_query_name = slugify(query_name, max_length=50)
except Exception as e:
logger.error(f"Error in query normalization.")
raise MoonstreamHTTPException(status_code=500, internal_error=e)
logger.error(f"Error in query normalization. Error: {e}")
raise NameNormalizationException(f"Can't normalize name:{query_name}")
return normalized_query_name

Wyświetl plik

@ -10,11 +10,10 @@ from bugout.data import BugoutResources, BugoutJournalEntryContent, BugoutJourna
from bugout.exceptions import BugoutResponseException
from fastapi import APIRouter, Body, Request
import requests
from slugify import slugify # type: ignore
from .. import data
from ..actions import get_query_by_name, name_normalization
from ..actions import get_query_by_name, name_normalization, NameNormalizationException
from ..middleware import MoonstreamHTTPException
from ..settings import (
MOONSTREAM_ADMIN_ACCESS_TOKEN,
@ -95,14 +94,19 @@ async def create_query_handler(
used_queries: List[str] = [
resource.resource_data["name"] for resource in resources.resources
]
query_name = name_normalization(query_applied.name)
try:
query_name = name_normalization(query_applied.name)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
if query_name in used_queries:
raise MoonstreamHTTPException(
status_code=404,
detail=f"Provided query name already use. Please remove it or use PUT /{query_name}",
detail=f"Provided query name already use. Please remove it or use PUT /{query_name} for update query",
)
try:
@ -166,6 +170,11 @@ async def get_query_handler(request: Request, query_name: str) -> BugoutJournalE
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except ResourceQueryFetchException as e:
logger.error(f"Error in request query by name from brood resources: {e}")
raise MoonstreamHTTPException(status_code=500, internal_error=e)
@ -200,6 +209,11 @@ async def update_query_handler(
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except ResourceQueryFetchException as e:
logger.error(f"Error in request query by name from brood resources: {e}")
raise MoonstreamHTTPException(status_code=500, internal_error=e)
@ -242,6 +256,11 @@ async def update_query_data_handler(
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except ResourceQueryFetchException as e:
logger.error(f"Error in request query by name from brood resources: {e}")
raise MoonstreamHTTPException(status_code=500, internal_error=e)
@ -308,6 +327,11 @@ async def get_access_link_handler(
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except ResourceQueryFetchException as e:
logger.error(f"Error in request query by name from brood resources: {e}")
raise MoonstreamHTTPException(status_code=500, internal_error=e)

Wyświetl plik

@ -5,8 +5,8 @@ from io import StringIO
import csv
import boto3 # type: ignore
from moonstreamdb.db import yield_db_session_ctx
import boto3
from moonstreamdb.db import yield_db_read_only_session_ctx
from ..settings import MOONSTREAM_QUERIES_BUCKET_PREFIX
logging.basicConfig(level=logging.INFO)
@ -38,7 +38,7 @@ def data_generate(
"""
s3 = boto3.client("s3")
with yield_db_session_ctx() as db_session:
with yield_db_read_only_session_ctx() as db_session:
if file_type == "csv":
csv_buffer = StringIO()

Wyświetl plik

@ -91,4 +91,4 @@ def yield_db_read_only_session() -> Session:
session.close()
yield_db_read_only_session_ctx = contextmanager(yield_db_session)
yield_db_read_only_session_ctx = contextmanager(yield_db_read_only_session)

Wyświetl plik

@ -2,4 +2,4 @@
Moonstream database version.
"""
MOONSTREAMDB_VERSION = "0.2.2"
MOONSTREAMDB_VERSION = "0.2.3"