Wan Kim Mok пре 10 година
родитељ
комит
67b52b7270

+ 9 - 0
hackathon_starter/hackathon/models.py

@@ -27,6 +27,15 @@ class GithubProfile(models.Model):
     def __unicode__(self):
         return unicode(self.user)
 
+class TumblrProfile(models.Model):
+    user = models.ForeignKey(User)
+    tumblr_user = models.CharField(max_length=200)
+    access_token = models.CharField(max_length=200)
+    access_token_secret = models.CharField(max_length=200)
+
+    def __unicode__(self):
+        return unicode(self.user)
+
 class InstagramProfile(models.Model):
     user = models.ForeignKey(User)
     instagram_user = models.CharField(max_length=200)

+ 6 - 4
hackathon_starter/hackathon/scripts/tumblr.py

@@ -32,7 +32,8 @@ class TumblrOauthClient(object):
     oauth_verifier = None
     oauth_token = None
     oauth_token_secret = None
-    accessed = False
+    is_authorized = False
+    access_token = None
 
     def __init__(self, consumer_key, consumer_secret):
         self.consumer_key = consumer_key
@@ -59,16 +60,16 @@ class TumblrOauthClient(object):
         '''
         Returns an access token to the user.
         '''
-        self.accessed = True
+        self.is_authorized = True
         token = oauth2.Token(self.oauth_token, self.oauth_token_secret)
         self.oauth_verifier = oauth_verifier
         print self.oauth_verifier
         token.set_verifier(self.oauth_verifier)
         client = oauth2.Client(self.consumer, token)
         resp, content = client.request(access_token_url, "POST")
-        access_token = dict(urlparse.parse_qsl(content))
+        self.access_token = dict(urlparse.parse_qsl(content))
         #set verified token
-        self.token = oauth2.Token(access_token['oauth_token'], access_token['oauth_token_secret'])
+        self.token = oauth2.Token(self.access_token['oauth_token'], self.access_token['oauth_token_secret'])
 
     def getUserInfo(self):
         ''' Returns users information. '''
@@ -81,6 +82,7 @@ class TumblrOauthClient(object):
         #return content in json format
         jsonlist = json.loads(content)
         response = jsonlist['response']
+        self.username = str(response['user']['name'])
         user_info = response['user']
         total_blogs = len(user_info['blogs'])
         #print user_info

+ 45 - 33
hackathon_starter/hackathon/views.py

@@ -36,7 +36,7 @@ from rest_framework.renderers import JSONRenderer
 from rest_framework.parsers import JSONParser
 
 # Models
-from hackathon.models import Snippet, Profile, InstagramProfile, TwitterProfile, MeetupToken, GithubProfile, LinkedinProfile, FacebookProfile
+from hackathon.models import Snippet, Profile, InstagramProfile, TwitterProfile, MeetupToken, GithubProfile, LinkedinProfile, FacebookProfile, TumblrProfile
 from hackathon.serializers import SnippetSerializer
 from hackathon.forms import UserForm
 
