示例#1
0
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
        })
示例#2
0
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})
示例#3
0
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})
示例#4
0
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})
示例#5
0
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)
        })
示例#6
0
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})