Ejemplo n.º 1
0
def addUserSlot(request, slot_id):
    slot = Slot.objects.get(id=slot_id)
    group = slot.parentGroup
    if group is None:
        group = slot.parentEvent.parentGroup
    if not group.get_is_organzer(request.user):
        Alert.not_permitted(request)
        return redirect('/volunteer/slot/' + str(slot.id))

    if group.get_is_organzer(request.user):
        ans = OrderedDict()
        for i in slot.get_extra():
            if i != '' and i != ' ':
                ans[i] = '-'
        user_slot = User_Slot(parentSlot=slot)
        user_slot.save_extra(ans)
        user_slot.save()

        alert = Alert(user=request.user,
                      text="Added a volunteer opening",
                      color=Alert.getBlue())
        alert.saveIP(request)
    else:
        alert = Alert(user=request.user,
                      text="Only organizers can add volunteer openings",
                      color=Alert.getRed())
        alert.saveIP(request)
    return redirect('/volunteer/slot/' + str(slot_id))
Ejemplo n.º 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})
Ejemplo n.º 3
0
def update(request, group_id):
    group = Group.objects.get(id=group_id)
    owner = group.owner
    if request.user.is_authenticated():
        form = EditGroupForm(request.POST, id=group_id)
        if form.is_valid():
            data = form.save(commit=False)
            group.name = data['name']
            group.tagline = data['tagline']
            group.description = data['description']
            group.email = data['email']
            group.website = data['website']
            group.location = data['location']
            group.address = data['address']
            group.city = data['city']
            group.state = data['state']
            group.zip_code = data['zip_code']
            group.approvalNeeded = data['approvalNeeded']
            group.private = data['private']

            group.save()

            alert = Alert(user=request.user,
                          text="Updated group " + group.name,
                          color=Alert.getBlue())
            alert.saveIP(request)

            return redirect("/groups/" + str(group.id))

    form = EditGroupForm(id=group_id,
                         initial={
                             'name': group.name,
                             'tagline': group.tagline,
                             'description': group.description,
                             'email': group.email,
                             'website': group.website,
                             'location': group.location,
                             'address': group.address,
                             'city': group.city,
                             'state': group.state,
                             'zip_code': group.zip_code,
                             'approvalNeeded': group.approvalNeeded,
                             'private': group.private
                         })

    return render(request, 'groups/edit_group.html', {'form': form})
Ejemplo n.º 4
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})
Ejemplo n.º 5
0
def add(request):
    if request.user.is_authenticated():
        if request.method == 'GET':
            form = NewGroupForm(owner=request.user)
        else:
            form = NewGroupForm(request.POST, owner=request.user)
            if form.is_valid():
                group = form.save(commit=False)
                group.save()

                alert = Alert(user=request.user,
                              text="Created group " + group.name,
                              color=Alert.getBlue())
                alert.saveIP(request)

                return redirect("/groups/" + str(group.id))

        return render(request, 'groups/add_group.html', {'form': form})

    else:
        return redirect('login')
Ejemplo n.º 6
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})
Ejemplo n.º 7
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)
        })
Ejemplo n.º 8
0
def editSlot(request, slot_id):
    slot = Slot.objects.get(id=slot_id)
    parentEvent = slot.parentEvent
    group = slot.parentGroup
    if (group == None):
        group = slot.parentEvent.parentGroup
    if not group.get_is_organzer(request.user):
        Alert.not_permitted(request)
        return redirect('/volunteer/slot/' + str(slot.id))

    if request.method == 'POST':
        form = UpdateSlotForm(request.POST, id=slot_id)
        if form.is_valid():
            data = form.save(commit=False)
            slot.start = data['start']
            slot.end = data['end']
            slot.title = data['title']
            slot.description = data['description']
            slot.location = data['location']
            slot.paymentPerHour = data['paymentPerHour']
            slot.extraFields = data['extraFields'].replace(' ', '')
            slot.private = data['private']

            unlimited = data['unlimited']
            if (unlimited):
                slot.maxVolunteers = 0
            else:
                slot.maxVolunteers = 1

            slot.save()

            newFields = slot.get_extra()
            for user in User_Slot.objects.filter(parentSlot=slot):
                ans = OrderedDict()
                for a in newFields:
                    if a != '':
                        val = ''
                        if a in list(user.get_extra().keys()):
                            val = user.get_extra()[a]

                        if val != '' and val != ' ':
                            ans[a] = val
                        else:
                            ans[a] = '-'
                        print(ans)
                user.save_extra(ans)
                user.save()

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

            alert = Alert(user=request.user,
                          text="Updated Slot " + slot.title,
                          color=Alert.getBlue())
            alert.saveIP(request)

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

    form = UpdateSlotForm(id=slot_id,
                          initial={
                              'title': slot.title,
                              'description': slot.description,
                              'location': slot.location,
                              'start': slot.start.strftime("%Y-%m-%dT%H:%M"),
                              'end': slot.end.strftime("%Y-%m-%dT%H:%M"),
                              'paymentPerHour': slot.paymentPerHour,
                              'extraFields': slot.extraFields,
                              'private': slot.private,
                              'unlimited': (slot.maxVolunteers == 0)
                          })

    return render(request, 'organizer/edit_slot.html', {'form': form})
Ejemplo n.º 9
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})