def record_rsvp(request):
  dbsession = DBSession()
  query = dbsession.query(User)
  query = query.filter(User.family_id == request.params['family_id'])
  entries = query.all()

  if not entries:
    return {"error_message": "An error occurred recording your RSVP.  Please try again later."}

  family_name = ""
  num_garba = int(request.params["num_garba"])
  num_wedding = int(request.params["num_wedding"])
  num_reception = int(request.params["num_reception"])
  accepted = int(request.params["accepted"])
  for entry in entries:
    family_name = entry.family_name
    entry.declined = 1 if accepted == 0 else 0
    entry.accepted = 1 if accepted == 1 else 0
    if accepted:
      entry.num_rsvp_garba = num_garba
      entry.num_rsvp_wedding = num_wedding
      entry.num_rsvp_reception = num_reception
    else:
      entry.num_rsvp_garba = 0
      entry.num_rsvp_wedding = 0
      entry.num_rsvp_reception = 0

    dbsession.add(entry);
  response = dict(family_name=family_name,
                  accepted=accepted,
                  num_rsvp_garba=num_garba,
                  num_rsvp_wedding=num_wedding,
                  num_rsvp_reception=num_reception)
  return response
def retrieve_rsvp(request):
  dbsession = DBSession()
  query = dbsession.query(User)
  last_name = None
  zip = None

  if 'user_id' in request.params:
    query = query.filter(User.id == request.params['user_id'])
  else:
    if 'last_name' in request.params:
      last_name = string.lower(request.params['last_name'])
      query = query.filter(User.last_name == last_name)
    if 'zip' in request.params:
      zip = request.params['zip']
      query = query.filter(User.zip == zip)
    #adding the group by ensures we get one entry per family (the last one)
    query = query.group_by(User.family_id)
  entries = query.all()

  if not entries:
    return {"error_message": "Couldn't find a record with last name: %s and zip: %s" \
        % (request.params['last_name'], zip)}
  entry_list = [entry.to_dict() for entry in entries]
  response = dict(entries=entry_list)
  return response
def home_page(request):
  dbsession = DBSession()
  latest_entry = dbsession.query(BlogEntry).order_by(BlogEntry.id.desc()).first()
  right_sidebar = get_renderer('templates/right_sidebar.pt').implementation()
  blog_entry = get_renderer('templates/blog_entry.pt').implementation()

  main_renderer = None
  if (request.host.startswith('localhost') or
      request.host.startswith('suralka')):
    main_renderer = 'templates/surag_index2.pt'
  else:
    main_renderer = 'templates/index.pt'
  args = {'project':'WeddingWebsite',
          'right_sidebar':right_sidebar,
          'blog_entry':blog_entry,
          'latest_entry':latest_entry.to_dict()}
  return render_to_response(main_renderer, args, request=request)
def blog(request):
  main = get_renderer('templates/index.pt').implementation()
  right_sidebar = get_renderer('templates/right_sidebar.pt').implementation()
  blog_entry = get_renderer('templates/blog_entry.pt').implementation()
  dbsession = DBSession()
  query = dbsession.query(BlogEntry)
  offset_date = None
  entries = None
  if 'offset' in request.params:
    offset = request.params['offset']
    if 'dir' in request.params and request.params['dir'] == 'newer':
      query = query.filter(BlogEntry.id > offset)
      entries = query.order_by(BlogEntry.id.asc()).limit(3).all()
      entries.reverse()
    else:
      query = query.filter(BlogEntry.id < offset)
      entries = query.order_by(BlogEntry.id.desc()).limit(3).all()
  else:
    entries = query.order_by(BlogEntry.id.desc()).limit(3).all()

  prev_url = None
  next_url = None
  if entries:
    last = entries[-1].id
    first = entries[0].id
    count = dbsession.query(BlogEntry) \
        .filter(BlogEntry.id < last).count()
    if count:
      next_url="/blog?offset=%d&dir=older" % last
    count = dbsession.query(BlogEntry) \
        .filter(BlogEntry.id > first).count()
    if count:
      prev_url = "/blog?offset=%d&dir=newer" % first

  return {'main':main,
          'right_sidebar':right_sidebar,
          'blog_entry':blog_entry,
          'all_entries': [entry.to_dict() for entry in entries],
          'prev_url': prev_url,
          'next_url': next_url}