소스 검색

Merged in mk200789/django-hackathon-starter (pull request #24)

json response for instagram user data + tumblr login
David Leonard 10 년 전
부모
커밋
b1d429d486

+ 3 - 0
hackathon_starter/hackathon/models.py

@@ -15,6 +15,9 @@ class Profile(models.Model):
     oauth_token = models.CharField(max_length=200)
     oauth_secret = models.CharField(max_length=200)
 
+    def __unicode__(self):
+        return unicode(self.user)
+
 class Snippet(models.Model):
     created = models.DateTimeField(auto_now_add=True)
     title = models.CharField(max_length=100, blank=True, default='')

+ 9 - 1
hackathon_starter/hackathon/scripts/instagram.py

@@ -16,6 +16,7 @@ class InstagramOauthClient(object):
 		self.client_id 		= client_id
 		self.client_secret 	= client_secret
 
+
 	def get_authorize_url(self):
 		''' Obtains the authorization url. '''
 		auth_url = authorization_url + self.client_id +'&redirect_uri=http://localhost:8000/hackathon/instagram&response_type=code'
@@ -37,7 +38,8 @@ class InstagramOauthClient(object):
 		jsonlist = json.load(content)
 		self.access_token = jsonlist['access_token']
 		self.user_data = jsonlist['user']
-		print self.access_token
+		print self.user_data
+		#print self.access_token
 
 
 	def get_tagged_media(self, tag):
@@ -56,5 +58,11 @@ class InstagramOauthClient(object):
 		print len(data)
 		return data
 
+	def get_user_info(self, access_token):
+		user_info = 'https://api.instagram.com/v1/users/32833691/?access_token='+access_token
+		req = requests.get(user_info)
+		content = json2.loads(req.content)
+		data = content['data']
+		return data
 
 

+ 5 - 1
hackathon_starter/hackathon/templates/hackathon/login.html

@@ -41,7 +41,11 @@
         <a class="btn btn-block btn-social btn-google-plus">
           <i class="fa fa-google-plus"></i>
           Sign in with Google
-        </a>          
+        </a>
+        <a class="btn btn-block btn-social btn-tumblr" href="http://localhost:8000/hackathon/tumblr_login/">
+          <i class="fa fa-tumblr"></i>
+          Sign in with Tumblr
+        </a>                  
       </div>
     </body>
 </html>

+ 0 - 16
hackathon_starter/hackathon/templates/hackathon/tumblr.html

@@ -57,20 +57,4 @@
 			</table>
 		</div>
 	</div>
-	<div class="col-md-4">
-		<div class="table-responsive">
-			<h2> User's Info </h2>
-			<table class="table table-bordered">
-				<tr>
-					<th>Name</th>
-					<td>{{userinfo.name}}</td>
-				</tr>	
-				<tr>
-					<th>Total Blogs</th>
-					<td>{{total_blog}}</td>
-				</tr>
-			</table>
-		</div>
-	</div>
-
 </html>

+ 2 - 0
hackathon_starter/hackathon/urls.py

@@ -18,4 +18,6 @@ urlpatterns = patterns('',
     url(r'^twilio/$', views.twilio, name='twilio'),
     url(r'^instagram/$', views.instagram, name='instagram'),
     url(r'^instagram_login/$', views.instagram_login, name='instagram_login'),
+    url(r'^instagramUser/$', views.instagramUser, name='instagramUser'),
+    url(r'^tumblr_login/$', views.tumblr_login, name='tumblr_login'),
 )

+ 38 - 12
hackathon_starter/hackathon/views.py

@@ -54,6 +54,7 @@ def api_examples(request):
         obtain_oauth_verifier = getTumblr.authorize_url()
     else:
         obtain_oauth_verifier = '/hackathon/tumblr'
+    #obtain_oauth_verifier = getTumblr.authorize_url()
     context = {'title': 'API Examples Page', 'tumblr_url': obtain_oauth_verifier, 'instagram_url':instagram_url}
     return render(request, 'hackathon/api_examples.html', context)
 
@@ -116,21 +117,36 @@ def githubResume(request):
 
 def tumblr(request):
     ''' Tumblr api calls '''
-    #retrieve verifier via url link
-    #if not request.GET.items():
-    #    return HttpResponseRedirect('/hackathon/api/')
     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+'@example.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")
-    #get user's information
-    userinfo, total_blog = getTumblr.getUserInfo()
-    context = {'title': "What's up Starbucks?", 'blogData': blog, 'blogTag': tagged_blog, 'blogontag': blogontag, 'userinfo': userinfo, 'total_blog':total_blog}
+
+    context = {'title': "What's up Starbucks?", 'blogData': blog, 'blogTag': tagged_blog, 'blogontag': blogontag}
     return render(request, 'hackathon/tumblr.html', context)
 
 
@@ -152,7 +168,9 @@ def instagram(request):
             profile = Profile()
             profile.user = new_user
             profile.oauth_token = getInstagram.client_id
-            profile.oauth_secret = getInstagram.client_secret
+            #since instagram doesnt have oauth_secret value, using this field to temp set in access token
+            # for JSON response
+            profile.oauth_secret = getInstagram.access_token 
             profile.save()
 
         user = authenticate(username=getInstagram.user_data['username'], password='password')
@@ -161,12 +179,18 @@ def instagram(request):
     search_tag = 'kitten'
     #return tagged objects
     tagged_media = getInstagram.get_tagged_media(search_tag)
-    #user =  getInstagram.user_data['username']
-    #print User.objects.get(username=user)
-
     context = {'title': 'Instagram', 'tagged_media': tagged_media, 'search_tag': search_tag}
     return render(request, 'hackathon/instagram.html', context)
 
+def instagramUser(request):
+    '''Returns JSON response about a specific Instagram'''
+
+    user_id = User.objects.get(username='mk200789').id
+    access_token = Profile.objects.get(user=user_id).oauth_secret
+    parsedData = getInstagram.get_user_info(access_token)
+    return JsonResponse({ 'data': parsedData })
+
+
 ##################
 #  LINKED IN API #
 ##################
@@ -229,10 +253,8 @@ def user_login(request):
         username = request.POST.get('username')
         password = request.POST.get('password')
 
-
         user = authenticate(username=username, password=password)
 
-
         if user:
             if user.is_active:
                 login(request, user)
@@ -254,3 +276,7 @@ def user_logout(request):
 def instagram_login(request):
     instagram_url =getInstagram.get_authorize_url()
     return HttpResponseRedirect(instagram_url)
+
+def tumblr_login(request):
+    tumblr_url = getTumblr.authorize_url()
+    return HttpResponseRedirect(tumblr_url)