コード例 #1
0
ファイル: search.py プロジェクト: jasonkuster/scheduler
def search(request):
    status, id, cookie = check_login(request, 'http://scheduler.acm.case.edu/scheduler/searchtest/')
    toSend = {}
    criterion = ''   
    
    if request.method == 'GET':  
        ##checking if it matches something like EECS 132
        patt = re.compile('(\w{4}( )*(\d{1,4}|(\d{1.4}w)))')
        criterion = request.GET['criterion']
        originalCriterion = criterion;
        criterion = criterion.strip()
        
        
        if patt.match(criterion):
            str = string.replace(criterion, ' ', '')
            arr = [None]*2
            arr[0] = str[0:3]
            arr[1] = str[4:]
            classes = Instructs.objects.filter(meeting__meeting_class__dept__icontains=arr[0], meeting__meeting_class__class_number__istartswith=arr[1])
        else:
            classes = Instructs.objects.filter(Q(meeting__meeting_class__classname__icontains=criterion)
                                            | Q(meeting__meeting_class__dept__icontains=criterion)
                                            | Q(meeting__meeting_class__class_number__icontains=criterion)
                                            | Q(instructor__name__icontains=criterion))

        for c in classes:
            if Enrollment.objects.filter(student_id=id, event_id=c.meeting.id).exists():
                toSend[c] = True
            else:
                toSend[c] = False
    else:
        return HttpResponseBadRequest('Search Failed')
    
    response = render(request, 'search_result.html', {'classes' : toSend, 'searchid' : originalCriterion, 'student_id' : id})
    return response
コード例 #2
0
ファイル: schedule.py プロジェクト: jasonkuster/scheduler
def event_json(request):
    status, id, cookie = check_login(request, 'http://scheduler.acm.case.edu/scheduler/')
    setcookie = False
    if status == False:
        return redirect_to_cas('http://scheduler.acm.case.edu/scheduler/')
    if cookie != "":
        setcookie = True
    stu = Student.objects.get(case_id=id)
    enrolls = Enrollment.objects.filter(student__case_id=id)

    response_data = []
    for enroll in enrolls:
        event = Event.objects.get(id=enroll.event_id)
        start = request.GET.get('start', None)
        end = request.GET.get('end', None)

        start_date = dateutil.parser.parse(start)
        end_date = dateutil.parser.parse(end)

        date_to_start = event.start_date if event.start_date > start_date.date() else start_date.date()
        date_to_end = event.end_date if event.end_date < end_date.date() else end_date.date()

        for dt in rrule.rrule(rrule.DAILY, dtstart=date_to_start, until=date_to_end):
            event_data = {}
            event_data['id'] = enroll.event_id
            try:
                event_data['title'] = event.meetingtime.meeting_class.dept + ' ' + str(event.meetingtime.meeting_class.class_number)
            except Exception:
                event_data['title'] = event.customevent.event_name
            event_data['allDay'] = False

            if "Su" in event.recur_type and dt.weekday() == 6:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "M" in event.recur_type and dt.weekday() == 0:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "Tu" in event.recur_type and dt.weekday() == 1:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "W" in event.recur_type and dt.weekday() == 2:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "Th" in event.recur_type and dt.weekday() == 3:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "F" in event.recur_type and dt.weekday() == 4:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            elif "Sa" in event.recur_type and dt.weekday() == 5:
                event_data['start'] = str(dt.date().isoformat()) + 'T' + str(event.start_time.isoformat())
                event_data['end'] = str(dt.date().isoformat()) + 'T' + str(event.end_time.isoformat())
            else:
                continue
            response_data.append(event_data)

    response = HttpResponse(json.dumps(response_data), content_type="application/json")
    if setcookie == True:
        response.__setitem__('Set-Cookie', cookie)
    return response
