def update_editors_agendas(request): if request.method == 'POST': vl_formset = VoteLinkingFormSet(request.POST) if vl_formset.is_valid(): # TODO: check the user's permission for a in vl_formset.cleaned_data: try: av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['vote_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote( agenda_id=int(a['agenda_id']), vote_id=int(a['vote_id']), score = a['weight'], reasoning = a['reasoning']) av.save() return HttpResponseRedirect(reverse('vote-detail', kwargs={'object_id':a['vote_id']})) else: # TODO: Error handling: what to do with illeal forms? pass else: return HttpResponseNotAllowed(['POST'])
def update_editors_agendas(request): if request.method == 'POST': vote_id = None vl_formset = VoteLinkingFormSet(request.POST) if vl_formset.is_valid(): # TODO: check the user's permission for a in vl_formset.cleaned_data: if a: if a['DELETE']: try: vote_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id=a['vote_id']) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create try: vote_id = a['vote_id'] print "vote id = %s" % vote_id av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id=a['vote_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote(agenda_id=int(a['agenda_id']), vote_id=int(a['vote_id']), score=a['weight'], reasoning=a['reasoning']) av.save() else: print "invalid form" if vote_id: return HttpResponseRedirect( reverse('vote-detail', kwargs={'object_id': vote_id})) else: return HttpResponseRedirect(reverse('vote-list')) else: # TODO: Error handling: what to do with illeal forms? print "invalid formset" return HttpResponseRedirect(reverse('vote-list')) else: return HttpResponseNotAllowed(['POST'])
def update_editors_agendas(request): if request.method == 'POST': vote_id = None vl_formset = VoteLinkingFormSet(request.POST) if vl_formset.is_valid(): # TODO: check the user's permission for a in vl_formset.cleaned_data: if a: if a['DELETE']: try: vote_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['vote_id']) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create try: vote_id = a['vote_id'] print "vote id = %s" % vote_id av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['vote_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote( agenda_id=int(a['agenda_id']), vote_id=int(a['vote_id']), score = a['weight'], reasoning = a['reasoning']) av.save() else: print "invalid form" if vote_id: return HttpResponseRedirect(reverse('vote-detail', kwargs={'object_id':vote_id})) else: return HttpResponseRedirect(reverse('vote-list')) else: # TODO: Error handling: what to do with illeal forms? print "invalid formset" return HttpResponseRedirect(reverse('vote-list')) else: return HttpResponseNotAllowed(['POST'])
def update_agendavote(request, agenda_id, vote_id): """ Update agendavote relation for specific agenda-vote pair """ agenda = get_object_or_404(Agenda, pk=agenda_id) vote = get_object_or_404(Vote, pk=vote_id) if request.method != 'POST': return HttpResponseNotAllowed(['POST']) if request.user not in agenda.editors.all(): return HttpResponseForbidden("User %s does not have privileges to change agenda %s" % (request.user,agenda)) try: action = request.POST['action'] except KeyError: return HttpResponseForbidden("POST must have an 'action' attribute") if vote in agenda.votes.all(): agendavote = agenda.agendavote_set.get(vote=vote) if action=='remove': agendavote.delete() return mock_api.get_vote_api(vote) if action=='reasoning': agendavote.reasoning = request.POST['reasoning'] agendavote.save() return mock_api.get_vote_api(vote) if action in score_text_to_score.keys(): agendavote.set_score_by_text(action) agendavote.save() return mock_api.get_vote_api(vote) return HttpResponse("Action '%s' wasn't accepted" % action) else: # agenda is not ascribed to this vote if request.POST['action']=='ascribe': agenda_vote = AgendaVote(agenda=agenda,vote=vote,reasoning="") agenda_vote.save() return mock_api.get_vote_api(vote) return HttpResponse("Action '%s' wasn't accepted. You must ascribe the agenda before anything else." % action)
def update_editors_agendas(request): if request.method == 'POST': object_type = request.POST.get('form-0-object_type', None) object_id = request.POST.get('form-0-vote_id', None) if object_type == 'vote': vl_formset = VoteLinkingFormSet(request.POST) else: vl_formset = MeetingLinkingFormSet(request.POST) if vl_formset.is_valid(): for a in vl_formset.cleaned_data: if a: # Check that the user is an editor of the agenda # he's trying to edit try: agenda = Agenda.objects.get(pk=a['agenda_id']) if request.user not in agenda.editors.all(): return HttpResponseForbidden() except Agenda.DoesNotExist: return HttpResponseForbidden() if a['object_type'] == 'vote': if a['DELETE']: try: object_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id=a['vote_id']) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create if (a['weight'] is not '' and a['importance'] is not ''): try: object_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id=a['vote_id']) av.score = a['weight'] av.importance = a['importance'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote(agenda_id=int( a['agenda_id']), vote_id=int(a['vote_id']), score=a['weight'], importance=a['importance'], reasoning=a['reasoning']) av.save() if a['object_type'] == 'committeemeeting': if a['DELETE']: try: object_id = a['vote_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id=a['vote_id']) av.delete() except AgendaMeeting.DoesNotExist: pass else: # not delete, so try to create try: object_id = a['vote_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id=a['vote_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaMeeting.DoesNotExist: av = AgendaMeeting( agenda_id=int(a['agenda_id']), meeting_id=int(a['vote_id']), score=a['weight'], reasoning=a['reasoning']) av.save() else: logger.info("invalid form") else: # TODO: Error handling: what to do with illeal forms? logger.info("invalid formset") logger.info("%s" % vl_formset.errors) if object_id: if object_type == 'vote': return HttpResponseRedirect( reverse('vote-detail', kwargs={'object_id': object_id})) else: return HttpResponseRedirect( reverse('committee-meeting', kwargs={'pk': object_id})) else: # no object id was found, return to list if object_type == 'vote': return HttpResponseRedirect(reverse('vote-list')) else: return HttpResponseRedirect(reverse('committee-list')) else: return HttpResponseNotAllowed(['POST'])
def update_editors_agendas(request): if request.method == 'POST': object_type = request.POST.get('form-0-object_type',None) object_id = request.POST.get('form-0-vote_id',None) if object_type=='vote': vl_formset = VoteLinkingFormSet(request.POST) else: vl_formset = MeetingLinkingFormSet(request.POST) if vl_formset.is_valid(): for a in vl_formset.cleaned_data: if a: # Check that the user is an editor of the agenda # he's trying to edit try: agenda = Agenda.objects.get(pk=a['agenda_id']) if request.user not in agenda.editors.all(): return HttpResponseForbidden() except Agenda.DoesNotExist: return HttpResponseForbidden() if a['object_type'] == 'vote': if a['DELETE']: try: object_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['vote_id']) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create if (a['weight'] is not '' and a['importance'] is not ''): try: object_id = a['vote_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['vote_id']) av.score = a['weight'] av.importance = a['importance'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote( agenda_id=int(a['agenda_id']), vote_id=int(a['vote_id']), score = a['weight'], importance = a['importance'], reasoning = a['reasoning']) av.save() if a['object_type'] == 'committeemeeting': if a['DELETE']: try: object_id = a['vote_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id = a['vote_id']) av.delete() except AgendaMeeting.DoesNotExist: pass else: # not delete, so try to create try: object_id = a['vote_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id = a['vote_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaMeeting.DoesNotExist: av = AgendaMeeting( agenda_id=int(a['agenda_id']), meeting_id=int(a['vote_id']), score = a['weight'], reasoning = a['reasoning']) av.save() else: logger.info("invalid form") else: # TODO: Error handling: what to do with illeal forms? logger.info("invalid formset") logger.info("%s" % vl_formset.errors) if object_id: if object_type=='vote': return HttpResponseRedirect(reverse('vote-detail', kwargs={'object_id':object_id})) else: return HttpResponseRedirect(reverse('committee-meeting', kwargs={'pk':object_id})) else: # no object id was found, return to list if object_type=='vote': return HttpResponseRedirect(reverse('vote-list')) else: return HttpResponseRedirect(reverse('committee-list')) else: return HttpResponseNotAllowed(['POST'])
def update_editors_agendas(request): if request.method == 'POST': object_type = request.POST.get('form-0-object_type',None) object_id = request.POST.get('form-0-obj_id',None) vl_formset = object_formset_classes[object_type](request.POST) if vl_formset.is_valid(): for a in vl_formset.cleaned_data: if a: # Check that the user is an editor of the agenda # he's trying to edit try: agenda = Agenda.objects.get(pk=a['agenda_id']) if request.user not in agenda.editors.all(): return HttpResponseForbidden() except Agenda.DoesNotExist: return HttpResponseForbidden() if a['object_type'] == 'vote': if a['DELETE']: try: object_id = a['obj_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['obj_id']) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create if (a['weight'] is not '' and a['importance'] is not ''): try: object_id = a['obj_id'] av = AgendaVote.objects.get( agenda__id=a['agenda_id'], vote__id = a['obj_id']) av.score = a['weight'] av.importance = a['importance'] av.reasoning = a['reasoning'] av.save() except AgendaVote.DoesNotExist: av = AgendaVote( agenda_id=int(a['agenda_id']), vote_id=int(a['obj_id']), score = a['weight'], importance = a['importance'], reasoning = a['reasoning']) av.save() if a['object_type'] == 'bill': if a['DELETE']: try: object_id = a['obj_id'] av = AgendaBill.objects.get( agenda__id=a['agenda_id'], bill__id = a['obj_id']) av.delete() except AgendaBill.DoesNotExist: pass else: # not delete, so try to create if (a['weight'] is not '' and a['importance'] is not ''): try: object_id = a['obj_id'] av = AgendaBill.objects.get( agenda__id=a['agenda_id'], bill__id = a['obj_id']) av.score = a['weight'] av.importance = a['importance'] av.reasoning = a['reasoning'] av.save() except AgendaBill.DoesNotExist: av = AgendaBill( agenda_id=int(a['agenda_id']), bill_id=int(a['obj_id']), score = a['weight'], importance = a['importance'], reasoning = a['reasoning']) av.save() if a['object_type'] == 'committeemeeting': if a['DELETE']: try: object_id = a['obj_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id = a['obj_id']) av.delete() except AgendaMeeting.DoesNotExist: pass else: # not delete, so try to create try: object_id = a['obj_id'] av = AgendaMeeting.objects.get( agenda__id=a['agenda_id'], meeting__id = a['obj_id']) av.score = a['weight'] av.reasoning = a['reasoning'] av.save() except AgendaMeeting.DoesNotExist: av = AgendaMeeting( agenda_id=int(a['agenda_id']), meeting_id=int(a['obj_id']), score = a['weight'], reasoning = a['reasoning']) av.save() else: logger.info("invalid form") else: # TODO: Error handling: what to do with illeal forms? logger.info("invalid formset") logger.info("%s" % vl_formset.errors) if object_type in object_redirect: if object_id: # return to object page return HttpResponseRedirect( reverse(object_redirect[object_type][0], kwargs={'pk':object_id})) else: # return to list return HttpResponseRedirect(reverse(object_redirect[object_type][1])) else: logger.warn('unknown object_type') return HttpResponseRedirect(reverse('main')) else: return HttpResponseNotAllowed(['POST'])
def update_editors_agendas(request): if request.method == "POST": object_type = request.POST.get("form-0-object_type", None) object_id = request.POST.get("form-0-obj_id", None) vl_formset = object_formset_classes[object_type](request.POST) if vl_formset.is_valid(): for a in vl_formset.cleaned_data: if a: # Check that the user is an editor of the agenda # he's trying to edit try: agenda = Agenda.objects.get(pk=a["agenda_id"]) if request.user not in agenda.editors.all(): return HttpResponseForbidden() except Agenda.DoesNotExist: return HttpResponseForbidden() if a["object_type"] == "vote": if a["DELETE"]: try: object_id = a["obj_id"] av = AgendaVote.objects.get(agenda__id=a["agenda_id"], vote__id=a["obj_id"]) av.delete() except AgendaVote.DoesNotExist: pass else: # not delete, so try to create if a["weight"] is not "" and a["importance"] is not "": try: object_id = a["obj_id"] av = AgendaVote.objects.get(agenda__id=a["agenda_id"], vote__id=a["obj_id"]) av.score = a["weight"] av.importance = a["importance"] av.reasoning = a["reasoning"] av.save() except AgendaVote.DoesNotExist: av = AgendaVote( agenda_id=int(a["agenda_id"]), vote_id=int(a["obj_id"]), score=a["weight"], importance=a["importance"], reasoning=a["reasoning"], ) av.save() if a["object_type"] == "bill": if a["DELETE"]: try: object_id = a["obj_id"] av = AgendaBill.objects.get(agenda__id=a["agenda_id"], bill__id=a["obj_id"]) av.delete() except AgendaBill.DoesNotExist: pass else: # not delete, so try to create if a["weight"] is not "" and a["importance"] is not "": try: object_id = a["obj_id"] av = AgendaBill.objects.get(agenda__id=a["agenda_id"], bill__id=a["obj_id"]) av.score = a["weight"] av.importance = a["importance"] av.reasoning = a["reasoning"] av.save() except AgendaBill.DoesNotExist: av = AgendaBill( agenda_id=int(a["agenda_id"]), bill_id=int(a["obj_id"]), score=a["weight"], importance=a["importance"], reasoning=a["reasoning"], ) av.save() if a["object_type"] == "committeemeeting": if a["DELETE"]: try: object_id = a["obj_id"] av = AgendaMeeting.objects.get(agenda__id=a["agenda_id"], meeting__id=a["obj_id"]) av.delete() except AgendaMeeting.DoesNotExist: pass else: # not delete, so try to create try: object_id = a["obj_id"] av = AgendaMeeting.objects.get(agenda__id=a["agenda_id"], meeting__id=a["obj_id"]) av.score = a["weight"] av.reasoning = a["reasoning"] av.save() except AgendaMeeting.DoesNotExist: av = AgendaMeeting( agenda_id=int(a["agenda_id"]), meeting_id=int(a["obj_id"]), score=a["weight"], reasoning=a["reasoning"], ) av.save() else: logger.info("invalid form") else: # TODO: Error handling: what to do with illeal forms? logger.info("invalid formset") logger.info("%s" % vl_formset.errors) if object_type in object_redirect: if object_id: # return to object page return HttpResponseRedirect(reverse(object_redirect[object_type][0], kwargs={"pk": object_id})) else: # return to list return HttpResponseRedirect(reverse(object_redirect[object_type][1])) else: logger.warn("unknown object_type") return HttpResponseRedirect(reverse("main")) else: return HttpResponseNotAllowed(["POST"])