Exemplo n.º 1
0
   def get(self):

      # Get user login status.
      user = users.get_current_user()

      if not user:
         # User is not logged in... Go log in then.
         self.redirect(users.create_login_url(self.request.uri))

      else:
         # User is logged in: welcome to your personal query page!
         data = app_admin.EuchronismData.gql(
               'WHERE ANCESTOR IS :1 AND user = :2',
               app_admin.lightray_key(),
               user)

         very_first_user_login = data.count() == 0
         if very_first_user_login:
            # Grab a new instance of user data.
            user_data = app_admin.EuchronismData(app_admin.lightray_key())
            user_data.user = user
            user_data.put()
         else:
            user_data = data[0]

         dot = os.path.dirname(__file__)

         # Generate the content (not the page).
         content_path = os.path.join(
               dot,
               'content',
               'lightray_content.html'
         )
         logout_link = '&nbsp;<a href="%s">' % users.create_logout_url("/")
         logout_link += '<img class="top_link" src="images/logout.jpg" '
         logout_link += 'border="0"></img></a>'

         template_path = os.path.join(dot, 'euchronism_template.html')
         template_values = {
            'extra_links': logout_link,
            'page_title': 'Euchronism (%s)' % user.email(),
            'page_content': open(os.path.join(
                                  dot,
                                  'content',
                                  'lightray_content.html'
                            )).read(),
         }

         # ... and send!
         self.response.out.write(
               template.render(template_path, template_values)
         )
Exemplo n.º 2
0
   def get(self):

      today = datetime.datetime.today().strftime('%Y/%m/%d')

      # Get all users data.
      data = app_admin.EuchronismData.gql(
            'WHERE ANCESTOR IS :1', app_admin.lightray_key()
      )

      for user_data in data:

         # Embed in a try. Send a mail to admin in case of failure.
         try:
            lightrays = json.loads(user_data.lightrays or '{}')
            if today in lightrays.keys():
               todays_lightray = lightrays.pop(today)

               msg = mail.EmailMessage()
               msg.initialize(
                  to = user_data.user.email(),
                  sender = app_admin.ADMAIL,
                  subject = 'Your light ray has returned',
                  body = todays_lightray
               )
               msg.send()

               user_data.lightrays = json.dumps(lightrays)
               user_data.put()

         except Exception:
            app_admin.mail_admin(app_admin.ADMAIL)
Exemplo n.º 3
0
    def get(self):

        today = datetime.datetime.today().strftime('%Y/%m/%d')

        # Get all users data.
        data = app_admin.EuchronismData.gql('WHERE ANCESTOR IS :1',
                                            app_admin.lightray_key())

        for user_data in data:

            # Embed in a try. Send a mail to admin in case of failure.
            try:
                lightrays = json.loads(user_data.lightrays or '{}')
                if today in lightrays.keys():
                    todays_lightray = lightrays.pop(today)

                    msg = mail.EmailMessage()
                    msg.initialize(to=user_data.user.email(),
                                   sender=app_admin.ADMAIL,
                                   subject='Your light ray has returned',
                                   body=todays_lightray)
                    msg.send()

                    user_data.lightrays = json.dumps(lightrays)
                    user_data.put()

            except Exception:
                app_admin.mail_admin(app_admin.ADMAIL)
Exemplo n.º 4
0
    def get(self):

        # Get user login status.
        user = users.get_current_user()

        if not user:
            # User is not logged in... Go log in then.
            self.redirect(users.create_login_url(self.request.uri))

        else:
            # User is logged in: welcome to your personal query page!
            data = app_admin.EuchronismData.gql(
                'WHERE ANCESTOR IS :1 AND user = :2', app_admin.lightray_key(),
                user)

            very_first_user_login = data.count() == 0
            if very_first_user_login:
                # Grab a new instance of user data.
                user_data = app_admin.EuchronismData(app_admin.lightray_key())
                user_data.user = user
                user_data.put()
            else:
                user_data = data[0]

            dot = os.path.dirname(__file__)

            # Generate the content (not the page).
            content_path = os.path.join(dot, 'content',
                                        'lightray_content.html')
            logout_link = '&nbsp;<a href="%s">' % users.create_logout_url("/")
            logout_link += '<img class="top_link" src="images/logout.jpg" '
            logout_link += 'border="0"></img></a>'

            template_path = os.path.join(dot, 'euchronism_template.html')
            template_values = {
                'extra_links':
                logout_link,
                'page_title':
                'Euchronism (%s)' % user.email(),
                'page_content':
                open(os.path.join(dot, 'content',
                                  'lightray_content.html')).read(),
            }

            # ... and send!
            self.response.out.write(
                template.render(template_path, template_values))
