예제 #1
0
def create(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.Create(request.POST,
                            request.FILES,
                            team=team,
                            account=account)
        if form.is_valid():
            bike = control.create(
                account,
                team,
                form.cleaned_data["name"].strip(),
                form.cleaned_data["image"],
                form.cleaned_data["description"].strip(),
                form.cleaned_data["active"],
                form.cleaned_data["reserve"],
                form.cleaned_data["station"],
                form.cleaned_data["lockcode"],
                form.cleaned_data["size"],
                form.cleaned_data["lights"],
            )
            url = "/%s/bike/view/%s" % (team.link, bike.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Create(team=team, account=account)
    args = {
        "form": form,
        "form_title": _("BIKE_CREATE"),
        "multipart_form": True,
        "cancel_url": "/%s/bikes" % team.link
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #2
0
파일: views.py 프로젝트: F483/bikesurf.org
def create(request, team_link, bike_id):

    # get parameters
    start = request.GET.get('start', None)
    finish = request.GET.get('finish', None)
    try:
        start = start and parse(start).date() or None
        finish = finish and parse(finish).date() or None
    except ValueError:
        start = None
        finish = None

    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    is_lender = team_control.is_member(account, team)
    bike = get_object_or_404(Bike, id=bike_id)
    if request.method == "POST":
        form = forms.Create(request.POST, bike=bike, account=account, 
                            start=start, finish=finish, is_lender=is_lender)
        if form.is_valid():
            borrow = control.create(account, bike,
                                    form.cleaned_data["start"],
                                    form.cleaned_data["finish"],
                                    form.cleaned_data["note"].strip())
            return HttpResponseRedirect("/borrow/view/%s" % borrow.id)
    else:
        form = forms.Create(bike=bike, account=account, 
                            start=start, finish=finish, is_lender=is_lender)
    args = { 
        "form" : form, "form_title" : _("BORROW_CREATE"),
        "cancel_url" : "/%s/bike/view/%s" % (team_link, bike_id),
        "has_required_info" : account_control.has_required_info(account)
    }
    return rtr(team, "borrows", request, "borrow/create.html", args)
예제 #3
0
def edit(request, team_link, bike_id):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    bike = get_object_or_404(Bike, id=bike_id, team=team)
    if request.method == "POST":
        form = forms.Edit(request.POST, bike=bike, account=account)
        if form.is_valid():
            control.edit(
                account,
                bike,
                form.cleaned_data["name"].strip(),
                form.cleaned_data["description"].strip(),
                form.cleaned_data["active"],
                form.cleaned_data["reserve"],
                form.cleaned_data["station"],
                form.cleaned_data["lockcode"],
                form.cleaned_data["size"],
                form.cleaned_data["lights"],
            )
            url = "/%s/bike/view/%s" % (team.link, bike.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Edit(bike=bike, account=account)
    args = {
        "form": form,
        "form_title": _("BIKE_EDIT"),
        "cancel_url": "/%s/bike/view/%s" % (team.link, bike.id)
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #4
0
def remove_request_list(request, team_link):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    template = "team/remove_request/list.html"
    args = {"remove_requests": RemoveRequest.objects.filter(team=team)}
    return rtr(team, "remove_request/list", request, template, args)
예제 #5
0
def add(request, **kwargs):
    team_link = kwargs.get("team_link")
    gallery_id = kwargs["gallery_id"]
    account = get_object_or_404(Account, user=request.user)
    gallery = get_object_or_404(Gallery, id=gallery_id)
    team = team_link and team_control.get_or_404(team_link) or None
    url_prefix = team_link and "/%s" % team_link or ""
    if team:
        assert_member(account, team)
    if request.method == "POST":
        form = forms.Add(request.POST, request.FILES)
        if form.is_valid():
            picture = control.add(account, form.cleaned_data["image"], gallery)
            url = "%s/gallery/view/%s" % (url_prefix, picture.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Add()
    args = { 
        "form" : form, "form_title" : _("ADD_PICTURE_TO_GALLERY"), 
        "cancel_url" : "%s/gallery/list/%s" % (url_prefix, gallery_id),
        "multipart_form" : True
    }
    if team:
        return rtr(team, None, request, "site/form.html", args)
    else:
        return render_response(request, "site/form.html", args)
예제 #6
0
파일: views.py 프로젝트: F483/bikesurf.org
def listing(request, team_link):
    team = team_control.get_or_404(team_link)

    date_start = None
    date_finish = None
    if request.method == "POST":
        form = forms.FilterListing(request.POST)
        if form.is_valid():
            bikes = _get_listing_bikes(request, team, form)
            date_start = form.cleaned_data["start"]
            date_finish = form.cleaned_data["finish"]
        else:
            bikes = _get_listing_bikes(request, team, None)
    else:
        form = forms.FilterListing()
        bikes = _get_listing_bikes(request, team, None)

    shuffle(bikes) # to avoid a borrowing bias towards the first listed bikes

    args = { 
        "page_title" : _("BIKES"), "filters" : form,
        "bike_rows" : list(chunks(bikes, 2)),
        "date_start" : date_start, "date_finish" : date_finish
    }
    return rtr(team, "bikes", request, "bike/list.html", args)
예제 #7
0
def setprimary(request, **kwargs):
    team_link = kwargs.get("team_link")
    picture_id = kwargs["picture_id"]
    account = get_object_or_404(Account, user=request.user)
    team = team_link and team_control.get_or_404(team_link) or None
    picture = get_object_or_404(Picture, id=picture_id)
    prefix = team_link and "/%s" % team_link or ""
    url = "%s/gallery/list/%s" % (prefix, picture.gallery.id)
    if team:
        assert_member(account, team)
    if request.method == "POST":
        form = Form(request.POST)
        if form.is_valid():
            control.setprimary(account, picture)
            return HttpResponseRedirect(url)
    else:
        form = Form()
    # TODO make template that shows the image being set!
    args = { 
        "form" : form, "form_title" : _("SET_AS_PRIMARY_PICTURE"), 
        "cancel_url" : url
    }
    if team:
        return rtr(team, None, request, "site/form.html", args)
    else:
        return render_response(request, "site/form.html", args)
예제 #8
0
파일: views.py 프로젝트: F483/bikesurf.org
def members(request, team_link):
    team = control.get_or_404(team_link)
    args = { 
        "members" : team.members.all(),
        "page_title" : _("MEMBERS")
    }
    return rtr(team, "members", request, "team/members.html", args)
예제 #9
0
파일: views.py 프로젝트: F483/bikesurf.org
def create(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.Create(request.POST, request.FILES, 
                            team=team, account=account)
        if form.is_valid():
            bike = control.create(
                account, team, form.cleaned_data["name"].strip(),
                form.cleaned_data["image"],
                form.cleaned_data["description"].strip(),
                form.cleaned_data["active"], form.cleaned_data["reserve"],
                form.cleaned_data["station"], form.cleaned_data["lockcode"],
                form.cleaned_data["size"], form.cleaned_data["lights"], 
            )
            url = "/%s/bike/view/%s" % (team.link, bike.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Create(team=team, account=account)
    args = { 
        "form" : form, "form_title" : _("BIKE_CREATE"), "multipart_form" : True, 
        "cancel_url" : "/%s/bikes" % team.link
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #10
0
파일: views.py 프로젝트: F483/bikesurf.org
def edit(request, team_link, bike_id):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    bike = get_object_or_404(Bike, id=bike_id, team=team)
    if request.method == "POST":
        form = forms.Edit(request.POST, bike=bike, account=account)
        if form.is_valid():
            control.edit(
                account, bike,
                form.cleaned_data["name"].strip(),
                form.cleaned_data["description"].strip(),
                form.cleaned_data["active"], form.cleaned_data["reserve"],
                form.cleaned_data["station"], form.cleaned_data["lockcode"],
                form.cleaned_data["size"], form.cleaned_data["lights"],
            )
            url = "/%s/bike/view/%s" % (team.link, bike.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Edit(bike=bike, account=account)
    args = { 
        "form" : form, "form_title" : _("BIKE_EDIT"),
        "cancel_url" : "/%s/bike/view/%s" % (team.link, bike.id)
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #11
0
def edit(request, team_link, station_id):
    account = get_object_or_404(Account, user=request.user)
    team = team_control.get_or_404(team_link)
    assert_member(account, team)
    station = get_object_or_404(Station, team=team, id=station_id)
    if request.method == "POST":
        form = forms.Edit(request.POST, station=station, account=account)
        if form.is_valid():
            station = control.edit( 
                    account, station,
                    form.cleaned_data["responsible"],
                    form.cleaned_data["active"],
                    form.cleaned_data["street"].strip(),
                    form.cleaned_data["city"].strip(),
                    form.cleaned_data["postalcode"].strip()
            )
            url = "/%s/station/view/%s" % (team.link, station.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Edit(station=station, account=account)
    args = { 
        "form" : form, "form_title" : _("EDIT_STATION"),
        "cancel_url" : "/%s/station/view/%s" % (team.link, station.id)
    }
    return rtr(team, "stations", request, "site/form.html", args)
예제 #12
0
def listing(request, team_link):
    team = team_control.get_or_404(team_link)

    date_start = None
    date_finish = None
    if request.method == "POST":
        form = forms.FilterListing(request.POST)
        if form.is_valid():
            bikes = _get_listing_bikes(request, team, form)
            date_start = form.cleaned_data["start"]
            date_finish = form.cleaned_data["finish"]
        else:
            bikes = _get_listing_bikes(request, team, None)
    else:
        form = forms.FilterListing()
        bikes = _get_listing_bikes(request, team, None)

    shuffle(bikes)  # to avoid a borrowing bias towards the first listed bikes

    args = {
        "page_title": _("BIKES"),
        "filters": form,
        "bike_rows": list(chunks(bikes, 2)),
        "date_start": date_start,
        "date_finish": date_finish
    }
    return rtr(team, "bikes", request, "bike/list.html", args)
예제 #13
0
파일: views.py 프로젝트: F483/bikesurf.org
def remove_request_list(request, team_link):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    template = "team/remove_request/list.html"
    args = { "remove_requests" : RemoveRequest.objects.filter(team=team) }
    return rtr(team, "remove_request/list", request, template, args)
예제 #14
0
파일: views.py 프로젝트: F483/bikesurf.org
def lender_view(request, team_link, borrow_id):
    account = get_object_or_404(Account, user=request.user)
    team = team_control.get_or_404(team_link)
    borrow = get_object_or_404(Borrow, id=borrow_id, team=team)
    if not team_control.is_member(account, borrow.team): # is not lender
        if account == borrow.borrower: # redirect borrower to right url
            return HttpResponseRedirect("/borrow/view/%s" % borrow.id)
        raise PermissionDenied
    args = { "borrow" : borrow, "logs" : borrow.logs.all() }
    return rtr(team, "borrows", request, "borrow/view.html", args)
예제 #15
0
def view(request, **kwargs):
    team_link = kwargs.get("team_link")
    picture_id = kwargs["picture_id"]
    team = team_link and team_control.get_or_404(team_link) or None
    picture = get_object_or_404(Picture, id=picture_id)
    args = { "picture" : picture }
    if team:
        return rtr(team, None, request, "gallery/view.html", args)
    else:
        return render_response(request, "gallery/view.html", args)
예제 #16
0
def lender_view(request, team_link, borrow_id):
    account = get_object_or_404(Account, user=request.user)
    team = team_control.get_or_404(team_link)
    borrow = get_object_or_404(Borrow, id=borrow_id, team=team)
    if not team_control.is_member(account, borrow.team):  # is not lender
        if account == borrow.borrower:  # redirect borrower to right url
            return HttpResponseRedirect("/borrow/view/%s" % borrow.id)
        raise PermissionDenied
    args = {"borrow": borrow, "logs": borrow.logs.all()}
    return rtr(team, "borrows", request, "borrow/view.html", args)
예제 #17
0
def listing(request, **kwargs):
    team_link = kwargs.get("team_link")
    gallery_id = kwargs["gallery_id"]
    team = team_link and team_control.get_or_404(team_link) or None
    gallery = get_object_or_404(Gallery, id=gallery_id)
    pictures = gallery.pictures.all()
    args = { "gallery" : gallery, "pictures" : pictures }
    if team:
        return rtr(team, None, request, "gallery/list.html", args)
    else:
        return render_response(request, "gallery/list.html", args)
예제 #18
0
파일: views.py 프로젝트: F483/bikesurf.org
def lender_cancel(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Cancel(request.POST)
        if form.is_valid():
            control.cancel(account, borrow, form.cleaned_data["note"].strip())
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Cancel()
    args = { 
        "form" : form, "form_title" : _("BORROW_CANCEL"), 
        "cancel_url" : "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #19
0
def create(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.Create(request.POST)
        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]
            blog = control.create(account, team, name, content)
            return HttpResponseRedirect("/%s/blog" % team.link)
    else:
        form = forms.Create()
    args = {"form": form, "form_title": _("ADD_BLOG"), "cancel_url": "/%s" % team.link}
    return rtr(team, "blog", request, "site/form.html", args)
예제 #20
0
파일: views.py 프로젝트: F483/bikesurf.org
def join_request_create(request, team_link):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    if request.method == "POST":
        form = forms.CreateJoinRequest(request.POST)
        if form.is_valid():
            application = form.cleaned_data["application"]
            jr = control.create_join_request(account, team, application)
            return HttpResponseRedirect("/%s/join_request/created" % team_link)
    else:
        form = forms.CreateJoinRequest()
    args = { 
        "form" : form, "form_title" : _("JOIN_REQUEST"),
        "cancel_url" : "/%s" % team.link
    }
    return rtr(team, "join_request/list", request, "site/form.html", args)
예제 #21
0
def lender_cancel(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Cancel(request.POST)
        if form.is_valid():
            control.cancel(account, borrow, form.cleaned_data["note"].strip())
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Cancel()
    args = {
        "form": form,
        "form_title": _("BORROW_CANCEL"),
        "cancel_url": "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #22
0
def join_request_create(request, team_link):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    if request.method == "POST":
        form = forms.CreateJoinRequest(request.POST)
        if form.is_valid():
            application = form.cleaned_data["application"]
            jr = control.create_join_request(account, team, application)
            return HttpResponseRedirect("/%s/join_request/created" % team_link)
    else:
        form = forms.CreateJoinRequest()
    args = {
        "form": form,
        "form_title": _("JOIN_REQUEST"),
        "cancel_url": "/%s" % team.link
    }
    return rtr(team, "join_request/list", request, "site/form.html", args)
예제 #23
0
파일: views.py 프로젝트: F483/bikesurf.org
def link_delete(request, team_link, link_id):
    account = get_object_or_404(Account, user=request.user)
    team = control.get_or_404(team_link)
    link = get_object_or_404(Link, id=link_id)
    if request.method == "POST":
        form = forms.LinkDelete(request.POST, team=team, link=link, account=account)
        if form.is_valid():
            control.link_delete(account, team, link)
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = forms.LinkDelete(team=team, link=link, account=account)
    args = { 
        "form" : form, "form_title" : _("LINK_DELETE?"), 
        "form_subtitle" : link.get_label(), 
        "cancel_url" : "/%s" % team.link
    }
    return rtr(team, "", request, "site/form.html", args)
예제 #24
0
def create(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.Create(request.POST)
        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]
            blog = control.create(account, team, name, content)
            return HttpResponseRedirect("/%s/blog" % team.link)
    else:
        form = forms.Create()
    args = { 
        "form" : form, "form_title" : _("ADD_BLOG"), 
        "cancel_url" : "/%s" % team.link
    }
    return rtr(team, "blog", request, "site/form.html", args)
예제 #25
0
파일: views.py 프로젝트: F483/bikesurf.org
def lender_list(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    today = datetime.datetime.now().date()
    borrows = Borrow.objects.filter(team=team) 
    if request.method == "POST":
        form = forms.FilterListing(request.POST, team=team)
        if form.is_valid():
            borrows = _filter_lender_borrows(borrows, form)
    else:
        form = forms.FilterListing(team=team)
        borrows = borrows.exclude(finish__lt=today) # filter out past
    args = { 
        "filters" : form, "page_title" : _("TEAM_BORROWS"),
        "list_data" : control.to_list_data(borrows, team_link=True) 
    }
    return rtr(team, "borrows", request, "site/list.html", args)
예제 #26
0
파일: views.py 프로젝트: F483/bikesurf.org
def lender_rate(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Rate(request.POST)
        if form.is_valid():
            rating = form.cleaned_data["rating"]
            note = form.cleaned_data["note"].strip()
            control.lender_rate(account, borrow, rating, note)
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Rate()
    form_title = u"%s %s" % (_("RATE"), borrow)
    args = { 
        "form" : form, "form_title" : form_title, 
        "cancel_url" : "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #27
0
def delete(request, team_link, station_id):
    account = get_object_or_404(Account, user=request.user)
    team = team_control.get_or_404(team_link)
    assert_member(account, team)
    station = get_object_or_404(Station, team=team, id=station_id)
    if request.method == "POST":
        form = forms.Delete(request.POST, account=account, station=station)
        if form.is_valid():
            control.delete(account, station)
            return HttpResponseRedirect("/%s/stations" % team.link)
    else:
        form = forms.Delete(account=account, station=station)
    args = { 
        "form" : form, "form_title" : _("STATION_DELETE?"), 
        "form_subtitle" : str(station), 
        "cancel_url" : "/%s/station/view/%s" % (team.link, station.id)
    }
    return rtr(team, "stations", request, "site/form.html", args)
예제 #28
0
파일: views.py 프로젝트: F483/bikesurf.org
def remove_request_create(request, team_link, concerned_id):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    concerned = get_object_or_404(Account, id=concerned_id)
    if request.method == "POST":
        form = forms.CreateRemoveRequest(request.POST)
        if form.is_valid():
            reason = form.cleaned_data["reason"]
            control.create_remove_request(account, concerned, team, reason)
            return HttpResponseRedirect("/%s/remove_request/created" % team_link)
    else:
        form = forms.CreateRemoveRequest()
    args = { 
        "form" : form, "form_title" : _("REMOVE_REQUEST_CREATE"),
        "form_subtitle" : concerned,
        "cancel_url" : "/%s/members" % team.link
    }
    return rtr(team, "remove_request/list", request, "site/form.html", args)
예제 #29
0
파일: views.py 프로젝트: F483/bikesurf.org
def delete(request, team_link, bike_id):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    bike = get_object_or_404(Bike, id=bike_id, team=team)

    if request.method == "POST":
        form = forms.Delete(request.POST, bike=bike, account=account)
        if form.is_valid():
            control.delete(account, bike)
            return HttpResponseRedirect("/%s/bikes" % team.link)
    else:
        form = forms.Delete(bike=bike, account=account)
    args = { 
        "form" : form, "form_title" : _("BIKE_DELETE?"), 
        "form_subtitle" : bike.name, 
        "cancel_url" : "/%s/bike/view/%s" % (team.link, bike.id)
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #30
0
파일: views.py 프로젝트: F483/bikesurf.org
def join_request_process(request, team_link, join_request_id):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    jr = get_object_or_404(JoinRequest, id=join_request_id)
    if request.method == "POST":
        form = forms.ProcessJoinRequest(request.POST)
        if form.is_valid():
            response = form.cleaned_data["response"]
            status = form.cleaned_data["status"]
            control.process_join_request(account, jr, response, status)
            return HttpResponseRedirect("/%s/join_request/list" % team_link)
    else:
        form = forms.ProcessJoinRequest()
    args = { 
        "form" : form, "form_title" : "PROCESS_JOIN_REQUEST",
        "cancel_url" : "/%s/join_request/list" % team.link
    }
    return rtr(team, "join_request/list", request, "site/form.html", args)
예제 #31
0
def lender_rate(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Rate(request.POST)
        if form.is_valid():
            rating = form.cleaned_data["rating"]
            note = form.cleaned_data["note"].strip()
            control.lender_rate(account, borrow, rating, note)
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Rate()
    form_title = u"%s %s" % (_("RATE"), borrow)
    args = {
        "form": form,
        "form_title": form_title,
        "cancel_url": "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #32
0
def edit(request, team_link, blog_id):

    # get data
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    blog = get_object_or_404(Blog, team=team, id=blog_id)
    assert_member(account, team)

    if request.method == "POST":
        form = forms.Edit(request.POST, blog=blog)
        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]
            control.edit(account, blog, name, content)
            return HttpResponseRedirect("/%s/blog" % (team.link))
    else:
        form = forms.Edit(blog=blog)
    args = {"form": form, "form_title": _("BLOG_EDIT"), "cancel_url": "/%s" % team.link}
    return rtr(team, "blog", request, "site/form.html", args)
예제 #33
0
def create(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    if request.method == "POST":
        form = CreatePageForm(request.POST, team=team)
        if form.is_valid():
            name = form.cleaned_data["name"].strip()
            content = form.cleaned_data["content"]
            order = form.cleaned_data["order"]
            page = control.create(account, team, name, content, order)
            return HttpResponseRedirect("/%s/%s" % (team.link, page.link))
    else:
        form = CreatePageForm(team=team)
    args = { 
        "form" : form, "form_title" : _("ADD_PAGE"),
        "cancel_url" : "/%s" % team.link
    }
    return rtr(team, None, request, "site/form.html", args)
예제 #34
0
def lender_edit(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Edit(request.POST, borrow=borrow, is_lender=True)
        if form.is_valid():
            control.lender_edit(account, borrow, form.cleaned_data["start"],
                                form.cleaned_data["finish"],
                                form.cleaned_data["bike"],
                                form.cleaned_data["note"].strip())
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Edit(borrow=borrow, is_lender=True)
    args = {
        "form": form,
        "form_title": _("BORROW_EDIT"),
        "cancel_url": "/%s/borrow/view/%s" % (team.link, borrow.id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #35
0
def delete(request, team_link, bike_id):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    bike = get_object_or_404(Bike, id=bike_id, team=team)

    if request.method == "POST":
        form = forms.Delete(request.POST, bike=bike, account=account)
        if form.is_valid():
            control.delete(account, bike)
            return HttpResponseRedirect("/%s/bikes" % team.link)
    else:
        form = forms.Delete(bike=bike, account=account)
    args = {
        "form": form,
        "form_title": _("BIKE_DELETE?"),
        "form_subtitle": bike.name,
        "cancel_url": "/%s/bike/view/%s" % (team.link, bike.id)
    }
    return rtr(team, "bikes", request, "site/form.html", args)
예제 #36
0
def delete(request, team_link, page_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    page = get_object_or_404(Page, link=page_link, team=team)

    if request.method == "POST":
        form = Form(request.POST)
        if form.is_valid():
            control.delete(account, page)
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = Form()
    cancel_url = "/%s/%s" % (team.link, page.link)
    args = { 
        "form" : form, "form_title" : _("PAGE_DELETE?"), 
        "form_subtitle" : page.name, "cancel_url" : cancel_url
    }
    return rtr(team, page.link, request, "site/form.html", args)
예제 #37
0
def lender_list(request, team_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    today = datetime.datetime.now().date()
    borrows = Borrow.objects.filter(team=team)
    if request.method == "POST":
        form = forms.FilterListing(request.POST, team=team)
        if form.is_valid():
            borrows = _filter_lender_borrows(borrows, form)
    else:
        form = forms.FilterListing(team=team)
        borrows = borrows.exclude(finish__lt=today)  # filter out past
    args = {
        "filters": form,
        "page_title": _("TEAM_BORROWS"),
        "list_data": control.to_list_data(borrows, team_link=True)
    }
    return rtr(team, "borrows", request, "site/list.html", args)
예제 #38
0
파일: views.py 프로젝트: F483/bikesurf.org
def link_create(request, team_link):
    account = get_object_or_404(Account, user=request.user)
    team = control.get_or_404(team_link)
    if request.method == "POST":
        form = forms.LinkCreate(request.POST, team=team, account=account)
        if form.is_valid():
            control.link_create(
                account, team,
                form.cleaned_data["site"], 
                form.cleaned_data["profile"].strip(), 
            )
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = forms.LinkCreate(team=team, account=account)
    args = { 
        "form" : form, "cancel_url" : "/%s" % team.link, 
        "form_title" :  account, "form_subtitle" : _("ADD_LINK_SUBTITLE")
    }
    return rtr(team, "", request, "site/form.html", args)
예제 #39
0
def join_request_process(request, team_link, join_request_id):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    jr = get_object_or_404(JoinRequest, id=join_request_id)
    if request.method == "POST":
        form = forms.ProcessJoinRequest(request.POST)
        if form.is_valid():
            response = form.cleaned_data["response"]
            status = form.cleaned_data["status"]
            control.process_join_request(account, jr, response, status)
            return HttpResponseRedirect("/%s/join_request/list" % team_link)
    else:
        form = forms.ProcessJoinRequest()
    args = {
        "form": form,
        "form_title": "PROCESS_JOIN_REQUEST",
        "cancel_url": "/%s/join_request/list" % team.link
    }
    return rtr(team, "join_request/list", request, "site/form.html", args)
예제 #40
0
파일: views.py 프로젝트: F483/bikesurf.org
def respond(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Respond(request.POST, borrow=borrow, account=account)
        if form.is_valid():
            control.respond(account, borrow, form.cleaned_data["response"], 
                            form.cleaned_data["note"].strip())
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Respond(borrow=borrow, account=account)
    email = account_control.get_email_or_404(borrow.borrower)
    args = { 
        "station" : control.accept_station(borrow),
        "email" : email, "links" : borrow.borrower.links.all(),
        "borrow" : borrow, "form" : form, "form_title" : _("BORROW_RESPOND"), 
        "cancel_url" : "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "borrow/respond.html", args)
예제 #41
0
def remove_request_create(request, team_link, concerned_id):
    team = control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    concerned = get_object_or_404(Account, id=concerned_id)
    if request.method == "POST":
        form = forms.CreateRemoveRequest(request.POST)
        if form.is_valid():
            reason = form.cleaned_data["reason"]
            control.create_remove_request(account, concerned, team, reason)
            return HttpResponseRedirect("/%s/remove_request/created" %
                                        team_link)
    else:
        form = forms.CreateRemoveRequest()
    args = {
        "form": form,
        "form_title": _("REMOVE_REQUEST_CREATE"),
        "form_subtitle": concerned,
        "cancel_url": "/%s/members" % team.link
    }
    return rtr(team, "remove_request/list", request, "site/form.html", args)
예제 #42
0
def comment(request, **kwargs):
    borrow_id = kwargs["borrow_id"]
    team_link = kwargs.get("team_link")
    account = get_object_or_404(Account, user=request.user)
    team = team_link and team_control.get_or_404(team_link) or None
    borrow = get_object_or_404(Borrow, id=borrow_id)
    url_prefix = team and "/%s" % team.link or ""
    url = "%s/borrow/view/%s" % (url_prefix, borrow_id)
    if request.method == "POST":
        form = forms.Comment(request.POST)
        if form.is_valid():
            control.comment(account, borrow, form.cleaned_data["note"].strip())
            return HttpResponseRedirect(url)
    else:
        form = forms.Comment()

    args = {"form": form, "form_title": _("BORROW_COMMENT"), "cancel_url": url}
    if team:
        return rtr(team, "borrows", request, "site/form.html", args)
    return render_response(request, "site/form.html", args)
예제 #43
0
def delete(request, team_link, blog_id):

    # get data
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    blog = get_object_or_404(Blog, team=team, id=blog_id)
    assert_member(account, team)

    if request.method == "POST":
        form = Form(request.POST)
        if form.is_valid():
            control.delete(account, blog)
            return HttpResponseRedirect("/%s/blog" % team.link)
    else:
        form = Form()
    args = { 
        "form" : form, "form_title" : _("BLOG_DELETE?"), 
        "form_subtitle" : blog.name, "cancel_url" : "/%s/blog" % team.link
    }
    return rtr(team, "blog", request, "site/form.html", args)
예제 #44
0
파일: views.py 프로젝트: F483/bikesurf.org
def lender_edit(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Edit(request.POST, borrow=borrow, is_lender=True)
        if form.is_valid():
            control.lender_edit(
                    account, borrow,
                    form.cleaned_data["start"],
                    form.cleaned_data["finish"],
                    form.cleaned_data["bike"],
                    form.cleaned_data["note"].strip()
            )
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Edit(borrow=borrow, is_lender=True)
    args = { "form" : form, "form_title" : _("BORROW_EDIT"),
        "cancel_url" : "/%s/borrow/view/%s" % (team.link, borrow.id)
    }
    return rtr(team, "borrows", request, "site/form.html", args)
예제 #45
0
def edit(request, team_link, page_link):
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    assert_member(account, team)
    page = get_object_or_404(Page, link=page_link, team=team)
    if request.method == "POST":
        form = EditPageForm(request.POST, page=page)
        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]
            order = form.cleaned_data["order"]
            control.edit(account, page, name, content, order)
            return HttpResponseRedirect("/%s/%s" % (team.link, page.link))
    else:
        form = EditPageForm(page=page)
    args = { 
        "form" : form, "form_title" : _("PAGE_EDIT"),
        "cancel_url" : "/%s/%s" % (team.link, page.link)
    }
    return rtr(team, page.link, request, "site/form.html", args)
예제 #46
0
def create(request, team_link, bike_id):

    # get parameters
    start = request.GET.get('start', None)
    finish = request.GET.get('finish', None)
    try:
        start = start and parse(start).date() or None
        finish = finish and parse(finish).date() or None
    except ValueError:
        start = None
        finish = None

    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    is_lender = team_control.is_member(account, team)
    bike = get_object_or_404(Bike, id=bike_id)
    if request.method == "POST":
        form = forms.Create(request.POST,
                            bike=bike,
                            account=account,
                            start=start,
                            finish=finish,
                            is_lender=is_lender)
        if form.is_valid():
            borrow = control.create(account, bike, form.cleaned_data["start"],
                                    form.cleaned_data["finish"],
                                    form.cleaned_data["note"].strip())
            return HttpResponseRedirect("/borrow/view/%s" % borrow.id)
    else:
        form = forms.Create(bike=bike,
                            account=account,
                            start=start,
                            finish=finish,
                            is_lender=is_lender)
    args = {
        "form": form,
        "form_title": _("BORROW_CREATE"),
        "cancel_url": "/%s/bike/view/%s" % (team_link, bike_id),
        "has_required_info": account_control.has_required_info(account)
    }
    return rtr(team, "borrows", request, "borrow/create.html", args)
예제 #47
0
def view(request, team_link, bike_id, tab):
    team = team_control.get_or_404(team_link)

    # get parameters
    start = request.GET.get('start', None)
    finish = request.GET.get('finish', None)
    try:
        start = start and parse(start).date() or None
        finish = finish and parse(finish).date() or None
    except ValueError:
        start = None
        finish = None

    # check user permissions
    requires_login = tab != "OVERVIEW"
    requires_membership = tab != "OVERVIEW"
    logged_in = request.user.is_authenticated()
    if not logged_in and requires_login:
        return HttpResponseRedirect("/accounts/login/?next=%s" % request.path)
    account = logged_in and get_object_or_404(Account, user=request.user)
    if requires_membership and not team_control.is_member(account, team):
        raise PermissionDenied

    # get data
    bike = get_object_or_404(Bike, id=bike_id, team=team)
    authorized = (account and team_control.is_member(account, team))
    template = _VIEW[tab]["template"]
    list_data = None
    if tab == "BORROWS":
        borrows = bike.borrows.all()
        list_data = borrow_control.to_list_data(borrows, team_link=True)

    args = {
        "bike": bike,
        "list_data": list_data,
        "page_title": _VIEW[tab]["page_title"],
        "tabs": _tabs(bike, team, tab, authorized),
        "date_start": start,
        "date_finish": finish,
    }
    return rtr(team, "bikes", request, template, args)
예제 #48
0
def link_delete(request, team_link, link_id):
    account = get_object_or_404(Account, user=request.user)
    team = control.get_or_404(team_link)
    link = get_object_or_404(Link, id=link_id)
    if request.method == "POST":
        form = forms.LinkDelete(request.POST,
                                team=team,
                                link=link,
                                account=account)
        if form.is_valid():
            control.link_delete(account, team, link)
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = forms.LinkDelete(team=team, link=link, account=account)
    args = {
        "form": form,
        "form_title": _("LINK_DELETE?"),
        "form_subtitle": link.get_label(),
        "cancel_url": "/%s" % team.link
    }
    return rtr(team, "", request, "site/form.html", args)
예제 #49
0
def edit(request, team_link, blog_id):

    # get data
    team = team_control.get_or_404(team_link)
    account = get_object_or_404(Account, user=request.user)
    blog = get_object_or_404(Blog, team=team, id=blog_id)
    assert_member(account, team)

    if request.method == "POST":
        form = forms.Edit(request.POST, blog=blog)
        if form.is_valid():
            name = form.cleaned_data["name"]
            content = form.cleaned_data["content"]
            control.edit(account, blog, name, content)
            return HttpResponseRedirect("/%s/blog" % (team.link))
    else:
        form = forms.Edit(blog=blog)
    args = { 
        "form" : form, "form_title" : _("BLOG_EDIT"), 
        "cancel_url" : "/%s" % team.link
    }
    return rtr(team, "blog", request, "site/form.html", args)
예제 #50
0
def respond(request, team_link, borrow_id):
    team, account, borrow = _get_team_models(request, team_link, borrow_id)
    if request.method == "POST":
        form = forms.Respond(request.POST, borrow=borrow, account=account)
        if form.is_valid():
            control.respond(account, borrow, form.cleaned_data["response"],
                            form.cleaned_data["note"].strip())
            url = "/%s/borrow/view/%s" % (team.link, borrow.id)
            return HttpResponseRedirect(url)
    else:
        form = forms.Respond(borrow=borrow, account=account)
    email = account_control.get_email_or_404(borrow.borrower)
    args = {
        "station": control.accept_station(borrow),
        "email": email,
        "links": borrow.borrower.links.all(),
        "borrow": borrow,
        "form": form,
        "form_title": _("BORROW_RESPOND"),
        "cancel_url": "/%s/borrow/view/%s" % (team_link, borrow_id)
    }
    return rtr(team, "borrows", request, "borrow/respond.html", args)
예제 #51
0
파일: views.py 프로젝트: F483/bikesurf.org
def view(request, team_link, bike_id, tab):
    team = team_control.get_or_404(team_link)

    # get parameters
    start = request.GET.get('start', None)
    finish = request.GET.get('finish', None)
    try:
        start = start and parse(start).date() or None
        finish = finish and parse(finish).date() or None
    except ValueError:
        start = None
        finish = None

    # check user permissions
    requires_login = tab != "OVERVIEW"
    requires_membership = tab != "OVERVIEW"
    logged_in = request.user.is_authenticated()
    if not logged_in and requires_login:
        return HttpResponseRedirect("/accounts/login/?next=%s" % request.path)
    account = logged_in and get_object_or_404(Account, user=request.user)
    if requires_membership and not team_control.is_member(account, team):
        raise PermissionDenied

    # get data
    bike = get_object_or_404(Bike, id=bike_id, team=team)
    authorized = (account and team_control.is_member(account, team))
    template = _VIEW[tab]["template"]
    list_data = None
    if tab == "BORROWS":
        borrows = bike.borrows.all()
        list_data = borrow_control.to_list_data(borrows, team_link=True)

    args = { 
        "bike" : bike, "list_data" : list_data,
        "page_title" : _VIEW[tab]["page_title"],
        "tabs" : _tabs(bike, team, tab, authorized), 
        "date_start" : start, "date_finish" : finish,
    }
    return rtr(team, "bikes", request, template, args)