Forgot to svn add password reset tool.
This commit is contained in:
parent
13318ee807
commit
59fdcd2340
61
tools/resetpw.py
Executable file
61
tools/resetpw.py
Executable file
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/python2.5
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
from config.Common import settings
|
||||
from controller.Database import Database
|
||||
from controller.Scheduler import Scheduler
|
||||
|
||||
|
||||
class Resetter( object ):
|
||||
def __init__( self, scheduler, database, username ):
|
||||
self.scheduler = scheduler
|
||||
self.database = database
|
||||
self.username = username
|
||||
self.password = None
|
||||
|
||||
self.prompt_for_password()
|
||||
|
||||
threads = (
|
||||
self.reset_password(),
|
||||
)
|
||||
|
||||
for thread in threads:
|
||||
self.scheduler.add( thread )
|
||||
self.scheduler.wait_for( thread )
|
||||
|
||||
def prompt_for_password( self ):
|
||||
print "enter new password for user %s: " % self.username,
|
||||
sys.stdout.flush()
|
||||
self.password = sys.stdin.readline().strip()
|
||||
print
|
||||
|
||||
def reset_password( self ):
|
||||
self.database.load( u"User %s" % self.username, self.scheduler.thread )
|
||||
user = ( yield Scheduler.SLEEP )
|
||||
if user is None:
|
||||
raise Exception( "user %s is unknown" % self.username )
|
||||
|
||||
|
||||
user.password = self.password
|
||||
self.database.save( user )
|
||||
print "password reset"
|
||||
|
||||
|
||||
def main( program_name, args ):
|
||||
print "IMPORTANT: Stop the Luminotes server before running this program."
|
||||
|
||||
if len( args ) == 0:
|
||||
print "usage: %s username" % program_name
|
||||
sys.exit( 1 )
|
||||
|
||||
scheduler = Scheduler()
|
||||
database = Database( scheduler, "data.db" )
|
||||
initializer = Resetter( scheduler, database, args[ 0 ] )
|
||||
scheduler.wait_until_idle()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
main( sys.argv[ 0 ], sys.argv[ 1: ] )
|
Reference in New Issue
Block a user