コード例 #3
0
ファイル: share.py プロジェクト: jasonkuster/scheduler
def share(request):
    #check to see if the user is logged in
    #if not make the user login
    status, id, cookie = check_login(request, 'http://scheduler.acm.case.edu/scheduler/instructor/')
    setcookie = False
    if status == False:
        return redirect_to_cas('http://scheduler.acm.case.edu/scheduler/instructor/')
    if cookie != "":
        setcookie = True
    share_ids = Shares.objects.values_list('shareid', flat=True)
    rand = random.randint(1111111111, 9999999999)
    while rand in share_ids:
        rand = random.randint(1111111111, 9999999999)
コード例 #4
0
ファイル: customEvent.py プロジェクト: jasonkuster/scheduler
def customevent(request):
    #check to see if the user is logged in
    #if not make the user login
    status, id, cookie = check_login(request, 'http://scheduler.acm.case.edu/scheduler/instructor/')
    if status == False:
        return redirect_to_cas('http://scheduler.acm.case.edu/scheduler/instructor/')
    form = None
    if request.method == "POST":
        form = EventForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['event_title']
            start_time = form.cleaned_data['start_time']
            end_time = form.cleaned_data['end_time']
            sdate = form.cleaned_data['start_date']
            edate = form.cleaned_data['end_date']
            
            startTimeArr = parse_time(start_time)
            endTimeArr = parse_time(end_time)

            try:
                loc = form.cleaned_data['location']
            except:
                loc = ""

            dayStr = ''
            if form.cleaned_data['su']:
                dayStr += 'Su'
            if form.cleaned_data['m']:
                dayStr += 'M'
            if form.cleaned_data['tu']:
                dayStr += 'Tu'
            if form.cleaned_data['w']:
                dayStr += 'W'
            if form.cleaned_data['th']:
                dayStr += 'Th'
            if form.cleaned_data['f']:
                dayStr += 'F'
            if form.cleaned_data['sa']:
                dayStr += 'Sa'

            #event = CustomEvent(start_time=datetime.time(startTimeArr[0], startTimeArr[1]), end_time=datetime.time(endTimeArr[0], endTimeArr[1]), recur_type=days, event_name=name)
            event = CustomEvent(start_time=datetime.time(startTimeArr[0], startTimeArr[1]), end_time=datetime.time(endTimeArr[0], endTimeArr[1]), start_date=sdate, end_date=edate, recur_type=dayStr, event_name=name, location=loc)
            event.save()

            stu = Student.objects.get(case_id=id)
            enroll = Enrollment(student_id=stu.pk, event_id=event.id)
            enroll.save()
            return HttpResponseRedirect('/scheduler/')
    response = HttpResponseBadRequest('Custom Event Creation Failed')
    #response['submittedForm'] = form
    return response
コード例 #5
0
ファイル: share.py プロジェクト: jasonkuster/scheduler
def share(request):
    #check to see if the user is logged in
    #if not make the user login
    status, id, cookie = check_login(
        request, 'http://scheduler.acm.case.edu/scheduler/instructor/')
    setcookie = False
    if status == False:
        return redirect_to_cas(
            'http://scheduler.acm.case.edu/scheduler/instructor/')
    if cookie != "":
        setcookie = True
    share_ids = Shares.objects.values_list('shareid', flat=True)
    rand = random.randint(1111111111, 9999999999)
    while rand in share_ids:
        rand = random.randint(1111111111, 9999999999)
コード例 #6
0
ファイル: schedule.py プロジェクト: jasonkuster/scheduler
def schedule(request):
    #check to see if the user is logged in
    #if not make the user login
    status, id, cookie = check_login(request, 'http://scheduler.acm.case.edu/scheduler/')
    setcookie = False
    if status == False:
        return redirect_to_cas('http://scheduler.acm.case.edu/scheduler/')
    if cookie != "":
        setcookie = True
        
    eventForm = EventForm()

    response = render(request, 'schedule.html', {'eventForm' : eventForm, 'id' : id})
    if setcookie == True:
        response.__setitem__('Set-Cookie', cookie)
    return response
