def project(request, username, project_name): key = "project-%s-%s" % (username, project_name) context = cache.get(key) if context is None: profile = get_object_or_404(Profile, slug=slugify(username)) try: project = Project.objects.get(url=get_github_repo_url(username, project_name)) except Project.DoesNotExist: raise Http404 commits_by_user = defaultdict(list) for c in project.commit_set.all(): commits_by_user[c.user].append(c) commits = sorted( [(sum(c.points for c in commits), user) for user, commits in commits_by_user.iteritems()], reverse=True ) context = {"profile": profile, "project": project, "commits": commits} cache.set(key, context, 3600) return render_to_response("gitawesome/project.html", context, context_instance=RequestContext(request))
def repo(request): repo_form = RepoForm() if request.method == "POST": repo_form = RepoForm(request.POST) if repo_form.is_valid(): # queue repo analysis url = repo_form.cleaned_data["repo_url"] parts = urlparse.urlsplit(url) username, project_name = filter(None, parts[2].split("/")) User.objects.get_or_create(username=username) Project.objects.get_or_create(name=project_name, url=get_github_repo_url(username, project_name)) analyze_repo.delay(username, project_name) return HttpResponseRedirect( "%s?%s" % ( reverse("gitawesome_repo_queued"), urllib.urlencode({"username": username, "project_name": project_name}), ) ) context = {"repo_form": repo_form} return render_to_response("gitawesome/repo.html", context, context_instance=RequestContext(request))