Jj's web stream

Chichaplanet is down

Acabo de entrar a Chichaplanet, y me encuentro con la pantalla de error en modo DEBUG de Django!

La línea de error es:
43\. count = tagcount[id]

Y de acuerdo a las variables, que se muestran, se puede ver que en el diccionario tagcount no existe un valor para la llave id que es 75 ([75, 'journal comic']).

id = 75




tagcount = {1: 2, 2: 2, 3: 2, 4: 1, 5: 1, 6: 5, 7: 5, 8: 6, 9: 1, 10: 73, 11: 11, 12: 5, 13: 6, 14: 33, 15: 3, 16: 3, 17: 11, 18: 2, 19: 2, 20: 1, 21: 1, 22: 1, 23: 3, 24: 8, 25: 1, 26: 4, 27: 2, 28: 5, 29: 1, 30: 5, 31: 1, 32: 1, 33: 1, 34: 6, 35: 1, 36: 9, 37: 5, 38: 1, 39: 1, 40: 1, 41: 2, 42: 1, 43: 1, 44: 2, 45: 1, 46: 1, 47: 34, 48: 1, 49: 2, 50: 5, 51: 2, 52: 6, 53: 3, 54: 1, 55: 1, 56: 6, 57: 1, 58: 1, 59: 5, 60: 2, 61: 2, 62: 3, 63: 3, 64: 3, 65: 3, 66: 2, 67: 10, 68: 1, 69: 4, 70: 2, 71: 1, 72: 2, 73: 1, 74: 1, 76: 1}

Una alternativa es poner la línea dentro de un bloque try ... except, O sino usar el metodo get de los diccionarios, que permite devolver un valor predeterminado en caso no exista un valor para la llave pedida.

try:




    count = tagcount[id]




except KeyError:




    count = 0











count = tagcount.get(id, 0)

Creo que poner el bloque try ... catch sería mejor, a pesar que usar .get se vea mas elegante y sea mas corto. La mayoría de las veces SI habrá un valor en tagcount para id y se podrá ahorrar la llamada extra al método que probablemente haga algo similar, o tenga un condicional adentro.

Claro, ésto es viendo únicamente esa línea. Pero tal vez sea mejor asegurarse de antemano que en el arreglo tagnames no hayan claves que no estén en el diccionario

  42. for id, name in tagnames:




  43.     count = tagcount[id] ...




  44.     weight = [x[0] for x in steps if x[1] >= count and x[1] > 0][0]+1




  45.     tags.append({'id':id, 'name':name, 'count':count, 'weight':weight})







tagnames = [[7, 'actualidad nacional'], [30, 'administrivia'], [1, 'alex celi'], [13, 'aureal'], [53, 'blogs'], [56, 'casi personal'], [27, 'chicha'], [16, 'cine'], [9, 'cipher'], [42, 'computers'], [74, 'comunidad'], [54, 'conferencias'], [18, 'cultura'], [32, 'culture'], [36, 'debian'], [45, 'debian-es'], [28, 'django'], [43, 'dump'], [69, 'en'], [67, 'es'], [55, 'eventos'], [34, 'free software'], [37, 'freebsd'], [47, 'freedom'], [49, 'freesoftware'], [64, 'funny'], [6, 'futbol'], [29, 'games'], [10, 'general'], [40, 'gnome'], [22, 'humor'], [25, 'humour'], [68, 'inform\xc3\xa1tica'], [44, 'inspiracion'], [23, 'internet'], [48, 'iowa'], [75, 'journal comic'], [4, 'juegos'], [19, 'libertarismo'], [21, 'libros'], [24, 'life'], [11, 'linux'], [46, 'music'], [50, 'musica'], [58, 'net'], [66, 'networking'], [38, 'novell'], [35, 'openbsd'], [14, 'personal'], [63, 'personales'], [8, 'peru'], [72, 'php'], [20, 'pol\xc3\xadtica'], [51, 'programacion'], [31, 'programming'], [26, 'python'], [33, 'science'], [41, 'scifi'], [12, 'security'], [65, 'shits'], [52, 'soft. libre'], [15, 'software libre'], [5, 'star wars galaxies'], [73, 'sysadmin'], [17, 'tech'], [39, 'technology'], [76, 'tecnologia'], [57, 'terror'], [60, 'uncategorized'], [3, 'unidad crema'], [62, 'universidad'], [2, 'universitario de deportes'], [61, 'utpinux'], [59, 'vida'], [70, 'web'], [71, 'xhtml']]

Esperemos que Tabo arregle este feature en Feedjack pronto :)