parsing of repo graph

This commit is contained in:
Lynn Root 2012-08-18 11:56:39 -07:00
parent 5d370e36d0
commit 221b3d637b

View file

@ -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)