فهرست منبع

Adding forked repositories to data

David Leonard 10 سال پیش
والد
کامیت
badc17a7fd

+ 33 - 1
hackathon_starter/hackathon/scripts/github.py

@@ -64,6 +64,39 @@ def getUserRepositories():
 
 	return repositories
 
+def getForkedRepositories():
+	'''Get a list of all forked repositories by a user.'''
+	# Which page number of data are we looking at?
+	pageNumber = 1
+
+	# List of all our json
+	jsonList = []
+
+	# List of all repositories
+	forkedRepositories = []
+
+	# IDEA: Repeatedly loop over urls and check if the content has less than 30 entries.
+	# 		If it does, then we have iterated over all the data. Time to parse it. 
+	while True:
+		req = requests.get('https://api.github.com/users/DrkSephy/repos?page=' + str(pageNumber) + '&client_id=2404a1e21aebd902f6db&client_secret=3da44769d4b7c9465fa4c812669148a163607c23')
+		jsonList.append(json.loads(req.content))
+		if len(json.loads(req.content)) < 30:
+			break
+		elif len(json.loads(req.content)) >= 30:
+			pageNumber += 1
+
+	# Loop over our data and extract all of the repository names
+	forkedRepos = {}
+	for data in jsonList:
+		for datum in data:
+			if datum['fork'] == True:
+				#print datum['name']
+				forkedRepos['name'] = datum['name']
+				forkedRepositories.append(forkedRepos)
+				forkedRepos = {}
+
+	return forkedRepositories
+
 def getTopContributedRepositories(repos):
 	'''Get a list of all commits for each repository owned.'''
 
@@ -134,7 +167,6 @@ def getStarGazerCount():
 
 def filterStarGazerCount(data):
 	'''Return top 10 starred repositories.'''
-	
 	maxStars= []
 	for i in range(1, 10):
 		maxStarGazers = max(data, key=lambda x:x['stargazers_count'])

+ 62 - 40
hackathon_starter/hackathon/templates/hackathon/github.html

@@ -37,52 +37,74 @@
         </div>
     </div>
 
-        <div class="col-xs-6">
-            <h2> Top Contributed Repositories </h2>
-            <div class="table-responsive">
-                <table class="table table-bordered table-hover table-striped tablesorter">
-                    <thead>
-                    <tr>
-                    <th class="header"> Repository <i class="icon-sort"></i></th>
-                    <th class="header"> Total <i class="icon-sort"></i></th>
-                    </tr>
-                </thead>
-                <tbody>
+    <div class="col-xs-4">
+        <h2> Top Contributed Repositories </h2>
+        <div class="table-responsive">
+            <table class="table table-bordered table-hover table-striped tablesorter">
+                <thead>
+                <tr>
+                <th class="header"> Repository <i class="icon-sort"></i></th>
+                <th class="header"> Total <i class="icon-sort"></i></th>
+                </tr>
+            </thead>
+            <tbody>
 
-                {% for key in data.filteredData %}
-                    <tr>
-                        <td>{{ key.repo_name }}</td>
-                        <td>{{ key.total }}</td>
-                    </tr>
-                {% endfor %}
+            {% for key in data.filteredData %}
+                <tr>
+                    <td>{{ key.repo_name }}</td>
+                    <td>{{ key.total }}</td>
+                </tr>
+            {% endfor %}
 
-                </tbody>
-                </table>
-            </div>
+            </tbody>
+            </table>
         </div>
-        <div class="col-xs-6">
-            <h2> Top Starred Repositories </h2>
-            <div class="table-responsive">
-                <table class="table table-bordered table-hover table-striped tablesorter">
-                    <thead>
-                    <tr>
-                    <th class="header"> Repository <i class="icon-sort"></i></th>
-                    <th class="header"> Count <i class="icon-sort"></i></th>
-                    </tr>
-                </thead>
-                <tbody>
+    </div>
+    <div class="col-xs-4">
+        <h2> Top Starred Repositories </h2>
+        <div class="table-responsive">
+            <table class="table table-bordered table-hover table-striped tablesorter">
+                <thead>
+                <tr>
+                <th class="header"> Repository <i class="icon-sort"></i></th>
+                <th class="header"> Count <i class="icon-sort"></i></th>
+                </tr>
+            </thead>
+            <tbody>
 
-                {% for key in data.filteredStargazers %}
-                    <tr>
-                        <td>{{ key.name }}</td>
-                        <td>{{ key.stargazers_count }}</td>
-                    </tr>
-                {% endfor %}
+            {% for key in data.filteredStargazers %}
+                <tr>
+                    <td>{{ key.name }}</td>
+                    <td>{{ key.stargazers_count }}</td>
+                </tr>
+            {% endfor %}
+
+            </tbody>
+            </table>
+        </div>
+    </div>
+
+    <div class="col-xs-4">
+        <h2> Contributions </h2>
+        <div class="table-responsive">
+            <table class="table table-bordered table-hover table-striped tablesorter">
+                <thead>
+                <tr>
+                <th class="header"> Repository <i class="icon-sort"></i></th>
+                </tr>
+            </thead>
+            <tbody>
 
-                </tbody>
-                </table>
-            </div>
+            {% for key in data.forkedRepos %}
+                <tr>
+                    <td>{{ key.name }}</td>
+                </tr>
+            {% endfor %}
+
+            </tbody>
+            </table>
         </div>
+    </div>
 
 </body>
 </html>

+ 3 - 0
hackathon_starter/hackathon/views.py

@@ -132,11 +132,14 @@ def github(request):
     stargazers = getStarGazerCount()
     # Return list of top 10 stargazed repositories
     filteredStargazers = filterStarGazerCount(stargazers)
+    # Get list of forked repositories
+    forkedRepos = getForkedRepositories()
     
     # Store data into a dictionary for rendering
     allData['userData'] = userData
     allData['filteredData'] = filtered
     allData['filteredStargazers'] = filteredStargazers
+    allData['forkedRepos'] = forkedRepos
 
     return render(request, 'hackathon/github.html', { 'data': allData })