Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 8739)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 8740)
@@ -80,4 +80,7 @@
     role_manager.assignRoleToPrincipal(localrole, user)
     notify(LocalRoleSetEvent(view.context, localrole, user, granted=True))
+    ob_class = view.__implemented__.__name__.replace('waeup.kofa.','')
+    grok.getSite().logger.info(
+        '%s - added: %s|%s' % (ob_class, user, localrole))
     view.redirect(view.url(view.context, u'@@manage')+'?tab%s' % tab)
     return
@@ -1339,4 +1342,13 @@
             self.url(self.context, 'export.csv') + '?exporter=%s' % exporter)
         return
+
+class ExportCSVView(grok.View):
+    grok.context(IDataCenter)
+    grok.name('export.csv')
+    grok.require('waeup.manageDataCenter')
+
+    def render(self, exporter=None):
+        if exporter is None:
+            return
         ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
         self.context.logger.info(
@@ -1349,19 +1361,4 @@
         return csv_data
 
-class ExportCSVView(grok.View):
-    grok.context(IDataCenter)
-    grok.name('export.csv')
-    grok.require('waeup.manageDataCenter')
-
-    def render(self, exporter=None):
-        if exporter is None:
-            return
-        exporter = getUtility(ICSVExporter, name=exporter)
-        csv_data = exporter.export_all(grok.getSite())
-        #csv_data.seek(0)
-        self.response.setHeader(
-            'Content-Type', 'text/csv; charset=UTF-8')
-        return csv_data
-
 class ExportXMLPage(grok.View):
     """Deliver an XML representation of the context.
@@ -1477,5 +1474,9 @@
             self.flash(_('The faculty code chosen already exists.'))
             return
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        self.context.__parent__.logger.info(
+            '%s - added: %s' % (ob_class, faculty.code))
         self.redirect(self.url(self.context, u'@@manage')+'?tab1')
+        return
 
     @action(_('Cancel'), validator=NullValidator)
@@ -1591,9 +1592,14 @@
         self.status = self.flash(
             _("Department ${a} added.", mapping = {'a':data['code']}))
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        self.context.__parent__.__parent__.logger.info(
+            '%s - added: %s' % (ob_class, data['code']))
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+        return
 
     @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
+        return
 
 #
@@ -1794,5 +1800,9 @@
         message = _(u'Course ${a} successfully created.', mapping = {'a':course.code})
         self.flash(message)
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        self.context.__parent__.__parent__.__parent__.logger.info(
+            '%s - added: %s' % (ob_class, data['code']))
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+        return
 
     @action(_('Cancel'), validator=NullValidator)
@@ -1831,4 +1841,7 @@
         message = _(u'Certificate ${a} successfully created.', mapping = {'a':certificate.code})
         self.flash(message)
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        self.context.__parent__.__parent__.__parent__.logger.info(
+            '%s - added: %s' % (ob_class, data['code']))
         self.redirect(self.url(self.context, u'@@manage')+'?tab3')
         return
@@ -1993,5 +2006,9 @@
             _("Course referrer ${a}_${b} added.",
             mapping = {'a': data['course'].code, 'b': data['level']}))
+        code = "%s_%s" % (data['course'].code, data['level'])
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        grok.getSite().logger.info('%s - added: %s' % (ob_class, code))
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+        return
 
     @action(_('Cancel'), validator=NullValidator)
@@ -2044,4 +2061,9 @@
             parent.delCourseRef(data['course'].code, level=old_level)
             self.flash(_('Form has been saved.'))
+            old_code = "%s_%s" % (data['course'].code, old_level)
+            new_code = "%s_%s" % (data['course'].code, data['level'])
+            ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+            grok.getSite().logger.info(
+                '%s - renamed: %s to %s' % (ob_class, old_code, new_code))
         self.redirect(self.url(parent))
         return
@@ -2123,3 +2145,6 @@
         else:
             self.flash(_('An smtp server error occurred.'))
-        return
+        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
+        self.context.logger.info(
+            '%s - %s - %s' % (ob_class, data['identifier'], data['email']))
+        return
