diff --git a/lnbits/extensions/lnticket/crud.py b/lnbits/extensions/lnticket/crud.py index 3cc1a8106..b940e090a 100644 --- a/lnbits/extensions/lnticket/crud.py +++ b/lnbits/extensions/lnticket/crud.py @@ -46,7 +46,7 @@ async def set_ticket_paid(payment_hash: str) -> Tickets: amount = formdata.amountmade + row[7] await db.execute( """ - UPDATE forms + UPDATE form SET amountmade = ? WHERE id = ? """, @@ -80,14 +80,14 @@ async def delete_ticket(ticket_id: str) -> None: # FORMS -async def create_form(*, wallet: str, name: str, description: str, costpword: int) -> Forms: +async def create_form(*, wallet: str, name: str, webhook: Optional[str] = None, description: str, costpword: int) -> Forms: form_id = urlsafe_short_hash() await db.execute( """ - INSERT INTO forms (id, wallet, name, description, costpword, amountmade) - VALUES (?, ?, ?, ?, ?, ?) + INSERT INTO form (id, wallet, name, webhook, description, costpword, amountmade) + VALUES (?, ?, ?, ?, ?, ?, ?) """, - (form_id, wallet, name, description, costpword, 0), + (form_id, wallet, name, webhook, description, costpword, 0), ) form = await get_form(form_id) @@ -97,14 +97,14 @@ async def create_form(*, wallet: str, name: str, description: str, costpword: in async def update_form(form_id: str, **kwargs) -> Forms: q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) - await db.execute(f"UPDATE forms SET {q} WHERE id = ?", (*kwargs.values(), form_id)) - row = await db.fetchone("SELECT * FROM forms WHERE id = ?", (form_id,)) + await db.execute(f"UPDATE form SET {q} WHERE id = ?", (*kwargs.values(), form_id)) + row = await db.fetchone("SELECT * FROM form WHERE id = ?", (form_id,)) assert row, "Newly updated form couldn't be retrieved" return Forms(**row) async def get_form(form_id: str) -> Optional[Forms]: - row = await db.fetchone("SELECT * FROM forms WHERE id = ?", (form_id,)) + row = await db.fetchone("SELECT * FROM form WHERE id = ?", (form_id,)) return Forms(**row) if row else None @@ -113,10 +113,10 @@ async def get_forms(wallet_ids: Union[str, List[str]]) -> List[Forms]: wallet_ids = [wallet_ids] q = ",".join(["?"] * len(wallet_ids)) - rows = await db.fetchall(f"SELECT * FROM forms WHERE wallet IN ({q})", (*wallet_ids,)) + rows = await db.fetchall(f"SELECT * FROM form WHERE wallet IN ({q})", (*wallet_ids,)) return [Forms(**row) for row in rows] async def delete_form(form_id: str) -> None: - await db.execute("DELETE FROM forms WHERE id = ?", (form_id,)) + await db.execute("DELETE FROM form WHERE id = ?", (form_id,)) diff --git a/lnbits/extensions/lnticket/migrations.py b/lnbits/extensions/lnticket/migrations.py index 8ff93b09d..f2edb7b11 100644 --- a/lnbits/extensions/lnticket/migrations.py +++ b/lnbits/extensions/lnticket/migrations.py @@ -83,3 +83,56 @@ async def m002_changed(db): ), ) await db.execute("DROP TABLE tickets") + + +async def m003_changed(db): + + await db.execute( + """ + CREATE TABLE IF NOT EXISTS form ( + id TEXT PRIMARY KEY, + wallet TEXT NOT NULL, + name TEXT NOT NULL, + webhook TEXT, + description TEXT NOT NULL, + costpword INTEGER NOT NULL, + amountmade INTEGER NOT NULL, + time TIMESTAMP NOT NULL DEFAULT (strftime('%s', 'now')) + ); + """ + ) + + + for row in [list(row) for row in await db.fetchall("SELECT * FROM forms")]: + usescsv = "" + + for i in range(row[5]): + if row[7]: + usescsv += "," + str(i + 1) + else: + usescsv += "," + str(1) + usescsv = usescsv[1:] + await db.execute( + """ + INSERT INTO form ( + id, + wallet, + name, + webhook, + description, + costpword, + amountmade + ) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, + ( + row[0], + row[1], + row[2], + row[3], + row[4], + row[5], + row[6], + ), + ) + await db.execute("DROP TABLE forms") diff --git a/lnbits/extensions/lnticket/models.py b/lnbits/extensions/lnticket/models.py index b0e436ae1..362bc2238 100644 --- a/lnbits/extensions/lnticket/models.py +++ b/lnbits/extensions/lnticket/models.py @@ -5,6 +5,7 @@ class Forms(NamedTuple): id: str wallet: str name: str + webhook: str description: str costpword: int amountmade: int diff --git a/lnbits/extensions/lnticket/templates/lnticket/display.html b/lnbits/extensions/lnticket/templates/lnticket/display.html index 59553ab3b..100e105be 100644 --- a/lnbits/extensions/lnticket/templates/lnticket/display.html +++ b/lnbits/extensions/lnticket/templates/lnticket/display.html @@ -113,6 +113,7 @@ if (sats === parseInt('{{ form_costpword }}')) { return '0 Sats to pay' } else { + this.formDialog.data.sats = sats return sats + ' Sats to pay' } } @@ -140,7 +141,8 @@ form: '{{ form_id }}', name: self.formDialog.data.name, email: self.formDialog.data.email, - ltext: self.formDialog.data.text + ltext: self.formDialog.data.text, + sats: self.formDialog.data.sats, }) .then(function (response) { self.paymentReq = response.data.payment_request @@ -162,12 +164,6 @@ .get('/lnticket/api/v1/tickets/' + self.paymentCheck) .then(function (res) { if (res.data.paid) { - clearInterval(paymentChecker) - dismissMsg() - self.formDialog.data.name = '' - self.formDialog.data.email = '' - self.formDialog.data.text = '' - self.$q.notify({ type: 'positive', message: 'Sent, thank you!', @@ -178,12 +174,19 @@ status: 'complete', paymentReq: null } + clearInterval(paymentChecker) + dismissMsg() + self.formDialog.data.name = '' + self.formDialog.data.email = '' + self.formDialog.data.text = '' } }) .catch(function (error) { LNbits.utils.notifyApiError(error) }) }, 2000) + + }) .catch(function (error) { LNbits.utils.notifyApiError(error) diff --git a/lnbits/extensions/lnticket/templates/lnticket/index.html b/lnbits/extensions/lnticket/templates/lnticket/index.html index 9ec3a5f49..ec6a15ac9 100644 --- a/lnbits/extensions/lnticket/templates/lnticket/index.html +++ b/lnbits/extensions/lnticket/templates/lnticket/index.html @@ -114,7 +114,7 @@