示例#1
0
def volunteer(request, slot_id):
    # next = request.GET.get('next')
    slot = Slot.objects.get(id=slot_id)
    user_slot = User_Slot.objects.filter(parentSlot=slot,
                                         volunteer__isnull=True).first()
    slots_filled_by_this_user = User_Slot.objects.filter(
        parentSlot=slot, volunteer=request.user).first()

    if slot.parentEvent is not None:
        group = slot.parentEvent.parentGroup
    else:
        group = slot.parentGroup

    if slot.maxVolunteers == 0:  # and slots_filled_by_this_user is None:
        user_slot = User_Slot(parentSlot=slot, accepted="Yes")

    #
    # elif slots_filled_by_this_user is not None:
    # 	alert = Alert(user=request.user, text="Already volunteered", color=Alert.getRed())
    # 	alert.saveIP(request)
    # 	return redirect('/volunteer/slot/' + str(slot_id))
    elif user_slot is None:
        alert = Alert(user=request.user,
                      text="Already at Max Volunteers",
                      color=Alert.getRed())
        alert.saveIP(request)
        return redirect('/volunteer/slot/' + str(slot_id))

    user_slot.volunteer = request.user
    user_slot.accepted = "Yes"
    if slot.get_extra() is not None:
        ans = {}

        for i in slot.get_extra():
            if i != '':
                ans[i] = '-'
        user_slot.extraFields = ans
    user_slot.save()

    name = slot.title

    feed_entry = Feed_Entry(group=group,
                            user=request.user,
                            datetime=get_dt(),
                            description="Volunteered for \"" + name,
                            url="/volunteer/slot/" + str(slot.id),
                            private=slot.private)
    feed_entry.save()

    alert = Alert(user=request.user,
                  text="Volunteered for " + slot.title,
                  color=Alert.getGreen())
    alert.saveIP(request)

    return redirect('/volunteer/slot/' + str(slot.id))
示例#2
0
def join(request, group_id):
    group = Group.objects.get(id=group_id)
    if (group.get_is_member(request.user) == False):
        if (group.approvalNeeded):
            group.pendingUsers.add(request.user)
            group.save()

            alert = Alert(user=request.user,
                          text="Requested to join " + str(group.name) +
                          ", wating for organizer approval",
                          color=Alert.getGreen())
            alert.saveIP(request)

        else:
            group.volunteers.add(request.user)
            group.save()

            alert = Alert(user=request.user,
                          text="Joined " + str(group.name),
                          color=Alert.getGreen())
            alert.saveIP(request)

    return redirect('/groups/' + str(group_id))
示例#3
0
def volunteerForUser(request, slot_id, user_id):
    thisUser = User.objects.get(id=user_id)
    # next = request.GET.get('next')
    slot = Slot.objects.get(id=slot_id)
    group = slot.get_group()

    if group.get_is_organzer(request.user):
        user_slot = User_Slot.objects.filter(parentSlot=slot,
                                             volunteer__isnull=True).first()
        slots_filled_by_this_user = User_Slot.objects.filter(
            parentSlot=slot, volunteer=thisUser).first()
        # This stops people from signing up twice
        # if slots_filled_by_this_user is not None:
        # 	alert = Alert(user=thisUser, text="Already volunteered", color=Alert.getRed())
        # 	alert.saveIP(request)
        #	return redirect('/volunteer/slot/' + str(slot_id))
        if user_slot is None:
            addUserSlot(request, slot_id)
            user_slot = User_Slot.objects.filter(
                parentSlot=slot, volunteer__isnull=True).first()

        user_slot.volunteer = thisUser
        user_slot.accepted = "No"
        user_slot.save()

        name = slot.title

        feed_entry = Feed_Entry(group=group,
                                user=thisUser,
                                datetime=get_dt(),
                                description="Accept volunteer for " + name,
                                url="/volunteer/slot/" + str(slot.id),
                                private=slot.private)
        feed_entry.save()

        alert = Alert(user=thisUser,
                      text="Volunteered for " + slot.title,
                      color=Alert.getGreen())
        alert.saveIP(request)

        current_site = get_current_site(request)

        # Sends the user an email based on the email template and the info passed in here
        message = render_to_string(
            'emails/volentold.html', {
                'user': thisUser,
                'domain': current_site.domain,
                'slot': slot,
                'group': group,
            })

        mail_subject = 'You have been added to a slot'
        to_email = thisUser.email
        email = EmailMultiAlternatives(mail_subject, message, to=[to_email])
        email.content_subtype = 'html'
        email.mixed_subtype = 'related'
        fp = open('static/img/logos.ico/ms-icon-70x70.png', 'rb')
        logo = MIMEImage(fp.read())
        logo.add_header('Content-ID', '<logo>')
        email.attach(logo)
        email.send()

    return redirect('/volunteer/slot/' + str(slot.id))