parsing of repo graph
This commit is contained in:
parent
5d370e36d0
commit
221b3d637b
1 changed files with 34 additions and 29 deletions
|
@ -12,6 +12,7 @@ from django.views.generic.edit import CreateView, ModelFormMixin, FormView
|
||||||
from django.views.generic.list import ListView
|
from django.views.generic.list import ListView
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from ghapi import api
|
||||||
from models import GHUser, Repo
|
from models import GHUser, Repo
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,47 +36,51 @@ class Graph(object):
|
||||||
|
|
||||||
|
|
||||||
class NetworkView(DetailView):
|
class NetworkView(DetailView):
|
||||||
#example list of edges
|
|
||||||
# nodes just in a list
|
|
||||||
[
|
|
||||||
{'from': 'node1',
|
|
||||||
'to' : 'node2',
|
|
||||||
'distance' : 'weight'},
|
|
||||||
]
|
|
||||||
|
|
||||||
def create_graph(self, nodes, edges):
|
|
||||||
graph = Graph()
|
|
||||||
graph.nodes = set(nodes)
|
|
||||||
for edge in edges:
|
|
||||||
graph.add_edge(edge['from'], edge['to'], edge['distance'])
|
|
||||||
return graph
|
|
||||||
|
|
||||||
|
|
||||||
def get_user(self):
|
def get_user(self):
|
||||||
self.user = User.objects.get(username=self.kwargs.get('username'))
|
self.user = GHUser.objects.get(username=self.kwargs.get('username'))
|
||||||
self.person = self.user.get_profile()
|
return self.user
|
||||||
return
|
|
||||||
|
|
||||||
def get_repos(self):
|
def get_user_network(self):
|
||||||
self.repos = Repo.objects.get(user=self.get_user())
|
user = self.get_user()
|
||||||
return repos
|
graph = []
|
||||||
|
|
||||||
|
def get_repo_network(self):
|
||||||
|
user = self.get_user()
|
||||||
|
graph = []
|
||||||
|
for repo in api.get_iter('user/%s/repos' % user):
|
||||||
|
# TODO: (Lynn) this is messy - clean up
|
||||||
|
links = {}
|
||||||
|
repo_info = api.get('repos/%s/%s' % (user, repo))
|
||||||
|
parent = repo_info['parent']['owner']['login']
|
||||||
|
child = repo_info['owner']['login']
|
||||||
|
watchers = repo_info['parent']['watchers']
|
||||||
|
network = repo_info['network_count']
|
||||||
|
date_updated_parent = repo_info['parent']['updated_at']
|
||||||
|
date_updated_child = repo_info['updated_at']
|
||||||
|
links['source'] = parent
|
||||||
|
links['target'] = child
|
||||||
|
links['weight'] = {'watchers': watchers, 'network' : network,
|
||||||
|
'date_updated_parent' : date_updated_parent,
|
||||||
|
'date_updated_child' : date_updated_child }
|
||||||
|
graph.append(links)
|
||||||
|
return graph
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
self.get_user()
|
self.get_user()
|
||||||
if self.get_repos:
|
if repos:
|
||||||
|
# do repo-y things
|
||||||
|
self.get_repo_network()
|
||||||
|
else:
|
||||||
|
# do user-y things
|
||||||
|
self.get_user_network()
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
queryset = kwargs.pop('object_list')
|
# TODO: (Lynn) figure out what's needed for context data
|
||||||
page_size = self.get_paginate_by(queryset)
|
|
||||||
context_object_name = self.get_context_object_name(queryset)
|
context_object_name = self.get_context_object_name(queryset)
|
||||||
|
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
self.object_list = self.get_queryset()
|
self.object_list = self.get_queryset()
|
||||||
context = self.get_context_data(object_list=self.object_list)
|
context = self.get_context_data(object_list=self.object_list)
|
||||||
context.update({'xxx': 'what should go here'})
|
|
||||||
return self.render_to_response(context)
|
return self.render_to_response(context)
|
||||||
|
|
||||||
@method_decorator(login_required)
|
@method_decorator(login_required)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue