Ignore:
Timestamp:
20 Sep 2012, 08:49:37 (12 years ago)
Author:
uli
Message:

Merge changes from update branch (includes trunk changes until r9107).

Location:
main/waeup.kofa/branches/uli-zc-async
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/branches/uli-zc-async

  • main/waeup.kofa/branches/uli-zc-async/src/waeup/kofa/hostels/hostel.py

    r8685 r9209  
    2222from zope.event import notify
    2323from zope.component import getUtility
     24from zope.component.interfaces import IFactory
    2425from datetime import datetime
    2526from waeup.kofa.utils.helpers import attrs_to_fields
     
    4041        target = self.__name__
    4142        return grok.getSite()['hostels'].logger_info(ob_class,target,comment)
     43
     44    @property
     45    def bed_statistics(self):
     46        total = len(self.keys())
     47        booked = 0
     48        for value in self.values():
     49            if value.owner != NOT_OCCUPIED:
     50                booked += 1
     51        return {'booked':booked, 'total':total}
     52
     53    def clearHostel(self):
     54        """Remove all beds
     55        """
     56        keys = [i for i in self.keys()] # create deep copy
     57        for bed in keys:
     58            del self[bed]
     59        return
    4260
    4361    def addBed(self, bed):
     
    128146    grok.provides(IBed)
    129147
    130     def getBedCoordinates(self):
     148    @property
     149    def coordinates(self):
    131150        """Determine the coordinates from the bed_id.
    132151        """
    133152        return self.bed_id.split('_')
     153
     154    # The following property attributes are only needed
     155    # for the exporter to ease evaluation with  Excel.
     156
     157    @property
     158    def hall(self):
     159        return self.coordinates[0]
     160
     161    @property
     162    def block(self):
     163        return self.coordinates[1]
     164
     165    @property
     166    def room(self):
     167        return self.coordinates[2]
     168
     169    @property
     170    def bed(self):
     171        return self.coordinates[3]
     172
     173    @property
     174    def special_handling(self):
     175        return self.bed_type.split('_')[0]
     176
     177    @property
     178    def sex(self):
     179        return self.bed_type.split('_')[1]
     180
     181    @property
     182    def bt(self):
     183        return self.bed_type.split('_')[2]
     184
    134185
    135186    def bookBed(self, student_id):
     
    145196        """
    146197        sh, sex, bt = self.bed_type.split('_')
    147         hostel_id, block, room_nr, bed = self.getBedCoordinates()
     198        hostel_id, block, room_nr, bed = self.coordinates
    148199        hostel = self.__parent__
    149200        beds_for_fresh = getattr(hostel,'beds_for_fresh',[])
     
    221272Bed = attrs_to_fields(Bed)
    222273
     274class HostelFactory(grok.GlobalUtility):
     275    """A factory for hostels.
     276
     277    We need this factory for the hostel processor.
     278    """
     279    grok.implements(IFactory)
     280    grok.name(u'waeup.Hostel')
     281    title = u"Create a new hostel.",
     282    description = u"This factory instantiates new hostel instances."
     283
     284    def __call__(self, *args, **kw):
     285        return Hostel()
     286
     287    def getInterfaces(self):
     288        return implementedBy(Hostel)
     289
     290
    223291@grok.subscribe(IBedTicket, grok.IObjectRemovedEvent)
    224292def handle_bedticket_removed(bedticket, event):
     
    229297        bedticket.bed.owner = NOT_OCCUPIED
    230298        notify(grok.ObjectModifiedEvent(bedticket.bed))
     299
Note: See TracChangeset for help on using the changeset viewer.