Looking for a simple reservation system

453 views
Skip to first unread message

Vincent Borghi

unread,
Oct 24, 2009, 4:49:36 AM10/24/09
to web...@googlegroups.com
Hello

I am looking for a simple and light system that would allow to manage
the reservation by users of  various shared resources, such as
rooms or misc. equipments. Simple and basic features are
sufficient, just manage/check time slots to reserve, some resources
and some users...

The application must be open source, written in Python,
and possibly a web2py application (or else, Python scripts
usable thru cgi or wsgi).

Thanks for your suggestoons

mdipierro

unread,
Oct 24, 2009, 10:26:48 AM10/24/09
to web2py-users
We could write one. Can you send more specs?

Yarko Tymciurak

unread,
Oct 24, 2009, 10:45:04 AM10/24/09
to web...@googlegroups.com
On Sat, Oct 24, 2009 at 9:26 AM, mdipierro <mdip...@cs.depaul.edu> wrote:

We could write one. Can you send more specs?

that is, can you state clearly what you want (and don't want), what problems you anticipate (e.g. expected scheduling conflicts, exceptions - e.g. a director level person is allowed to override a reservation, and how that should be handled),  the kinds of resources (and pertinent information about them), and the population that will be served by this system (and what you want for them, and their experience).

From there, we can start a conversation to develop specifications.   The implementation (e.g. python, web2py, or whatever) then should be chosen by what can best accomplish what you want (for example - you may want a level of interaction that suggests Flash on the client end, or not...).

Regards,
- Yarko

Vincent Borghi

unread,
Oct 24, 2009, 2:40:10 PM10/24/09
to web...@googlegroups.com
Hello,

On Sat, Oct 24, 2009 at 4:45 PM, Yarko Tymciurak <resultsi...@gmail.com> wrote:
On Sat, Oct 24, 2009 at 9:26 AM, mdipierro <mdip...@cs.depaul.edu> wrote:

We could write one. Can you send more specs?

In fact, in my mind, I was looking for an already existant application,
but if you are ready to develop a new one from scratch, why not?!
Thanks for your responsiveness, and see my requirements below...

that is, can you state clearly what you want (and don't want), what problems you anticipate (e.g. expected scheduling conflicts, exceptions - e.g. a director level person is allowed to override a reservation, and how that should be handled),  the kinds of resources (and pertinent information about them), and the population that will be served by this system (and what you want for them, and their experience).

From there, we can start a conversation to develop specifications.   The implementation (e.g. python, web2py, or whatever) then should be chosen by what can best accomplish what you want (for example - you may want a level of interaction that suggests Flash on the client end, or not...).
 
Not really specs, but some requirements follow:

1) I want to be able to easily customize/modify the application myself,
and for my personal taste and experience, this simply means that Python is a must.
This also means that for the rendering, I want no Flash but just html+css+javascript
(preferably simple javascript, as I am not a JS guru: that means that the code itself
is simple and/or based on a good javascript library that has a simple and clean api).

2) I want something that is simple and light for the developer/administrator (i.e. for me).
This simplicity is desired when installing the program, as well as when modifying the
program, and in my mind this means the app operates either as standalone cgi/wsgi
scripts or as a web2py app (ideally, just copy/edit Python scripts, no need to run
complicated procedures (compile, make, hack the makefile, or setup, buildout, paster,
etc)

3) Just a simple, basic, code, without too many or too complex features, would
be useful. From such an essential base, a Python developper/app administrator can
elaborate as desired additional ad hoc functions.
 (I could find php- or perl-based freeware with many (not necessarily useful) features;
but I prefer something small but easily customizable/augmentable)

4) Usage scenario:
The app would be used by some users (between 50 and 200) to book resources.
Typical "resource" examples are: meeting rooms; time slots to remotely access to a given computer; laptop or other device offered in a self service pool of equipment.
    In my case, I plan to manage just some "resources" (5 or 6, perhaps more in the future).
A resource booking involves mainly 3 things: a resource, a time slot, a user (who has booked
the resource). Perhaps a comment from the user would be a useful 4th characteristic.

5) Users can consult the reservations already registered for a given resource.
As in Google calendar, the user has the choice between several views: perhaps "month",
"week", and "agenda" (the linear list of occupied time slots). The user can scroll /browse
thru the reservation calendar (forward/backward).

