mypy fixes, date issue

This commit is contained in:
dni ⚡ 2023-01-09 09:54:17 +01:00
parent 3d8a8664f2
commit e9f625f008
7 changed files with 34 additions and 82 deletions

View file

@ -1,8 +1,6 @@
from http import HTTPStatus from http import HTTPStatus
from typing import List, Optional, Union from typing import List, Optional, Union
from starlette.exceptions import HTTPException
from lnbits.helpers import urlsafe_short_hash from lnbits.helpers import urlsafe_short_hash
from . import db from . import db

View file

@ -1,18 +1,18 @@
from fastapi.params import Query from fastapi import Query
from pydantic.main import BaseModel from pydantic import BaseModel
class CreateEmailaddress(BaseModel): class CreateEmailaddress(BaseModel):
wallet: str = Query(...) # type: ignore wallet: str = Query(...)
email: str = Query(...) # type: ignore email: str = Query(...)
testemail: str = Query(...) # type: ignore testemail: str = Query(...)
smtp_server: str = Query(...) # type: ignore smtp_server: str = Query(...)
smtp_user: str = Query(...) # type: ignore smtp_user: str = Query(...)
smtp_password: str = Query(...) # type: ignore smtp_password: str = Query(...)
smtp_port: str = Query(...) # type: ignore smtp_port: str = Query(...)
description: str = Query(...) # type: ignore description: str = Query(...)
anonymize: bool anonymize: bool
cost: int = Query(..., ge=0) # type: ignore cost: int = Query(..., ge=0)
class Emailaddresses(BaseModel): class Emailaddresses(BaseModel):
@ -30,10 +30,10 @@ class Emailaddresses(BaseModel):
class CreateEmail(BaseModel): class CreateEmail(BaseModel):
emailaddress_id: str = Query(...) # type: ignore emailaddress_id: str = Query(...)
subject: str = Query(...) # type: ignore subject: str = Query(...)
receiver: str = Query(...) # type: ignore receiver: str = Query(...)
message: str = Query(...) # type: ignore message: str = Query(...)
class Emails(BaseModel): class Emails(BaseModel):

View file

@ -1,9 +1,9 @@
import os
import re import re
import socket import socket
import sys import time
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.utils import formatdate
from http import HTTPStatus from http import HTTPStatus
from smtplib import SMTP_SSL as SMTP from smtplib import SMTP_SSL as SMTP
@ -25,7 +25,12 @@ async def send_mail(emailaddress, email):
valid_email(emailaddress.email) valid_email(emailaddress.email)
valid_email(email.receiver) valid_email(email.receiver)
ts = time.time()
date = formatdate(ts, True)
msg = MIMEMultipart("alternative") msg = MIMEMultipart("alternative")
msg = MIMEMultipart("alternative")
msg["Date"] = date
msg["Subject"] = email.subject msg["Subject"] = email.subject
msg["From"] = emailaddress.email msg["From"] = emailaddress.email
msg["To"] = email.receiver msg["To"] = email.receiver

View file

@ -1,20 +1,11 @@
import asyncio import asyncio
from http import HTTPStatus
import httpx
from loguru import logger from loguru import logger
from starlette.exceptions import HTTPException
from lnbits.core.models import Payment from lnbits.core.models import Payment
from lnbits.tasks import register_invoice_listener from lnbits.tasks import register_invoice_listener
from .crud import ( from .crud import get_email, get_emailaddress, set_email_paid
delete_email,
get_email,
get_emailaddress,
get_emailaddress_by_email,
set_email_paid,
)
from .smtp import send_mail from .smtp import send_mail
@ -27,8 +18,7 @@ async def wait_for_paid_invoices():
async def on_invoice_paid(payment: Payment) -> None: async def on_invoice_paid(payment: Payment) -> None:
if not payment.extra or "smtp" != payment.extra.get("tag"): if payment.extra.get("tag") != "smtp":
# not an lnurlp invoice
return return
email = await get_email(payment.checking_id) email = await get_email(payment.checking_id)

View file

