Hi Aaron,
i have one question-how do u handle AlreadyReserved exception? I woould
like to make some checks before saving some things in admin interface
but i dont know how may i tell the user that there is some error...

Aaron wrote:
> I just wanted to drop a note about a new app that I deployed.
>
> I recently launched a prototype and users are happy.
>
> Basically it uses the gamespy API to query gamespy for a list of active
> game servers, then contacts each server in turn to obtain critical
> stats (map being player, number of players, scores....)
>
> Players can come to the website and reserve a particular server for a
> number of hours.
>
> The players then get a unique URL that they can pass around.  Going to
> the URL will start the game and connect you to the reserved server.
>
> All that happens in 121 python statements outside of django (according
> to pylint).
>
> All of the heavy lifting (gamespy, activeX, apache/http) was done in C,
> but all of the business logic was handled in Python.
>
> After this little project I'm starting to get the model API.
>
> I thought this bit was tricky, so I'll share:
>
> English:
> If you try to make a reservation but that server is already reserved
> for any part of the time period then that reservation should fail,
> unless you are the person that made the original reservation.
>
> Django:
> class Reservation(meta.Model):
> ....
>     def _pre_save(self):
>         '''A server is already reserved if there is another reservation
> with a start of end date in the
>            same range as the new reservation'''
>         from  django.models.regservers import AlreadyReserved,
> reservations, servers
>         from django.core.meta import Q
>         server = servers.get_object(id__exact=self.server_id)
>         blockers =  server.get_reservation_list(complex=(
> Q(start__range=(self.start,self.end)) |
>
> Q(end__range=(self.start,self.end)) ) )
>         # custom logic to determine if I need to stop the reservation
>         blockers = [b for b in blockers if b.user <> self.user]
>         if len(blockers)>0:
>             raise AlreadyReserved(blockers)
>
>
> It needs a little finishing, like transactional support and error
> handling - but so far the system works really well and is agile in
> every sense of the word.
> 
> Thanks again,
> -Aaron Held


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to