Esempio n. 1
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)
Esempio n. 2
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)
Esempio n. 3
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)
Esempio n. 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)
Esempio n. 5
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)
Esempio n. 6
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)
Esempio n. 7
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)
Esempio n. 8
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)
Esempio n. 9
0
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)
Esempio n. 10
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)
Esempio n. 11
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)
Esempio n. 12
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)
Esempio n. 13
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)
Esempio n. 14
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)
Esempio n. 15
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)
Esempio n. 16
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)
Esempio n. 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)
Esempio n. 18
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)
Esempio n. 19
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)
Esempio n. 20
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)
Esempio n. 21
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)
Esempio n. 22
0
def replace_logo(request, team_link):
    account = get_object_or_404(Account, user=request.user)
    team = control.get_or_404(team_link)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.ReplaceLogo(request.POST, request.FILES)
        if form.is_valid():
            logo = form.cleaned_data["logo"]
            control.replace_logo(account, team, logo)
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = forms.ReplaceLogo()
    args = { 
        "form" : form, "form_title" : _("REPLACE_LOGO"), 
        "multipart_form" : True, "cancel_url" : "/%s" % team.link
    }
    return render_response(request, "site/form.html", args)
Esempio n. 23
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)
Esempio n. 24
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)
Esempio n. 25
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)
Esempio n. 26
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)
Esempio n. 27
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)
Esempio n. 28
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)
Esempio n. 29
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)
Esempio n. 30
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)
Esempio n. 31
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)
Esempio n. 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)
Esempio n. 33
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)
Esempio n. 34
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)
Esempio n. 35
0
def replace_logo(request, team_link):
    account = get_object_or_404(Account, user=request.user)
    team = control.get_or_404(team_link)
    assert_member(account, team)
    if request.method == "POST":
        form = forms.ReplaceLogo(request.POST, request.FILES)
        if form.is_valid():
            logo = form.cleaned_data["logo"]
            control.replace_logo(account, team, logo)
            return HttpResponseRedirect("/%s" % team.link)
    else:
        form = forms.ReplaceLogo()
    args = {
        "form": form,
        "form_title": _("REPLACE_LOGO"),
        "multipart_form": True,
        "cancel_url": "/%s" % team.link
    }
    return render_response(request, "site/form.html", args)
Esempio n. 36
0
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)
Esempio n. 37
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)
Esempio n. 38
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)
Esempio n. 39
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)
Esempio n. 40
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)
Esempio n. 41
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)
Esempio n. 42
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)
Esempio n. 43
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)
Esempio n. 44
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)
Esempio n. 45
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)
Esempio n. 46
0
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)
Esempio n. 47
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)
Esempio n. 48
0
def view(request, **kwargs):
    tab = kwargs["tab"]
    station_id = kwargs["station_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
    if team:
        assert_member(account, team)
        station = get_object_or_404(Station, id=station_id, team=team) 
    else:
        station = get_object_or_404(Station, id=station_id, responsible=account)

    bikes, borrows = _load_view_data(station, tab)
    data = borrow_control.to_list_data(borrows, team_link=True, columns=tab)
    template_args = { 
        "bike_rows" : list(chunks(bikes, 2)),
        "station" : station, "list_data" : data,
        "page_title" : _VIEW[tab]["page_title"],
        "tabs" : _tabs(station, team, tab),
    }
    template = _VIEW[tab]["template"]
    if team:
        return rtr(team, "stations", request, template, template_args)
    return render_response(request, template, template_args)
Esempio n. 49
0
def listing(request, **kwargs):
    team_link = kwargs.get("team_link")
    account = get_object_or_404(Account, user=request.user)
    columns = [
        _("RESPONSIBLE"), _("POSTALCODE"), _("CITY"), _("STREET"), _("ACTIVE"),
    ]
    if team_link:
        team = team_control.get_or_404(team_link)
        assert_member(account, team)
        def station2entrie(s):
            return {
                "labels" : [ 
                    s.responsible, s.postalcode, s.city, s.street, s.active
                ], "url" : "/%s/station/view/%s" % (team.link, s.id)
            }
        stations = Station.objects.filter(team=team)
        entries = map(station2entrie, stations)
        args = { 
            "page_title" : _("STATIONS"),
            "list_data" : { "columns" : columns, "entries" : entries }
        }
        return rtr(team, "stations", request, "site/list.html", args)
    else:
        def station2entrie(s):
            return {
                "labels" : [ 
                    s.responsible, s.postalcode, s.city, s.street, s.active
                ], "url" : "/station/view/%s" % s.id
            }
        stations = Station.objects.filter(responsible=account)
        entries = map(station2entrie, stations)
        args = { 
            "page_title" : _("STATIONS"),
            "list_data" : { "columns" : columns, "entries" : entries }
        }
        return render_response(request, "site/list.html", args)