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)