Skip to content

Commit 184be06

Browse files
rmolemkll
authored andcommitted
Fix type hints in models, qa_loader
1 parent 6b39892 commit 184be06

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

securedrop/models.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -407,17 +407,20 @@ class Journalist(db.Model):
407407
last_name = Column(String(255), nullable=True)
408408
pw_salt = Column(LargeBinary(32), nullable=True) # type: Column[Optional[bytes]]
409409
pw_hash = Column(LargeBinary(256), nullable=True) # type: Column[Optional[bytes]]
410-
is_admin = Column(Boolean)
410+
is_admin = Column(Boolean) # type: Column[Optional[bool]]
411411
session_nonce = Column(Integer, nullable=False, default=0)
412412

413413
otp_secret = Column(String(16), default=pyotp.random_base32)
414-
is_totp = Column(Boolean, default=True)
415-
hotp_counter = Column(Integer, default=0)
414+
is_totp = Column(Boolean, default=True) # type: Column[Optional[bool]]
415+
hotp_counter = Column(Integer, default=0) # type: Column[Optional[int]]
416416
last_token = Column(String(6))
417417

418-
created_on = Column(DateTime, default=datetime.datetime.utcnow)
419-
last_access = Column(DateTime)
420-
passphrase_hash = Column(String(256))
418+
created_on = Column(
419+
DateTime,
420+
default=datetime.datetime.utcnow
421+
) # type: Column[Optional[datetime.datetime]]
422+
last_access = Column(DateTime) # type: Column[Optional[datetime.datetime]]
423+
passphrase_hash = Column(String(256)) # type: Column[Optional[str]]
421424
login_attempts = relationship(
422425
"JournalistLoginAttempt",
423426
backref="journalist"
@@ -634,6 +637,8 @@ def verify_token(self, token: 'Optional[str]') -> bool:
634637
# window is 1:30s.
635638
return self.totp.verify(token, valid_window=1)
636639
else:
640+
if not self.hotp_counter:
641+
self.hotp_counter = 0
637642
for counter_val in range(
638643
self.hotp_counter,
639644
self.hotp_counter + 20):
@@ -739,9 +744,9 @@ def to_json(self, all_info: bool = True) -> Dict[str, Any]:
739744

740745
if all_info is True:
741746
json_user['is_admin'] = self.is_admin
742-
try:
747+
if self.last_access:
743748
json_user['last_login'] = self.last_access.isoformat() + 'Z'
744-
except AttributeError:
749+
else:
745750
json_user['last_login'] = None
746751

747752
return json_user
@@ -796,7 +801,10 @@ class JournalistLoginAttempt(db.Model):
796801
passwords or two-factor tokens."""
797802
__tablename__ = "journalist_login_attempt"
798803
id = Column(Integer, primary_key=True)
799-
timestamp = Column(DateTime, default=datetime.datetime.utcnow)
804+
timestamp = Column(
805+
DateTime,
806+
default=datetime.datetime.utcnow
807+
) # type: Column[Optional[datetime.datetime]]
800808
journalist_id = Column(Integer, ForeignKey('journalists.id'))
801809

802810
def __init__(self, journalist: Journalist) -> None:

securedrop/qa_loader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ def __init__(
107107
self.source_star_fraction = source_star_fraction
108108
self.source_reply_fraction = source_reply_fraction
109109

110-
self.journalists = [] # type: List[Journalist]
111-
self.sources = [] # type: List[Source]
110+
self.journalists = [] # type: List[int]
111+
self.sources = [] # type: List[int]
112112

113113
def new_journalist(self) -> None:
114114
# Make a diceware-like password

0 commit comments

Comments
 (0)