50 lines
No EOL
1.7 KiB
Python
50 lines
No EOL
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from collections import defaultdict
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponse, Http404, HttpResponseForbidden
|
|
from django.shortcuts import render_to_response, redirect
|
|
from django.template.context import RequestContext
|
|
from django.utils.decorators import method_decorator
|
|
from django.views.generic.base import TemplateView, TemplateResponseMixin
|
|
from django.views.generic.detail import DetailView
|
|
from django.views.generic.edit import CreateView, ModelFormMixin, FormView
|
|
from django.views.generic.list import ListView
|
|
|
|
from django.contrib.auth.models import User
|
|
from models import GHUser, Repo
|
|
|
|
|
|
class Graph(object):
|
|
def __init__(self):
|
|
self.nodes = set()
|
|
self.edges = defaultdict(list)
|
|
self.distances = {}
|
|
|
|
def add_node(self, value):
|
|
self.nodes.add(value)
|
|
|
|
def add_edge(self, from_node, to_node, distance):
|
|
self.edges[from_node].append(to_node)
|
|
self.edges[to_node].append(from_node)
|
|
self.distances[(from_node, to_node)] = distance
|
|
|
|
|
|
class UserNetworkView(DetailView):
|
|
context_object_name = 'ghuser'
|
|
model = GHUser
|
|
|
|
def get_user(self):
|
|
self.user = User.objects.get(username=self.kwargs.get('username'))
|
|
self.person = self.user.get_profile()
|
|
return self.person
|
|
|
|
def get(self):
|
|
self.object_list = self.get_queryset()
|
|
context = self.get_context_data(object_list=self.object_list)
|
|
context.update({'user': self.user})
|
|
return self.render_to_response(context)
|
|
|
|
@method_decorator(login_required)
|
|
def dispatch(self, *args. **kwargs):
|
|
return super(ProtectedView, self).dispatch(*args, **kwargs) |