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 = ' <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) )
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)
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)
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 = ' <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))
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))
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) )