source: WAeUP_SRP/trunk/Accommodation.py @ 623

Last change on this file since 623 was 623, checked in by joachim, 18 years ago

added generate Bedlist

  • Property svn:keywords set to Id
File size: 3.8 KB
Line 
1#-*- mode: python; mode: fold -*-
2from Globals import InitializeClass
3from AccessControl import ClassSecurityInfo
4
5from Products.CMFCore.utils import UniqueObject, getToolByName
6from Products.CMFCore.permissions import View
7from Products.CMFCore.permissions import ModifyPortalContent
8from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder
9#from Products.CPSCore.CPSBase import CPSBaseDocument as BaseDocument
10from Products.CPSDocument.CPSDocument import CPSDocument
11from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
12from Products.WAeUP_SRP.WAeUPTables import AccommodationTable
13import Globals
14import DateTime
15p_home = Globals.package_home(globals())
16i_home = Globals.INSTANCE_HOME
17
18class AccoFolder(CPSDocument): ###(
19    """
20    WAeUP AccoFolder containing Accommodation halls
21    """
22    meta_type = 'AccoFolder'
23    portal_type = meta_type
24    security = ClassSecurityInfo()
25   
26    security.declareProtected(View,"Title")
27    def Title(self):
28        """compose title"""
29        return "Accommodation"   
30
31    security.declareProtected(ModifyPortalContent,"generateFreeBedsList") ###(
32    def generateFreeBedsList(self):
33        """
34        generate the free Bedslist.
35        """
36        freelist = self.portal_accommodation
37        l = self.portal_catalog({'meta_type': "AccoHall"})
38        halls = []
39        generated = []
40        generated.append('"Bed","BedType","Student"' % vars())
41        for h in l:
42            halls.append(h.getObject())
43        for hall in halls:
44            #import pdb;pdb.set_trace()
45            h = hall.getContent()
46            reserved = [int(r) for r in h.reserved_rooms.split()]
47            print h.which_sex
48            sex = 'male'
49            if h.which_sex:
50                sex = 'female'
51            for block in range(1,int(h.nr_of_blocks)):
52                for floor in range(1,int(h.nr_of_floors)):
53                    for room in range(1,int(h.rooms_per_floor)):
54                        for bed in 'ABCDEFGH'[:int(h.beds_per_room)]:
55                            room_nr = floor*100 + room
56                            bt = 'xx'
57                            if room_nr in reserved:
58                                bt = "reserved"
59                            elif bed in h.beds_for_fresh:
60                                bt = 'fr'
61                            elif bed in h.beds_for_returning:
62                                bt = 're'
63                            elif bed in h.beds_for_final:
64                                bt = 'fi'
65                            bt = "%(sex)s_%(bt)s" % vars()
66                            uid = '%s_%d_%d_%s' % (hall.getId(),block,room_nr,bed)
67                            print bt,uid
68                            freelist.addRecord(bed = uid, bed_type = bt, student= '')
69                            generated.append('"%(uid)s","%(bt)s"' % vars())
70        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
71        open("%s/import/bedlist_%s.csv" % (i_home,current),"w+").write('\n'.join(generated))
72        return self.accommodation.academics_contents()
73
74###)
75
76InitializeClass(AccoFolder)
77
78def addAccoFolder(container, id, REQUEST=None, **kw):
79    """Add a AccoFolder."""
80    ob = AccoFolder(id, **kw)
81    return CPSBase_adder(container, ob, REQUEST=REQUEST)
82###)
83
84class AccoHall(CPSDocument): ###(
85    """
86    WAeUP AccoHall containing Departments
87    """
88    meta_type = 'AccoHall'
89    portal_type = meta_type
90    security = ClassSecurityInfo()
91
92    security.declareProtected(View,"Title") ###(
93    def Title(self):
94        """compose title"""
95        content = self.getContent()
96        heading = getattr(content,'heading',None)
97        if heading is None:
98            return self.title
99        return heading
100
101###)
102
103InitializeClass(AccoHall)
104
105def addAccoHall(container, id, REQUEST=None, **kw):
106    """Add a AccoHall."""
107    ob = AccoHall(id, **kw)
108    return CPSBase_adder(container, ob, REQUEST=REQUEST)
109###)
Note: See TracBrowser for help on using the repository browser.