Adding new function to gmg_commands, adduser,makeadmin and changepw issue 373

This commit is contained in:
Alejandro Villanueva 2011-06-22 11:51:31 -05:00 committed by Christopher Allan Webber
parent 54de443a6a
commit 96108ea285
2 changed files with 141 additions and 0 deletions

View File

@ -28,6 +28,18 @@ SUBCOMMAND_MAP = {
'setup': 'mediagoblin.gmg_commands.migrate:migrate_parser_setup',
'func': 'mediagoblin.gmg_commands.migrate:migrate',
'help': 'Apply all unapplied bulk migrations to the database'},
'adduser':{
'setup': 'mediagoblin.gmg_commands.users:adduser_parser_setup',
'func': 'mediagoblin.gmg_commands.users:adduser',
'help': 'Creates an user, \nUsage: adduser -u username -p password -m email'},
'makeadmin': {
'setup': 'mediagoblin.gmg_commands.users:makeadmin_parser_setup',
'func': 'mediagoblin.gmg_commands.users:makeadmin',
'help': 'Makes admin an user, \nUsage: makeadmin -u username'},
'changepw': {
'setup': 'mediagoblin.gmg_commands.users:changepw_parser_setup',
'func': 'mediagoblin.gmg_commands.users:changepw',
'help': 'Makes admin an user, \nUsage: changepw -u username -p new_password'},
}
@ -56,3 +68,4 @@ def main_cli():
if __name__ == '__main__':
main_cli()

View File

@ -0,0 +1,128 @@
import os
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin.db.open import setup_connection_and_db_from_config
from mediagoblin.auth import lib as auth_lib
from mediagoblin import mg_globals
def adduser_usage():
print '\nUsage: adduser -u username -p password -m email'
def adduser_parser_setup(subparser):
subparser.add_argument(
'-u', '--username',
help="Username used to login")
subparser.add_argument(
'-p', '--password',
help="Your supersecret word to login")
subparser.add_argument(
'-m', '--email',
help="Email to recieve notifications")
subparser.add_argument(
'-cf', '--conf_file', default='mediagoblin.ini',
help="Config file used to set up environment")
def adduser(args):
#TODO: Lets trust admins this do not validate Emails :)
if args.username == None :
print 'You must provide an username'
adduser_usage()
elif args.password == None:
print 'You must provide a password'
adduser_usage()
elif args.email == None:
print 'You must provide an email'
adduser_usage()
else:
mgoblin_app = commands_util.setup_app(args)
db = mg_globals.database
users_with_username = \
db.User.find({
'username': args.username.lower()
}).count()
if users_with_username:
print u'Sorry, a user with that name already exists.'
else:
# Create the user
entry = db.User()
entry['username'] = unicode(args.username.lower())
entry['email'] = unicode(args.email)
entry['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password)
entry['email_verified'] = True
entry.save(validate=True)
print "User Created: Already Verified :)"
def makeadmin_usage():
print '\nUsage: makeadmin -u username'
def makeadmin_parser_setup(subparser):
subparser.add_argument(
'-u', '--username',
help="Username to give admin level")
subparser.add_argument(
'-cf', '--conf_file', default='mediagoblin.ini',
help="Config file used to set up environment")
def makeadmin(args):
if args.username == None:
print 'You must provide an username'
makeadmin_usage()
else:
mgoblin_app = commands_util.setup_app(args)
db = mg_globals.database
user = db.User.one({'username':unicode(args.username.lower())})
if user:
user['is_admin'] = True
user.save()
print 'The user is now Admin'
else:
print 'The user doesn\'t exist'
def changepw_usage():
print '\nUsage: changepw -u username -p new_password'
def changepw_parser_setup(subparser):
subparser.add_argument(
'-u', '--username',
help="Username used to login")
subparser.add_argument(
'-p', '--password',
help="Your NEW supersecret word to login")
subparser.add_argument(
'-cf', '--conf_file', default='mediagoblin.ini',
help="Config file used to set up environment")
def changepw(args):
if args.username == None:
print 'You must provide an username'
adduser_usage()
elif args.password == None:
print 'You must provide a password'
adduser_usage()
else:
mgoblin_app = commands_util.setup_app(args)
db = mg_globals.database
user = db.User.one({'username':unicode(args.username.lower())})
if user:
user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password)
user.save()
print 'Password successfully changed'
else:
print 'The user doesn\'t exist'