1
0
Fork 0
gnuviechadmin-historic/gnuviechadmin/cli/sysuser.py
Jan Dittberner 1435a88a5a port sysuser to argparse and new config (addresses #33, #34)
* enable sysuser command
 * argument parsing via argparse
 * mark strings as translatable
 * pass parsed configuration where appropriate
2009-08-01 21:35:43 +02:00

100 lines
3.6 KiB
Python

# -*- coding: utf-8 -*-
#
# Copyright (C) 2007, 2008 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""This module provides the command line interface code for system
user management."""
from gnuviechadmin.cli.CliCommand import CliCommand
import sys
class SysuserCli(CliCommand):
"""Command line interface command for system user management.
This class implements `gnuviechadmin.cli.CliCommand.CliCommand`.
"""
@staticmethod
def setup_argparser(subparsers):
parser = subparsers.add_parser(
'sysuser',
help = _('manage system users'))
parser.set_defaults(commandclass=SysuserCli)
cmdsub = parser.add_subparsers(
title = _('sysuser subcommands'),
dest = 'subcommand')
cmdparser = cmdsub.add_parser(
'create',
help = _('create a new system user with the given options.'))
cmdparser.add_argument(
'-n', '--username',
help = _('the system user name'))
cmdparser.add_argument(
'-t', '--usertype',
help = _('the numeric user type'))
cmdparser.add_argument(
'--home',
help = _('the home directory'))
cmdparser.add_argument(
'-s', '--shell',
help = _('true if the user should get shell access'))
cmdparser.add_argument(
'-p', '--password', dest = 'clearpass',
help = _('the password for the user'))
cmdparser.add_argument(
'-c', '--clientid', required = True,
help = _('the client id'))
cmdparser = cmdsub.add_parser(
'list',
help = _('list existing system users.'))
cmdparser = cmdsub.add_parser(
'delete',
help = _('delete a system user.'))
cmdparser.add_argument(
'-s', '--sysuserid', required = True,
help = _('the system user id'))
def _execute(self):
"""Executes `subcommand`.
This method implements `CliCommand._execute()`.
"""
self.logger.debug("execute %s", self.args)
from gnuviechadmin.backend import sysuser
from gnuviechadmin import exceptions
sh = sysuser.SysuserHandler(self.config, self.args.verbose)
if self.args.subcommand == "create":
try:
mysysuser = sh.create(**self.args.__dict__)
if self.args.verbose:
print mysysuser
except exceptions.CreationFailedError, cfe:
print cfe
sys.exit(2)
elif self.args.subcommand == "list":
sysusers = sh.fetchall()
for su in sysusers:
print su
elif self.args.subcommand == "delete":
sh.delete(self.args.sysuserid)
def __init__(self, args, config):
"""Constructor for the sysuser command."""
CliCommand.__init__(self, args, config)