Revert "proposal to allow decimal valued items in fiat"

This reverts commit e58a6923fc.
This commit is contained in:
Tiago vasconcelos
2021-10-25 18:25:57 +01:00
parent ee30950b97
commit 0125c07c6b
5 changed files with 22 additions and 33 deletions

View File

@@ -1,19 +1,20 @@
import hashlib
from lnbits.extensions.offlineshop.models import Item
from fastapi.params import Query
from lnurl import ( # type: ignore
LnurlErrorResponse,
LnurlPayActionResponse,
LnurlPayResponse,
)
from starlette.requests import Request
from lnbits.helpers import url_for
from lnurl import (
LnurlPayResponse,
LnurlPayActionResponse,
LnurlErrorResponse,
) # type: ignore
from lnbits.core.services import create_invoice
from lnbits.extensions.offlineshop.models import Item
from lnbits.utils.exchange_rates import fiat_amount_as_satoshis
from . import offlineshop_ext
from .crud import get_item, get_shop
from .crud import get_shop, get_item
@offlineshop_ext.get("/lnurl/{item_id}", name="offlineshop.lnurl_response")
@@ -26,7 +27,7 @@ async def lnurl_response(req: Request, item_id: int = Query(...)):
return {"status": "ERROR", "reason": "Item disabled."}
price_msat = (
await fiat_amount_as_satoshis(item.price / 1000, item.unit)
await fiat_amount_as_satoshis(item.price, item.unit)
if item.unit != "sat"
else item.price
) * 1000
@@ -46,12 +47,12 @@ async def lnurl_callback(request: Request, item_id: int):
item = await get_item(item_id) # type: Item
if not item:
return {"status": "ERROR", "reason": "Couldn't find item."}
if item.unit == "sat":
min = item.price * 1000
max = item.price * 1000
else:
price = await fiat_amount_as_satoshis(item.price / 1000, item.unit)
price = await fiat_amount_as_satoshis(item.price, item.unit)
# allow some fluctuation (the fiat price may have changed between the calls)
min = price * 995
max = price * 1010
@@ -67,6 +68,7 @@ async def lnurl_callback(request: Request, item_id: int):
).dict()
shop = await get_shop(item.shop)
try:
payment_hash, payment_request = await create_invoice(
wallet_id=shop.wallet,

View File

@@ -27,6 +27,3 @@ async def m001_initial(db):
);
"""
)
async def m002_store_fiat_in_cents(db):
await db.execute("UPDATE offlineshop.items SET price = (price * 1000) WHERE unit NOT LIKE 'sat'")

View File

@@ -31,7 +31,7 @@ new Vue({
computed: {
printItems() {
return this.offlineshop.items.filter(({enabled}) => enabled)
},
}
},
methods: {
openNewDialog() {
@@ -119,9 +119,6 @@ new Vue({
},
async sendItem() {
let {id, name, image, description, price, unit} = this.itemDialog.data
//convert fiat price to milli (int)
price = unit == 'sat' ? price : price * 1000
const data = {
name,
description,

View File

@@ -3,17 +3,17 @@ from datetime import datetime
from http import HTTPStatus
from typing import List
from fastapi import HTTPException, Request
from fastapi.params import Depends, Query
from starlette.responses import HTMLResponse
from lnbits.core.crud import get_standalone_payment
from lnbits.core.models import Payment, User
from lnbits.decorators import check_user_exists
from lnbits.core.models import Payment, User
from lnbits.core.crud import get_standalone_payment
from . import offlineshop_ext, offlineshop_renderer
from .crud import get_item, get_shop
from .models import Item
from .crud import get_item, get_shop
from fastapi import Request, HTTPException
@offlineshop_ext.get("/", response_class=HTMLResponse)
@@ -29,8 +29,6 @@ async def print_qr_codes(request: Request, items: List[int] = None):
for item_id in request.query_params.get("items").split(","):
item = await get_item(item_id) # type: Item
if item:
if item.unit != 'sat':
item.price = (item.price / 1000)
items.append(
{
"lnurl": item.lnurl(request),

View File

@@ -27,7 +27,7 @@ from .models import ShopCounter
@offlineshop_ext.get("/api/v1/currencies")
async def api_list_currencies_available():
return list(currencies.keys())
return json.dumps(list(currencies.keys()))
@offlineshop_ext.get("/api/v1/offlineshop")
@@ -37,12 +37,7 @@ async def api_shop_from_wallet(
):
shop = await get_or_create_shop_by_wallet(wallet.wallet.id)
items = await get_items(shop.id)
#revert millicents to unit
for item in items:
if item.unit != 'sat':
item.price = item.price / 1000
try:
return {
**shop.dict(),
@@ -65,11 +60,11 @@ class CreateItemsData(BaseModel):
@offlineshop_ext.post("/api/v1/offlineshop/items")
@offlineshop_ext.put("/api/v1/offlineshop/items/{item_id}")
# @api_check_wallet_key("invoice")
async def api_add_or_update_item(
data: CreateItemsData, item_id=None, wallet: WalletTypeInfo = Depends(get_key_type)
):
shop = await get_or_create_shop_by_wallet(wallet.wallet.id)
shop = await get_or_create_shop_by_wallet(wallet.wallet.id)
if item_id == None:
await add_item(
shop.id, data.name, data.description, data.image, data.price, data.unit