aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Ochotnicky <sochotnicky@gmail.com>2009-08-10 20:57:01 +0200
committerStanislav Ochotnicky <sochotnicky@gmail.com>2009-08-10 20:57:01 +0200
commitcf75a67914798739e22e90ec134bd7a6b822b8b7 (patch)
treec95c20667caf32a4bc1d202b429cabbd290923a3 /web/main/views.py
parentPrepared urls and settings for templates (diff)
downloadcollagen-cf75a67914798739e22e90ec134bd7a6b822b8b7.tar.gz
collagen-cf75a67914798739e22e90ec134bd7a6b822b8b7.tar.bz2
collagen-cf75a67914798739e22e90ec134bd7a6b822b8b7.zip
Basic functions of web working
This is really big commit, since there was no use putting in absolutely non functional code until now. Some templates might be simplified later on...
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})