Exemplo n.º 5
0
    def post(self):
        # Get user login status
        user = users.get_current_user()

        if not user:
            # User is not logged in -- Why!?!?
            self.redirect('/')
        else:
            # User is logged in.
            data = app_admin.EuchronismData.gql(
                'WHERE ANCESTOR IS :1 AND user = :2', app_admin.lightray_key(),
                user)

        date_string = self.request.get('date')
        lightray = self.request.get('lightray')

        try:
            # Try to interpret user-input date.
            date = datetime.datetime.strptime(date_string, '%Y/%m/%d')
        except Exception:
            # Cannot make a date out of user input.
            specified_date_is_valid = False
            content_file = 'itdidnotwork_content.html'
        else:
            two_weeks_from_now = datetime.datetime.today() \
                  + datetime.timedelta(days=app_admin.MIN_TIME_DELTA)
            if date < two_weeks_from_now:
                # Specified date is too early.
                specified_date_is_valid = False
                content_file = 'itdidnotwork_content.html'
            else:
                specified_date_is_valid = True
                content_file = 'itworked_content.html'

        if specified_date_is_valid:
            # Get a random date.
            random_date = self.get_random_date(date)
            random_date_string = random_date.strftime('%Y/%m/%d')

            # Write the lightray in user data.
            user_data = data[0]
            lightray_docs = json.loads(user_data.lightrays or '{}')

            if random_date_string in lightray_docs.keys():
                lightray_docs[random_date_string] += \
                   app_admin.CHRONICLE_SEPARATOR + lightray
            else:
                lightray_docs[random_date_string] = lightray

            user_data.lightrays = json.dumps(lightray_docs)
            user_data.put()

        # Send the answer (success or failure).
        dot = os.path.dirname(__file__)

        template_path = os.path.join(dot, 'euchronism_template.html')
        template_values = {
            'page_title': 'Lightray on its way (%s)' % user.email(),
            'page_content': open(os.path.join(dot, 'content',
                                              content_file)).read(),
            'logout_url': users.create_logout_url("/"),
        }

        self.response.out.write(template.render(template_path,
                                                template_values))
Exemplo n.º 6
0
   def post(self):
      # Get user login status
      user = users.get_current_user()

      if not user:
         # User is not logged in -- Why!?!?
         self.redirect('/')
      else:
         # User is logged in.
         data = app_admin.EuchronismData.gql(
               'WHERE ANCESTOR IS :1 AND user = :2',
               app_admin.lightray_key(),
               user
         )

      date_string = self.request.get('date')
      lightray = self.request.get('lightray')

      try:
         # Try to interpret user-input date.
         date = datetime.datetime.strptime(date_string, '%Y/%m/%d')
      except Exception:
         # Cannot make a date out of user input.
         specified_date_is_valid = False
         content_file = 'itdidnotwork_content.html'
      else:
         two_weeks_from_now = datetime.datetime.today() \
               + datetime.timedelta(days=app_admin.MIN_TIME_DELTA)
         if date < two_weeks_from_now:
            # Specified date is too early.
            specified_date_is_valid = False
            content_file = 'itdidnotwork_content.html'
         else:
            specified_date_is_valid = True
            content_file = 'itworked_content.html'


      if specified_date_is_valid:
         # Get a random date.
         random_date = self.get_random_date(date)
         random_date_string = random_date.strftime('%Y/%m/%d')

         # Write the lightray in user data.
         user_data = data[0]
         lightray_docs = json.loads(user_data.lightrays or '{}')

         if random_date_string in lightray_docs.keys():
            lightray_docs[random_date_string] += \
               app_admin.CHRONICLE_SEPARATOR + lightray
         else:
            lightray_docs[random_date_string] = lightray

         user_data.lightrays = json.dumps(lightray_docs)
         user_data.put()

      # Send the answer (success or failure).
      dot = os.path.dirname(__file__)

      template_path = os.path.join(dot, 'euchronism_template.html')
      template_values = {
         'page_title': 'Lightray on its way (%s)' % user.email(),
         'page_content': open(
             os.path.join(dot, 'content', content_file)
         ).read(),
         'logout_url': users.create_logout_url("/"),
      }

      self.response.out.write(
            template.render(template_path, template_values)
      )