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"])