6) Users can book a resource: they specify the concerned resource and the desired time slot,
and possibly a comment. If the time slot is free, the booking is recorded.  If the requested
time slot is totally or partially unavailable, the booking is not performed. The user must chose an available slot.

7) A user can himself cancel (remove) a resource booking he has previously performed.

8) As a bonus, a kind of "approver" role can be introduced: the approver can tag
a resource reservation as "approved" (validated", "acted"...)

9) As a developer, I can customize the code to introduce some form
of access control (lists of users authorized...). Authentification is out the
scope of the application itself. I'll provide my own checks in the code
(perhaps based on the prseence of some cookies previously set by an
external SSO system...).

10) A log of operatoons (booking, cancelation) is available for the administrator.

11) Base actions have perhaps hooks associated with them: the developer/administrator
can provide his own functions that will betriggered when such or such action occur

12) To be continued. The above is just for your reflexion....
Keywords are suimplicity, ligntness, code customisability...

Yanks and regards

mdipierro

unread,
Oct 24, 2009, 2:46:39 PM10/24/09
to web2py-users
How many resources should be available for booking? How would one
search for them, by keyword? Should the time-slots be fixed?

Massimo


On Oct 24, 1:40 pm, Vincent Borghi <vincent.borgh...@gmail.com> wrote:
> Hello,
>
> On Sat, Oct 24, 2009 at 4:45 PM, Yarko Tymciurak <
>
> resultsinsoftw...@gmail.com> wrote:

Thadeus Burgess

unread,
Oct 24, 2009, 3:30:56 PM10/24/09
to web...@googlegroups.com
Should time slots be declared before hand? So that a user could only select from a fixed time slot?

-Thadeus

Vincent Borghi

unread,
Oct 24, 2009, 5:20:57 PM10/24/09
to web...@googlegroups.com
On Sat, Oct 24, 2009 at 8:46 PM, mdipierro <mdip...@cs.depaul.edu> wrote:

How many resources should be available for booking? How would one
search for them, by keyword? Should the time-slots be fixed?

And n Sat, Oct 24, 2009 at 9:30 PM, Thadeus Burgess <thad...@thadeusb.com> wrote:
> Should time slots be declared before hand? So that a user could only select from a fixed time > slot?

A- Regarding resources:
How many? for my own use there would be just a few  resources: no more than 10 meeting rooms, 10 machine accesses, 10 devices. But for a general use in other contexts, I imagine
that this could be many more..
 I imagine the user would select the resource by some form of "resource picker",
perhaps a simple menu, or perhaps a cascading menu where you first choose the resource
 category (e.g. room), then the exact resource e.g. (room 43). Instead of a cascading menu,
this could also be some kind of Ajax autocompletion/suggestion gadget, I have
no definitive preference. Perhaps the simplest to customize would be the better
When mdipierro says "search for them by keyword", indeed it's almost the same thing
("keyword", "category", or even "tag", whatever word you use, it's some form of
classification).

+ Another (optional) requirement, forgotten in my previous mail:
13) Each resource could be associated with a piece of html (that e.g. would
be callable to provide the users with an explanation about this resource)....

B- Regarding time slots:
No definitive idea, but as you suggest it, the time slots could be fixed. I imagine
that the time granularity could be customizable in the Python code. For my own
use 30mn would be OK, but for others, smaller slots (e.g. 5mn) would be needed.
I do not know what kind of interaction would be appropriate.
A kind of time picker where the user selects the start time and the end time?
Or the start time and duration? We can begin with something simple to implement,
and in subsequent releases propose something more attractive with ajax feeback etc.

Thanks  &  Regards

weheh

