Ignore:
Timestamp:
16 Oct 2005, 15:47:22 (19 years ago)
Author:
joachim
Message:

=weiteres

File:
1 edited

Legend:

Unmodified
Added
Removed
  • waeup_product/trunk/skins/waeup_student/create_jamb.py

    r45 r48  
    1 ##parameters=type_name, REQUEST=None, **kw
     1##parameters=REQUEST=None
    22# $Id$
    33"""
    4 Create an object.
     4Create an the Jamb-Record for a Student
    55
    6 FIXME: what are the parameters?
    76"""
    87
    9 from urllib import urlencode
     8type_name = 'Jamb'
     9ti = context.portal_types[type_name]
     10pr = context.portal_registration
     11pm = context.portal_membership
    1012
    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', '')
     13REQUEST.set('type_name',type_name)
    2114
    22         # Look for the create action on the ti
    23         create_action_form = ti.getActionById('create', 'cpsdocument_create_form')
     15validate = REQUEST.has_key("cpsdocument_edit_button")
    2416
    25         return REQUEST.RESPONSE.redirect('%s/%s?%s'
    26                                          % (context.absolute_url(),
    27                                             create_action_form,
    28                                             urlencode(args)))
     17lt = context.portal_layouts
    2918
    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)))
     19res,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                      )
     26if psm == 'invalid' or psm == '':
     27    return context.create_jamb_form(rendered = res,
     28                                 psm = psm,
     29                                 ds = ds,
     30                                 )
     31   
     32elif 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   
     59return res,psm,ds
    3660
    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 proxy
    47     doc = ob
    48 else:
    49     try:
    50         doc.edit(proxy=ob, **kw)
    51     except:
    52         # CMF Compatibility.
    53         # type_name not necessarly and edit method
    54         # 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.