Example #1
0
def getLanguage(module, filename=None):
    """
        Retrieve a modules language file
        
        module:         module name (usually automatically provided)
        filename:       optional filename (if different from the default strings.ini)
        
        return:         a dictionary style object containing language strings
        
        Handle's retrieving and accessing a modules strings.ini file
        To use this you need to  create a strings.ini file inside your
        module folder containing a VALID set of language strings.
        
        <xa instance>.language.getLanguage()
    """
    # Create a new pseudo dict from a language INI file
    # Did we specify a custom filename?
    if filename:
        filename = '%s/modules/%s/%s.ini' % (xa.coredir(), module, filename)
    else:
        filename = '%s/modules/%s/strings.ini' % (xa.coredir(), module)

    # Is there a custom translation file?
    if os.path.exists(filename.replace('.ini', '.custom.ini')):
        customlangobj = langlib.Strings(filename.replace(
            '.ini', '.custom.ini'))
    else:
        customlangobj = None

    # Does our translation file exist?
    if os.path.exists(filename):
        langobj = langlib.Strings(filename)
    else:
        raise IOError, 'Could not find %s!' % filename

    # Merge custom translations into the original translations
    if langobj and customlangobj:
        for key in customlangobj:
            if key in langobj:
                langobj[key].update(customlangobj[key])
            else:
                langobj[key] = customlangobj[key]

    # Create pseudo dicts for each string key
    if langobj:
        for key in langobj:
            langobj[key] = LanguageDict(key, langobj[key])

    # Return our new pseudo dict
    return langobj
Example #2
0
def log(module, text, userid=None, admin=False, loglvl=0):
    """
        XA logging
        
        module:         module name (usually automatically provided)
        test:           text string to log
        userid:         optionally provide a userid as reference
        admin:          set to true if this is an admin action
        loglvl:         an optional level - messages with lower xa_log values will not be recorded
        
        Appends a line to the module's log file (found in the xa/logs directory).
        
        Includes ability to reference a specific player and also flag as an admin action
    """
    # Is logging enabled and does our module exist?
    if int(es.ServerVar('xa_log')) and int(
            es.ServerVar('xa_log')) >= loglvl and xa.exists(module):
        # Was a valid source userid specified?
        if userid and es.exists('userid', int(userid)):
            # Is this userid an admin?
            if admin:
                # Adming log
                logtext = '%s: Admin %s [%s]: %s' % (
                    module, es.getplayername(userid),
                    es.getplayersteamid(userid), text)

            else:
                # User log
                logtext = '%s: User %s [%s]: %s' % (
                    module, es.getplayername(userid),
                    es.getplayersteamid(userid), text)

        else:
            # Default log
            logtext = '%s: %s' % (module, text)

        # Create our log folder if it does not exist
        if not os.path.isdir('%s/logs' % xa.coredir()):
            os.mkdir('%s/logs' % xa.coredir())

        # Write to our log file
        logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log'))
        logfile = open(logname, 'a+')
        logfile.write(
            time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n')
        logfile.close()

        # Write to the SRCDS log file
        es.log(logtext)
Example #3
0
def getLanguage(module, filename = None):
    """
        Retrieve a modules language file
        
        module:         module name (usually automatically provided)
        filename:       optional filename (if different from the default strings.ini)
        
        return:         a dictionary style object containing language strings
        
        Handle's retrieving and accessing a modules strings.ini file
        To use this you need to  create a strings.ini file inside your
        module folder containing a VALID set of language strings.
        
        <xa instance>.language.getLanguage()
    """
    # Create a new pseudo dict from a language INI file
    # Did we specify a custom filename?
    if filename:
        filename = '%s/modules/%s/%s.ini' % (xa.coredir(), module, filename)
    else:
        filename = '%s/modules/%s/strings.ini' % (xa.coredir(), module)
        
    # Is there a custom translation file?
    if os.path.exists(filename.replace('.ini', '.custom.ini')):
        customlangobj = langlib.Strings(filename.replace('.ini', '.custom.ini'))
    else:
        customlangobj = None
    
    # Does our translation file exist?
    if os.path.exists(filename):
        langobj = langlib.Strings(filename)
    else:
        raise IOError, 'Could not find %s!' % filename

    # Merge custom translations into the original translations
    if langobj and customlangobj:
        for key in customlangobj:
            if key in langobj:
                langobj[key].update(customlangobj[key])
            else:
                langobj[key] = customlangobj[key]
    
    # Create pseudo dicts for each string key
    if langobj:
        for key in langobj:
            langobj[key] = LanguageDict(key, langobj[key])
    
    # Return our new pseudo dict
    return langobj
Example #4
0
def log(module, text, userid=None, admin=False, loglvl=0):
    """
        XA logging
        
        module:         module name (usually automatically provided)
        test:           text string to log
        userid:         optionally provide a userid as reference
        admin:          set to true if this is an admin action
        loglvl:         an optional level - messages with lower xa_log values will not be recorded
        
        Appends a line to the module's log file (found in the xa/logs directory).
        
        Includes ability to reference a specific player and also flag as an admin action
    """
    # Is logging enabled and does our module exist?
    if int(es.ServerVar('xa_log')) and int(es.ServerVar('xa_log')) >= loglvl and xa.exists(module):
        # Was a valid source userid specified?
        if userid and es.exists('userid', int(userid)):
            # Is this userid an admin?
            if admin:
                # Adming log
                logtext = '%s: Admin %s [%s]: %s' % (module, es.getplayername(userid), es.getplayersteamid(userid), text)
            
            else:
                # User log
                logtext = '%s: User %s [%s]: %s' % (module, es.getplayername(userid), es.getplayersteamid(userid), text)
            
        else:
            # Default log
            logtext = '%s: %s' % (module, text)
        
        # Create our log folder if it does not exist
        if not os.path.isdir('%s/logs' % xa.coredir()):
            os.mkdir('%s/logs' % xa.coredir())
        
        # Write to our log file
        logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log'))
        logfile = open(logname, 'a+')
        logfile.write(time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n')
        logfile.close()
        
        # Write to the SRCDS log file
        es.log(logtext)
Example #5
0
def getLanguage(module, file = None):
    if file:
        filename = "%s/modules/%s/%s.ini" % (xa.coredir(), module, file)
    else:
        filename = "%s/modules/%s/strings.ini" % (xa.coredir(), module)
    if os.path.exists(filename.replace('.ini', '.custom.ini')):
        customlangobj = langlib.Strings(filename.replace('.ini', '.custom.ini'))
    else:
        customlangobj = None
    if os.path.exists(filename):
        langobj = langlib.Strings(filename)
    else:
        raise IOError, "Could not find %s!" % filename
    if langobj and customlangobj:
        for key in customlangobj:
            if key in langobj:
                langobj[key].update(customlangobj[key])
            else:
                langobj[key] = customlangobj[key]
    if langobj:
        for key in langobj:
            langobj[key] = LanguageDict(key, langobj[key])
    return langobj
Example #6
0
def log(module, text, userid=0, admin=False):
    if bool(int(es.ServerVar("xa_log"))) and xa.exists(module):
        if (int(userid) > 0) and es.exists('userid', int(userid)):
            if admin:
                logtext = str(module) + ': Admin ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text)
            else:
                logtext = str(module) + ': User ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text)
        else:
            logtext = str(module) + ': ' + str(text)
        logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log'))
        logfile = open(logname, 'a+')
        logfile.write(time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n')
        logfile.close()
        es.log(logtext)
        return True
    return False