@@ -51,7 +51,7 @@ getFacebook = FacebookOauthClient(settings.FACEBOOK_APP_ID, settings.FACEBOOK_AP
 
 def index(request):
     print "index: " + str(request.user)
-
+    
     if not request.user.is_active:
         if request.GET.items():
             if profile_track == 'github':
@@ -147,10 +147,27 @@ def index(request):
                     profile.save()
                 user = authenticate(username=username+'_facebook', password='password')
                 login(request, user)
+            elif profile_track == 'tumblr':
+                if not getTumblr.is_authorized:
+                    oauth_verifier = request.GET['oauth_verifier']
+                    getTumblr.access_token_url(oauth_verifier) 
+                    getTumblr.getUserInfo()
 
-
-
-                
+                    try:
+                        user = User.objects.get(username = getTumblr.username + '_tumblr')
+                    except User.DoesNotExist:
+                        username = getTumblr.username + '_tumblr'
+                        new_user = User.objects.create_user(username, username+'@madewithtumblr.com', 'password')
+                        new_user.save()
+                        try:
+                            profile =TumblrProfile.objects.get(user = new_user.id)
+                            profile.access_token = getTumblr.access_token['oauth_token']
+                            profile.access_token_secret = getTumblr.access_token['oauth_token_secret']
+                        except TumblrProfile.DoesNotExist:
+                            profile = TumblrProfile(user=new_user, access_token=getTumblr.access_token['oauth_token'], access_token_secret= getTumblr.access_token['oauth_token_secret'], tumblr_user=getTumblr.username)
+                        profile.save()
+                user = authenticate(username=getTumblr.username+'_tumblr', password='password')
+                login(request, user)                
     else:
         if request.GET.items():
             user = User.objects.get(username = request.user.username)
@@ -192,7 +209,17 @@ def index(request):
                 except LinkedinProfile.DoesNotExist:
                     profile = LinkedinProfile(user = user, access_token = getLinkedIn.access_token, linkedin_user=getLinkedIn.user_id)
                     profile.save()
+            elif profile_track == 'tumblr':
+                if not getTumblr.is_authorized:
+                    oauth_verifier = request.GET['oauth_verifier']
+                    getTumblr.access_token_url(oauth_verifier) 
+                    getTumblr.getUserInfo()
 
+                    try:
+                        tumblrUser = TumblrProfile.objects.get(user=user.id)
+                    except TumblrProfile.DoesNotExist:
+                        profile = TumblrProfile(user=user, access_token=getTumblr.access_token['oauth_token'], access_token_secret= getTumblr.access_token['oauth_token_secret'], tumblr_user=getTumblr.username)
+                        profile.save()
             
 
     context = {'hello': 'world'}
@@ -413,34 +440,19 @@ def githubResume(request):
 
 def tumblr(request):
     ''' Tumblr api calls '''
-    if not getTumblr.accessed:
-        oauth_verifier = request.GET.get('oauth_verifier')
-        getTumblr.access_token_url(oauth_verifier)
-    if request.user not in User.objects.all():
-        try:
-            user_info, total_blog = getTumblr.getUserInfo()
-            username = str(user_info['name'])+ "2"
-            user = User.objects.get(username=username)
-        except User.DoesNotExist:
-            user_info, total_blog = getTumblr.getUserInfo()
-            username = str(user_info['name'])+ "2"
-            new_user = User.objects.create_user(username, username+'@tumblr.com','password')
-            new_user.save()
-            profile =Profile()
-            profile.user = new_user
-            profile.oauth_token = getTumblr.oauth_token
-            profile.oauth_secret = getTumblr.oauth_token_secret
-            profile.save()
-
-        user = authenticate(username=username, password='password')
-        login(request, user)
-
-    #get blogger twitterthecomic's blog information
-    blog = getTumblr.getBlogInfo('twitterthecomic')
-    #get tags that was tagged along starbucks
-    tagged_blog = getTumblr.getTaggedInfo("starbucks")
-    #get blog information tagged with starbucks
-    blogontag = getTumblr.getTaggedBlog("starbucks")
+    if getTumblr.is_authorized:
+        #get blogger twitterthecomic's blog information
+        blog = getTumblr.getBlogInfo('twitterthecomic')
+        #get tags that was tagged along starbucks
+        tagged_blog = getTumblr.getTaggedInfo("starbucks")
+        #get blog information tagged with starbucks
+        blogontag = getTumblr.getTaggedBlog("starbucks")
+    else:
+        blog, tagged_blog, blogontag = '', '',''
+        global profile_track
+        profile_track = 'tumblr'
+        tumblr_url = getTumblr.authorize_url()
+        return HttpResponseRedirect(tumblr_url)
 
     context = {'title': "What's up Starbucks?", 'blogData': blog, 'blogTag': tagged_blog, 'blogontag': blogontag}
     return render(request, 'hackathon/tumblr.html', context)