Exemplo n.º 1
0
 def get(self, author_slug=None, id=None):
     self.verifyUrl()
     author = None
     show_comments = False
     if id:
         try:
             id = int(id)
         except ValueError:
             self.error(404)
             self.send(getNotFoundPage())
             return
         show_comments = bool(self.request.get('show_comments'))
         cached = getCachedPage('quote|%d%s' % (id, '|show_comments' if show_comments else ''))
         if cached:
             self.response.headers['Cache-Control'] = settings.long_cache_control
             self.send(cached)
             return
         quote = db.getQuoteByID(id)
         if quote:
             author = quote.author
         else:
             self.error(404)
             self.send(getNotFoundPage())
             return
     elif author_slug:
         author = db.getAuthor(author_slug)
         if author:
             quote = db.getRandomQuote(author)
         else:
             self.error(404)
             self.send(getNotFoundPage())
             return
     else:
         quote = db.getRandomQuote()
         author = quote.author
     proper_url = quote.getLink()
     if not self.request.url.startswith(proper_url):
         self.redirect(proper_url, permanent=True)
     else:
         self.response.headers['Cache-Control'] = settings.long_cache_control
         next_quote = db.getNextQuote(quote)
         meta_description = quote.text[:300].replace('\n', '. ')
         if len(meta_description) >= 280:
             meta_description = meta_description.rpartition(' ')[0] + ' ...'
         meta_description = quoteattr(meta_description)
         template_values = {
             'author': author,
             'teaser': quote.renderTeaser(),
             'quote': quote.renderQuote(),
             'quote_name': quote.name,
             'quote_key': quote.key(),
             'quote_url': proper_url,
             'next_quote': next_quote,
             'next_quote_id': next_quote.key().id() if next_quote else None,
             'meta_description': meta_description,
             'meta_keywords': quoteattr(', '.join((quote.name, author.name, author.slug))),
             'show_comments': show_comments,
         }
         self.send(getPage('quote|%d%s' % (quote.key().id(), '|show_comments' if show_comments else ''), 'view/quote.html', template_values))
Exemplo n.º 2
0
 def post(self, type):
     res = 0
     if type == 'category':
         name = self.request.get('name')
         slug = self.request.get('slug')
         if db.addCategory(name, slug):
             res = 1
         self.redirect('/admin?res=%d' % res)
     elif type == 'author':
         img_url = self.request.get('img_url')
         if img_url:
             img_width, img_height = utils.getImageDimensions(utils.downloadFile(img_url))
         else:
             img_width = None
             img_height = None
         if db.addAuthor(name = self.request.get('name'),
                         slug = self.request.get('slug'),
                         description = self.request.get('description'),
                         date_birth = self.request.get('date_birth'),
                         date_death = self.request.get('date_death'),
                         img_url = img_url,
                         img_width = img_width,
                         img_height = img_height):
             res = 1
         self.redirect('/admin?res=%d' % res)
     elif type == 'quote':
         img_url = self.request.get('img_url')
         if img_url:
             img_width, img_height = utils.getImageDimensions(utils.downloadFile(img_url))
         else:
             img_width = None
             img_height = None
         if db.addQuote(author = db.getAuthor(self.request.get('author')),
                        categories = self.request.get_all('category'),
                        name = self.request.get('name'),
                        description = self.request.get('description'),
                        text = self.request.get('text'),
                        html = self.request.get('html'),
                        img_url = img_url,
                        img_width = img_width,
                        img_height = img_height,
                        quote_id = self.request.get('quote_id')):
             res = 1
         self.redirect('/admin?res=%d' % res)