Index: main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7618)
+++ main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7619)
@@ -171,4 +171,8 @@
         """
 
+    def getVerdictsDict():
+        """Provide a dict of verdicts.
+        """
+
 class ISIRPObject(Interface):
     """A SIRP object.
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7618)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7619)
@@ -24,5 +24,5 @@
 from waeup.sirp.university.vocabularies import CourseSource, study_modes
 from waeup.sirp.students.vocabularies import (
-  CertificateSource, verdicts, StudyLevelSource,
+  CertificateSource, VerdictSource, StudyLevelSource,
   contextual_reg_num_source, contextual_mat_num_source,
   GenderSource, nats_vocab,
@@ -257,5 +257,4 @@
         )
 
-
     entry_mode = schema.Choice(
         title = u'Entry Mode',
@@ -293,5 +292,5 @@
     current_verdict = schema.Choice(
         title = u'Current Verdict',
-        source = verdicts,
+        source = VerdictSource(),
         default = '0',
         required = False,
@@ -300,5 +299,5 @@
     previous_verdict = schema.Choice(
         title = u'Previous Verdict',
-        source = verdicts,
+        source = VerdictSource(),
         default = '0',
         required = False,
@@ -322,5 +321,5 @@
     level_verdict = schema.Choice(
         title = u'Verdict',
-        source = verdicts,
+        source = VerdictSource(),
         default = '0',
         required = False,
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py	(revision 7618)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py	(revision 7619)
@@ -25,5 +25,5 @@
 from zc.sourcefactory.basic import BasicSourceFactory
 from zc.sourcefactory.contextual import BasicContextualSourceFactory
-from waeup.sirp.interfaces import SimpleSIRPVocabulary
+from waeup.sirp.interfaces import SimpleSIRPVocabulary, ISIRPUtils
 from waeup.sirp.students.lgas import LGAS
 from waeup.sirp.students.nats import NATS
@@ -86,34 +86,18 @@
         return title
 
-verdicts = SimpleSIRPVocabulary(
-    ('not yet','0'),
-    ('Successful student','A'),
-    ('Student with carryover courses','B'),
-    ('Student on probation','C'),
-    ('Withdrawn from the faculty','D'),
-    ('Student who were previously on probation','E'),
-    ('Medical case','F'),
-    ('Absent from examination','G'),
-    ('Withheld results','H'),
-    ('Expelled/rusticated/suspended student','I'),
-    ('Temporary withdrawn from the university','J'),
-    ('Unregistered student','K'),
-    ('Referred student','L'),
-    ('Reinstatement','M'),
-    ('Student on transfer','N'),
-    ('NCE-III repeater','O'),
-    ('New 300 level student','X'),
-    ('No previous verdict','Y'),
-    ('Successful student (provisional)','Z'),
-    ('First Class','A1'),
-    ('Second Class Upper','A2'),
-    ('Second Class Lower','A3'),
-    ('Third Class','A4'),
-    ('Pass','A5'),
-    ('Distinction','A6'),
-    ('Credit','A7'),
-    ('Merit','A8'),
-    )
+class VerdictSource(BasicContextualSourceFactory):
+    """A verdicts source delivers all verdicts provided
+    in the portal.
+    """
 
+    def getValues(self, context):
+        self.verdicts_dict = getUtility(ISIRPUtils).getVerdictsDict()
+        return self.verdicts_dict.keys()
+
+    def getToken(self, context, value):
+        return value
+
+    def getTitle(self, context, value):
+        return self.verdicts_dict[value]
 
 class CertificateSource(BasicContextualSourceFactory):
Index: main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py	(revision 7618)
+++ main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py	(revision 7619)
@@ -108,2 +108,35 @@
         return send_mail(
             from_name,from_addr,rcpt_name,rcpt_addr,subject,body,config)
+
+
+    def getVerdictsDict(self):
+        """Provide a dictionary of verdicts.
+        """
+        return {
+            'A1': 'First Class',
+            '0': 'not yet',
+            'A3': 'Second Class Lower',
+            'A2': 'Second Class Upper',
+            'A5': 'Pass',
+            'A4': 'Third Class',
+            'A7': 'Credit',
+            'A6': 'Distinction',
+            'A8': 'Merit',
+            'A': 'Successful student',
+            'C': 'Student on probation',
+            'B': 'Student with carryover courses',
+            'E': 'Student who were previously on probation',
+            'D': 'Withdrawn from the faculty',
+            'G': 'Absent from examination',
+            'F': 'Medical case',
+            'I': 'Expelled/rusticated/suspended student',
+            'H': 'Withheld results',
+            'K': 'Unregistered student',
+            'J': 'Temporary withdrawn from the university',
+            'M': 'Reinstatement',
+            'L': 'Referred student',
+            'O': 'NCE-III repeater',
+            'N': 'Student on transfer',
+            'Y': 'No previous verdict',
+            'X': 'New 300 level student',
+            'Z': 'Successful student (provisional)'}
