Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py	(revision 5950)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py	(revision 5951)
@@ -6,7 +6,7 @@
     IWAeUPObject, IUniversity, IUserContainer, IDataCenter)
 from waeup.sirp.university.interfaces import (
-    IFacultyContainer, IFaculty, IDepartment, ICourseContainer, ICourse,
-    ICertificateContainer, ICertificate, ICertificateCourse, CourseSource)
-
+    IFacultyContainer, IFaculty, IFacultyAdd, IDepartment, IDepartmentAdd, 
+    ICourseContainer, ICourse, ICourseAdd, ICertificateContainer, 
+    ICertificate, ICertificateAdd, ICertificateCourse, ICertificateCourseAdd)
 class IBreadcrumb(Interface):
     """Provide breadcrumbs.
@@ -55,25 +55,3 @@
         """Get the list of breadcrumbs as real Python list.
         """
-        
-class ICertificateCourseAdd(ICertificateCourse):
-    """A certificatecourse is a course referenced by a certificate, which
-       provides some own attributes.
-    """
-    course = schema.Choice(
-        title = u'Course to be referenced',
-        source = CourseSource(),
-        readonly = False,
-        )
-    
-    level = schema.Int(
-        title = u'Level of this course',
-        required = True,
-        default = 100,
-        readonly = False,
-        )    
 
-    core_or_elective = schema.Bool(
-        title = u'Is mandatory course (not elective)',
-        required = True,
-        default = True
-        )        
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 5950)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 5951)
@@ -33,6 +33,7 @@
     WAeUPDisplayFormPage, NullValidator)
 from waeup.sirp.browser.interfaces import (
-    IUniversity, IFacultyContainer, IFaculty, IDepartment, ICourse,
-    ICertificate, ICertificateCourse, ICertificateCourseAdd)
+    IUniversity, IFacultyContainer, IFaculty, IFacultyAdd, 
+    IDepartment, IDepartmentAdd, ICourse, ICourseAdd, ICertificate,
+    ICertificateAdd, ICertificateCourse, ICertificateCourseAdd)
 from waeup.sirp.catalog import search_context
 from waeup.sirp.interfaces import(
@@ -864,10 +865,6 @@
     label = ''
     title = 'Add faculty'
-    pnav = 1
-    
-    # We need a deepcopy here, because otherwise also all other
-    # IFaculty forms would be affected.
-    form_fields = copy.deepcopy(grok.AutoFields(IFaculty))
-    form_fields.get('code').field.readonly = False    
+    form_fields = grok.AutoFields(IFacultyAdd)
+    pnav = 1
 
     @grok.action('Add faculty')
@@ -929,10 +926,6 @@
     title = 'Add department'
     label = ''
-    pnav = 1
-    
-    # We need a deepcopy here, because otherwise also all other
-    # IDepartment forms would be affected.
-    form_fields = copy.deepcopy(grok.AutoFields(IDepartment))
-    form_fields.get('code').field.readonly = False
+    form_fields = grok.AutoFields(IDepartmentAdd)
+    pnav = 1
     
     @grok.action('Add department')
@@ -1055,11 +1048,7 @@
     grok.require('waeup.manageUniversity')
     title = u'Add course'
-    pnav = 1
-    
-    # We need a deepcopy here, because otherwise also all other
-    # ICourse forms would be affected.
-    form_fields = copy.deepcopy(grok.AutoFields(ICourse))
-    form_fields.get('code').field.readonly = False
-
+    form_fields = grok.AutoFields(ICourseAdd)
+    pnav = 1
+    
     @grok.action('Add course')
     def addCourse(self, **data):
@@ -1090,10 +1079,7 @@
     grok.require('waeup.manageUniversity')
     title = u'Add certificate'
-    pnav = 1
-    
-    # We need a deepcopy here, because otherwise also all other
-    # ICertificate forms would be affected.
-    form_fields = copy.deepcopy(grok.AutoFields(ICertificate))
-    form_fields.get('code').field.readonly = False
+    form_fields = grok.AutoFields(ICertificateAdd)
+    pnav = 1
+    
         
     @grok.action('Add certificate')
Index: main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py	(revision 5950)
+++ main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py	(revision 5951)
@@ -49,4 +49,17 @@
         required = True,
         )
+        
+class IFacultyAdd(IFaculty):
+    """Representation of a university faculty.
+    """
+    code = schema.TextLine(
+        title = u'Code',
+        description = u'Abbreviated code of the faculty',
+        default = u'NA',
+        required = True,
+        readonly = False,
+        )
+                 
+IFacultyAdd['code'].order =  IFaculty['code'].order            
     
 class IFacultyContainer(IWAeUPContainer):
@@ -84,4 +97,16 @@
     certificates = Attribute("A container for certificates.")
 
+class IDepartmentAdd(IDepartment):
+    """Representation of a university department.
+    """
+    code = schema.TextLine(
+        title = u'Code',
+        default = u'NA',
+        description = u'Abbreviated code of the department',
+        required = True,
+        readonly = False,
+        )
+                 
+IDepartmentAdd['code'].order =  IDepartment['code'].order         
 
 class ICourseContainer(IWAeUPContainer):
@@ -132,4 +157,16 @@
         )
 
+class ICourseAdd(ICourse):
+    """Representation of a course.
+    """
+    code = schema.TextLine(
+        title = u'Code',
+        default = u'NA',
+        description = u'Abbreviated code of the course',
+        required = True,
+        readonly = False,
+        )
+        
+ICourseAdd['code'].order =  ICourse['code'].order         
 
 class ICertificate(IWAeUPObject):
@@ -152,4 +189,5 @@
     title = schema.TextLine(
         title = u'Title',
+        default = u'Unnamed',
         required = True,
         )
@@ -157,4 +195,5 @@
     study_mode = schema.TextLine(
         title = u'Study Mode',
+        default = u'ug_ft',
         required = True,
         )
@@ -162,4 +201,5 @@
     start_level = schema.TextLine(
         title = u'Start Level',
+        default = u'100',
         required = True,
         )
@@ -167,4 +207,5 @@
     end_level = schema.TextLine(
         title = u'End Level',
+        default = u'500',
         required = True,
         )
@@ -172,7 +213,20 @@
     application_category = schema.TextLine(
         title = u'Application Category',
+        default = u'basic',
         required = False,
         )   
 
+class ICertificateAdd(ICertificate):
+    """Representation of a certificate.
+    """
+    code = schema.TextLine(
+        title = u'Code',
+        default = u'NA',
+        description = u'Abbreviated code of the certificate.',
+        required = True,
+        readonly = False,
+        )
+        
+ICertificateAdd['code'].order =  ICertificate['code'].order         
     
 class ICertificateContainer(IWAeUPContainer):
@@ -196,5 +250,5 @@
     
     level = schema.Int(
-        title = u'Level of this course',
+        title = u'Level',
         required = True,
         default = 100,
@@ -213,2 +267,15 @@
         This is needed for cataloging.
         """
+        
+        
+class ICertificateCourseAdd(ICertificateCourse):
+    """A certificatecourse is a course referenced by a certificate, which
+       provides some own attributes.
+    """
+    course = schema.Choice(
+        title = u'Course to be referenced',
+        source = CourseSource(),
+        readonly = False,
+        )
+                  
+ICertificateCourseAdd['course'].order =  ICertificateCourse['course'].order                  
