示例#1
0
  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)
示例#2
0
 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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
  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)	
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
 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;
示例#10
0
    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)
示例#11
0
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
示例#12
0
  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)
示例#13
0
    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)
示例#14
0
  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)
示例#15
0
  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();
示例#16
0
  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)
示例#17
0
    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)
示例#18
0
    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)