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 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 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 = {} """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 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)
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)