def get(self, slug): response = {} try: mp = MP.all().filter('slug =', slug)[0] response['mp'] = utils.mp_to_dict(mp) except: self.returnJSON(404, response) return self.query = MPVote.all().filter('mp_slug =', slug) self.filterQueryOnParam('question') self.filterQueryOnParam('selection') response['votes'] = [] for vote in self.query: d = db.to_dict(vote) d['question'] = utils.question_to_dict(vote.parent()) del d['mp_party'] del d['mp_constituency'] del d['mp_slug'] del d['mp_name'] response['votes'].append(d) response['total'] = len(response['votes']) self.returnJSON(200, response)
def compareMP(user): # Calculating MP match in real time. Should do this once, when votes are inserted. questions = Question.all() # Get UserVotes and capture the IDs user_votes = UserVote.all().filter('user_username ='******'question =', u_vote.question) if mp_vote.count() > 0: both_voted_on = both_voted_on + 1 if score == 100: exact_match_on = exact_match_on + 1 score = score + calculate_score(mp_vote[0].selection, u_vote.selection) if user_votes.count() > 0: score = score / user_votes.count() return { 'both_voted_on': both_voted_on, 'exact_match_on': exact_match_on, 'politmus_score': score }
def import_mp_votes(subset=False): if MPVote.all().count() > 0: print "Import already complete" return subset_const = [ "Brighton, Kemptown", "Brighton, Pavillion", "Hove", "Hackney South and Shoreditch", "Edinburgh North, and Leith" ] subset_mp = [ "Caroline Lucas", "Simon Kirby", "Mike Weatherley", "Meg Hillier", "Mark Lazarowicz" ] question_list = {} csvfile = open('fixtures/mp_votes/vote_questions.csv', 'rU') for row in csv.reader(csvfile): d = Question() d.question = row[0] d.title = row[1] d.date = datetime.datetime.now() d.publicwhip_url = row[3] d.put() question_list[row[4]] = d mps_created = [] consts_created = [] for question in question_list: print question csvfile = open('fixtures/mp_votes/%s.csv' % question, 'rU') for row in csv.reader(csvfile): if subset and row[1] not in subset_const and row[0] not in subset_mp: continue try: v = MPVote(parent=question_list[question]) v.question = str(question_list[question].key()) v.mp_name = row[0] v.mp_slug = slugify(row[0]) v.mp_constituency = row[1] v.mp_party = normalise_party(row[2]).lower() v.selection = normalise_selection(row[3]) v.mp_whilst = get_whilst(row[2]) v.put() if v.mp_slug not in mps_created: mp = MP() mp.slug = v.mp_slug mp.name = v.mp_name mp.constituency = v.mp_constituency mp.party = v.mp_party mp.put() mps_created.append(v.mp_slug) if v.mp_constituency not in consts_created: const = Constituency() const.name = v.mp_constituency const.slug = slugify(v.mp_constituency) const.mp_name = v.mp_name const.mp_party = v.mp_party const.put() consts_created.append(v.mp_constituency) except: print "Failed insert"