Changeset 48 for waeup_product/trunk/skins/waeup_student/create_jamb.py
- Timestamp:
- 16 Oct 2005, 15:47:22 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
waeup_product/trunk/skins/waeup_student/create_jamb.py
r45 r48 1 ##parameters= type_name, REQUEST=None, **kw1 ##parameters=REQUEST=None 2 2 # $Id$ 3 3 """ 4 Create an object.4 Create an the Jamb-Record for a Student 5 5 6 FIXME: what are the parameters?7 6 """ 8 7 9 from urllib import urlencode 8 type_name = 'Jamb' 9 ti = context.portal_types[type_name] 10 pr = context.portal_registration 11 pm = context.portal_membership 10 12 11 if REQUEST is not None: 12 kw.update(REQUEST.form) 13 # Use creation without empty object. 14 # XXX should find better 15 ti = getattr(context.portal_types, type_name) 16 # For cpsdocument 17 if ti.meta_type == 'CPS Flexible Type Information': 18 args = {'type_name': type_name} 19 # XXX pass prefilled title, a bit of a hack... 20 args['widget__Title'] = kw.get('title', '') 13 REQUEST.set('type_name',type_name) 21 14 22 # Look for the create action on the ti 23 create_action_form = ti.getActionById('create', 'cpsdocument_create_form') 15 validate = REQUEST.has_key("cpsdocument_edit_button") 24 16 25 return REQUEST.RESPONSE.redirect('%s/%s?%s' 26 % (context.absolute_url(), 27 create_action_form, 28 urlencode(args))) 17 lt = context.portal_layouts 29 18 30 if REQUEST and not kw.get('title'): 31 # Need a title before creating folders 32 if type_name in ('Section', 'Workspace'): 33 args = {'type_name': type_name} 34 return REQUEST.RESPONSE.redirect('%s/folder_edit_form?%s' % 35 (context.absolute_url(), urlencode(args))) 19 res,psm,ds = lt.renderLayout(layout_id= 'jambcreate', 20 schema_id= 'jamb', 21 context=context, 22 mapping=validate and REQUEST, 23 ob={}, 24 layout_mode='create', 25 ) 26 if psm == 'invalid' or psm == '': 27 return context.create_jamb_form(rendered = res, 28 psm = psm, 29 ds = ds, 30 ) 31 32 elif psm == 'valid': 33 s_id = "s%s" % ds.get('reg_nr') 34 name = ds.get('name') 35 skw = {'title': name} 36 context.invokeFactory('Student',s_id) 37 student = getattr(context,s_id) 38 student.edit(mapping=skw) 39 context.notifyCPSDocumentCreation(ob=student) 40 jamb_id = 'JAMB' 41 student.invokeFactory('Jamb',jamb_id) 42 jamb = getattr(student,jamb_id) 43 ds.set('title', name) 44 jamb.edit(mapping=ds) 45 context.notifyCPSDocumentCreation(ob=jamb) 46 psm = 'Student created' 47 pr.addMember(s_id, 'UnSeT') 48 groups = context.portal_directories.groups 49 gm = list(groups.getEntry('Students')['members']) 50 gm.extend((s_id,)) 51 groups.editEntry({'group': 'Students', 52 'members': gm}) 53 return context.student_folder_view(psm=psm) 54 ## return context.create_jamb_form(rendered = res, 55 ## psm = psm, 56 ## ds = ds, 57 ## ) 58 59 return res,psm,ds 36 60 37 id = kw.get('title', 'my_' + type_name)38 id = context.computeId(compute_from=id)39 40 context.invokeFactory(type_name, id)41 ob = getattr(context, id)42 43 try:44 doc = ob.getEditableContent()45 except AttributeError:46 # not a proxy47 doc = ob48 else:49 try:50 doc.edit(proxy=ob, **kw)51 except:52 # CMF Compatibility.53 # type_name not necessarly and edit method54 # for CMF types is not aware about that.55 if kw.has_key('type_name'):56 del kw['type_name']57 doc.edit(**kw)58 59 context.portal_eventservice.notifyEvent('modify_object', context, {})60 context.portal_eventservice.notifyEvent('modify_object', ob, {})61 62 63 if REQUEST is not None:64 psm = 'psm_content_created'65 action_path = doc.getTypeInfo().immediate_view # getActionById('metadata')66 REQUEST.RESPONSE.redirect('%s/%s?portal_status_message=%s' %67 (ob.absolute_url(), action_path,68 psm))69 70 return id
Note: See TracChangeset for help on using the changeset viewer.