#303 : enhancement : add a command to delete users
[mediagoblin.git] / mediagoblin / gmg_commands / users.py
index 024c8498c635ac9708a6d85f4a6b9eaead49c865..186557e09d88822ac9391c98f73a2c5318e1be9b 100644 (file)
@@ -15,7 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from mediagoblin.gmg_commands import util as commands_util
-from mediagoblin.auth import lib as auth_lib
+from mediagoblin import auth
 from mediagoblin import mg_globals
 
 def adduser_parser_setup(subparser):
@@ -40,9 +40,9 @@ def adduser(args):
 
     db = mg_globals.database
     users_with_username = \
-        db.User.find({
-            'username': args.username.lower(),
-        }).count()
+        db.User.query.filter_by(
+            username=args.username.lower()
+        ).count()
 
     if users_with_username:
         print u'Sorry, a user with that name already exists.'
@@ -52,9 +52,18 @@ def adduser(args):
         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.status = u'active'
-        entry.email_verified = True
+        entry.pw_hash = auth.gen_password_hash(args.password)
+        default_privileges = [
+            db.Privilege.query.filter(
+                db.Privilege.privilege_name==u'commenter').one(),
+            db.Privilege.query.filter(
+                db.Privilege.privilege_name==u'uploader').one(),
+            db.Privilege.query.filter(
+                db.Privilege.privilege_name==u'reporter').one(),
+            db.Privilege.query.filter(
+                db.Privilege.privilege_name==u'active').one()
+        ]
+        entry.all_privileges = default_privileges
         entry.save()
 
         print "User created (and email marked as verified)"
@@ -71,9 +80,13 @@ def makeadmin(args):
 
     db = mg_globals.database
 
-    user = db.User.one({'username': unicode(args.username.lower())})
+    user = db.User.query.filter_by(
+        username=unicode(args.username.lower())).one()
     if user:
-        user.is_admin = True
+        user.all_privileges.append(
+            db.Privilege.query.filter(
+                db.Privilege.privilege_name==u'admin').one()
+        )
         user.save()
         print 'The user is now Admin'
     else:
@@ -94,10 +107,31 @@ def changepw(args):
 
     db = mg_globals.database
 
-    user = db.User.one({'username': unicode(args.username.lower())})
+    user = db.User.query.filter_by(
+        username=unicode(args.username.lower())).one()
     if user:
-        user.pw_hash = auth_lib.bcrypt_gen_password_hash(args.password)
+        user.pw_hash = auth.gen_password_hash(args.password)
         user.save()
         print 'Password successfully changed'
     else:
         print 'The user doesn\'t exist'
+
+
+def deleteuser_parser_setup(subparser):
+    subparser.add_argument(
+        'username',
+        help="Username to delete")
+
+
+def deleteuser(args):
+    commands_util.setup_app(args)
+
+    db = mg_globals.database
+
+    user = db.User.query.filter_by(
+        username=unicode(args.username.lower())).one()
+    if user:
+        user.delete()
+        print 'The user %s has been deleted' % args.username
+    else:
+        print 'The user %s doesn\'t exist' % args.username