Exemplo n.º 1
0
Arquivo: views.py Projeto: perrys/WSRC
def booking_view(request, date=None):
    if date is None:
        date = datetime.date.today()
    else:
        date = timezones.parse_iso_date_to_naive(date)
    def get_bookings(date):
      today_str    = timezones.as_iso_date(date)
      tomorrow_str = timezones.as_iso_date(date + datetime.timedelta(days=1))
      url = settings.BOOKING_SYSTEM_URL + "/api/entries.php?start_date={today_str}&end_date={tomorrow_str}&with_tokens=1".format(**locals())
      h = httplib2.Http()
      (resp_headers, content) = h.request(url, "GET")
      if resp_headers.status != httplib.OK:
          raise Exception("unable to fetch bookings data, status = " + str(resp_headers.status) + ", response: " +  content)
      return content
    bookings = get_bookings(date)
    context = {
        "date": date,
        "bookings": bookings,
        "booking_system_url": settings.BOOKING_SYSTEM_URL,
        "starts": range(420, 1380, 15),
        "durations": [30, 45, 60, 75, 90, 120, 180, 240]
    }
    if request.user.is_authenticated():
      player = Player.get_player_for_user(request.user)
      if player is not None:
          booking_user_id = player.booking_system_id
          context["booking_user_id"] = booking_user_id
          context["booking_user_auth_token"] = BookingSystemEvent.generate_hmac_token_raw("id:{booking_user_id}".format(**locals()))
          context["booking_user_name"] = player.user.get_full_name()

    return render(request, 'court_booking.html', context)
Exemplo n.º 2
0
Arquivo: views.py Projeto: perrys/WSRC
def settings_view(request):

    max_filters = 7
    success = False
    player = Player.get_player_for_user(request.user)
    events = EventFilter.objects.filter(player=player)
    filter_formset_factory = create_notifier_filter_formset_factory(max_filters)
    initial = [{'player': player}] * (max_filters)
    if request.method == 'POST': 
        pform = PlayerForm(request.POST, instance=player)
        uform = UserForm(request.POST, instance=request.user)
        eformset = filter_formset_factory(request.POST, queryset=events, initial=initial)
        if pform.is_valid() and uform.is_valid() and eformset.is_valid(): 
            with transaction.atomic():
                if pform.has_changed():
                    pform.save()
                if uform.has_changed():
                    uform.save()
                for form in eformset:
                    if form.has_changed():
                        if form.cleaned_data['player'] != player:
                            raise PermissionDenied()
                if eformset.has_changed():
                    eformset.save()
                    events = EventFilter.objects.filter(player=player)
                    eformset = filter_formset_factory(queryset=events, initial=initial)
                success = True
    else:
        pform = PlayerForm(instance=player)
        uform = UserForm(instance=request.user)
        eformset = filter_formset_factory(queryset=events, initial=initial)

    iform = InfoForm(instance=player)

    return render(request, 'settings.html', {
        'player_form':     pform,
        'user_form':       uform,
        'info_form':       iform,
        'notify_formset':  eformset,
        'n_notifiers':     len(events),
        'form_saved':      success,
    })