public
Description: A bare-bones Google AppEngine app for making snarky comments about photos you find online.
Homepage: http://fug-this.appspot.com/
Clone URL: git://github.com/jchris/fug-this-.git
Search Repo:
fug-this- / fugthis.py
100644 95 lines (81 sloc) 2.814 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import logging
import cgi
import wsgiref.handlers
import os
import string
 
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.api import urlfetch
 
 
class Photo(db.Model):
  url = db.StringProperty(multiline=False)
  mime = db.StringProperty(multiline=False)
  image = db.BlobProperty()
 
class Fugging(db.Model):
  author = db.UserProperty()
  link = db.StringProperty(multiline=False)
  title = db.StringProperty(multiline=False)
  message = db.StringProperty(multiline=True)
  photo = db.ReferenceProperty(Photo)
  date = db.DateTimeProperty(auto_now_add=True)
  
class Fugs(webapp.RequestHandler):
  def post(self):
    if users.get_current_user():
      fugging = Fugging()
      fugging.author = users.get_current_user()
      fugging.link = self.request.get('link')
      fugging.title = self.request.get('title')
      fugging.message = self.request.get('message')
      photourl = self.request.get('photo')
      result = urlfetch.fetch(photourl);
      if (result.status_code == 200):
        photo = Photo()
        photo.image = result.content
        photo.url = photourl
        # logging.debug(string.join(result.headers.keys(),''))
        h = result.headers
        if 'Content-Type' in h:
          photo.mime = h['Content-Type']
        elif 'content-type' in h:
          photo.mime = h['content-type']
        photo.put()
        fugging.photo = photo
        fugging.put()
      self.redirect('/')
    else:
      url = users.create_login_url(self.request.uri)
      self.redirect(url)
    
  def get(self):
    fuggings = Fugging.all().order('-date')
    if users.get_current_user():
      logged_in = True
      url = users.create_logout_url(self.request.uri)
      url_linktext = 'Logout'
    else:
      logged_in = False
      url = users.create_login_url(self.request.uri)
      url_linktext = 'Login'
 
    who = 'everyone'
    template_values = {
      'fuggings': fuggings,
      'logged_in': logged_in,
      'who' : who,
      'url': url,
      'url_linktext': url_linktext,
      }
 
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))
      
 
class Images(webapp.RequestHandler):
  def get(self, key):
    photo = db.get(key)
    # logging.info(photo.mime)
    
    self.response.headers['Content-Type'] = photo.mime.encode('ascii', 'ignore')
    self.response.out.write(photo.image)
    
    
def main():
  application = webapp.WSGIApplication([('/', Fugs),
                                        (r'/images/(.*)', Images)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)
 
if __name__ == "__main__":
  main()