示例#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 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)
示例#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()

        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;
示例#4
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)
示例#5
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)
示例#6
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)