def get(self): params = self.request.params context = { } context = login.generateLogInOutContextInfo(self, context) """Get user information""" user = users.get_current_user(); context['user'] = user; if user: context['userId'] = user.user_id(); context['userEmail'] = user.email(); """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime); sessions = sessions_query.fetch(1000000); context['sessions'] = sessions; """Query all reservations""" reservations_query = reservations_datastore.Reservation.query(ancestor=reservations_datastore.reservations_key()).order(-reservations_datastore.Reservation.reservationStartTime); reservations = reservations_query.fetch(1000000); context['reservations'] = reservations; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; context['str'] = str; contents = JINJA_ENVIRONMENT.get_template('index.html').render(context) self.response.write(contents)
def post(self): params = self.request.params context = { } context = login.generateLogInOutContextInfo(self, context) """Get user information""" user = users.get_current_user(); context['user'] = user; if user: context['userId'] = user.user_id(); context['userEmail'] = user.email(); """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime); sessions = sessions_query.fetch(1000000); context['sessions'] = sessions; """Find matching session""" matchingSessions = []; for session in sessions: sessionTags = str(session.sessionTags).split(","); for tag in sessionTags: if tag.strip() == params['tagName'].strip(): matchingSessions.append(session); context['str'] = str; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; context['sessions'] = matchingSessions; context['tagName'] = params['tagName']; contents = JINJA_ENVIRONMENT.get_template('tag.html').render(context) self.response.write(contents)
def post(self): params = self.request.params context = {} context = login.generateLogInOutContextInfo(self, context) """Get user information""" user = users.get_current_user() context["user"] = user if user: context["userId"] = user.user_id() context["userEmail"] = user.email() context["seekUserName"] = params["seekUserName"] context["seekUserId"] = params["seekUserId"] """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order( -sessions_datastore.Session.sessionStartTime ) sessions = sessions_query.fetch(1000000) context["sessions"] = sessions """Query all reservations""" reservations_query = reservations_datastore.Reservation.query( ancestor=reservations_datastore.reservations_key() ).order(-reservations_datastore.Reservation.reservationTime) reservations = reservations_query.fetch(1000000) context["reservations"] = reservations context["str"] = str context["present"] = datetime.datetime.now() context["datetime"] = datetime contents = JINJA_ENVIRONMENT.get_template("user.html").render(context) self.response.write(contents)
def post(self): params = self.request.params context = {} context = login.generateLogInOutContextInfo(self, context) """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order( -sessions_datastore.Session.sessionStartTime ) sessions = sessions_query.fetch(1000000) context["sessions"] = sessions contents = JINJA_ENVIRONMENT.get_template("user.html").render(context) self.response.write(contents)
def redirectToIndexPage(self, context): params = self.request.params context = {} """Generate log in/out information""" context = login.generateLogInOutContextInfo(self, context) """Get user information""" user = users.get_current_user() context["user"] = user if user: context["userId"] = user.user_id() context["userEmail"] = user.email() """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order( -sessions_datastore.Session.sessionStartTime ) sessions = sessions_query.fetch(1000000) context["sessions"] = sessions """Query all reservations""" reservations_query = reservations_datastore.Reservation.query( ancestor=reservations_datastore.reservations_key() ).order(-reservations_datastore.Reservation.reservationTime) reservations = reservations_query.fetch(1000000) context["reservations"] = reservations sessionsGUIDByLastReservation = [] sessionsByLastReservation = [] for reservation in reservations: if not (reservation.sessionGUID in sessionsGUIDByLastReservation): sessionsGUIDByLastReservation.append(reservation.sessionGUID) for session in sessions: if session.sessionGUID == reservation.sessionGUID: sessionsByLastReservation.append(session) break for session in sessions: if not (session in sessionsByLastReservation): sessionsByLastReservation.append(session) context["sessionsByLastReservation"] = sessionsByLastReservation context["present"] = datetime.datetime.now() context["datetime"] = datetime context["str"] = str return context
def post(self): params = self.request.params context = { } """Generate log in/out information""" context = login.generateLogInOutContextInfo(self, context) """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime); sessions = sessions_query.fetch(1000000); context['sessions'] = sessions; """Query all reservations""" reservations_query = reservations_datastore.Reservation.query(ancestor=reservations_datastore.reservations_key()).order(-reservations_datastore.Reservation.reservationTime); reservations = reservations_query.fetch(1000000); context['reservations'] = reservations; """Get the selected session""" context['sessionGUID'] = params['sessionGUID']; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; contents = JINJA_ENVIRONMENT.get_template('xmlpage.html').render(context) self.response.write(contents)
def post(self): params = self.request.params context = { } context = login.generateLogInOutContextInfo(self, context) """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime); sessions = sessions_query.fetch(1000000); context['sessions'] = sessions; """Parse HTML date and time inputs into datetime object""" rawStartTimeInput = params['session_start_time']; startDate = rawStartTimeInput.split("T")[0]; startTime = rawStartTimeInput.split("T")[1]; startDateTokens = startDate.split("-"); startTimeTokens = startTime.split(":"); parsedStartTimeInput = datetime.datetime(int(startDateTokens[0]), int(startDateTokens[1]), int(startDateTokens[2]), int(startTimeTokens[0]), int(startTimeTokens[1])); rawEndTimeInput = params['session_end_time']; endDate = rawEndTimeInput.split("T")[0]; endTime = rawEndTimeInput.split("T")[1]; endDateTokens = endDate.split("-"); endTimeTokens = endTime.split(":"); parsedEndTimeInput = datetime.datetime(int(endDateTokens[0]), int(endDateTokens[1]), int(endDateTokens[2]), int(endTimeTokens[0]), int(endTimeTokens[1])); sessionGUID = str(uuid.uuid4()); """Add template values""" context['notification'] = 'Session Created!'; context['sessionResponse'] = True; context['sessionGUID'] = sessionGUID; context['sessionInstructor'] = users.get_current_user().nickname(); context['sessionOwner'] = users.get_current_user().user_id(); context['sessionEmail'] = users.get_current_user().email(); context['sessionName'] = params['session_name']; context['sessionStartTime'] = parsedStartTimeInput; context['sessionEndTime'] = parsedEndTimeInput; context['sessionTags'] = params['session_tags']; context['sessionRawStartTime'] = rawStartTimeInput; context['sessionRawEndTime'] = rawEndTimeInput; """Create session for data store""" session = sessions_datastore.Session(parent = sessions_datastore.sessions_key()); session.sessionGUID = sessionGUID; session.sessionInstructor = users.get_current_user().nickname(); session.sessionOwner = users.get_current_user().user_id(); session.sessionEmail = users.get_current_user().email(); session.sessionName = params['session_name']; session.sessionStartTime = parsedStartTimeInput; session.sessionEndTime = parsedEndTimeInput; session.sessionTags = params['session_tags']; session.sessionRawStartTime = rawStartTimeInput; session.sessionRawEndTime = rawEndTimeInput; """Determine if new session is valid, handle appropriately""" present = datetime.datetime.now(); if session.sessionStartTime > present and session.sessionStartTime < session.sessionEndTime: isValidNewSession = True; for sessionClone in sessions: if session.sessionOwner == sessionClone.sessionOwner and ((session.sessionStartTime >= sessionClone.sessionStartTime and session.sessionStartTime < sessionClone.sessionEndTime) or (sessionClone.sessionStartTime < session.sessionEndTime and session.sessionEndTime <= sessionClone.sessionEndTime)): isValidNewSession = False; if isValidNewSession: session.put(); context['notification'] = 'Session created!'; else: context['notification'] = 'Session overlaps an existing session!'; elif session.sessionStartTime <= present: context['notification'] = 'Invalid start time specified!'; elif session.sessionStartTime > session.sessionEndTime: context['notification'] = 'Invalid end time specified!'; contents = JINJA_ENVIRONMENT.get_template('create_session.html').render(context) self.response.write(contents)
def post(self): params = self.request.params; context = { }; context = login.generateLogInOutContextInfo(self, context) if 'delete_form_submit' in params: """Query all reservations""" reservations_query = reservations_datastore.Reservation.query(ancestor=reservations_datastore.reservations_key()).order(reservations_datastore.Reservation.reservationStartTime); reservations = reservations_query.fetch(1000000); """Delete the reservation specified""" for reservation in reservations: if reservation.reservationGUID == params['reservationGUID']: reservation.key.delete(); if 'session_search_submit' in params: """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime) sessions = sessions_query.fetch(1000000); matchedSessions = []; sessionSearched = params['sessionSearchText']; for session in sessions: if session.sessionName == sessionSearched: matchedSessions.append(session); context['sessions'] = matchedSessions; context['str'] = str; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; contents = JINJA_ENVIRONMENT.get_template('search.html').render(context) self.response.write(contents) return; if 'session_search_by_time_submit' in params: """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime) sessions = sessions_query.fetch(1000000); matchedSessions = []; searchStartTime = params['reservation_start_time']; startDate = searchStartTime.split("T")[0]; startTime = searchStartTime.split("T")[1]; startDateTokens = startDate.split("-"); startTimeTokens = startTime.split(":"); convertedStartTime = datetime.datetime(int(startDateTokens[0]), int(startDateTokens[1]), int(startDateTokens[2]), int(startTimeTokens[0]), int(startTimeTokens[1])); if params['reservation_duration'] != "": if not utilities.is_integer(params['reservation_duration']) or 'reservation_duration'<= 0: context['notification'] = 'Invalid duration entered!'; contents = JINJA_ENVIRONMENT.get_template('search.html').render(context) self.response.write(contents) return; else: searchDuration = int(params['reservation_duration']); durationInSeconds = searchDuration * 60; convertedEndTime = convertedStartTime + datetime.timedelta(seconds = durationInSeconds); present = datetime.datetime.now(); for session in sessions: if session.sessionStartTime > present and session.sessionStartTime > convertedStartTime: if params['reservation_duration'] != "": if session.sessionEndTime > convertedEndTime: matchedSessions.append(session); else: matchedSessions.append(session); context['sessions'] = matchedSessions; context['str'] = str; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; contents = JINJA_ENVIRONMENT.get_template('search.html').render(context) self.response.write(contents) return; self.get();
def post(self): params = self.request.params context = { } context = login.generateLogInOutContextInfo(self, context) """Get user information""" user = users.get_current_user(); context['user'] = user; if user: context['userId'] = user.user_id(); context['userEmail'] = user.email(); """Query all sessions""" sessions_query = sessions_datastore.Session.query(ancestor=sessions_datastore.sessions_key()).order(-sessions_datastore.Session.sessionStartTime) sessions = sessions_query.fetch(1000000); context['sessions'] = sessions; """Get the clicked session""" for session in sessions: if session.sessionGUID == params['sessionGUID']: context['session'] = session; thisSession = session; """Query all reservations""" reservations_query = reservations_datastore.Reservation.query(ancestor=reservations_datastore.reservations_key()).order(-reservations_datastore.Reservation.reservationTime); reservations = reservations_query.fetch(1000000); context['reservations'] = reservations; """Check if modify session form had been submitted""" if 'edit_session_submit' in params: thisSession.sessionName = params['session_name']; rawStartTimeInput = params['session_start_time']; startDate = rawStartTimeInput.split("T")[0]; startTime = rawStartTimeInput.split("T")[1]; startDateTokens = startDate.split("-"); startTimeTokens = startTime.split(":"); parsedStartTimeInput = datetime.datetime(int(startDateTokens[0]), int(startDateTokens[1]), int(startDateTokens[2]), int(startTimeTokens[0]), int(startTimeTokens[1])); rawEndTimeInput = params['session_end_time']; endDate = rawEndTimeInput.split("T")[0]; endTime = rawEndTimeInput.split("T")[1]; endDateTokens = endDate.split("-"); endTimeTokens = endTime.split(":"); parsedEndTimeInput = datetime.datetime(int(endDateTokens[0]), int(endDateTokens[1]), int(endDateTokens[2]), int(endTimeTokens[0]), int(endTimeTokens[1])); thisSession.sessionStartTime = parsedStartTimeInput; thisSession.sessionEndTime = parsedEndTimeInput; thisSession.sessionRawStartTime = params['session_start_time']; thisSession.sessionRawEndTime = params['session_end_time']; thisSession.sessionTags = params['session_tags']; present = datetime.datetime.now(); if thisSession.sessionStartTime > present and thisSession.sessionStartTime < thisSession.sessionEndTime: thisSession.put(); context['notification'] = 'Session modifications submitted!'; elif thisSession.sessionStartTime <= present: context['notification'] = 'Invalid start time specified!'; elif thisSession.sessionStartTime > session.sessionEndTime: context['notification'] = 'Invalid end time specified!'; context['session'] = thisSession; """Check if a reservation form had been submitted""" if user and 'reserve_session_submit' in params: rawStartTimeInput = params['reservation_start_time']; startDate = rawStartTimeInput.split("T")[0]; startTime = rawStartTimeInput.split("T")[1]; startDateTokens = startDate.split("-"); startTimeTokens = startTime.split(":"); parsedStartTimeInput = datetime.datetime(int(startDateTokens[0]), int(startDateTokens[1]), int(startDateTokens[2]), int(startTimeTokens[0]), int(startTimeTokens[1])); reservationGUID = str(uuid.uuid4()); reservation = reservations_datastore.Reservation(parent = reservations_datastore.reservations_key()); reservation.reservationTime = datetime.datetime.now(); reservation.reservationGUID = reservationGUID; reservation.reservationOwnerName = user.nickname(); reservation.reservationOwner = user.user_id(); reservation.reservationEmail = user.email(); reservation.reservationStartTime = parsedStartTimeInput; validDuration = True; try: reservation.reservationDuration = int(params['reservation_duration']); except ValueError: reservation.reservationDuration = 0; validDuration = False; reservation.sessionGUID = params['sessionGUID']; reservation.sessionInstructor = params['sessionInstructor']; reservation.sessionOwner = params['sessionOwner']; reservation.sessionName = params['sessionName']; """Check if reservation valid before storing""" alreadyReserved = False; for reservationClone in reservations: if reservationClone.reservationOwner == user.user_id() and reservationClone.sessionGUID == params['sessionGUID']: alreadyReserved = True; present = datetime.datetime.now(); durationInSeconds = reservation.reservationDuration * 60; if not validDuration: context['notification'] = 'Invalid duration entered!'; if alreadyReserved: context['notification'] = 'You have already reserved the session!'; elif parsedStartTimeInput > present and parsedStartTimeInput >= thisSession.sessionStartTime and durationInSeconds > 0: potentialEndTime = parsedStartTimeInput + datetime.timedelta(seconds = durationInSeconds); if potentialEndTime <= thisSession.sessionEndTime: reservation.put(); context['notification'] = 'Reservation made!'; else: context['notification'] = 'Duration specified is too long!'; elif durationInSeconds <= 0: context['notification'] = 'Invalid duration specified!'; elif parsedStartTimeInput < thisSession.sessionStartTime: context['notification'] = 'Invalid start time specified!'; elif parsedStartTimeInput <= present: context['notification'] = 'Invalid start time specified!'; context['reservationGUID'] = reservation.reservationGUID; context['reservationOwnerName'] = reservation.reservationOwnerName; context['reservationOwner'] = reservation.reservationOwner; context['reservationEmail'] = reservation.reservationEmail; context['reservationStartTime'] = reservation.reservationStartTime; context['reservationDuration'] = reservation.reservationDuration; context['sessionGUID'] = reservation.sessionGUID; context['sessionInstructor'] = reservation.sessionInstructor; context['sessionOwner'] = reservation.sessionOwner; context['sessionName'] = reservation.sessionName; elif 'reserve_session_submit' in params: context['notification'] = 'You must be signed in to make a reservation!'; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; context['tags'] = str(context['session'].sessionTags).split(","); contents = JINJA_ENVIRONMENT.get_template('session.html').render(context) self.response.write(contents)