chore: temp commit (does not work); don't want to lose changes

This commit is contained in:
Vlad Stan 2022-12-09 09:46:30 +02:00
parent d15782521d
commit 0d4954c01a
4 changed files with 59 additions and 138 deletions

View file

@ -8,18 +8,16 @@ from loguru import logger
from lnbits import bolt11
from lnbits.db import COCKROACH, POSTGRES, Connection
from lnbits.settings import readonly_variables, settings
from lnbits.settings import (
AdminSettings,
EditableSetings,
SuperSettings,
readonly_variables,
settings,
)
from . import db
from .models import (
AdminSettings,
BalanceCheck,
Payment,
SuperSettings,
UpdateSettings,
User,
Wallet,
)
from .models import BalanceCheck, Payment, User, Wallet
# accounts
# --------
@ -603,7 +601,7 @@ async def delete_admin_settings():
await db.execute("DELETE FROM settings")
async def update_admin_settings(data: UpdateSettings):
async def update_admin_settings(data: EditableSetings):
q, values = get_q_and_values(data)
await db.execute(f"UPDATE settings SET {q}", (values,)) # type: ignore

View file

@ -199,91 +199,3 @@ class BalanceCheck(BaseModel):
@classmethod
def from_row(cls, row: Row):
return cls(wallet=row["wallet"], service=row["service"], url=row["url"])
# admin
# --------
class UpdateSettings(BaseModel, extra=Extra.forbid):
@validator(
"lnbits_admin_users",
"lnbits_allowed_users",
"lnbits_theme_options",
"lnbits_disabled_extensions",
"lnbits_admin_extensions",
pre=True,
)
def validate(cls, val):
if type(val) == str:
val = val.split(",") if val else []
return val
lnbits_backend_wallet_class: str = Query(None)
lnbits_admin_users: List[str] = Query(None)
lnbits_allowed_users: List[str] = Query(None)
lnbits_admin_extensions: List[str] = Query(None)
lnbits_disabled_extensions: List[str] = Query(None)
lnbits_theme_options: List[str] = Query(None)
lnbits_force_https: bool = Query(None)
lnbits_reserve_fee_min: int = Query(None, ge=0)
lnbits_reserve_fee_percent: float = Query(None, ge=0)
lnbits_service_fee: float = Query(None, ge=0)
lnbits_hide_api: bool = Query(None)
lnbits_site_title: str = Query(None)
lnbits_site_tagline: str = Query(None)
lnbits_site_description: str = Query(None)
lnbits_default_wallet_name: str = Query(None)
lnbits_denomination: str = Query(None)
lnbits_custom_logo: str = Query(None)
lnbits_ad_space: str = Query(None)
lnbits_ad_space_title: str = Query(None)
lnbits_ad_space_enabled: bool = Query(None)
# funding sources
fake_wallet_secret: str = Query(None)
lnbits_endpoint: str = Query(None)
lnbits_key: str = Query(None)
cliche_endpoint: str = Query(None)
corelightning_rpc: str = Query(None)
eclair_url: str = Query(None)
eclair_pass: str = Query(None)
lnd_rest_endpoint: str = Query(None)
lnd_rest_cert: str = Query(None)
lnd_rest_macaroon: str = Query(None)
lnd_rest_macaroon_encrypted: str = Query(None)
lnd_cert: str = Query(None)
lnd_admin_macaroon: str = Query(None)
lnd_invoice_macaroon: str = Query(None)
lnd_grpc_endpoint: str = Query(None)
lnd_grpc_cert: str = Query(None)
lnd_grpc_port: int = Query(None, ge=0)
lnd_grpc_admin_macaroon: str = Query(None)
lnd_grpc_invoice_macaroon: str = Query(None)
lnd_grpc_macaroon: str = Query(None)
lnd_grpc_macaroon_encrypted: str = Query(None)
lnpay_api_endpoint: str = Query(None)
lnpay_api_key: str = Query(None)
lnpay_wallet_key: str = Query(None)
lntxbot_api_endpoint: str = Query(None)
lntxbot_key: str = Query(None)
opennode_api_endpoint: str = Query(None)
opennode_key: str = Query(None)
spark_url: str = Query(None)
spark_token: str = Query(None)
lntips_api_endpoint: str = Query(None)
lntips_api_key: str = Query(None)
lntips_admin_key: str = Query(None)
lntips_invoice_key: str = Query(None)
boltz_mempool_space_url: str = Query(None)
boltz_mempool_space_url_ws: str = Query(None)
boltz_network: str = Query(None)
boltz_url: str = Query(None)
class SuperSettings(UpdateSettings):
super_user: str
class AdminSettings(UpdateSettings):
super_user: bool
lnbits_allowed_funding_sources: Optional[List[str]]

View file

