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 get(self): params = self.request.params context = { } context = login.generateLogInOutContextInfo(self, context) 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) """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) """Get user information""" user = users.get_current_user() context['user'] = user if user: context['userId'] = user.user_id() context['userEmail'] = user.email() """Query all resources""" resources_query = resources_datastore.resource.query( ancestor=resources_datastore.resources_key()).order( -resources_datastore.resource.resourceStartTime) resources = resources_query.fetch(1000000) context['resources'] = resources """Find matching resource""" matchingresources = [] for resource in resources: resourceTags = str(resource.resourceTags).split(",") for tag in resourceTags: if tag.strip() == params['tagName'].strip(): matchingresources.append(resource) context['str'] = str context['present'] = datetime.datetime.now() context['datetime'] = datetime context['resources'] = matchingresources context['tagName'] = params['tagName'] contents = JINJA_ENVIRONMENT.get_template('tag.html').render(context) self.response.write(contents)
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() context['seekUserName'] = params['seekUserName'] context['seekUserId'] = params['seekUserId'] """Query all resources""" resources_query = resources_datastore.resource.query( ancestor=resources_datastore.resources_key()).order( -resources_datastore.resource.resourceStartTime) resources = resources_query.fetch(1000000) context['resources'] = resources """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 get(self): params = self.request.params context = {} context = login.generateLogInOutContextInfo(self, context) contents = JINJA_ENVIRONMENT.get_template( 'create_resource.html').render(context) self.response.write(contents)
def get(self): params = self.request.params context = { } """Generate log in/out information""" context = login.generateLogInOutContextInfo(self, context) contents = JINJA_ENVIRONMENT.get_template('error.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 resources""" resources_query = resources_datastore.resource.query(ancestor=resources_datastore.resources_key()).order(-resources_datastore.resource.resourceStartTime); resources = resources_query.fetch(1000000); context['resources'] = resources; """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; resourcesGUIDByLastReservation = []; resourcesByLastReservation = []; allTags = []; for reservation in reservations: if not (reservation.resourceGUID in resourcesGUIDByLastReservation): resourcesGUIDByLastReservation.append(reservation.resourceGUID); for resource in resources: if resource.resourceGUID == reservation.resourceGUID: resourcesByLastReservation.append(resource); break; for resource in resources: if not (resource in resourcesByLastReservation): resourcesByLastReservation.append(resource); context['resourcesByLastReservation'] = resourcesByLastReservation; for resource in resources: for tag in str(resource.resourceTags).split(","): if tag not in allTags: allTags.append(tag); context['allTags'] = allTags; context['present'] = datetime.datetime.now(); context['datetime'] = datetime; context['str'] = str; return context;
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 = {} """Generate log in/out information""" context = login.generateLogInOutContextInfo(self, context) """Query all resources""" resources_query = resources_datastore.resource.query( ancestor=resources_datastore.resources_key()).order( -resources_datastore.resource.resourceStartTime) resources = resources_query.fetch(1000000) context['resources'] = resources """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 resource""" context['resourceGUID'] = params['resourceGUID'] context['present'] = datetime.datetime.now() context['datetime'] = datetime contents = JINJA_ENVIRONMENT.get_template('rss.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; """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)
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) """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) """Query all resources""" resources_query = resources_datastore.resource.query( ancestor=resources_datastore.resources_key()).order( -resources_datastore.resource.resourceStartTime) resources = resources_query.fetch(1000000) context['resources'] = resources """Parse HTML date and time inputs into datetime object""" rawStartTimeInput = params['resource_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['resource_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])) resourceGUID = str(uuid.uuid4()) """Add template values""" context['notification'] = 'resource Created!' context['resourceResponse'] = True context['resourceGUID'] = resourceGUID context['resourceInstructor'] = users.get_current_user().nickname() context['resourceOwner'] = users.get_current_user().user_id() context['resourceEmail'] = users.get_current_user().email() context['resourceName'] = params['resource_name'] context['resourceStartTime'] = parsedStartTimeInput context['resourceEndTime'] = parsedEndTimeInput context['resourceTags'] = params['resource_tags'] context['resourceRawStartTime'] = rawStartTimeInput context['resourceRawEndTime'] = rawEndTimeInput """Create resource for data store""" resource = resources_datastore.resource( parent=resources_datastore.resources_key()) resource.resourceGUID = resourceGUID resource.resourceInstructor = users.get_current_user().nickname() resource.resourceOwner = users.get_current_user().user_id() resource.resourceEmail = users.get_current_user().email() resource.resourceName = params['resource_name'] resource.resourceStartTime = parsedStartTimeInput resource.resourceEndTime = parsedEndTimeInput resource.resourceTags = params['resource_tags'] resource.resourceRawStartTime = rawStartTimeInput resource.resourceRawEndTime = rawEndTimeInput """Determine if new resource is valid, handle appropriately""" present = datetime.datetime.now() if resource.resourceStartTime > present and resource.resourceStartTime < resource.resourceEndTime: isValidNewresource = True for resourceClone in resources: if resource.resourceOwner == resourceClone.resourceOwner and ( (resource.resourceStartTime >= resourceClone.resourceStartTime and resource.resourceStartTime < resourceClone.resourceEndTime) or (resourceClone.resourceStartTime < resource.resourceEndTime and resource.resourceEndTime <= resourceClone.resourceEndTime)): isValidNewresource = False if isValidNewresource: resource.put() context['notification'] = 'resource created!' else: context[ 'notification'] = 'resource overlaps an existing resource!' elif resource.resourceStartTime <= present: context['notification'] = 'Invalid start time specified!' elif resource.resourceStartTime > resource.resourceEndTime: context['notification'] = 'Invalid end time specified!' contents = JINJA_ENVIRONMENT.get_template( 'create_resource.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 resources""" resources_query = resources_datastore.resource.query( ancestor=resources_datastore.resources_key()).order( -resources_datastore.resource.resourceStartTime) resources = resources_query.fetch(1000000) context['resources'] = resources """Get the clicked resource""" for resource in resources: if resource.resourceGUID == params['resourceGUID']: context['resource'] = resource thisresource = resource """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 resource form had been submitted""" if 'edit_resource_submit' in params: thisresource.resourceName = params['resource_name'] rawStartTimeInput = params['resource_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['resource_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])) thisresource.resourceStartTime = parsedStartTimeInput thisresource.resourceEndTime = parsedEndTimeInput thisresource.resourceRawStartTime = params['resource_start_time'] thisresource.resourceRawEndTime = params['resource_end_time'] thisresource.resourceTags = params['resource_tags'] present = datetime.datetime.now() if thisresource.resourceStartTime > present and thisresource.resourceStartTime < thisresource.resourceEndTime: thisresource.put() context['notification'] = 'resource modifications submitted!' elif thisresource.resourceStartTime <= present: context['notification'] = 'Invalid start time specified!' elif thisresource.resourceStartTime > resource.resourceEndTime: context['notification'] = 'Invalid end time specified!' context['resource'] = thisresource """Check if a reservation form had been submitted""" if user and 'reserve_resource_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 reservation.reservationDuration = int( params['reservation_duration']) reservation.resourceGUID = params['resourceGUID'] reservation.resourceInstructor = params['resourceInstructor'] reservation.resourceOwner = params['resourceOwner'] reservation.resourceName = params['resourceName'] """Check if reservation valid before storing""" alreadyReserved = False for reservationClone in reservations: if reservationClone.reservationOwner == user.user_id( ) and reservationClone.resourceGUID == params['resourceGUID']: alreadyReserved = True present = datetime.datetime.now() durationInSeconds = reservation.reservationDuration * 60 if alreadyReserved: context[ 'notification'] = 'You have already reserved the resource!' elif parsedStartTimeInput > present and parsedStartTimeInput >= thisresource.resourceStartTime and durationInSeconds > 0: potentialEndTime = parsedStartTimeInput + datetime.timedelta( seconds=durationInSeconds) if potentialEndTime <= thisresource.resourceEndTime: reservation.put() context['notification'] = 'Reservation made!' else: context['notification'] = 'Duration specified is too long!' elif durationInSeconds <= 0: context['notification'] = 'Invalid duration specified!' elif parsedStartTimeInput < thisresource.resourceStartTime: 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['resourceGUID'] = reservation.resourceGUID context['resourceInstructor'] = reservation.resourceInstructor context['resourceOwner'] = reservation.resourceOwner context['resourceName'] = reservation.resourceName elif 'reserve_resource_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['resource'].resourceTags).split(",") contents = JINJA_ENVIRONMENT.get_template('resource.html').render( context) self.response.write(contents)