Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.63 KB | None | 0 0
  1. import os
  2. import time
  3. import logging
  4. #from specs import doRender
  5. from util.sessions import Session
  6. from google.appengine.ext import db
  7. from google.appengine.ext import webapp
  8. from google.appengine.api import memcache
  9. from google.appengine.ext.webapp import util
  10. from google.appengine.ext.webapp import template
  11.  
  12. # the next line defines the ammount of comments per page
  13. comments_times = 10
  14.  
  15. # A Model for a Review
  16. class Review(db.Model):
  17.     reviewid = db.IntegerProperty()
  18.     account = db.StringProperty()
  19.     title = db.StringProperty()
  20.     content = db.TextProperty()
  21.     added = db.DateTimeProperty(auto_now=True)
  22.     checked = db.BooleanProperty()
  23.    
  24. # A Model for a User
  25. class User(db.Model):
  26.     account = db.StringProperty()
  27.     password = db.StringProperty()
  28.     name = db.StringProperty()
  29.  
  30. class Review_Index(db.Model):
  31.     review_list = db.StringListProperty()
  32.  
  33.  
  34. # doRender
  35. def doRender(handler, tname='base.html', values={}):
  36.     handler.session = Session()
  37.     temp = os.path.join(os.path.dirname(__file__), 'templates/' + tname)
  38.     if not os.path.isfile(temp):
  39.         return False
  40.     # Make a copy of the dictionary and add the path
  41.     newval = dict(values)
  42.     newval['path'] = handler.request.path
  43.     newval['current_time'] = time.ctime()
  44.  
  45.     realname = ''
  46.     try:
  47.         realname = memcache.get("realname")
  48.     except:
  49.         pass
  50.     if realname == None:
  51.         try:
  52.             results = db.GqlQuery("SELECT * FROM User WHERE account = '"+(handler.session['username'])+"'")
  53.             realname = results.get()
  54.             realname = realname.name
  55.             memcache.add("realname", realname, 3000)
  56.         except:
  57.             realname = 'An error occured'
  58.  
  59.    
  60.     # next statement contains list on pages to display the large title image
  61.     if newval['path'] in ['/', '/about']:
  62.         newval['title_image'] = 'yes'
  63.  
  64.     # next statement contains list of pages not to display login link
  65.     if newval['path'] not in ['/']:
  66.         newval['login_link'] = 'yes'
  67.     # next line permanently diables login link
  68.     newval['login_link'] = 'yes'
  69.     newval['realname'] = realname
  70.     try:
  71.         newval['username']  = handler.session['username']
  72.     except:
  73.         pass
  74.     try:
  75.         newval['style'] = handler.request.get('style')
  76.     except:
  77.         pass
  78.     outstr = template.render(temp, newval)
  79.     handler.response.out.write(outstr)
  80.     return True
  81.  
  82. def get_content(reviewid=1):
  83.     result = 'Yup'
  84.     content = {}
  85.     result = {'a':'Something went wrong; sorry'}
  86.     try:
  87.         result = memcache.get(str(reviewid))
  88.         if result != None:
  89.             logging.debug('Memcache get successful, result was: '+str(result))
  90.     except:
  91.         logging.debug('"content" memcache get excepted')
  92.         pass
  93.     if result == None:
  94.         #try:
  95.         results = db.GqlQuery("SELECT * FROM Review WHERE reviewid = "+str(reviewid))
  96.         content = results.get()
  97.             # the next four lines transfer information from the datastore into local variables
  98.         result = {'reviewid':content.reviewid,
  99.                    'account':content.account,
  100.                    'content':content.content,
  101.                    'added':content.added,
  102.                    'title':content.title,
  103.                   'checked':content.checked}
  104.         logging.debug('Result equaled none; got the following from datastore: '+str(result))
  105.         memcache.add(str(reviewid), result, 3000)
  106.         logging.debug('Adding current reviewid + details to memcache: '+str(reviewid))
  107.         #except:
  108.          #   result = 'An error occured'
  109.     return result
  110.  
  111.  
  112. def get_reviewlist():
  113.     results = None
  114.     review_list = []
  115.     review_list = ['Something went wrong; sorry']
  116.     try:
  117.         review_list = memcache.get('review_list')
  118.         if result != None:
  119.             logging.debug('Memcache get successful, result was: '+str(result))
  120.     except:
  121.         logging.debug('"review_list" memcache get excepted')
  122.         pass
  123.     if review_list == None:
  124.         #try:
  125.         results = db.GqlQuery("SELECT * FROM Review_Index")
  126.         content = results.get()
  127.             # the next four lines transfer information from the datastore into local variables
  128.         review_list = content.review_list
  129.         logging.debug('Result equaled none; got the following from datastore: '+str(review_list))
  130.         memcache.add('review_list', review_list, 3000)
  131.         logging.debug('Adding current Review_Index to memcache')
  132.         #except:
  133.          #   result = 'An error occured'
  134.     return review_list
  135.  
  136.  
  137. #def create_reviewid():
  138.  #   current_arg = 1
  139.   #  tort_review_list = list()
  140.    # review_list = get_reviewlist()
  141.     #for chunk in review_list:
  142.      #   tort_review_list.append(chunk)
  143.     #while 1:
  144.      #   if str(current_arg) not in tort_review_list:
  145.       #      logging.debug('reviewid generated: '+str(current_arg))
  146.        #     return 0
  147.         #else:
  148.          #   current_arg =+ 1
  149.     #return current_arg
  150.  
  151. def create_reviewid():
  152.     current_arg = 1
  153.     tort_reviewlist = list()
  154.     review_list = get_reviewlist()
  155.     for chunk in review_list:
  156.         tort_reviewlist.append(chunk)
  157.     yup = 1
  158.     while yup == 1:
  159.         if current_arg in tort_reviewlist:
  160.             current_arg = current_arg + 1
  161.         else:
  162.             yup = 0
  163.             logging.debug('reviewid generated: '+str(current_arg))
  164.             return current_arg
  165.  
  166.  
  167. class ReviewsHandler(webapp.RequestHandler):
  168.     def get(self):
  169.         self.session = Session()
  170.         message = self.request.get('message')
  171.         temp = []
  172.         if (self.request.get('a')) != 'true':
  173.             review_list = get_reviewlist()
  174.             for chunk in range(len(review_list)):
  175.                 temp.append(get_content(review_list[chunk]))
  176.             if message != None:
  177.                 template_values = {
  178.                     'page_title':'MRLS Inc. - Reviews',
  179.                     'content_section':temp,
  180.                     'message':message
  181.                     }
  182.             else:
  183.                 template_values = {
  184.                                'page_title':'MRLS Inc. - Reviews',
  185.                                'content_section':temp
  186.                                }
  187.             doRender(self, 'reviews.html', template_values)
  188.         else:
  189.             review_to_display = self.request.get('r')
  190.             cur_content = get_content(review_to_display)
  191.             doRender(self, 'singlereview.html', {'page_title':('MRLS Inc. - '+cur_content['title']),
  192.                                                  'content_section':cur_content})
  193.  
  194.  
  195. class Add(webapp.RequestHandler):
  196.     def get(self):
  197.         self.session = Session()
  198.        
  199.  
  200.         try:
  201.             self.username = self.session['username']
  202.             doRender(self,
  203.                  'addreview.html',
  204.                  {'page_title':'MRLS Inc. - Add a Review'})
  205.         except KeyError:
  206.             doRender(self,
  207.                      'addreview.html',
  208.                      {'page_title':'MRLS Inc. - Add a Review',
  209.                       'error_message':'Please note: you need to <a href="/login">Login</a> to post a review'})
  210.     def post(self):
  211.         self.session = Session()
  212.         error_message = ''
  213.         name = self.request.get('name')
  214.         content = self.request.get('content')
  215.         cur_reviewid = create_reviewid()
  216.         cur_review = Review(reviewid=cur_reviewid, account=(self.session['username']), title=name, content=content, checked=False)
  217.         cur_review.put()
  218.         memcache.flush_all()
  219.  
  220.  
  221.        
  222.   #      cur_reviewlist = cur_reviewlist.review_list
  223.         cur_reviewlist = get_reviewlist()
  224.        
  225.         # delete all current Review_Index's
  226.         query = Review_Index.all()
  227.         entries = query.fetch(1000)
  228.         db.delete(entries)
  229.        
  230.         cur_reviewlist.append(cur_reviewid)
  231.         review_list = Review_Index(review_list=(cur_reviewlist))
  232.         review_list.put()
  233.        
  234.         memcache.flush_all()
  235.         memcache.add('review_list', useful_temp, 3000)
  236.         if error_message == None:
  237.             doRender(self,
  238.                      'addreview.html',
  239.                      {'page_title':'MRLS Inc. -  Add a Review',
  240.                       'error_message':error_message})
  241.         else:
  242.             self.redirect('/reviews?message=Your+GameWatch+review+was+posted')
  243.  
  244. class Execute(webapp.RequestHandler):
  245.     def get(self):
  246.         try:
  247.             doRender(self, 'execute.html', {'review_index':(get_reviewlist())})
  248.         except:
  249.             doRender(self, 'execute.html')
  250.     def post(self):
  251.         typer = self.request.get('type')
  252.         if typer == 'Review':
  253.             cur_reviewid = self.request.get('reviewid')
  254.             cur_account = self.request.get('account')
  255.             cur_title = self.request.get('title')
  256.             cur_content = self.request.get('content')
  257.             cur_checked = self.request.get('checked')
  258.             cur_review = Review(reviewid=int(cur_reviewid), account=cur_account, title=cur_title, content=cur_content, checked=bool(cur_checked))
  259.             cur_review.put()
  260.             memcache.flush_all()
  261.            
  262.         if typer == 'Review_Index':
  263.             # delete all current Review_Index's
  264.             query = Review_Index.all()
  265.             entries = query.fetch(1000)
  266.             db.delete(entries)
  267.             cur_review_index = self.request.get('review_list')
  268.             cur_index = list(cur_review_index)
  269.             review_list = Review_Index(review_list=cur_index)
  270.             review_list.put()
  271.             memcache.flush_all()
  272.         if typer == 'flush':
  273.             memcache.flush_all()
  274.            
  275.         doRender(self, 'execute.html')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement