def mushroom_admin_list(request, entries, start=None, per_page=None): """ List a series of entries for one model in the mushroom_admin page. """ entries = globals()[entries]() # Not sure if this is the most # efficient way to do this (using # eval might almost be okay, # because we're only accepting a # regular expression matching # [a-z]+ as input for 'entries' # ... but paranoia is good, right?) model = entries.MODEL entry_name = entries.NAME template = entries.LIST_TEMPLATE pn = prev_next(start, per_page) entries = model.objects.all()[pn.start:pn.next] if pn.per_page > len(entries): pn.next = 0 ctxt = { 'entries' : entries, 'request' : request, 'prev_next' : pn, 'page_name' : "%ss" % entry_name, 'entry_name' : entry_name, 'media_url' : MEDIA_URL, } return render_to_response(template, ctxt)
def list_walks(request, start=None, per_page=None): """ Lists all walks. """ pn = prev_next(start, per_page) walk_list = Walk.objects.all()[pn.start:pn.next] if pn.per_page > len(walk_list): pn.next = 0 template = 'walk_list.html' ctxt = { 'request' : request, 'walk_list' : walk_list, 'prev_next' : pn, 'page_name' : 'Walk List', 'media_url' : MEDIA_URL, } return render_to_response(template, ctxt)
def announcements_archive(request, start=None, per_page=None): """ Return an archive of the announcements/articles. """ template = 'article_archive.html' pn = prev_next(start, per_page) announcements = Announcement.objects.all()[pn.start:pn.next] if pn.per_page > len(announcements): pn.next = 0 ctxt = { 'announcements' : announcements, 'media_url' : MEDIA_URL, 'prev_next' : pn, 'request' : request, } return render_to_response(template, ctxt)
def news_archive(request, start=None, per_page=None): """ Return an archive of the news pages. """ template = 'news_archive.html' pn = prev_next(start, per_page) newsbits = Newsbit.objects.all()[pn.start:pn.next] if pn.per_page > len(newsbits): pn.next = 0 ctxt = { 'newsbits' : newsbits, 'media_url': MEDIA_URL, 'prev_next' : pn, 'request': request, } return render_to_response(template, ctxt)
def list_memberships(request, start=None, per_page=None, due_by=None, year=None, month=None): """ List all memberships, or all late memberships. """ pn = prev_next(start, per_page) if due_by: if month and year: due_by = datetime.date(int(year), int(month), 1) else: due_by = datetime.date.today() members = Membership.objects.exclude( due__paid_thru__gte=due_by, ).exclude( membership_type='honorary' ).exclude( membership_type__startswith='corresponding' )[pn.start:pn.next] else: members = Membership.objects.all()[pn.start:pn.next] due_by = None if pn.per_page > len(members): pn.next = 0 member_list = [] for member in members: users = User.objects.filter( userprofile__membership=member.id) mem_blob = { 'membership' : member, 'users' : users } member_list.append(mem_blob) template = 'memberlist.html' ctxt = { 'member_list' : member_list, 'request' : request, 'due_by' : due_by, 'prev_next' : pn, 'page_name' : 'List Memberships', 'media_url' : MEDIA_URL, } return render_to_response(template, ctxt)