def need_update(): size = len(DOMAIN_CHARS) squared = size * size keys = (Prefix.all(keys_only=True).filter('length', 2) .order('__key__').fetch(1000)) if len(keys) == 1000: keys.extend(Prefix.all(keys_only=True).filter('length', 2) .filter('__key__ >', keys[-1]).fetch(1000)) if len(keys) == squared: oldest = (Prefix.all(keys_only=True).filter('length', 2) .order('timestamp').fetch(100)) return [key.name() for key in oldest] existing = set([key.name() for key in keys]) result = [] for c1 in DOMAIN_CHARS: for c2 in DOMAIN_CHARS: name = c1 + c2 if name not in existing: result.append(name) return result
def main(): one = {} two = {} total = 0 for c1 in DOMAIN_CHARS: query = Prefix.all().filter('length', 2) query.filter('__key__ >', db.Key.from_path('prefixes_prefix', c1)) next = chr(ord(c1) + 1) query.filter('__key__ <', db.Key.from_path('prefixes_prefix', next)) one[c1] = 0 for prefix in query.fetch(100): total += prefix.count one[c1] += prefix.count two[prefix.key().name()] = prefix.count print 'TOTAL =', total print print_counts('ONE', one) print print_counts('TWO', two)
def main(): one = {} two = {} total = 0 for c1 in DOMAIN_CHARS: query = Prefix.all().filter("length", 2) query.filter("__key__ >", db.Key.from_path("prefixes_prefix", c1)) next = chr(ord(c1) + 1) query.filter("__key__ <", db.Key.from_path("prefixes_prefix", next)) one[c1] = 0 for prefix in query.fetch(100): total += prefix.count one[c1] += prefix.count two[prefix.key().name()] = prefix.count print "TOTAL =", total print print_counts("ONE", one) print print_counts("TWO", two)
def index(request): size = len(DOMAIN_CHARS) squared = size * size names = need_update() random.shuffle(names) names = names[:20] initial = {'prefixes': ' '.join(names)} prefix_form = PrefixForm(request.POST or None, initial=initial) if prefix_form.is_valid(): prefixes = prefix_form.cleaned_data['prefixes'].split() if not prefixes: prefixes = names for prefix in prefixes: update_prefix(prefix) return HttpResponseRedirect(request.path) matrix = [] for letter in DOMAIN_CHARS: matrix.append([None] * size) domain_count = 0 prefix_count = 0 for prefix in Prefix.all().filter('length', 2): x = DOMAIN_CHARS.index(prefix.key().name()[1]) y = DOMAIN_CHARS.index(prefix.key().name()[0]) matrix[y][x] = prefix.count domain_count += prefix.count prefix_count += 1 table_rows = [] sum_row = [0] * size for y, letter in enumerate(DOMAIN_CHARS): for x in range(size): if matrix[y][x]: sum_row[x] += matrix[y][x] table_rows.append((letter, matrix[y], sum([count for count in matrix[y] if count]))) if prefix_count: domain_estimate = domain_count * squared / prefix_count else: domain_estimate = 'unknown' letters = DOMAIN_CHARS return render_to_response(request, 'prefixes/index.html', locals())