unread,
Oct 24, 2009, 8:24:56 PM10/24/09
to web2py-users
I just finished building a complete system of this kind for a client
of mine. This kind of system isn't as trivial as you may think. There
are parts that require heavy lifting, especially in the area of repeat
operations. It is also difficult to generalize the problem to all
systems, vs. specialize to a specific set of resources. I can
guarantee that the requirements for allocating time for a
manufacturing machine is not the same as allocating time for a meeting
room or for a human being. I would council the respondents to this
message to consider carefully whether to put in a lot of time and
effort for this request without carefully considering all the
requirements for this kind of system. A simple example case may be
instructive, however, an industrial-strength system that serves many
masters will be something altogether different and considerably more
complex. Any system would also require an api in addition to a GUI. I
seriously doubt a general system that would gain wide-spread
acceptance could be built in under a couple-hundred hours or more. If
I were allocating Massimo's time, which I stress I'm not, I would
rather have him developing a comprehensive web2py reference manual to
complement the current user's manual as there would be much more
leverage in such an activity.

mdipierro

unread,
Oct 24, 2009, 9:11:55 PM10/24/09
to web2py-users
I have some students in need of a project. I will make them some
suggestions including this one.

What specifically would you like covered in an extra reference manual.

Massimo

villas

unread,
Oct 26, 2009, 5:38:20 PM10/26/09
to web2py-users
We have a similar system requirement: accommodation bookings. In
this case, each room/property is booked for a flexible period of
days. As Weheh says, in each type of resource booking system, there
are so many add-on requirements for each use case. I believe one of
the central features of an "excellent" system is making really good
booking charts, so people can see availability at a glance.

david bain

unread,
Oct 26, 2009, 8:06:38 PM10/26/09
to web...@googlegroups.com
Just to extend the feature set, it would be nice if you could 'register' and manage/present the bookings of multiple properties.
--
SplashStart - Professional Websites. Starting Now.
http://www.splashstart.com

Alex Fanjul

unread,
Oct 26, 2009, 8:49:59 PM10/26/09
to web...@googlegroups.com
We have a requirement for system like this for a laboratory with rooms and objets (machines, cubes, etc.) treated as shared resources, as soon as I can I will send you the requirements.
Alex F
--
Alejandro Fanjul Fdez.
alex....@gmail.com
www.mhproject.org

Thadeus Burgess

unread,
Oct 26, 2009, 9:02:37 PM10/26/09
to web...@googlegroups.com
It would be nice to have a simple scheduling / allocation interface, that could easily be extended. Provide a base system so that everyone can add their own requirements into it.

-Thadeus

mdipierro

unread,
Oct 26, 2009, 11:45:54 PM10/26/09
to web2py-users
Can you help me with this?

http://web2py.com/examples/static/web2py.app.booking.w2p

Almost everything works except the jquery calendar widget does not
display events. I do not know why.

It would also be nice to add a better layout.

Massimo

On Oct 26, 8:02 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
> It would be nice to have a simple scheduling / allocation interface, that
> could easily be extended. Provide a base system so that everyone can add
> their own requirements into it.
>
> -Thadeus
>
> On Mon, Oct 26, 2009 at 7:49 PM, Alex Fanjul <alex.fan...@gmail.com> wrote:
> >  We have a requirement for system like this for a laboratory with rooms and
> > objets (machines, cubes, etc.) treated as shared resources, as soon as I can
> > I will send you the requirements.
> > Alex F
>
> > El 27/10/2009 1:06, david bain escribió:
>
> > Just to extend the feature set, it would be nice if you could 'register'
> > and manage/present the bookings of multiple properties.
>
> > On Mon, Oct 26, 2009 at 4:38 PM, villas <villa...@gmail.com> wrote:
>
> >> We have a similar system requirement:  accommodation bookings.  In
> >> this case,  each room/property is booked for a flexible period of
> >> days.  As Weheh says,  in each type of resource booking system,  there
> >> are so many add-on requirements for each use case.  I believe one of
> >> the central features of an "excellent" system is making really good
> >> booking charts, so people can see availability at a glance.
>
> > --
> > SplashStart - Professional Websites. Starting Now.
> >http://www.splashstart.com
>
> > --
> > Alejandro Fanjul Fdez.
> > alex.fan...@gmail.com
> >www.mhproject.org
>
>

mdipierro

unread,
Oct 27, 2009, 12:17:55 AM10/27/09
to web2py-users
Fixed and resposted. It works great and I think it does what people
asked.

- It may need a new more js effects.
- It certainly needs a better layout.
- It is all coded as a plugin (so you can add this to app that defines
db, auth, crud)
- You may want to add some more actions

