Esempio n. 1
0
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,))
    )
Esempio n. 2
0
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))
Esempio n. 3
0
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))
Esempio n. 4
0
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,)))
Esempio n. 5
0
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))
Esempio n. 6
0
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, )))
Esempio n. 7
0
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))
Esempio n. 8
0
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))
Esempio n. 9
0
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))