def handle(self, *args, **options): interactive = options.get('interactive') fields = {'name': options.get('name', None), 'rconpass': options.get('rconpass', None), 'dbname': options.get('dbname', None), 'dbuser': options.get('dbuser', None), 'dbhost': options.get('dbhost', None), 'dbpass': options.get('dbpass', None), 'mapcycle': options.get('mapcycle', None), 'banlist': options.get('banlist', None), 'statusfile': options.get('statusfile', None), } plugins_s = options.get('plugins', None) databases = {} servers = {} if os.path.exists(settings.LOCAL_CONFIG): databases = settings.SERVER_DATABASES servers = settings.SERVERS if not interactive: for k, v in fields.items(): if not k in ('rconpass','statusfile'): raise CommandError("You must specifiy a value for --%s" % k) key_name = _string_to_slug(fields['name']) else: try: if not fields['name']: fields['name'] = self.ask_input('Server name') key_name = _string_to_slug(fields['name']) if not fields['rconpass']: fields['rconpass'] = self.ask_input('RCON Password (required if you want rcon management)', allow_none=True) if not fields['dbname']: default = databases[key_name]['NAME'] if databases.has_key(key_name) else None fields['dbname'] = self.ask_input('Database name', default) if not fields['dbuser']: default = databases[key_name]['USER'] if databases.has_key(key_name) else None fields['dbuser'] = self.ask_input('Database user', default) if not fields['dbpass']: fields['dbpass'] = self.ask_input('Database password') if not fields['dbhost']: default = databases[key_name]['HOST'] if databases.has_key(key_name) else 'localhost' fields['dbhost'] = self.ask_input('Database host', default) if not fields['mapcycle']: default = servers[key_name]['MAPCYCLE'] if servers.has_key(key_name) else None fields['mapcycle'] = self.ask_input('Location of mapcycle.txt', default) if not fields['banlist']: default = servers[key_name]['BANLIST'] if servers.has_key(key_name) else None fields['banlist'] = self.ask_input('Location of banlist.txt', default) if not fields['statusfile']: default = servers[key_name]['STATUS'] if servers.has_key(key_name) else None fields['statusfile'] = self.ask_input('Location of status.xml (if you use status plugin)', default, allow_none=True) if not plugins_s == 0: default = ",".join(servers[key_name]['PLUGINS']) if servers.has_key(key_name) else None plugins_s = self.ask_input('List of enabled plugins separated by comma (chatlog,follow,flagstats,hestats,knifestats,status)', default, allow_none=True) except KeyboardInterrupt: sys.stderr.write("\nOperation cancelled.\n") sys.exit(1) if plugins_s: plugins = [s.strip() for s in plugins_s.split(',')] else: plugins = [] server = {'TITLE': fields['name'], 'STATUS': fields['statusfile'], 'BANLIST': fields['banlist'], 'MAPCYCLE': fields['mapcycle'], 'RCONPASS': fields['rconpass'], 'PLUGINS': plugins} servers[key_name] = server db = {'NAME': fields['dbname'], 'ENGINE': 'django.db.backends.mysql', 'USER': fields['dbuser'], 'PASSWORD': fields['dbpass'], 'HOST': fields['dbhost']} databases[key_name] = db sys.stdout.write("\nWriting config file.\n") out = open(settings.LOCAL_CONFIG, 'w') out.write('SERVER_DATABASES = %s\n' % str(databases)) out.write('SERVERS = %s\n' % str(servers)) out.write('DATABASES.update(SERVER_DATABASES)\n') out.close() sys.stdout.write("\nDone.\n")
def set_slug(self): self.slug = "-".join([self.release.slug,self.component.slug,self.language.code,sluger._string_to_slug(self.filename)])