diff options
author | Stanislav Ochotnicky <sochotnicky@gmail.com> | 2009-08-10 20:57:01 +0200 |
---|---|---|
committer | Stanislav Ochotnicky <sochotnicky@gmail.com> | 2009-08-10 20:57:01 +0200 |
commit | cf75a67914798739e22e90ec134bd7a6b822b8b7 (patch) | |
tree | c95c20667caf32a4bc1d202b429cabbd290923a3 /web/main/views.py | |
parent | Prepared urls and settings for templates (diff) | |
download | collagen-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.py | 91 |
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}) |