All pastes #221875 Raw Edit

Unnamed

public text v1 · immutable
#221875 ·published 2006-10-25 22:45 UTC
rendered paste body
#########################
# urls.py
#########################


from django.conf.urls.defaults import *
#import settings

urlpatterns = patterns('',

    (r'^admin/', include('django.contrib.admin.urls')),
    (r'^$', 'myproject.sam.views.photos'),
    (r'^photos/$', 'myproject.sam.views.photos'),
    (r'^gallery/image/$', 'myproject.sam.views.image'),
    (r'^galleries/(.+)/(.+)/$', 'myproject.sam.views.image'),
    (r'^galleries/(.+)/$', 'myproject.sam.views.gallery'),
    (r'^debug/$', 'myproject.sam.views.debug_view'),
    (r'^testimonials/$', 'myproject.sam.views.testimonials'),
    (r'^(.+)/$', 'myproject.sam.views.pages'),
)


##################################
# views.py
##################################

from django.shortcuts import render_to_response, get_object_or_404
from path import *
import settings
from myproject.sam.models import Page, Testimonial
from PIL import IptcImagePlugin
from PIL import Image
from math import sqrt, ceil

# settings.MEDIA_URL += "/sam"
site_title = "Sam Tinson Photographer"
tagline = "What a swell guy!"
base_url = "/sam/"
media_folder = path(settings.MEDIA_ROOT)
# media_folder = path("C:\\Documents and Settings\\Andy\\My Documents\\Programming\\Python\\Django\\sam")
gallery_folder = media_folder / "images" / "galleries"
top_level_pages = Page.objects.all().order_by('order')
global_context = {'site_title': site_title,
                  'tagline':tagline,
                  'base_url': base_url,
                'settings': settings,
                'top_level_pages': top_level_pages}

def photos(request):
    galleries = [d.namebase for d in gallery_folder.dirs()]
    context = {'page_title':'photos','galleries':galleries}
    context.update(global_context)
    return render_to_response('sam/photos.html', context)

def pages(request,page_name):
    page = get_object_or_404(Page, pk=page_name)
    context = {'page_title':page.name,'page':page}
    context.update(global_context)
    return render_to_response('sam/page.html', context)

def testimonials(request):
    page = get_object_or_404(Page, pk='testimonials')
    testimonials = Testimonial.objects.all().order_by('order')
    context = {'page_title':page.name,'page':page, 'testimonials':testimonials}
    context.update(global_context)
    return render_to_response('sam/testimonials.html', context)

def gallery(request, gallery):
    image_folder = gallery_folder / gallery
    images = [d.name for d in image_folder.glob('*.jpg')]
    num_columns = ceil(sqrt(len(images)))
    num_rows = ceil(len(images)/num_columns)
    image_list = []
    for row in range(int(num_rows)):
        image_row = []
        for column in range(int(num_columns)):
            if len(images)>0:
                image_row.append(images.pop())
        image_list.append(image_row)    
    context = {'page_title':gallery,'gallery':gallery,'image_list':image_list,'num_columns':num_columns}
    context.update(global_context)
    return render_to_response('sam/gallery.html', context)

def image(request,gallery,image):
    image_folder = gallery_folder / gallery
    image_filename = image_folder / (image+".jpg")
    im = Image.open(image_filename)
    iptc = IptcImagePlugin.getiptcinfo(im)
    
    context = {'page_title':image,'gallery':gallery,'image':image,'next_image':'next','previous_image':'prev', 'caption':iptc [(2,120)]}
    context.update(global_context)
    return render_to_response('sam/image.html', context)