def event(request, event_id): event = Event.objects.get(id=event_id) is_organizer = Group.get_is_organzer(event.parentGroup, request.user) volunteer = request.user slots = Slot.objects.order_by('start') return render( request, 'volunteer/event.html', { 'event': event, 'slots': slots, 'is_organizer': is_organizer, 'volunteer': volunteer })
def addSingleSlot(request, group_id): group = Group.objects.get(id=group_id) if not Group.get_is_organzer(group, request.user): alert = Alert(user=request.user, text="Only organizers can add single slots", color=Alert.getRed()) alert.saveIP(request) return redirect('/volunteer/slots') if request.method == 'GET': form = NewSlotForm(user=request.user, parentEvent=None, initial={'private': group.private}) else: form = NewSlotForm(request.POST, user=request.user, parentEvent=None, initial={'private': group.private}) if form.is_valid(): slot = form.save(commit=False) slot.parentGroup = group slot.save() ans = OrderedDict() for i in slot.get_extra(): if i != '' and i != ' ': ans[i] = '-' for x in range(0, slot.maxVolunteers): user_slot = User_Slot(volunteer=None, parentSlot=slot) user_slot.save_extra(ans) user_slot.save() feed_entry = Feed_Entry(group=group, user=request.user, datetime=get_dt(), description="Created single slot \"" + str(slot.title), url="/volunteer/slot/" + str(slot.id), private=False) feed_entry.save() alert = Alert(user=request.user, text="Created slot " + slot.title, color=Alert.getBlue()) alert.saveIP(request) return redirect('/volunteer/slots/' + str(slot.id)) return render(request, 'organizer/add_slot.html', {'form': form})
def editEvent(request, event_id): event = Event.objects.get(id=event_id) group = event.parentGroup if not Group.get_is_organzer(group, request.user): Alert.not_permitted(request) return redirect('/volunteer/event/' + str(event.id)) if request.method == 'POST': form = UpdateEventForm(request.POST, id=event_id) if form.is_valid(): data = form.save(commit=False) event.name = data['title'] event.description = data['description'] event.location = data['location'] event.address = data['address'] event.city = data['city'] event.state = data['state'] event.zip_code = data['zip_code'] event.start = data['start'] event.end = data['end'] event.private = data['private'] event.save() alert = Alert(user=request.user, text="Updated Event " + event.name, color=Alert.getBlue()) alert.saveIP(request) return redirect('eventView', event_id) form = UpdateEventForm(id=event_id, initial={ 'title': event.name, 'description': event.description, 'location': event.location, 'address': event.address, 'city': event.city, 'state': event.state, 'zip_code': event.zip_code, 'start': event.start.strftime("%Y-%m-%dT%H:%M"), 'end': event.end.strftime("%Y-%m-%dT%H:%M"), 'private': event.private }) return render(request, 'organizer/edit_event.html', {'form': form})
def addEvent(request, group_id): group = Group.objects.get(id=group_id) if not Group.get_is_organzer(group, request.user): Alert.not_permitted(request) return redirect('/volunteer/events') if request.method == 'POST': form = NewEventForm(request.POST, user=request.user, parentGroup=group, initial={'private': group.private}) if form.is_valid(): event = form.save(commit=False) event.save() feed_entry = Feed_Entry(group=group, user=request.user, datetime=get_dt(), description="Created Event \"" + event.name + "\"", url="/volunteer/event/" + str(event.id), private=False) feed_entry.save() alert = Alert(user=request.user, text="Created event " + event.name, color=Alert.getBlue()) alert.saveIP(request) return redirect('/volunteer/events') else: form = NewEventForm(user=request.user, parentGroup=group, initial={'private': group.private}) # Filter this by single slot events in the future return render(request, 'organizer/add_event.html', {'form': form})
def slot(request, slot_id): slot = Slot.objects.get(id=slot_id) event = slot.parentEvent private = slot.private if (slot.parentEvent != None): is_organizer = Group.get_is_organzer(slot.parentEvent.parentGroup, request.user) else: is_organizer = Group.get_is_organzer(slot.parentGroup, request.user) user_slots = User_Slot.objects.filter(parentSlot=slot) is_volunteered = not (User_Slot.objects.filter( parentSlot=slot, volunteer=request.user).first() == None) pendingAccept = False if is_volunteered: for user_slot in User_Slot.objects.filter(parentSlot=slot, volunteer=request.user): if user_slot.accepted == "No": pendingAccept = True break volunteer = request.user specific_user_slot = User_Slot.objects.filter( parentSlot=slot, volunteer=request.user).first() hasV = User_Slot.objects.filter(parentSlot=slot, volunteer__isnull=False) noV = User_Slot.objects.filter(parentSlot=slot, volunteer__isnull=True) if (len(User_Slot.objects.filter(parentSlot=slot)) != 0): percentFilled = int( len( User_Slot.objects.filter(parentSlot=slot).exclude( volunteer=None)) / len(User_Slot.objects.filter(parentSlot=slot)) * 100) else: percentFilled = 0 for i in hasV: i.prep_html() if pendingAccept: alert = Alert( user=request.user, text="You have been requested to volunteer for this slot", color=Alert.getBlue()) alert.saveIP(request) return render( request, 'volunteer/slot.html', { 'slot': slot, 'user_slots': hasV, 'event': event, 'empty_slot': noV, 'full': User_Slot.objects.filter(parentSlot=slot, volunteer__isnull=True).first(), 'is_organizer': is_organizer, 'percentFilled': percentFilled, 'is_volunteered': is_volunteered, 'offer': pendingAccept, 'private': private, 'specific_user_slot': specific_user_slot, 'extra': (list(user_slots[0].get_extra().keys()) if (len(user_slots) > 0) else []), 'single': (slot.parentEvent == None) })
def addSlot(request, event_id): parentEvent = Event.objects.get(pk=event_id) group = parentEvent.parentGroup if not Group.get_is_organzer(group, request.user): Alert.not_permitted(request) return redirect('/volunteer/event/' + str(event.id)) parentEvent = Event.objects.get(pk=event_id) if (request.method == 'GET'): form = NewSlotForm(user=request.user, parentEvent=parentEvent, initial={ 'private': parentEvent.private, 'start': parentEvent.start.strftime("%Y-%m-%dT%H:%M"), 'end': parentEvent.end.strftime("%Y-%m-%dT%H:%M") }) else: # This line assumes the contents of the GET side of the if statement have already run (they should have) but its kinda janky form = NewSlotForm(request.POST, user=request.user, parentEvent=parentEvent, initial={ 'private': parentEvent.private, 'start': parentEvent.start.strftime("%Y-%m-%dT%H:%M"), 'end': parentEvent.end.strftime("%Y-%m-%dT%H:%M") }) if form.is_valid(): slot = form.save(commit=False) slot.save() ans = OrderedDict() for i in slot.get_extra(): if i != '' and i != ' ': ans[i] = '-' print('ans for add is', ans) for x in range(0, slot.maxVolunteers): user_slot = User_Slot(volunteer=None, parentSlot=slot) user_slot.save_extra(ans) user_slot.save() feed_entry = Feed_Entry(group=group, user=request.user, datetime=get_dt(), description="Created slot \"" + str(slot.title) + "\" in event \"" + str(slot.parentEvent.name) + "\"", url="/volunteer/slot/" + str(slot.id), private=False) feed_entry.save() alert = Alert(user=request.user, text="Created slot " + slot.title, color=Alert.getBlue()) alert.saveIP(request) return redirect('eventView', parentEvent.id) return render(request, 'organizer/add_slot.html', {'form': form})