예제 #1
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)	
예제 #2
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)
예제 #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)

        """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)
예제 #5
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
예제 #6
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)
예제 #7
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)
예제 #8
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();
예제 #9
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)