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