def show_blog_or_workshop( request, blog_slug ): b = get_object_or_404(Blog, slug=blog_slug) posts = b.post_set.filter(draft=0) #------------ Get List of flags in blog --------- flags = Flag.objects.filter( post__blog = b.id ).filter( blog__post__draft = 0 ).distinct() #------------ If a specific flag was requested, then show only that flag ------- if( request.method == 'GET' and request.GET.has_key('flag') ): flagId = int(request.GET['flag']) posts = posts.filter( flags__id = flagId ) #------------ Create Objects for Hebrew Calender ---- calLinkType = FRONTPAGE_URL_TYPE calLinkTemplate = CALENDAR_URL_TYPE_REGISTRY[calLinkType] dateToShow = date.today() bgColorProcessor = makeHebBGColorProcessor( dateToShow ) dayLinks = makeHebCalLinks( '/?date=%s', date.today() ) calender = makeHebCalRequestContext(dayLinks, engDate=date.today(), urlType=calLinkType, highlightToday=True) render_dict = add_render_variables({ 'blog': b, 'flags': flags }, obj=b) if b.is_workshop(): for p in posts: p.make_sure_workshop_exists() #------------- Takes care of workshops -------- no_events = posts.filter(workshop__workshopevent=None) now = datetime.datetime.now() start_of_today = datetime.datetime(now.year, now.month, now.day) _have_events = posts.filter( workshop__workshopevent__workshopeventpart__start_time__gte=start_of_today ).order_by('workshop__workshopevent__workshopeventpart__start_time') temp_set = set() have_events = [] for p in _have_events: if p not in temp_set: have_events.append(p) temp_set.add(p) if settings.SHOW_WORKSHOPS_WITH_NO_EVENTS: posts = itertools.chain(have_events, no_events) else: posts = have_events render_dict['post_list'] = posts # don't show no_events for now return render_to_response('cityblog/blog_workshops.html', render_dict, context_instance = RequestContext(request, {}, [calender, bgColorProcessor]) ) else: #------------ Standard blog with normal, non workshop, posts -------- return generic_object_list( request, queryset=posts, template_object_name='post', template_name='cityblog/blog_posts.html', allow_empty=True, extra_context=render_dict, context_processors =[calender,bgColorProcessor], paginate_by=NUM_POSTS_PER_PAGE)
def display_workshop(request, workshop_slug, preview=False): # get workshop, get all workshopevents for it, get all workshopeventparts (ok - delegate) # render using template. add registration form at the bottom (reuse top - or just move it here) if( not preview ): workshop = get_object_or_404(Workshop, slug=workshop_slug, defining_post__draft=0) else: workshop = get_object_or_404(Workshop, slug=workshop_slug, defining_post__author=request.user.id ) p = workshop.defining_post blog = p.blog pImages = p.postimage_set.all().order_by( 'index' ) #------------ Get List of flags in blog --------- flags = Flag.objects.filter( post__blog = blog.id ).filter( post__draft = 0 ).distinct() #------------ Create Objects for Hebrew Calender ---- calLinkType = FRONTPAGE_URL_TYPE calLinkTemplate = CALENDAR_URL_TYPE_REGISTRY[calLinkType] return generic_object_detail( request, object_id = workshop.id, #p.id, queryset = Workshop.objects.all(), template_name = "workshop/workshop.html", #context_processors =[calendar,bgColorProcessor], extra_context = add_render_variables( { 'post':p, 'workshop':workshop, 'blog':blog, 'flags':flags, 'galleryImages':pImages }, obj=p), template_object_name = 'post' )
def display_post( request, post_id, preview = False ): if( not preview ): p = get_object_or_404(Post, id=post_id, draft=0) else: p = get_object_or_404(Post, id=post_id, author=request.user.id ) # redirect to workshop (#35) if p.is_workshop(): return HttpResponseRedirect(reverse('workshop', args=[p.workshop.slug])) blog = p.blog pImages = p.postimage_set.all().order_by( 'index' ) #-------------- Get Correct Template ---------------- if( p.post_style == 2 ): template_name = "post_long.html" elif( p.post_style == 3 ): template_name = "post_gallery.html" else: template_name = "post_short.html" #------------ Get List of flags in blog --------- flags = Flag.objects.filter( post__blog = blog.id ).filter( post__draft = 0 ).distinct() #------------ Create Objects for Hebrew Calender ---- calLinkType = FRONTPAGE_URL_TYPE calLinkTemplate = CALENDAR_URL_TYPE_REGISTRY[calLinkType] #dateToShow = date.today() #bgColorProcessor = makeHebBGColorProcessor( dateToShow ) #dayLinks = makeHebCalLinks( calLinkTemplate, date.today() ) #calendar = makeHebCalRequestContext(dayLinks, engDate=date.today(), urlType=calLinkType, highlightToday=True) #-------------- Extra Info ---------------- return generic_object_detail( request, object_id = post_id, queryset = Post.objects.all(), template_name = 'cityblog/%s'%template_name, #context_processors =[calendar,bgColorProcessor], extra_context = add_render_variables({ 'blog' : blog, 'flags' : flags, 'galleryImages': pImages }, obj=p), template_object_name = 'post' )
def subject_view( request, subject_slug ): theSubject = get_object_or_404(Subject, slug=subject_slug) flags = theSubject.flags.all() cat_ids = [ cat.id for cat in flags ] thePosts = Post.objects.filter( draft=0, flags__in = cat_ids ) frontpage = FrontPage.objects.filter(draft=False).latest() return generic_object_list( request, queryset=thePosts, template_object_name='post', template_name='cityblog/subject_view.html', allow_empty=True, extra_context=add_render_variables( { 'theSubject' : theSubject, 'frontpage' : frontpage }, obj=theSubject), context_processors =[], paginate_by=NUM_SUBJECTS_PER_PAGE)