lots of typing fixes

This commit is contained in:
Iain Learmonth 2022-05-16 11:44:03 +01:00
parent 51f580a304
commit 3665c34961
43 changed files with 260 additions and 178 deletions

View file

@ -4,7 +4,7 @@ from typing import Union, List, Optional, Any
from app.extensions import db
class AbstractConfiguration(db.Model):
class AbstractConfiguration(db.Model): # type: ignore
__abstract__ = True
id = db.Column(db.Integer, primary_key=True)
@ -13,23 +13,23 @@ class AbstractConfiguration(db.Model):
updated = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False)
destroyed = db.Column(db.DateTime(), nullable=True)
def destroy(self):
def destroy(self) -> None:
self.destroyed = datetime.utcnow()
self.updated = datetime.utcnow()
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return [
"id", "description", "added", "updated", "destroyed"
]
def csv_row(self):
def csv_row(self) -> List[Any]:
return [
getattr(self, x) for x in self.csv_header()
]
class AbstractResource(db.Model):
class AbstractResource(db.Model): # type: ignore
__abstract__ = True
id = db.Column(db.Integer, primary_key=True)

View file

@ -7,7 +7,7 @@ from app.models import AbstractConfiguration
from app.extensions import db
class Activity(db.Model):
class Activity(db.Model): # type: ignore
id = db.Column(db.Integer(), primary_key=True)
group_id = db.Column(db.Integer(), nullable=True)
activity_type = db.Column(db.String(20), nullable=False)
@ -49,7 +49,7 @@ class Webhook(AbstractConfiguration):
format = db.Column(db.String(20))
url = db.Column(db.String(255))
def send(self, text: str):
def send(self, text: str) -> None:
if self.format == "telegram":
data = {"text": text}
else:

View file

@ -1,5 +1,6 @@
import enum
from datetime import datetime
from typing import List, Any
from app import db
@ -11,7 +12,7 @@ class AlarmState(enum.Enum):
CRITICAL = 3
class Alarm(db.Model):
class Alarm(db.Model): # type: ignore
id = db.Column(db.Integer, primary_key=True)
target = db.Column(db.String(60), nullable=False)
group_id = db.Column(db.Integer, db.ForeignKey("group.id"))
@ -30,18 +31,18 @@ class Alarm(db.Model):
bridge = db.relationship("Bridge", back_populates="alarms")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return [
"id", "target", "group_id", "origin_id", "proxy_id", "bridge_id", "alarm_type",
"alarm_state", "state_changed", "last_updated", "text"
]
def csv_row(self):
def csv_row(self) -> List[Any]:
return [
getattr(self, x) for x in self.csv_header()
]
def update_state(self, state: AlarmState, text: str):
def update_state(self, state: AlarmState, text: str) -> None:
if self.alarm_state != state or self.state_changed is None:
self.state_changed = datetime.utcnow()
self.alarm_state = state

View file

@ -21,7 +21,7 @@ class Automation(AbstractConfiguration):
logs = db.relationship("AutomationLogs", back_populates="automation")
def kick(self):
def kick(self) -> None:
self.enabled = True
self.next_run = datetime.datetime.utcnow()
self.updated = datetime.datetime.utcnow()

View file

@ -1,4 +1,5 @@
from datetime import datetime
from typing import List
from app import db
from app.models import AbstractConfiguration
@ -15,7 +16,7 @@ class Group(AbstractConfiguration):
alarms = db.relationship("Alarm", back_populates="group")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"group_name", "eotk"
]
@ -43,21 +44,21 @@ class MirrorList(AbstractConfiguration):
"bridgelines": "Tor Bridge Lines"
}
def destroy(self):
def destroy(self) -> None:
self.destroyed = datetime.utcnow()
self.updated = datetime.utcnow()
db.session.commit()
def url(self):
def url(self) -> str:
if self.provider == "gitlab":
return f"https://gitlab.com/{self.container}/-/raw/{self.branch}/{self.filename}"
if self.provider == "github":
return f"https://raw.githubusercontent.com/{self.container}/{self.branch}/{self.filename}"
if self.provider == "s3":
return f"s3://{self.container}/{self.filename}"
return "Unknown provider"
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"provider", "format", "container", "branch", "filename"
]

View file

@ -1,4 +1,5 @@
from datetime import datetime
from typing import List
from app import db
from app.models import AbstractConfiguration, AbstractResource
@ -14,7 +15,7 @@ class BridgeConf(AbstractConfiguration):
group = db.relationship("Group", back_populates="bridgeconfs")
bridges = db.relationship("Bridge", back_populates="conf")
def destroy(self):
def destroy(self) -> None:
self.destroyed = datetime.utcnow()
self.updated = datetime.utcnow()
for bridge in self.bridges:
@ -23,7 +24,7 @@ class BridgeConf(AbstractConfiguration):
bridge.updated = datetime.utcnow()
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"group_id", "provider", "method", "description", "number"
]
@ -41,7 +42,7 @@ class Bridge(AbstractResource):
alarms = db.relationship("Alarm", back_populates="bridge")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"conf_id", "terraform_updated", "nickname", "fingerprint", "hashed_fingerprint", "bridgeline"
]

View file

@ -1,4 +1,4 @@
from typing import Optional
from typing import Optional, List
from tldextract import extract
@ -18,12 +18,12 @@ class Origin(AbstractConfiguration):
alarms = db.relationship("Alarm", back_populates="origin")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"group_id", "domain_name"
]
def destroy(self):
def destroy(self) -> None:
super().destroy()
for proxy in self.proxies:
proxy.destroy()
@ -33,7 +33,8 @@ class Origin(AbstractConfiguration):
onion = Onion.query.filter(Onion.domain_name == tld).first()
if not onion:
return None
return self.domain_name.replace(tld, f"{onion.onion_name}")
domain_name: str = self.domain_name
return domain_name.replace(tld, f"{onion.onion_name}")
class Proxy(AbstractResource):
@ -48,7 +49,7 @@ class Proxy(AbstractResource):
alarms = db.relationship("Alarm", back_populates="proxy")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"origin_id", "provider", "psg", "slug", "terraform_updated", "url"
]
@ -61,7 +62,7 @@ class Mirror(AbstractResource):
origin = db.relationship("Origin", back_populates="mirrors")
@classmethod
def csv_header(cls):
def csv_header(cls) -> List[str]:
return super().csv_header() + [
"origin_id", "url"
]