openpolis / open-action

Source code repository for the OpenAction project.
0 stars 3 forks source link

Create Action with politicians #9

Closed joke2k closed 11 years ago

joke2k commented 11 years ago

ValueError at /action/create/

list.remove(x): x not in list

/dev/open_action/openaction/action/forms.py in _clean_politician_set riga 121

120.    for politician_id in found_ids:
121.        politician_ids_copy.remove(politician_id)

Context:

politician_ids_copy=[]

cleaned_data={'ask_anonymously': False,
 'category_set': [...],
 'geoname_set': [{...}],
 'in_nomine': u'user-1',
 'media_set': [],
 'openid': u'',
 'politician_set': u'|125719|397513|740|583731|274820|21|',
 'post_author_email': u'',
 'post_author_username': u'',
 'tags': u'democrazia, ambiente',
 'text': u'Lorem ipsumLorem ipsum',
 'threshold': u'0',
 'title': u'Lorem ipsum',
 'wiki': None}

cityrep_id = 1974L
politician_id = 740
elem = u'21'
found_ids = [583731, 740, 740]
politician_ids = [125719, 397513, 740, 583731, 274820, 21]
geoname_ids = [5132L, 1974L]
field_name = 'politician_set'

POST data:

geoname_set = u'|5132|1974|'
in_nomine = u'user-1'
tags = u'democrazia, ambiente'
text = u'Lorem ipsumLorem ipsum'
title = u'Lorem ipsum'
threshold = u'0'
politician_set = u'|125719|397513|740|583731|274820|21|'
geoname_set_text = u''
category_set = u'4'
matteo88 commented 11 years ago

Questo bug è causato dal fatto che i politici con lo stesso politician_id nell'API possono ricoprire piu di una carica, e quindi comparire più di una volta nella stessa pagona dei cityreps collegati al territorio.

Un modo per risolvere questo bug è utilizzare il charge_id piuttosto che il politician_id per eseguire il controllo sulla correttezza dei dati ritornati dalla form, posto che il charge_id sia unico per ogni politico (è comunque diverso per tutti i politici nel test specifico che mi hai presentato).

matteo88 commented 11 years ago

Risolto, ora il charge_id, che è unico, viene usato come pk nel modello Politician, mentre il politician_id è stato aggiunto come attributo nel modello. Anche nell' ExternalResource il charge_id viene savato, al post del politician_id, nell'attributo ext_res_id. In questo modo anche la risorsa esterna collegata al politico è univoca.