Example #1
0
def make_diff_old(a, b):
    import difflib
    filename = hash(b.encode('utf-8')).hexdigest()
    fc = FileCache(filename, expireInMinutes = None, tempdir = settings.TEMP_UPLOAD_PATH, prefix = '')
    try:
        content = fc.load()
    except:
        logger.exception('load')
        content = None
    if not content:
        out = []
        s = difflib.SequenceMatcher(None, a, b)
        for e in s.get_opcodes():
            if e[0] == "replace":
                out.append('<del class="diff_chg">'+''.join(a[e[1]:e[2]]) + '</del><ins class="diff_add">'+''.join(b[e[3]:e[4]])+"</ins>")
            elif e[0] == "delete":
                out.append('<del class="diff_sub">'+ ''.join(a[e[1]:e[2]]) + "</del>")
            elif e[0] == "insert":
                out.append('<ins class="diff_add">'+''.join(b[e[3]:e[4]]) + "</ins>")
            elif e[0] == "equal":
                out.append(''.join(b[e[3]:e[4]]))
            else: 
                raise "Um, something's broken. I didn't expect a '" + `e[0]` + "'."
        content = ''.join(out)
        try:
            fc.save(content)
        except:
            logger.exception('save')
    return content
Example #2
0
def banned_player_map(request):
    from common.utils.geoip import GeoLocation
    from common.cache.file import FileCache
    local = FileCache("ban-%s" % request.server, getattr(settings, 'WORLDMAP_CACHE_EXPIRE', 1440))
    countries = local.load()
    if not countries:
        countries = {}
        geo = GeoLocation()
        for penalty in Penalty.objects.db_manager(request.server).active():
            country_name = geo.get_country(penalty.client.ip)
            if countries.has_key(country_name):
                count = countries.get(country_name) + 1
            else:
                count = 1
            countries[country_name]=count
        if len(countries) > 0: local.save(countries)
    return {'list': countries}
Example #3
0
def player_map(request):
    from common.utils.geoip import GeoLocation
    from common.cache.file import FileCache
    local = FileCache("pl-%s" % request.server, getattr(settings, 'WORLDMAP_CACHE_EXPIRE', 1440))
    countries = local.load()
    if not countries:
        countries = {}
        geo = GeoLocation()
        for client in Client.objects.using(request.server).filter(id__gt=1):
            country_name = geo.get_country(client.ip)
            if country_name != '':
                #country_code = geo.get_country_code(client.ip)
                if countries.has_key(country_name):
                    countries[country_name]['count'] += 1
                    #countries[country_name]['clients'].append(client)
                else:
                    countries[country_name] = {'count': 1 } #, 'clients': [client]}
        if len(countries) > 0: local.save(countries)
    return {'list': countries}