3030To stress-test edit locking, use the Locust-based tests in /contrib/loadtesting/.
3131"""
3232
33+ from __future__ import annotations
34+
3335import os
3436import time
3537import sqlite3
@@ -145,7 +147,7 @@ def get_user_name(self):
145147 user_name = request .remote_user or request .remote_addr
146148 return user_name
147149
148- def put_draft (self , data_in , overwrite = True ):
150+ def put_draft (self , data_in : str | None , overwrite : bool = True ) -> None :
149151 """
150152 Only 1 item draft is saved per user. Most recent item draft overlays prior item draft.
151153
@@ -159,7 +161,7 @@ def put_draft(self, data_in, overwrite=True):
159161 """
160162 rev_id = self .rev_id
161163 draft_rev_number = self .rev_number
162- draft , data = self .get_draft ()
164+ draft , _ = self .get_draft ()
163165 if draft :
164166 # draft may be of this item or remnant of a prior abandoned edit
165167 u_name , i_id , i_name , rev_number , save_time , i_rev_id = draft
@@ -170,22 +172,24 @@ def put_draft(self, data_in, overwrite=True):
170172 draft_rev_number = rev_number # XXX per line 1074 in __init__
171173 rev_id = i_rev_id
172174 self .draft_name = self .make_draft_name (rev_id )
173- self .cursor .execute ("""DELETE FROM editdraft WHERE user_name = ? """ , (self .user_name ,))
175+ self .cursor .execute ("""DELETE FROM editdraft WHERE user_name = ?""" , (self .user_name ,))
176+
174177 if data_in :
175- data_in = data_in .encode (self .coding )
178+ data = data_in .encode (self .coding )
176179 with open (self .draft_name , "wb" ) as f :
177- f .write (data_in )
180+ f .write (data )
178181 save_time = int (time .time ())
179182 else :
180183 save_time = 0 # indicates user is editing item but has not done a preview, no draft has been saved
184+
181185 self .cursor .execute (
182186 """INSERT INTO editdraft(user_name, item_id, item_name, rev_number, save_time, rev_id)
183187 VALUES(?,?,?,?,?,?)""" ,
184188 (self .user_name , self .item_id , self .item_name , draft_rev_number , save_time , rev_id ),
185189 )
186190 self .conn .commit ()
187191
188- def get_draft (self ):
192+ def get_draft (self ) -> tuple [ sqlite3 . Row , str ] | tuple [ sqlite3 . Row , None ] | tuple [ None , None ] :
189193 """
190194 Return None, None if no draft available; else tuple of row fields, textarea data or None.
191195
@@ -205,8 +209,8 @@ def get_draft(self):
205209 try :
206210 with open (self .draft_name , "rb" ) as f :
207211 data = f .read ()
208- data = data .decode (self .coding )
209- return draft , data
212+ content = data .decode (self .coding )
213+ return draft , content
210214 except OSError :
211215 logging .error (f"User { u_name } failed to load draft for: { i_name } " )
212216 return draft , None
0 commit comments