aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'web/main/views.py')
-rw-r--r--web/main/views.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/web/main/views.py b/web/main/views.py
new file mode 100644
index 0000000..a1cafe0
--- /dev/null
+++ b/web/main/views.py
@@ -0,0 +1,91 @@
+# Create your views here.
+
+from django.shortcuts import render_to_response, get_object_or_404
+from django.http import Http404,HttpResponse
+from django.utils.html import escape
+from django.core.exceptions import ObjectDoesNotExist
+
+
+from web.main.models import *
+
+def index(request):
+ last_pkgs = Package.objects.all().order_by('-id')[:5]
+ cats = PackageCategory.objects.all()
+ print cats
+ return render_to_response('index.html', {'latest_packages': last_pkgs,'categories':cats})
+
+def browse(request, category_name=None, pkg_name=None):
+ cats = PackageCategory.objects.all()
+ only_failed = False
+ if request.method == "GET" and "failed" in request.GET:
+ only_failed=True
+ if not category_name and not pkg_name:
+ if not only_failed:
+ cats = PackageCategory.objects.all()
+ else:
+ pprops = PackageProperties.objects.filter(error_code__gt=0)
+ cats = set()
+ for pprop in pprops:
+ cats.add(pprop.packageversion.category)
+ return render_to_response('browse-categories.html', {'objects':cats,'failed': only_failed})
+ cat = PackageCategory.objects.get(name=category_name)
+ if category_name and not pkg_name:
+ pversions = cat.packageversion_set.all()
+ packages = set()
+ for pv in pversions:
+ pprops = pv.packageproperties_set.filter(error_code__gt=0)
+ if len(pprops) == 0 and only_failed:
+ continue
+ packages.add(pv.package.name)
+ return render_to_response('browse-categories.html',{'objects':packages,'category':cat, 'failed': only_failed})
+
+ pkg = Package.objects.get(name=pkg_name)
+ pversions = PackageVersion.objects.filter(package=pkg, category=cat)
+
+ return render_to_response('view-package.html',{'pversions':pversions})
+
+
+def view(request, category_name, pkg_name, pkg_ver):
+ cat = PackageCategory.objects.get(name=category_name)
+ pkg = Package.objects.get(name=pkg_name)
+ pv = PackageVersion.objects.filter(package=pkg, category = cat, version = pkg_ver)
+ if not pv or len(pv) == 0:
+ raise Http404
+
+ pv = pv[0]
+ pprops = pv.packageproperties_set.all()
+ cpv = "%s/%s-%s" % (category_name, pkg_name, pkg_ver)
+ return render_to_response('view-package-props.html',{'pprops':pprops,'cpv':cpv})
+
+def view_attachment(request, attachment_id):
+ try:
+ at = Attachment.objects.get(pk=attachment_id)
+ return HttpResponse(at.content, mimetype=at.mimetype)
+ except Attachment.DoesNotExist:
+ raise Http404
+
+
+def view_content(request, packageproperties_id):
+ try:
+ pp = PackageProperties.objects.get(pk=packageproperties_id)
+ ppfs = pp.packageproperties_file_set.order_by('file')
+ return render_to_response('view-content.html', {'ppfs':ppfs})
+ except PackageProperties.DoesNotExist:
+ raise Http404
+
+
+def search_by_path(request, path):
+ if request.method == "GET" and "path" in request.GET:
+ path = request.GET["path"]
+ try:
+ file = File.objects.get(path=path)
+ ppfs = file.packageproperties_file_set.all()
+ cpvs = set()
+ for ppf in ppfs:
+ cpvs.add("%s/%s-%s" % (ppf.packageproperties.packageversion.category.name,
+ ppf.packageproperties.packageversion.package.name,
+ ppf.packageproperties.packageversion.version))
+ cpvs = sorted(cpvs)
+ except File.DoesNotExist:
+ return render_to_response('404.html', {'path':path})
+ return render_to_response('list-packages-with-file.html',{'cpvs': cpvs, 'path':path})