def get_stats(threshold=5): userlist = [(user.username, total_size(user)) for user in User.objects.all()] userlist.sort(key=operator.itemgetter(1), reverse=True) labels = [] sizes = [] others = 0 for (i, (username, size)) in enumerate(userlist): if i < threshold: labels.append(username) sizes.append(size) else: others += size if len(labels) == threshold: labels.append("Autres") sizes.append(others) total = float(sum(sizes) or 1) values = [str(size / total * 100) for size in sizes] return "http://chart.apis.google.com/chart?cht=p3&chd=t:%s&chs=340x100&chl=%s" % ( ",".join(values), "|".join(labels), )
def delete_file(request): if request.method != "POST": raise Http404 files = get_list_or_404(File, pk__in=request.POST.getlist("ids")) owner = files[0].user for file in files: if file.owned_by(request.user): file.delete() return HttpResponse(simplejson.dumps([owner.id, owner.file_set.count(), filesizeformat(total_size(owner))]))
def manage_users(request): if request.method == "POST": form = UserCreationForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(reverse("manage_users")) else: form = UserCreationForm() # Remove help text form.fields["username"].help_text = "" user_list = [] for user in User.objects.all(): user_list.append((user, RawPassword.objects.get(user=user), user.file_set.count(), total_size(user))) return render(request, "app/manage_users.html", {"user_list": user_list, "form": form, "chart_url": get_stats()})
def total_size(user): return utils.total_size(user)