Example #1
0
    def post(self):
        
        message = ""
        assignToSyllabus = self.request.get('assignToSyllabus')
        loadFile = self.request.get('loadFile')
        generateDates = self.request.get('generateCalendar')
        rowInsert = self.request.get('insertRow')
        rowRemove = self.request.get('removeRow')
        save = self.request.get('save')
        
        user = self.current_user
        syllabus = self.current_syllabus
        term = self.current_term


        syllabusCalendars = CalendarClass.query(ancestor=user.key).filter(CalendarClass.workingCalendar == True).fetch()
        if syllabusCalendars:
            #should have exactly 1 calendar
            for i in syllabusCalendars:
                mySched = i
        else:
            #should not be reachable state
            mySched = None
            
        if assignToSyllabus:
            assign = self.request.get('onSyllabus')
            if assign:
                if mySched:
                    if not mySched.onSyllabus:
                        mySched.workingCalendar = False
                        mySched.put()
                        onScheduleCalendar = CalendarClass.query(ancestor=syllabus.key).filter(CalendarClass.onSyllabus == True).fetch()
                        if onScheduleCalendar:
                            for i in onScheduleCalendar:
                                i.key.delete()                                
                        mySched = mySched.clone(syllabus.key)
                        mySched.onSyllabus = True
                        mySched.workingCalendar = True
                        mySched.put()
                    
        if loadFile:
            message = "loadFile"
            loadFileName = self.request.get('fileName')
            if loadFileName == 'new': 
                message = "newFile"
                if mySched:
                    mySched.workingCalendar = False
                    mySched.put()

                if syllabus.info and term and syllabus.info.days:            
                    mySched = CalendarClass(parent = user.key)
                    mySched.schedule.append('Date')
                    mySched.schedule.append('Reading')
                    mySched.schedule.append('Topic')
                    mySched.workingCalendar = True
                    
                    if 'M' in syllabus.info.days:
                        mySched.meetDays.append(0)                        
                    if 'T' in syllabus.info.days:
                        mySched.meetDays.append(1)
                    if 'W' in syllabus.info.days:
                        mySched.meetDays.append(2)
                    if 'R' in syllabus.info.days:
                        mySched.meetDays.append(3)
                    if 'F' in syllabus.info.days:
                        mySched.meetDays.append(4)
                        
                    mySched.startMonth = int(syllabus.info.startDate.split('/')[0])
                    mySched.startDate = int(syllabus.info.startDate.split('/')[1])
                    mySched.startYear = int(term.year)
                    mySched.numWeeks = 15
                    #mySched.generateDates()
                    mySched.myFilename = syllabus.info.subject + "-" + str(syllabus.info.number) + "-" + term.semester + str(term.year)
                        
                    mySched.put()
                else:                    
                    mySched = CalendarClass(parent = user.key)
                    mySched.schedule.append('Date')
                    mySched.schedule.append('Reading')
                    mySched.schedule.append('Topic')
                    mySched.workingCalendar = True
                    mySched.put()
            else:
                savedCalendars = CalendarClass.query(ancestor=user.key).filter(CalendarClass.workingCalendar == False).fetch()
                queriedCalendars = []
                for i in savedCalendars:
                    queriedCalendars.append(i)
                if mySched:
                    mySched.workingCalendar = False
                    mySched.put()
                mySched = queriedCalendars[int(loadFileName)]
                mySched.workingCalendar = True
                mySched.put()
        
        if generateDates:
            message = "generateDates"
            try:
                startMonth = int(self.request.get("startMonth"))
                startDate = int(self.request.get("startDate"))
                startYear = int(self.request.get("startYear"))
                numWeeks = int(self.request.get("weeksThisSemester"))
            except:
                message = "invalid input"
                startMonth = mySched.startMonth
                startDate = mySched.startDate
                startYear = mySched.startYear
                numWeeks = mySched.numWeeks
            
            meetMonday = self.request.get('Monday')
            meetTuesday = self.request.get('Tuesday')
            meetWednesday = self.request.get('Wednesday')
            meetThursday = self.request.get('Thursday')
            meetFriday = self.request.get('Friday')
            meetSaturday = self.request.get('Saturday')
            meetSunday = self.request.get('Sunday')

            mySched.startMonth = startMonth
            mySched.startDate = startDate
            mySched.startYear = startYear
            mySched.numWeeks = numWeeks
            mySched.meetDays = []
            if meetMonday:
                mySched.meetDays.append(0)
            if meetTuesday:
                mySched.meetDays.append(1)
            if meetWednesday:
                mySched.meetDays.append(2)
            if meetThursday:
                mySched.meetDays.append(3)
            if meetFriday:
                mySched.meetDays.append(4)
            if meetSaturday:
                mySched.meetDays.append(5)
            if meetSunday:
                mySched.meetDays.append(6)
                
            mySched.generateDates()
            mySched.put()
                
        if rowInsert:
            message = "insertRow"
            try:
                mySched.insertNewRowAfter(int(self.request.get("targetRowInsert")))
                mySched.put()
            except:
                message = "invalidInput"
                
        if rowRemove:
            message = "removeRow"
            try:
                mySched.deleteRow(int(self.request.get("targetRowRemove")))
                mySched.put()
            except:
                message = "invalidInput"
        
        if save:
            message = "saved"
            newFileName = self.request.get('fileName')
            if newFileName == mySched.myFilename:                
                for i in range(len(mySched.schedule)):
                    for j in range(3):
                        mySched.setCell(j,i,self.request.get("r"+str(i)+"c"+str(j)))            
            else:
                mySched.workingCalendar = False
                mySched.put()
                mySched = mySched.clone(user.key)
                for i in range(len(mySched.schedule)):
                    for j in range(3):
                        mySched.setCell(j,i,self.request.get("r"+str(i)+"c"+str(j)))            
                mySched.myFilename = newFileName
                mySched.workingCalendar = True
            mySched.put()
            
        return self.redirect('/editcalendar')