def accept_or_decline_nomination(request, nomination_id): """ 'View' that gets visited when an individual accepts/declines a nomination. """ if not Permissions.can_nominate(request.user): request.session['error_message'] = messages.ELECTION_NO_ACCEPT_PERM return redirect('elections:index') nom = get_object_or_404(Nomination, id=nomination_id) if not nom.nominee == request.user.userprofile.memberprofile: request.session['error_message'] = ('You can only accept or decline ' 'your own nominations.') return redirect('elections:index') if request.method == 'POST': request_body = request.POST else: request_body = request.GET if request_body.__contains__('accept'): accepted = (request_body.__getitem__('accept') == 'YES') nom.accepted = accepted nom.save() return HttpResponseRedirect( reverse('elections:my_nominations', args=(nom.election.id,)) )
def my_nominations(request,election_id): if not Permissions.can_nominate(request.user): request.session['error_message']='You must be logged in, have a profile, and be a member to view nominations.' return redirect('elections:index') e=get_object_or_404(Election,id=election_id) noms = Nomination.objects.filter(nominee=request.user.userprofile.memberprofile,election=e) context_dict = { 'my_nominations':noms, 'election':e, 'subsubnav':'my_nominations', } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) context = RequestContext(request, context_dict) template = loader.get_template('elections/my_nominations.html') return HttpResponse(template.render(context))
def my_nominations(request, election_id): if not Permissions.can_nominate(request.user): request.session[ 'error_message'] = 'You must be logged in, have a profile, and be a member to view nominations.' return redirect('elections:index') e = get_object_or_404(Election, id=election_id) noms = Nomination.objects.filter( nominee=request.user.userprofile.memberprofile, election=e) context_dict = { 'my_nominations': noms, 'election': e, 'subsubnav': 'my_nominations', } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) context = RequestContext(request, context_dict) template = loader.get_template('elections/my_nominations.html') return HttpResponse(template.render(context))
def accept_or_decline_nomination(request,nomination_id): if not Permissions.can_nominate(request.user): request.session['error_message']='You must be logged in, have a profile, and be a member to accept/decline a nomination.' return redirect('elections:index') nom = get_object_or_404(Nomination,id=nomination_id) if not nom.nominee == request.user.userprofile.memberprofile: request.session['error_message']='You can only accept or decline your own nominations.' return redirect('elections:index') if request.method=='POST': request_body = request.POST else: request_body = request.GET if request_body.__contains__('accept'): accepted= (request_body.__getitem__('accept')=='YES') nom.accepted=accepted nom.save() return HttpResponseRedirect(reverse('elections:my_nominations', args=(nom.election.id,)))
def my_nominations(request, election_id): """ Lists an individual's nominations and provides the option to accept/decline. """ if not Permissions.can_nominate(request.user): request.session['error_message'] = messages.ELECTION_NO_NOM_PERM return redirect('elections:index') e = get_object_or_404(Election, id=election_id) noms = Nomination.objects.filter( nominee=request.user.userprofile.memberprofile, election=e ) context_dict = { 'my_nominations': noms, 'election': e, 'subsubnav': 'my_nominations'+election_id, } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) template = loader.get_template('elections/my_nominations.html') return HttpResponse(template.render(context_dict, request))
def accept_or_decline_nomination(request, nomination_id): if not Permissions.can_nominate(request.user): request.session[ 'error_message'] = 'You must be logged in, have a profile, and be a member to accept/decline a nomination.' return redirect('elections:index') nom = get_object_or_404(Nomination, id=nomination_id) if not nom.nominee == request.user.userprofile.memberprofile: request.session[ 'error_message'] = 'You can only accept or decline your own nominations.' return redirect('elections:index') if request.method == 'POST': request_body = request.POST else: request_body = request.GET if request_body.__contains__('accept'): accepted = (request_body.__getitem__('accept') == 'YES') nom.accepted = accepted nom.save() return HttpResponseRedirect( reverse('elections:my_nominations', args=(nom.election.id, )))
def nominate(request, election_id): """ Form view for submitting nominations. """ if not Permissions.can_nominate(request.user): request.session['error_message'] = messages.ELECTION_NO_SUBMIT_NOM_PERM return redirect('elections:index') request.session['current_page'] = request.path e = get_object_or_404(Election, id=election_id) nomination = Nomination(election=e) nomination.nominator = request.user.userprofile form = NominationForm( request.POST or None, instance=nomination, election=e ) if request.method == 'POST': if form.is_valid(): instance = form.save(commit=False) nominee = instance.nominee position = instance.position existing_nominations = Nomination.objects.filter( nominee=nominee, position=position, election=e ) if existing_nominations.exists(): if instance.nominee == request.user.userprofile.memberprofile: existing_nominations[0].accepted = True existing_nominations[0].save() msg = ('Your self nomination was successfully submitted ' 'and accepted.') request.session['success_message'] = msg else: msg = 'This nomination has been previously submitted.' request.session['warning_message'] = msg elif instance.nominee == request.user.userprofile.memberprofile: instance.accepted = True instance.save() msg = ('Your self nomination was successfully submitted ' 'and accepted.') request.session['success_message'] = msg else: instance.save() instance.email_nominee() msg = ('Your nomination was successfully submitted, ' 'and the nominee emailed.') request.session['success_message'] = msg return HttpResponseRedirect( reverse('elections:list', args=(election_id,)) ) else: request.session['error_message'] = messages.GENERIC_SUBMIT_ERROR context_dict = { 'form': form, 'has_files': False, 'submit_name': 'Submit Nomination', 'back_button': { 'link': reverse( 'elections:list', args=(election_id,) ), 'text': 'List of Nominees' }, 'form_title': 'Election Nomination', 'help_text': ('Choose a member to nominate for an officer position. ' 'If you nominate someone other than yourself, they will ' 'be emailed to determine their acceptance.'), 'base': 'elections/base_elections.html', 'subsubnav': 'list', } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) template = loader.get_template('generic_form.html') return HttpResponse(template.render(context_dict, request))
def nominate(request,election_id): base_web = r'https://tbp.engin.umich.edu/' if not Permissions.can_nominate(request.user): request.session['error_message']='You must be logged in, have a profile, and be a member to submit a nomination' return redirect('elections:index') request.session['current_page']=request.path e=get_object_or_404(Election,id=election_id) nomination = Nomination(election=e) nomination.nominator = request.user.userprofile if request.method =='POST': form = NominationForm(request.POST,instance=nomination,election=e) if form.is_valid(): existing_nominations = Nomination.objects.filter(nominee=form.cleaned_data['nominee'],position=form.cleaned_data['position'],election=e) instance = form.save(commit=False) if existing_nominations.exists(): if instance.nominee == request.user.userprofile.memberprofile: existing_nominations[0].accepted=True existing_nominations[0].save() request.session['success_message']='Your self nomination was successfully submitted and accepted.' else: request.session['warning_message']='This nomination has been previously submitted.' elif instance.nominee == request.user.userprofile.memberprofile: instance.accepted=True instance.save() request.session['success_message']='Your self nomination was successfully submitted and accepted.' else: instance.save() #TODO move these to a more sensible location and use kyle & my email script recipient = instance.nominee instance.position recipient_email = recipient.get_email() position=instance.position url_stem = base_web+reverse('elections:accept_or_decline_nomination',args=(instance.id,)) accept_link = url_stem+r'?accept=YES' decline_link = url_stem+r'?accept=NO' if position.team_lead.exists(): team_lead_bit = '**Team Lead:** '+' and '.join( unicode(x) for x in position.team_lead.all()) else: team_lead_bit = '' if position.team_lead.count() < position.members.count(): if position.members.count() > 1: team_member_bit = '**Teams:** ' else: team_member_bit = '' team_member_bit+= ' and '.join(unicode(x) for x in position.members.all()) else: team_member_bit='' body = r'''Hello %(name)s, You've been nominated for %(position)s! Here's some information on it: %(team_info)s %(description)s To accept the nomination please click this link: %(accept_link)s or to decline click this link: %(decline_link)s You can also accept or decline by visiting the website. Regards, The TBP Election Chairs [email protected]'''%{'name':recipient.get_casual_name(),'position':position.name, 'description':position.description,'accept_link':accept_link,'decline_link':decline_link,'team_info':team_lead_bit+'\n'+team_member_bit} html_body=markdown(force_unicode(body),['nl2br'],safe_mode=True,enable_attributes=False) msg = EmailMultiAlternatives('You\'ve been nominated for an officer position!',body,'*****@*****.**',[recipient_email]) msg.attach_alternative(html_body,"text/html") msg.send() #send_mail('You\'ve been nominated for an officer position!',body,'*****@*****.**',[recipient_email],fail_silently=False) request.session['success_message']='Your nomination was successfully submitted, and the nominee emailed.' return HttpResponseRedirect(reverse('elections:list', args=(election_id,))) else: request.session['error_message']='There were errors in your submission' else: form = NominationForm(instance=nomination,election=e) context_dict = { 'form':form, 'has_files':False, 'submit_name':'Submit Nomination', 'back_button':{'link':reverse('elections:list',args=(election_id,)),'text':'List of Nominees'}, 'form_title':'Election Nomination', 'help_text':'Choose a member to nominate for an officer position. If you nominate someone other than yourself, they will be emailed to determine their acceptance.', 'base':'elections/base_elections.html', 'subsubnav':'list', } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) context = RequestContext(request, context_dict) template = loader.get_template('generic_form.html') return HttpResponse(template.render(context))
def nominate(request, election_id): base_web = r'https://tbp.engin.umich.edu/' if not Permissions.can_nominate(request.user): request.session[ 'error_message'] = 'You must be logged in, have a profile, and be a member to submit a nomination' return redirect('elections:index') request.session['current_page'] = request.path e = get_object_or_404(Election, id=election_id) nomination = Nomination(election=e) nomination.nominator = request.user.userprofile NominationForm = modelform_factory(Nomination, exclude=('nominator', 'accepted', 'election')) NominationForm.base_fields[ 'position'].queryset = e.officers_for_election.all().order_by('id') NominationForm.base_fields['nominee'].queryset = get_members().order_by( 'last_name') if request.method == 'POST': form = NominationForm(request.POST, instance=nomination) if form.is_valid(): existing_nominations = Nomination.objects.filter( nominee=form.cleaned_data['nominee'], position=form.cleaned_data['position'], election=e) instance = form.save(commit=False) if existing_nominations.exists(): if instance.nominee == request.user.userprofile.memberprofile: existing_nominations[0].accepted = True existing_nominations[0].save() request.session[ 'success_message'] = 'Your self nomination was successfully submitted and accepted.' else: request.session[ 'warning_message'] = 'This nomination has been previously submitted.' elif instance.nominee == request.user.userprofile.memberprofile: instance.accepted = True instance.save() request.session[ 'success_message'] = 'Your self nomination was successfully submitted and accepted.' else: instance.save() #TODO move these to a more sensible location and use kyle & my email script recipient = instance.nominee instance.position recipient_email = recipient.get_email() position = instance.position url_stem = base_web + reverse( 'elections:accept_or_decline_nomination', args=(instance.id, )) accept_link = url_stem + r'?accept=YES' decline_link = url_stem + r'?accept=NO' if position.team_lead.exists(): team_lead_bit = '**Team Lead:** ' + ' and '.join( unicode(x) for x in position.team_lead.all()) else: team_lead_bit = '' if position.team_lead.count() < position.members.count(): if position.members.count() > 1: team_member_bit = '**Teams:** ' else: team_member_bit = '' team_member_bit += ' and '.join( unicode(x) for x in position.members.all()) else: team_member_bit = '' body = r'''Hello %(name)s, You've been nominated for %(position)s! Here's some information on it: %(team_info)s %(description)s To accept the nomination please click this link: %(accept_link)s or to decline click this link: %(decline_link)s You can also accept or decline by visiting the website. Regards, The TBP Election Chairs [email protected]''' % { 'name': recipient.get_casual_name(), 'position': position.name, 'description': position.description, 'accept_link': accept_link, 'decline_link': decline_link, 'team_info': team_lead_bit + '\n' + team_member_bit } html_body = markdown(force_unicode(body), ['nl2br'], safe_mode=True, enable_attributes=False) msg = EmailMultiAlternatives( 'You\'ve been nominated for an officer position!', body, '*****@*****.**', [recipient_email]) msg.attach_alternative(html_body, "text/html") msg.send() #send_mail('You\'ve been nominated for an officer position!',body,'*****@*****.**',[recipient_email],fail_silently=False) request.session[ 'success_message'] = 'Your nomination was successfully submitted, and the nominee emailed.' return HttpResponseRedirect( reverse('elections:list', args=(election_id, ))) else: request.session[ 'error_message'] = 'There were errors in your submission' else: form = NominationForm(instance=nomination) context_dict = { 'form': form, 'has_files': False, 'submit_name': 'Submit Nomination', 'back_button': { 'link': reverse('elections:list', args=(election_id, )), 'text': 'List of Nominees' }, 'form_title': 'Election Nomination', 'help_text': 'Choose a member to nominate for an officer position. If you nominate someone other than yourself, they will be emailed to determine their acceptance.', 'base': 'elections/base_elections.html', 'subsubnav': 'list', } context_dict.update(get_common_context(request)) context_dict.update(get_permissions(request.user)) context = RequestContext(request, context_dict) template = loader.get_template('generic_form.html') return HttpResponse(template.render(context))