@ -6,10 +6,11 @@ from fastapi.params import Depends
from starlette.exceptions import HTTPException
from lnbits.core.crud import get_wallet
from lnbits.core.models import AdminSettings, UpdateSettings, User
from lnbits.core.models import User
from lnbits.core.services import update_wallet_balance
from lnbits.decorators import check_admin
from lnbits.server import server_restart
from lnbits.settings import AdminSettings, EditableSetings
from .. import core_app
from ..crud import delete_admin_settings, get_admin_settings, update_admin_settings
@ -58,7 +59,7 @@ async def api_topup_balance(
status_code=HTTPStatus.OK,
dependencies=[Depends(check_admin)],
)
async def api_update_settings(data: UpdateSettings):
async def api_update_settings(data: EditableSetings):
await update_admin_settings(data)
return {"status": "Success"}

View file

@ -9,8 +9,6 @@ import httpx
from loguru import logger
from pydantic import BaseSettings, Field, validator
# from .core.crud import create_admin_settings, get_super_settings
def list_parse_fallback(v):
try:
@ -40,24 +38,7 @@ readonly_variables = [
]
class Settings(BaseSettings):
lnbits_admin_ui: bool = Field(default=False)
# .env
debug: bool = Field(default=False)
host: str = Field(default="127.0.0.1")
port: int = Field(default=5000)
forwarded_allow_ips: str = Field(default="*")
lnbits_path: str = Field(default=".")
lnbits_commit: str = Field(default="unknown")
super_user: str = Field(default="")
# saas
lnbits_saas_callback: Optional[str] = Field(default=None)
lnbits_saas_secret: Optional[str] = Field(default=None)
lnbits_saas_instance_id: Optional[str] = Field(default=None)
class EditableSetings(BaseSettings):
# users
lnbits_admin_users: List[str] = Field(default=[])
lnbits_allowed_users: List[str] = Field(default=[])
@ -80,8 +61,6 @@ class Settings(BaseSettings):
lnbits_ad_space_enabled: bool = Field(default=False)
# ops
lnbits_data_folder: str = Field(default="./data")
lnbits_database_url: str = Field(default=None)
lnbits_force_https: bool = Field(default=False)
lnbits_reserve_fee_min: int = Field(default=2000)
lnbits_reserve_fee_percent: float = Field(default=1.0)
@ -91,20 +70,6 @@ class Settings(BaseSettings):
# funding sources
lnbits_backend_wallet_class: str = Field(default="VoidWallet")
lnbits_allowed_funding_sources: List[str] = Field(
default=[
"VoidWallet",
"FakeWallet",
"CLightningWallet",
"LndRestWallet",
"LndWallet",
"LntxbotWallet",
"LNPayWallet",
"LNbitsWallet",
"OpenNodeWallet",
"LnTipsWallet",
]
)
fake_wallet_secret: str = Field(default="ToTheMoon1")
lnbits_endpoint: str = Field(default="https://legend.lnbits.com")
lnbits_key: Optional[str] = Field(default=None)
@ -146,13 +111,36 @@ class Settings(BaseSettings):
boltz_mempool_space_url: str = Field(default="https://mempool.space")
boltz_mempool_space_url_ws: str = Field(default="wss://mempool.space")
class ReadOnlySettings(BaseSettings):
lnbits_admin_ui: bool = Field(default=False)
# .env
debug: bool = Field(default=False)
host: str = Field(default="127.0.0.1")
port: int = Field(default=5000)
forwarded_allow_ips: str = Field(default="*")
lnbits_path: str = Field(default=".")
lnbits_commit: str = Field(default="unknown")
# saas
lnbits_saas_callback: Optional[str] = Field(default=None)
lnbits_saas_secret: Optional[str] = Field(default=None)
lnbits_saas_instance_id: Optional[str] = Field(default=None)
# ops
lnbits_data_folder: str = Field(default="./data")
lnbits_database_url: str = Field(default=None)
class Settings(EditableSetings, ReadOnlySettings):
@validator(
"lnbits_admin_users",
"lnbits_allowed_users",
"lnbits_theme_options",
"lnbits_admin_extensions",
"lnbits_disabled_extensions",
"lnbits_allowed_funding_sources",
"lnbits_allowed_funding_sources", # ????
pre=True,
)
def validate(cls, val):
@ -172,6 +160,28 @@ class Settings(BaseSettings):
json_loads = list_parse_fallback
class SuperSettings(EditableSetings):
super_user: str
class AdminSettings(EditableSetings):
super_user: bool
lnbits_allowed_funding_sources: List[str] = Field(
default=[
"VoidWallet",
"FakeWallet",
"CLightningWallet",
"LndRestWallet",
"LndWallet",
"LntxbotWallet",
"LNPayWallet",
"LNbitsWallet",
"OpenNodeWallet",
"LnTipsWallet",
]
)
settings = Settings()
settings.lnbits_path = str(path.dirname(path.realpath(__file__)))