source: WAeUP_SRP/trunk/Accommodation.py @ 622

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

added base files for accommodation-module,
renamed Accommodation to AccoHall?
accommodation to acco_hall
one can now add and view an accommodation-hall

  • Property svn:keywords set to Id
File size: 3.6 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
13
14class AccoFolder(CPSDocument): ###(
15    """
16    WAeUP AccoFolder containing Accommodation halls
17    """
18    meta_type = 'AccoFolder'
19    portal_type = meta_type
20    security = ClassSecurityInfo()
21   
22    security.declareProtected(View,"Title")
23    def Title(self):
24        """compose title"""
25        return "Accommodation"   
26
27    security.declareProtected(ModifyPortalContent,"generateFreeBedsList") ###(
28    def generateFreeBedsList(self):
29        """
30        generate the free Bedslist.
31        """
32        freelist = AccommodationTable()
33        l = self.portal_catalog({'meta_type': "Accommodation"})
34        halls = []
35        for h in l:
36            halls.append(h.getObject())
37        for hall in halls:
38            h = hall.getContent()
39            reserved = [int(r) for r in h.reserved_rooms.split()]
40            print h.which_sex
41            sex = 'male'
42            if h.which_sex:
43                sex = 'female'
44            for block in range(1,int(h.nr_of_blocks)):
45                for floor in range(1,int(h.nr_of_floors)):
46                    for room in range(1,int(h.rooms_per_floor)):
47                        for bed in 'ABCDEFGH'[:int(h.beds_per_room)]:
48                            room_nr = floor*100 + room
49                            if room_nr in reserved:
50                                print room_nr
51                                continue
52                            bt = 'xx'
53                            if bed in h.beds_for_fresh:
54                                bt = 'fr'
55                            elif bed in h.beds_for_returning:
56                                bt = 're'
57                            elif bed in h.beds_for_final:
58                                bt = 'fi'
59                            bt = "%(sex)s_%(bt)s" % vars()
60                            uid = '%s_%d_%s' % (hall.getId(),room_nr,bed)
61                            print bt,uid
62                            freelist.addRecord(bed = uid)
63                            try:
64                                freelist.modifyRecord(uid, bed = bed, bed_type = bt)
65                            except ValueError,e:
66                                freelist.deleteRecord(uid)
67
68        return self.accommodation.academics_contents()
69
70###)
71
72InitializeClass(AccoFolder)
73
74def addAccoFolder(container, id, REQUEST=None, **kw):
75    """Add a AccoFolder."""
76    ob = AccoFolder(id, **kw)
77    return CPSBase_adder(container, ob, REQUEST=REQUEST)
78###)
79
80class AccoHall(CPSDocument): ###(
81    """
82    WAeUP AccoHall containing Departments
83    """
84    meta_type = 'AccoHall'
85    portal_type = meta_type
86    security = ClassSecurityInfo()
87
88    security.declareProtected(View,"Title") ###(
89    def Title(self):
90        """compose title"""
91        content = self.getContent()
92        heading = getattr(content,'heading',None)
93        if heading is None:
94            return self.title
95        return heading
96
97###)
98
99InitializeClass(AccoHall)
100
101def addAccoHall(container, id, REQUEST=None, **kw):
102    """Add a AccoHall."""
103    ob = AccoHall(id, **kw)
104    return CPSBase_adder(container, ob, REQUEST=REQUEST)
105###)
Note: See TracBrowser for help on using the repository browser.