feat: parse nested pydantic models fetchone and fetchall + add shortcuts for insert_query and update_query into Database (#2714)
* feat: add shortcuts for insert_query and update_query into `Database`
example: await db.insert("table_name", base_model)
* remove where from argument
* chore: code clean-up
* extension manager
* lnbits-qrcode components
* parse date from dict
* refactor: make `settings` a fixture
* chore: remove verbose key names
* fix: time column
* fix: cast balance to `int`
* extension toggle vue3
* vue3 @input migration
* fix: payment extra and payment hash
* fix dynamic fields and ext db migration
* remove shadow on cards in dark theme
* screwed up and made more css pushes to this branch
* attempt to make chip component in settings dynamic fields
* dynamic chips
* qrscanner
* clean init admin settings
* make get_user better
* add dbversion model
* remove update_payment_status/extra/details
* traces for value and assertion errors
* refactor services
* add PaymentFiatAmount
* return Payment on api endpoints
* rename to get_user_from_account
* refactor: just refactor (#2740)
* rc5
* Fix db cache (#2741)
* [refactor] split services.py (#2742)
* refactor: spit `core.py` (#2743)
* refactor: make QR more customizable
* fix: print.html
* fix: qrcode options
* fix: white shadow on dark theme
* fix: datetime wasnt parsed in dict_to_model
* add timezone for conversion
* only parse timestamp for sqlite, postgres does it
* log internal payment success
* fix: export wallet to phone QR
* Adding a customisable border theme, like gradient (#2746)
* fixed mobile scan btn
* fix test websocket
* fix get_payments tests
* dict_to_model skip none values
* preimage none instead of defaulting to 0000...
* fixup test real invoice tests
* fixed pheonixd for wss
* fix nodemanager test settings
* fix lnbits funding
* only insert extension when they dont exist
---------
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com>
Co-authored-by: Arc <ben@arc.wales>
Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
This commit is contained in:
co-authored by
Vlad Stan
Tiago Vasconcelos
Arc
Arc
parent
ae4eda04ba
commit
2940cf97c5
@@ -251,6 +251,17 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="text-wrap">
|
||||
<b style="white-space: nowrap" v-text="$t('Invoice')"></b>:
|
||||
<q-icon
|
||||
name="content_copy"
|
||||
@click="copyText(payment.bolt11)"
|
||||
size="1em"
|
||||
color="grey"
|
||||
class="q-mb-xs cursor-pointer"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="text-wrap">
|
||||
<b style="white-space: nowrap" v-text="$t('memo')"></b>:
|
||||
<span v-text="payment.memo"></span>
|
||||
@@ -301,7 +312,7 @@
|
||||
v-if="o.options?.length"
|
||||
:options="o.options"
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
class="q-ml-xl"
|
||||
>
|
||||
</lnbits-dynamic-fields>
|
||||
@@ -310,7 +321,7 @@
|
||||
v-if="o.type === 'number'"
|
||||
type="number"
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
:label="o.label || o.name"
|
||||
:hint="o.description"
|
||||
:rules="applyRules(o.required)"
|
||||
@@ -322,7 +333,7 @@
|
||||
type="textarea"
|
||||
rows="5"
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
:label="o.label || o.name"
|
||||
:hint="o.description"
|
||||
:rules="applyRules(o.required)"
|
||||
@@ -332,7 +343,7 @@
|
||||
<q-input
|
||||
v-else-if="o.type === 'password'"
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
type="password"
|
||||
:label="o.label || o.name"
|
||||
:hint="o.description"
|
||||
@@ -343,7 +354,7 @@
|
||||
<q-select
|
||||
v-else-if="o.type === 'select'"
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
:label="o.label || o.name"
|
||||
:hint="o.description"
|
||||
:options="o.values"
|
||||
@@ -352,7 +363,7 @@
|
||||
<q-select
|
||||
v-else-if="o.isList"
|
||||
v-model.trim="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
input-debounce="0"
|
||||
new-value-mode="add-unique"
|
||||
:label="o.label || o.name"
|
||||
@@ -371,7 +382,7 @@
|
||||
<q-item-section avatar top>
|
||||
<q-checkbox
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
/>
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
@@ -391,10 +402,16 @@
|
||||
style="display: none"
|
||||
:rules="applyRules(o.required)"
|
||||
></q-input>
|
||||
<div v-else-if="o.type === 'chips'">
|
||||
<lnbits-dynamic-chips
|
||||
v-model="formData[o.name]"
|
||||
@update:model-value="handleValueChanged"
|
||||
></lnbits-dynamic-chips>
|
||||
</div>
|
||||
<q-input
|
||||
v-else
|
||||
v-model="formData[o.name]"
|
||||
@input="handleValueChanged"
|
||||
@update:model-value="handleValueChanged"
|
||||
:hint="o.description"
|
||||
:label="o.label || o.name"
|
||||
:rules="applyRules(o.required)"
|
||||
@@ -407,6 +424,32 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="lnbits-dynamic-chips">
|
||||
<q-input
|
||||
filled
|
||||
v-model="chip"
|
||||
@keydown.enter.prevent="addChip"
|
||||
type="text"
|
||||
label="wss://...."
|
||||
hint="Add relays"
|
||||
class="q-mb-md"
|
||||
>
|
||||
<q-btn @click="addChip" dense flat icon="add"></q-btn>
|
||||
</q-input>
|
||||
<div>
|
||||
<q-chip
|
||||
v-for="(chip, i) in chips"
|
||||
:key="chip"
|
||||
removable
|
||||
@remove="removeChip(i)"
|
||||
color="primary"
|
||||
text-color="white"
|
||||
:label="chip"
|
||||
>
|
||||
</q-chip>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="lnbits-notifications-btn">
|
||||
<q-btn
|
||||
v-if="g.user.wallets"
|
||||
@@ -457,8 +500,20 @@
|
||||
|
||||
<template id="lnbits-qrcode">
|
||||
<div class="qrcode__wrapper">
|
||||
<qrcode-vue :value="value" size="350" class="rounded-borders"></qrcode-vue>
|
||||
<img class="qrcode__image" :src="logo" alt="..." />
|
||||
<qrcode-vue
|
||||
:value="value"
|
||||
level="Q"
|
||||
render-as="svg"
|
||||
:margin="custom.margin"
|
||||
:size="custom.width"
|
||||
class="rounded-borders"
|
||||
></qrcode-vue>
|
||||
<img
|
||||
v-if="custom.logo"
|
||||
class="qrcode__image"
|
||||
:src="custom.logo"
|
||||
alt="qrcode icon"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -585,12 +640,12 @@
|
||||
:rows="paymentsOmitter"
|
||||
:row-key="paymentTableRowKey"
|
||||
:columns="paymentsTable.columns"
|
||||
:pagination.sync="paymentsTable.pagination"
|
||||
:no-data-label="$t('no_transactions')"
|
||||
:filter="paymentsTable.search"
|
||||
:loading="paymentsTable.loading"
|
||||
:hide-header="mobileSimple"
|
||||
:hide-bottom="mobileSimple"
|
||||
v-model:pagination="paymentsTable.pagination"
|
||||
@request="fetchPayments"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
@@ -699,13 +754,9 @@
|
||||
></lnbits-payment-details>
|
||||
<div v-if="props.row.bolt11" class="text-center q-mb-lg">
|
||||
<a :href="'lightning:' + props.row.bolt11">
|
||||
<q-responsive :ratio="1" class="q-mx-xl">
|
||||
<lnbits-qrcode
|
||||
:value="
|
||||
'lightning:' + props.row.bolt11.toUpperCase()
|
||||
"
|
||||
></lnbits-qrcode>
|
||||
</q-responsive>
|
||||
<lnbits-qrcode
|
||||
:value="'lightning:' + props.row.bolt11.toUpperCase()"
|
||||
></lnbits-qrcode>
|
||||
</a>
|
||||
</div>
|
||||
<div class="row q-mt-lg">
|
||||
@@ -797,7 +848,7 @@
|
||||
</q-form>
|
||||
</template>
|
||||
|
||||
<template id="lnbits-extension-btn-dialog">
|
||||
<template id="lnbits-extension-settings-btn-dialog">
|
||||
<q-btn
|
||||
v-if="options"
|
||||
unelevated
|
||||
|
||||
Reference in New Issue
Block a user