@ -1,9 +1,7 @@
from http import HTTPStatus from http import HTTPStatus
from fastapi import Request from fastapi import Depends, HTTPException, Request
from fastapi.params import Depends
from fastapi.templating import Jinja2Templates from fastapi.templating import Jinja2Templates
from starlette.exceptions import HTTPException
from starlette.responses import HTMLResponse from starlette.responses import HTMLResponse
from lnbits.core.models import User from lnbits.core.models import User
@ -16,9 +14,7 @@ templates = Jinja2Templates(directory="templates")
@smtp_ext.get("/", response_class=HTMLResponse) @smtp_ext.get("/", response_class=HTMLResponse)
async def index( async def index(request: Request, user: User = Depends(check_user_exists)):
request: Request, user: User = Depends(check_user_exists) # type: ignore
):
return smtp_renderer().TemplateResponse( return smtp_renderer().TemplateResponse(
"smtp/index.html", {"request": request, "user": user.dict()} "smtp/index.html", {"request": request, "user": user.dict()}
) )

View file

@ -1,8 +1,6 @@
from http import HTTPStatus from http import HTTPStatus
from fastapi import Query from fastapi import Depends, HTTPException, Query
from fastapi.params import Depends
from starlette.exceptions import HTTPException
from lnbits.core.crud import get_user from lnbits.core.crud import get_user
from lnbits.core.services import check_transaction_status, create_invoice from lnbits.core.services import check_transaction_status, create_invoice
@ -17,18 +15,17 @@ from .crud import (
delete_emailaddress, delete_emailaddress,
get_email, get_email,
get_emailaddress, get_emailaddress,
get_emailaddress_by_email,
get_emailaddresses, get_emailaddresses,
get_emails, get_emails,
update_emailaddress, update_emailaddress,
) )
from .smtp import send_mail, valid_email from .smtp import valid_email
## EMAILS ## EMAILS
@smtp_ext.get("/api/v1/email") @smtp_ext.get("/api/v1/email")
async def api_email( async def api_email(
g: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False) # type: ignore g: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False)
): ):
wallet_ids = [g.wallet.id] wallet_ids = [g.wallet.id]
if all_wallets: if all_wallets:
@ -98,9 +95,7 @@ async def api_smtp_make_email(emailaddress_id, data: CreateEmail):
@smtp_ext.delete("/api/v1/email/{email_id}") @smtp_ext.delete("/api/v1/email/{email_id}")
async def api_email_delete( async def api_email_delete(email_id, g: WalletTypeInfo = Depends(get_key_type)):
email_id, g: WalletTypeInfo = Depends(get_key_type) # type: ignore
):
email = await get_email(email_id) email = await get_email(email_id)
if not email: if not email:
@ -118,8 +113,8 @@ async def api_email_delete(
## EMAILADDRESSES ## EMAILADDRESSES
@smtp_ext.get("/api/v1/emailaddress") @smtp_ext.get("/api/v1/emailaddress")
async def api_emailaddresses( async def api_emailaddresses(
g: WalletTypeInfo = Depends(get_key_type), # type: ignore g: WalletTypeInfo = Depends(get_key_type),
all_wallets: bool = Query(False), # type: ignore all_wallets: bool = Query(False),
): ):
wallet_ids = [g.wallet.id] wallet_ids = [g.wallet.id]
if all_wallets: if all_wallets:
@ -136,7 +131,7 @@ async def api_emailaddresses(
async def api_emailaddress_create( async def api_emailaddress_create(
data: CreateEmailaddress, data: CreateEmailaddress,
emailaddress_id=None, emailaddress_id=None,
g: WalletTypeInfo = Depends(get_key_type), # type: ignore g: WalletTypeInfo = Depends(get_key_type),
): ):
if emailaddress_id: if emailaddress_id:
emailaddress = await get_emailaddress(emailaddress_id) emailaddress = await get_emailaddress(emailaddress_id)
@ -158,7 +153,7 @@ async def api_emailaddress_create(
@smtp_ext.delete("/api/v1/emailaddress/{emailaddress_id}") @smtp_ext.delete("/api/v1/emailaddress/{emailaddress_id}")
async def api_emailaddress_delete( async def api_emailaddress_delete(
emailaddress_id, g: WalletTypeInfo = Depends(get_key_type) # type: ignore emailaddress_id, g: WalletTypeInfo = Depends(get_key_type)
): ):
emailaddress = await get_emailaddress(emailaddress_id) emailaddress = await get_emailaddress(emailaddress_id)

32
package-lock.json generated
View file

@ -1,32 +0,0 @@
{
"name": "lnbits-legend",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"devDependencies": {
"prettier": "2.1.1"
}
},
"node_modules/prettier": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz",
"integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
}
}
},
"dependencies": {
"prettier": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz",
"integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==",
"dev": true
}
}
}