Merge branch 'master' of github.com:econchick/rogueojiiofwales into crazy
Conflicts: githubnetwork/views.py
This commit is contained in:
		
						commit
						b456362a47
					
				
					 2 changed files with 83 additions and 4 deletions
				
			
		|  | @ -93,7 +93,7 @@ class GHUser(BaseAPIModel): | |||
| 
 | ||||
| 
 | ||||
| class Repo(BaseAPIModel): | ||||
|     owner = models.ForeignKey(GHUser, unique=True) | ||||
|     owner = models.ForeignKey(GHUser, unique=True, verbose_name='ghuser') | ||||
|     forks = models.IntegerField() | ||||
|     language = models.CharField(max_length=255) | ||||
|     created_at = models.DateTimeField('date repo created') | ||||
|  |  | |||
|  | @ -1,15 +1,94 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from django.contrib.auth.decorators import login_required | ||||
| from django.http import HttpResponseBadRequest, HttpResponse | ||||
| from django.http import HttpResponse | ||||
| from django.shortcuts import render_to_response | ||||
| from django.template.context import RequestContext | ||||
| from django.utils import simplejson | ||||
| from django.utils.decorators import method_decorator | ||||
| from django.views.generic.detail import DetailView | ||||
| from ghapi import api | ||||
| from models import GHUser | ||||
| 
 | ||||
| 
 | ||||
| class Graph(object): | ||||
|     def __init__(self): | ||||
|         self.nodes = set() | ||||
|         self.edges = {} | ||||
|         self.distances = {} | ||||
| 
 | ||||
|     def add_node(self, value): | ||||
|         self.nodes.add(value) | ||||
| 
 | ||||
|     def add_edge(self, from_node, to_node, distance): | ||||
|         self._add_edge(from_node, to_node, distance) | ||||
|         self._add_edge(to_node, from_node, distance) | ||||
| 
 | ||||
|     def _add_edge(self, from_node, to_node, distance): | ||||
|         self.edges.setdefault(from_node, []) | ||||
|         self.edges[from_node].append(to_node) | ||||
|         self.distances[(from_node, to_node)] = distance | ||||
| 
 | ||||
| 
 | ||||
| class NetworkView(DetailView): | ||||
|     def get_user(self): | ||||
|         self.user = GHUser.objects.get(username=self.kwargs.get('username')) | ||||
|         return self.user | ||||
| 
 | ||||
|     def get_user_network(self): | ||||
|         user = self.get_user() | ||||
|         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): | ||||
|         self.get_user() | ||||
|         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): | ||||
|         # TODO: (Lynn) figure out what's needed for context data | ||||
|         context_object_name = self.get_context_object_name(queryset) | ||||
| 
 | ||||
|     def get(self): | ||||
|         self.object_list = self.get_queryset() | ||||
|         context = self.get_context_data(object_list=self.object_list) | ||||
|         return self.render_to_response(context) | ||||
| 
 | ||||
|     @method_decorator(login_required) | ||||
|     def dispatch(self, *args, ** kwargs): | ||||
|         return super(ProtectedView, self).dispatch(*args, **kwargs) | ||||
| 
 | ||||
| 
 | ||||
| @login_required | ||||
| def me(request): | ||||
|     context = RequestContext(request) | ||||
|     context['followers'] = simplejson.dumps([{'name': unicode(follower), 'group': 2} for follower in request.gh_user.following.all()]) | ||||
|     context['followers'] = simplejson.dumps( | ||||
|         [{'name': unicode(follower), 'group': 2} for follower in request.gh_user.following.all()]) | ||||
|     return render_to_response('graph.html', context) | ||||
| 
 | ||||
| 
 | ||||
| @login_required | ||||
| def get_user_followers(request): | ||||
|     name = request.GET.get('user', None) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jonas Obrist
						Jonas Obrist