It would be great if one of you were to adopt it and maintain it.

Massimo

mdipierro

unread,
Oct 27, 2009, 12:21:25 AM10/27/09
to web2py-users
BTW. The total length is 40 lines of python code (models and
controllers) on top of the scaffoding app + ~200 lines of custom html
+ fullcalendar.js and dependencies.

mr.freeze

unread,
Oct 27, 2009, 12:22:47 AM10/27/09
to web2py-users
Cool. I tested it and it worked for me.

Brian M

unread,
Oct 27, 2009, 8:38:23 PM10/27/09
to web2py-users
Very cool. The non-profit I work for has been looking for a scheduling
system for volunteers and this may give us a start if we decide to do
our own. As others have said, every resource ends up with different
requirements - we for example would have pre-defined time slots that
can hold a limited number of people and then want group leaders to
reserve some number of slots and then individuals to register as part
of a group. Then add in families or individuals that aren't part of a
group but still want to help out and you get a jumbled mess of
requirements. We've looked at commercial systems and they all end up
being restrictive in some silly way.

One bug I noticed, the calendar display shows an event booked
2009-10-28 18:00:00 to 2009-10-28 19:30 as happening all day both Oct
28 & 29. Your strftime pattern is wrong in plugin_booking/
calendar.html it should probably be .strftime('%B %d, %Y %H:%M:%S')
instead of .strftime('%B %d, %Y %M:%H:%S') - you've got the hours and
minutes flipped.

Brian M

unread,
Oct 27, 2009, 8:40:55 PM10/27/09
to web2py-users
Well the new strftime only partly fixes it. It shows up on just the
one day but it's still in the "all day" area rather than showing up in
the correct timeslot if you go to single day view.

Brian

Brian M

unread,
Oct 27, 2009, 9:57:18 PM10/27/09
to web2py-users
It looks like you have to specify whether or not each event is
"allDay" otherwise it assumes that it is. So if you're going to
specifically allow people to do all day events, you may want to have a
checkbox to flag that and add that check into the template.

Here's a modified script that won't show everything as being all day
and also adds in some custom time formatting:

<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
timeFormat: {
// for agendaWeek and agendaDay
agenda: 'h(:mm)t{ - h(:mm)t}', // 5a - 6:30p the parens ()
mean don't show if it's :00, t means show "a" for am and "p" for pm

//for basicWeek and basicDay
basic: 'h(:mm)t{ - h(:mm)t}', // 5a - 6:30p
//basicDay: 'h(:mm) t{ - h(:mm)t}', // 5:00a - 6:30p

// for all other views
'': 'h(:mm)t { - h(:mm)t}' // 7pm
},

editable: false,
events: [
{{for reservation in reservations:}}{{t1=reservation.start_time}}
{{t2=reservation.stop_time}}
{
start: new Date('{{=t1.strftime('%B %d, %Y %H:%M:%S')}}'),
end: new Date('{{=t2.strftime('%B %d, %Y %H:%M:%S')}}'),
allDay: false,
{{if auth.user.id==reservation.user:}}
title: '{{=db.plugin_booking_resource
[reservation.resource].name.replace("'","\\'")}}',
url: '{{=URL(r=request,f='edit_reservation',args=reservation.id)}}',
{{else:}}
title: '{{=("[%(first_name)s %(last_name)s]" %db.auth_user
[reservation.user]).replace("'","\\'")}}',
{{pass}}
},
{{pass}}
]
});
});
</script>


Brian

mdipierro

unread,
Oct 27, 2009, 10:39:18 PM10/27/09
to web2py-users
Can you please email this to me?

Thadeus Burgess

unread,
Oct 27, 2009, 10:40:41 PM10/27/09
to web...@googlegroups.com
Tomorrow I will.

-Thadeus

Remco Boerma

unread,
Apr 17, 2020, 8:24:33 AM4/17/20
to web2py-users
Reviving a post of more than  a decade ago.
Does anyone have an opensource web2py application available for booking/reservations like this?
An old example was referenced but is no longer available.

With kind regards,
Remco Boerma

Op woensdag 28 oktober 2009 01:38:23 UTC+1 schreef Brian M:
Reply all
Reply to author
Forward
0 new messages