Пример #1
0
    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")
Пример #2
0
 def set_slug(self):
     self.slug = "-".join([self.release.slug,self.component.slug,self.language.code,sluger._string_to_slug(self.filename)])