コード例 #7
0
ファイル: search.py プロジェクト: jasonkuster/scheduler
def search(request):
    status, id, cookie = check_login(
        request, 'http://scheduler.acm.case.edu/scheduler/searchtest/')
    toSend = {}
    criterion = ''

    if request.method == 'GET':
        ##checking if it matches something like EECS 132
        patt = re.compile('(\w{4}( )*(\d{1,4}|(\d{1.4}w)))')
        criterion = request.GET['criterion']
        originalCriterion = criterion
        criterion = criterion.strip()

        if patt.match(criterion):
            str = string.replace(criterion, ' ', '')
            arr = [None] * 2
            arr[0] = str[0:3]
            arr[1] = str[4:]
            classes = Instructs.objects.filter(
                meeting__meeting_class__dept__icontains=arr[0],
                meeting__meeting_class__class_number__istartswith=arr[1])
        else:
            classes = Instructs.objects.filter(
                Q(meeting__meeting_class__classname__icontains=criterion)
                | Q(meeting__meeting_class__dept__icontains=criterion)
                | Q(meeting__meeting_class__class_number__icontains=criterion)
                | Q(instructor__name__icontains=criterion))

        for c in classes:
            if Enrollment.objects.filter(student_id=id,
                                         event_id=c.meeting.id).exists():
                toSend[c] = True
            else:
                toSend[c] = False
    else:
        return HttpResponseBadRequest('Search Failed')

    response = render(request, 'search_result.html', {
        'classes': toSend,
        'searchid': originalCriterion,
        'student_id': id
    })
    return response
コード例 #8
0
ファイル: customEvent.py プロジェクト: jasonkuster/scheduler
def customevent(request):
    #check to see if the user is logged in
    #if not make the user login
    status, id, cookie = check_login(
        request, 'http://scheduler.acm.case.edu/scheduler/instructor/')
    if status == False:
        return redirect_to_cas(
            'http://scheduler.acm.case.edu/scheduler/instructor/')
    form = None
    if request.method == "POST":
        form = EventForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['event_title']
            start_time = form.cleaned_data['start_time']
            end_time = form.cleaned_data['end_time']
            sdate = form.cleaned_data['start_date']
            edate = form.cleaned_data['end_date']

            startTimeArr = parse_time(start_time)
            endTimeArr = parse_time(end_time)

            try:
                loc = form.cleaned_data['location']
            except:
                loc = ""

            dayStr = ''
            if form.cleaned_data['su']:
                dayStr += 'Su'
            if form.cleaned_data['m']:
                dayStr += 'M'
            if form.cleaned_data['tu']:
                dayStr += 'Tu'
            if form.cleaned_data['w']:
                dayStr += 'W'
            if form.cleaned_data['th']:
                dayStr += 'Th'
            if form.cleaned_data['f']:
                dayStr += 'F'
            if form.cleaned_data['sa']:
                dayStr += 'Sa'

            #event = CustomEvent(start_time=datetime.time(startTimeArr[0], startTimeArr[1]), end_time=datetime.time(endTimeArr[0], endTimeArr[1]), recur_type=days, event_name=name)
            event = CustomEvent(start_time=datetime.time(
                startTimeArr[0], startTimeArr[1]),
                                end_time=datetime.time(endTimeArr[0],
                                                       endTimeArr[1]),
                                start_date=sdate,
                                end_date=edate,
                                recur_type=dayStr,
                                event_name=name,
                                location=loc)
            event.save()

            stu = Student.objects.get(case_id=id)
            enroll = Enrollment(student_id=stu.pk, event_id=event.id)
            enroll.save()
            return HttpResponseRedirect('/scheduler/')
    response = HttpResponseBadRequest('Custom Event Creation Failed')
    #response['submittedForm'] = form
    return response