##parameters=type_name, datamodel # $Id: waeup_document_create_do.py 1724 2007-04-30 15:37:48Z joachim $ """ Create an empty object in the context according to the datamodel. Datamodel may be examined to create a suitable id. Returns the created object (usually a proxy). """ from Products.CMFCore.utils import getToolByName request = context.REQUEST if type_name in ("StudyLevel","StudentStudyLevel"): id = datamodel.get('code') else: id = datamodel.get('code').upper() datamodel.set('code',id) ##if not id: ## id = 'my ' + type_name ##id = context.computeId(compute_from=id) # XXX shouldn't use a skin ## language = datamodel.get('Language') if not language: ts = getToolByName(context, 'translation_service') language = ts.getSelectedLanguage() ttool = getToolByName(context, 'portal_types') ti = ttool[type_name] allow_discussion = ti.allowDiscussion() # Datamodel is passed so that flexti can initialize the object. new_id = context.invokeFactory(type_name, id, datamodel=datamodel, language=language, allow_discussion=allow_discussion) if new_id is not None: id = new_id if type_name == "xxxCourse": # disabled handled by event d = {} ptl = request.get('PATH_TRANSLATED').split('/') ai = ptl.index('academics') d['faculty'] = ptl[ai+1] d['department'] = ptl[ai+2] from_dm = ('code','title','semester','credits',) for f in from_dm: d[f] = datamodel.get(f) context.courses_catalog.addRecord(**d) ob = getattr(context, id) ob.getContent().edit(mapping=datamodel) context.notifyCPSDocumentCreation(ob=ob) # BBB obsolete in CPS 3.5.0 return ob