lots of typing fixes
This commit is contained in:
parent
51f580a304
commit
3665c34961
43 changed files with 260 additions and 178 deletions
|
@ -3,6 +3,7 @@ import csv
|
|||
import datetime
|
||||
import logging
|
||||
import sys
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from app import app
|
||||
from app.extensions import db
|
||||
|
@ -11,6 +12,11 @@ from app.models.bridges import Bridge, BridgeConf
|
|||
from app.models.mirrors import Mirror, Origin, Proxy
|
||||
from app.models.alarms import Alarm, AlarmState
|
||||
|
||||
if TYPE_CHECKING:
|
||||
_SubparserType = argparse._SubParsersAction[argparse.ArgumentParser]
|
||||
else:
|
||||
_SubparserType = Any
|
||||
|
||||
models = {
|
||||
"bridge": Bridge,
|
||||
"bridgeconf": BridgeConf,
|
||||
|
@ -23,14 +29,14 @@ models = {
|
|||
}
|
||||
|
||||
|
||||
def export(model: db.Model):
|
||||
def export(model: db.Model) -> None:
|
||||
out = csv.writer(sys.stdout)
|
||||
out.writerow(model.csv_header())
|
||||
for r in model.query.all():
|
||||
out.writerow(r.csv_row())
|
||||
|
||||
|
||||
def impot(model: db.Model):
|
||||
def impot(model: db.Model) -> None:
|
||||
first = True
|
||||
header = model.csv_header()
|
||||
try:
|
||||
|
@ -46,15 +52,15 @@ def impot(model: db.Model):
|
|||
if header[i] in ["added", "updated", "destroyed", "deprecated", "last_updated", "terraform_updated"]:
|
||||
# datetime fields
|
||||
if line[i] == "":
|
||||
line[i] = None
|
||||
line[i] = None # type: ignore
|
||||
else:
|
||||
line[i] = datetime.datetime.strptime(line[i], "%Y-%m-%d %H:%M:%S.%f")
|
||||
line[i] = datetime.datetime.strptime(line[i], "%Y-%m-%d %H:%M:%S.%f") # type: ignore
|
||||
elif header[i] in ["eotk"]:
|
||||
# boolean fields
|
||||
line[i] = line[i] == "True"
|
||||
line[i] = line[i] == "True" # type: ignore
|
||||
elif header[i].endswith("_id") and line[i] == "":
|
||||
# integer foreign keys
|
||||
line[i] = None
|
||||
line[i] = None # type: ignore
|
||||
elif header[i] in ["alarm_state"]:
|
||||
# alarm states
|
||||
line[i] = getattr(AlarmState, line[i][len("AlarmState."):])
|
||||
|
@ -69,7 +75,7 @@ def impot(model: db.Model):
|
|||
|
||||
class DbCliHandler:
|
||||
@classmethod
|
||||
def add_subparser_to(cls, subparsers: argparse._SubParsersAction) -> None:
|
||||
def add_subparser_to(cls, subparsers: _SubparserType) -> None:
|
||||
parser = subparsers.add_parser("db", help="database operations")
|
||||
parser.add_argument("--export", choices=sorted(models.keys()),
|
||||
help="export data to CSV format")
|
||||
|
@ -77,10 +83,10 @@ class DbCliHandler:
|
|||
help="import data from CSV format", dest="impot")
|
||||
parser.set_defaults(cls=cls)
|
||||
|
||||
def __init__(self, args):
|
||||
def __init__(self, args: argparse.Namespace) -> None:
|
||||
self.args = args
|
||||
|
||||
def run(self):
|
||||
def run(self) -> None:
|
||||
with app.app_context():
|
||||
if self.args.export:
|
||||
export(models[self.args.export])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue