* renamed files and symlinks

    modules/websubmit/web/publiline.py
     => modules/websubmit/lib/websubmit_publiline.py

* modified files

--- orig/modules/webstyle/lib/webinterface_layout.py
+++ mod/modules/webstyle/lib/webinterface_layout.py
@@ -29,7 +29,7 @@
 from invenio.webinterface_handler import create_handler, WebInterfaceDirectory
 
 from invenio.websearch_webinterface import WebInterfaceSearchInterfacePages
-from invenio.websubmit_webinterface import websubmit_legacy_getfile, WebInterfaceSubmitPages
+from invenio.websubmit_webinterface import websubmit_legacy_getfile, WebInterfaceSubmitPages, WebInterfacePublilinePages 
 from invenio.websession_webinterface import WebInterfaceYourAccountPages
 from invenio.webalert_webinterface import WebInterfaceYourAlertsPages
 from invenio.webbasket_webinterface import WebInterfaceYourBasketsPages
@@ -61,6 +61,7 @@
         'error',
         'oai2d', ('oai2d.py', 'oai2d'),
         ('getfile.py', 'getfile'),
+        'publiline',
         'submit',
 
 
@@ -73,6 +74,8 @@
         return
 
     submit = WebInterfaceSubmitPages()
+    
+    publiline = WebInterfacePublilinePages()
 
     youraccount = WebInterfaceYourAccountPages()
 


--- orig/modules/websubmit/lib/Makefile.am
+++ mod/modules/websubmit/lib/Makefile.am
@@ -22,14 +22,15 @@
 pylibdir = $(libdir)/python/invenio
 
 pylib_DATA = \
-	websubmit_config.py 		\
-	websubmit_engine.py file.py	\
-	websubmit_webinterface.py 	\
+	      websubmit_config.py 		\
+	      websubmit_engine.py file.py	\
+	      websubmit_webinterface.py 	\
         websubmit_templates.py 	 	\
         websubmitadmin_config.py 	\
         websubmitadmin_dblayer.py 	\
         websubmitadmin_engine.py	\
-        websubmitadmin_templates.py
+        websubmitadmin_templates.py \
+        websubmit_publiline.py
 
 EXTRA_DIST = $(pylib_DATA)
 


--- orig/modules/websubmit/web/publiline.py
+++ mod/modules/websubmit/lib/websubmit_publiline.py
@@ -43,42 +43,6 @@
 import invenio.template
 websubmit_templates = invenio.template.load('websubmit')
 
-def index(req,c=cdsname,ln=cdslang,doctype="",categ="",RN="",send=""):
-    global uid
-    ln = wash_language(ln)
-
-    # load the right message language
-    _ = gettext_set_language(ln)
-
-    t=""
-    # get user ID:
-    try:
-        uid = getUid(req)
-        if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-            return page_not_authorized(req, "../publiline.py/index")
-        uid_email = get_email(uid)
-    except Error, e:
-        return errorMsg(e.value,req, ln = ln)
-    if doctype == "":
-        t = selectDoctype(ln)
-    elif categ == "":
-        t = selectCateg(doctype, ln)
-    elif RN == "":
-        t = selectDocument(doctype,categ, ln)
-    else:
-        t = displayDocument(doctype,categ,RN,send, ln)
-    return page(title="publication line",
-                navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                             'sweburl' : sweburl,
-                             'account' : _("Your Account"),
-                          },
-                body=t,
-                description="",
-                keywords="",
-                uid=uid,
-                language=ln,
-                req=req)
-
 def selectDoctype(ln = cdslang):
     res = run_sql("select DISTINCT doctype from sbmAPPROVAL")
     docs = []
@@ -223,7 +187,7 @@
         result = getInAlice(doctype,categ,RN)
     return result
 
-#seek info in pending directory
+#seek info in pending directory 
 def getInPending(doctype,categ,RN):
     PENDIR="%s/pending" % storage
     if os.path.exists("%s/%s/%s/AU" % (PENDIR,doctype,RN)):


--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -33,6 +33,7 @@
 from invenio.webpage import page, create_error_box
 from invenio.webuser import getUid, get_email, page_not_authorized
 from invenio.websubmit_config import *
+from invenio.websubmit_publiline import *
 from invenio.file import *
 from invenio.access_control_config import CFG_ACCESS_CONTROL_LEVEL_SITE
 from invenio.webinterface_handler import wash_urlargd, WebInterfaceDirectory
@@ -176,6 +177,49 @@
     return True, ''
 
 
+class WebInterfacePublilinePages(WebInterfaceDirectory):
+
+  # Only the index function is public
+  _exports = ['']
+
+  # default Method
+  def index(self, req, c=cdsname, ln=cdslang, doctype="", categ="", RN="", send=""):
+      global uid
+      ln = wash_language(ln)
+
+      # load the right message language
+      _ = gettext_set_language(ln)
+
+      t=""
+      # get user ID:
+      try:
+          uid = getUid(req)
+          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+              return page_not_authorized(req, "../publiline.py/index")
+          uid_email = get_email(uid)
+      except Error, e:
+          return errorMsg(e.value,req, ln = ln)
+      if doctype == "":
+          t = selectDoctype(ln)
+      elif categ == "":
+          t = selectCateg(doctype, ln)
+      elif RN == "":
+          t = selectDocument(doctype,categ, ln)
+      else:
+          t = displayDocument(doctype,categ,RN,send, ln)
+      return page(title="publication line",
+                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+                               'sweburl' : sweburl,
+                               'account' : _("Your Account"),
+                            },
+                  body=t,
+                  description="",
+                  keywords="",
+                  uid=uid,
+                  language=ln,
+                  req=req)
+
+
 class WebInterfaceFilesPages(WebInterfaceDirectory):
 
     def __init__(self,recid):




* modified files

--- orig/modules/websubmit/web/Makefile.am
+++ mod/modules/websubmit/web/Makefile.am
@@ -22,7 +22,6 @@
 docdir = $(localstatedir)/www
 
 doc_DATA = approve.py 		\
-           publiline.py 	\
            yourapprovals.py 	\
            yoursubmissions.py
 



* modified files

--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -183,9 +183,15 @@
   _exports = ['']
 
   # default Method
-  def index(self, req, c=cdsname, ln=cdslang, doctype="", categ="", RN="", send=""):
-      global uid
-      ln = wash_language(ln)
+  def index(self, req, form):
+      
+      # Sanitize args
+      args = wash_urlargd(form, {'doctype': (str, ''), 'categ': (str, ''), 'RN': (str, ''), 'send': (str, '')})
+      ln = args['ln']
+      doctype = args['doctype']
+      categ = args['categ']
+      RN = args['RN']
+      send = args['send']
 
       # load the right message language
       _ = gettext_set_language(ln)



* renamed files and symlinks

    modules/websubmit/web/yoursubmissions.py
     => modules/websubmit/lib/websubmit_yoursubmissions.py

* modified files

--- orig/modules/websession/lib/websession_templates.py
+++ mod/modules/websession/lib/websession_templates.py
@@ -418,7 +418,7 @@
         out += self.tmpl_account_template(_("Your Submissions"),
                                _("You can consult the list of %(your_submissions)s and inquire about their status.") % {
                                  'your_submissions' :
-                                    """<a href="%(weburl)s/yoursubmissions.py?ln=%(ln)s">%(your_sub)s</a>""" % {
+                                    """<a href="%(weburl)s/yoursubmissions/?ln=%(ln)s">%(your_sub)s</a>""" % {
                                       'ln' : ln,
                                       'weburl' : weburl,
                                       'your_sub' : _("your submissions")
@@ -791,7 +791,7 @@
                      'baskets' : _("baskets"),
                    }
             if submitter:
-                out += """<a class="userinfo" href="%(weburl)s/yoursubmissions?ln=%(ln)s">%(submission)s</a> :: """ % {
+                out += """<a class="userinfo" href="%(weburl)s/yoursubmissions/?ln=%(ln)s">%(submission)s</a> :: """ % {
                          'weburl' : weburl,
                          'ln' : ln,
                          'submission' : _("submissions"),


--- orig/modules/webstyle/lib/webinterface_layout.py
+++ mod/modules/webstyle/lib/webinterface_layout.py
@@ -29,7 +29,10 @@
 from invenio.webinterface_handler import create_handler, WebInterfaceDirectory
 
 from invenio.websearch_webinterface import WebInterfaceSearchInterfacePages
-from invenio.websubmit_webinterface import websubmit_legacy_getfile, WebInterfaceSubmitPages, WebInterfacePublilinePages 
+from invenio.websubmit_webinterface import websubmit_legacy_getfile
+from invenio.websubmit_webinterface import WebInterfaceSubmitPages
+from invenio.websubmit_webinterface import WebInterfacePublilinePages 
+from invenio.websubmit_webinterface import WebInterfaceYourSubmissionsPages 
 from invenio.websession_webinterface import WebInterfaceYourAccountPages
 from invenio.webalert_webinterface import WebInterfaceYourAlertsPages
 from invenio.webbasket_webinterface import WebInterfaceYourBasketsPages
@@ -62,6 +65,7 @@
         'oai2d', ('oai2d.py', 'oai2d'),
         ('getfile.py', 'getfile'),
         'publiline',
+        'yoursubmissions',
         'submit',
 
 
@@ -76,6 +80,8 @@
     submit = WebInterfaceSubmitPages()
     
     publiline = WebInterfacePublilinePages()
+    
+    yoursubmissions = WebInterfaceYourSubmissionsPages()
 
     youraccount = WebInterfaceYourAccountPages()
 


--- orig/modules/websubmit/lib/Makefile.am
+++ mod/modules/websubmit/lib/Makefile.am
@@ -31,7 +31,8 @@
         websubmitadmin_dblayer.py 	\
         websubmitadmin_engine.py	\
         websubmitadmin_templates.py \
-        websubmit_publiline.py
+        websubmit_publiline.py \
+        websubmit_yoursubmissions.py
 
 EXTRA_DIST = $(pylib_DATA)
 


--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -34,6 +34,7 @@
 from invenio.webuser import getUid, get_email, page_not_authorized
 from invenio.websubmit_config import *
 from invenio.websubmit_publiline import *
+from invenio.websubmit_yoursubmissions import *
 from invenio.file import *
 from invenio.access_control_config import CFG_ACCESS_CONTROL_LEVEL_SITE
 from invenio.webinterface_handler import wash_urlargd, WebInterfaceDirectory
@@ -177,6 +178,152 @@
     return True, ''
 
 
+class WebInterfaceYourSubmissionsPages(WebInterfaceDirectory):
+
+  # Only the index function is public
+  _exports = ['']
+
+  def index(self, req, form):
+      
+      # Sanitize args
+      args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''), 'deletedId': (str, ''), 'deletedAction': (str, ''), 'deletedDoctype': (str, '')})
+      ln = args['ln']
+      order = args['order']
+      doctype = args['doctype']
+      deletedId = args['deletedId']
+      deletedAction = args['deletedAction']
+      deletedDoctype = args['deletedDoctype']
+
+      # load the right message language
+      _ = gettext_set_language(ln)
+
+      t=""
+      # get user ID:
+      try:
+          uid = getUid(req)
+          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+              return page_not_authorized(req, "../yoursubmissions.py/index")
+          u_email = get_email(uid)
+      except Error, e:
+          return errorMsg(e.value, req, ln)
+
+      if u_email == "guest" or u_email == "":
+          return warningMsg(websubmit_templates.tmpl_warning_message(
+                   ln = ln,
+                   msg = _("You first have to login before using this feature. Use the left menu to log in."),
+                 ),req, ln = ln)
+
+
+      if deletedId != "":
+          t += deleteSubmission(deletedId,deletedAction,deletedDoctype,u_email)
+
+      # doctypes
+      res = run_sql("select ldocname,sdocname from sbmDOCTYPE order by ldocname")
+      doctypes = []
+      for row in res:
+          doctypes.append({
+                            'id' : row[1],
+                            'name' : row[0],
+                            'selected' : (doctype == row[1]),
+                          })
+
+      # submissions
+      # request order default value
+      reqorder = "sbmSUBMISSIONS.md DESC, lactname"
+      # requested value
+      if order == "actiondown":
+          reqorder = "lactname ASC, sbmSUBMISSIONS.md DESC"
+      elif order == "actionup":
+          reqorder = "lactname DESC, sbmSUBMISSIONS.md DESC"
+      elif order == "refdown":
+          reqorder = "reference ASC, sbmSUBMISSIONS.md DESC, lactname DESC"
+      elif order == "refup":
+          reqorder = "reference DESC, sbmSUBMISSIONS.md DESC, lactname DESC"
+      elif order == "cddown":
+          reqorder = "sbmSUBMISSIONS.cd DESC, lactname"
+      elif order == "cdup":
+          reqorder = "sbmSUBMISSIONS.cd ASC, lactname"
+      elif order == "mddown":
+          reqorder = "sbmSUBMISSIONS.md DESC, lactname"
+      elif order == "mdup":
+          reqorder = "sbmSUBMISSIONS.md ASC, lactname"
+      elif order == "statusdown":
+          reqorder = "sbmSUBMISSIONS.status DESC, lactname"
+      elif order == "statusup":
+          reqorder = "sbmSUBMISSIONS.status ASC, lactname"
+      if doctype != "":
+          docselect = " and doctype='%s' " % doctype
+      else:
+          docselect = ""
+
+      res = run_sql("SELECT sbmSUBMISSIONS.* FROM sbmSUBMISSIONS,sbmACTION WHERE sactname=action and email=%s and id!='' "+docselect+" ORDER BY doctype,"+reqorder,(u_email,))
+      currentdoctype = ""
+      currentaction = ""
+      currentstatus = ""
+
+      submissions = []
+      for row in res:
+          if currentdoctype != row[1]:
+              currentdoctype = row[1]
+              currentaction = ""
+              currentstatus = ""
+              res2 = run_sql("SELECT ldocname FROM sbmDOCTYPE WHERE  sdocname=%s",(currentdoctype,))
+              if res2:
+                  ldocname = res2[0][0]
+              else:
+                  ldocname = """***Unknown Document Type - (%s)""" % (currentdoctype,)
+
+          if currentaction != row[2]:
+              currentaction = row[2]
+              res2 = run_sql("SELECT lactname FROM sbmACTION WHERE  sactname=%s",(currentaction,))
+              if res2:
+                  lactname = res2[0][0]
+              else:
+                  lactname = "\""
+          else:
+              lactname = "\""
+
+          if currentstatus != row[3]:
+              currentstatus = row[3]
+              status=row[3]
+          else:
+              status = "\""
+
+          submissions.append({
+                               'docname' : ldocname,
+                               'actname' : lactname,
+                               'status' : status,
+                               'cdate' : row[6],
+                               'mdate' : row[7],
+                               'reference' : row[5],
+                               'id' : row[4],
+                               'act' : currentaction,
+                               'doctype' : currentdoctype,
+                               'pending' : (row[3] == "pending")
+                             })
+      # display
+      t += websubmit_templates.tmpl_yoursubmissions(
+             ln = ln,
+             weburl = weburl,
+             images = images,
+             order = order,
+             doctypes = doctypes,
+             submissions = submissions,
+           )
+
+      return page(title="Your Submissions",
+                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+                               'sweburl' : sweburl,
+                               'account' : _("Your Account"),
+                            },
+                  body=t,
+                  description="",
+                  keywords="",
+                  uid=uid,
+                  language=ln,
+                  req=req)
+
+
 class WebInterfacePublilinePages(WebInterfaceDirectory):
 
   # Only the index function is public


--- orig/modules/websubmit/web/yoursubmissions.py
+++ mod/modules/websubmit/lib/websubmit_yoursubmissions.py
@@ -41,138 +41,6 @@
 import invenio.template
 websubmit_templates = invenio.template.load('websubmit')
 
-def index(req,c=cdsname,ln=cdslang,order="",doctype="",deletedId="",deletedAction="",deletedDoctype=""):
-    global uid
-    ln = wash_language(ln)
-
-    # load the right message language
-    _ = gettext_set_language(ln)
-
-    t=""
-    # get user ID:
-    try:
-        uid = getUid(req)
-        if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-            return page_not_authorized(req, "../yoursubmissions.py/index")
-        u_email = get_email(uid)
-    except Error, e:
-        return errorMsg(e.value, req, ln)
-
-    if u_email == "guest" or u_email == "":
-        return warningMsg(websubmit_templates.tmpl_warning_message(
-                 ln = ln,
-                 msg = _("You first have to login before using this feature. Use the left menu to log in."),
-               ),req, ln = ln)
-
-
-    if deletedId != "":
-        t += deleteSubmission(deletedId,deletedAction,deletedDoctype,u_email)
-
-    # doctypes
-    res = run_sql("select ldocname,sdocname from sbmDOCTYPE order by ldocname")
-    doctypes = []
-    for row in res:
-        doctypes.append({
-                          'id' : row[1],
-                          'name' : row[0],
-                          'selected' : (doctype == row[1]),
-                        })
-
-    # submissions
-    # request order default value
-    reqorder = "sbmSUBMISSIONS.md DESC, lactname"
-    # requested value
-    if order == "actiondown":
-        reqorder = "lactname ASC, sbmSUBMISSIONS.md DESC"
-    elif order == "actionup":
-        reqorder = "lactname DESC, sbmSUBMISSIONS.md DESC"
-    elif order == "refdown":
-        reqorder = "reference ASC, sbmSUBMISSIONS.md DESC, lactname DESC"
-    elif order == "refup":
-        reqorder = "reference DESC, sbmSUBMISSIONS.md DESC, lactname DESC"
-    elif order == "cddown":
-        reqorder = "sbmSUBMISSIONS.cd DESC, lactname"
-    elif order == "cdup":
-        reqorder = "sbmSUBMISSIONS.cd ASC, lactname"
-    elif order == "mddown":
-        reqorder = "sbmSUBMISSIONS.md DESC, lactname"
-    elif order == "mdup":
-        reqorder = "sbmSUBMISSIONS.md ASC, lactname"
-    elif order == "statusdown":
-        reqorder = "sbmSUBMISSIONS.status DESC, lactname"
-    elif order == "statusup":
-        reqorder = "sbmSUBMISSIONS.status ASC, lactname"
-    if doctype != "":
-        docselect = " and doctype='%s' " % doctype
-    else:
-        docselect = ""
-
-    res = run_sql("SELECT sbmSUBMISSIONS.* FROM sbmSUBMISSIONS,sbmACTION WHERE sactname=action and email=%s and id!='' "+docselect+" ORDER BY doctype,"+reqorder,(u_email,))
-    currentdoctype = ""
-    currentaction = ""
-    currentstatus = ""
-
-    submissions = []
-    for row in res:
-        if currentdoctype != row[1]:
-            currentdoctype = row[1]
-            currentaction = ""
-            currentstatus = ""
-            res2 = run_sql("SELECT ldocname FROM sbmDOCTYPE WHERE  sdocname=%s",(currentdoctype,))
-            if res2:
-                ldocname = res2[0][0]
-            else:
-                ldocname = """***Unknown Document Type - (%s)""" % (currentdoctype,)
-
-        if currentaction != row[2]:
-            currentaction = row[2]
-            res2 = run_sql("SELECT lactname FROM sbmACTION WHERE  sactname=%s",(currentaction,))
-            if res2:
-                lactname = res2[0][0]
-            else:
-                lactname = "\""
-        else:
-            lactname = "\""
-
-        if currentstatus != row[3]:
-            currentstatus = row[3]
-            status=row[3]
-        else:
-            status = "\""
-
-        submissions.append({
-                             'docname' : ldocname,
-                             'actname' : lactname,
-                             'status' : status,
-                             'cdate' : row[6],
-                             'mdate' : row[7],
-                             'reference' : row[5],
-                             'id' : row[4],
-                             'act' : currentaction,
-                             'doctype' : currentdoctype,
-                             'pending' : (row[3] == "pending")
-                           })
-    # display
-    t += websubmit_templates.tmpl_yoursubmissions(
-           ln = ln,
-           weburl = weburl,
-           images = images,
-           order = order,
-           doctypes = doctypes,
-           submissions = submissions,
-         )
-
-    return page(title="Your Submissions",
-                navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                             'sweburl' : sweburl,
-                             'account' : _("Your Account"),
-                          },
-                body=t,
-                description="",
-                keywords="",
-                uid=uid,
-                language=ln,
-                req=req)
 
 def deleteSubmission(id, action, doctype, u_email):
     global storage


--- orig/modules/websubmit/web/Makefile.am
+++ mod/modules/websubmit/web/Makefile.am
@@ -22,8 +22,7 @@
 docdir = $(localstatedir)/www
 
 doc_DATA = approve.py 		\
-           yourapprovals.py 	\
-           yoursubmissions.py
+           yourapprovals.py
 
 EXTRA_DIST = $(doc_DATA)
 


* renamed files and symlinks

    modules/websubmit/web/yourapprovals.py
     => modules/websubmit/lib/websubmit_yourapprovals.py

* modified files

--- orig/modules/websession/lib/websession_templates.py
+++ mod/modules/websession/lib/websession_templates.py
@@ -427,7 +427,7 @@
         out += self.tmpl_account_template(_("Your Approvals"),
                                _("You can consult the list of %(your_approvals)s with the documents you approved or refereed.") % {
                                  'your_approvals' :
-                                    """ <a href="%(weburl)s/yourapprovals.py?ln=%(ln)s">%(your_app)s</a>""" % {
+                                    """ <a href="%(weburl)s/yourapprovals/?ln=%(ln)s">%(your_app)s</a>""" % {
                                       'ln' : ln,
                                       'weburl' : weburl,
                                       'your_app' : _("your approvals"),
@@ -797,7 +797,7 @@
                          'submission' : _("submissions"),
                        }
             if referee:
-                out += """<a class="userinfo" href="%(weburl)s/yourapprovals?ln=%(ln)s">%(approvals)s</a> :: """ % {
+                out += """<a class="userinfo" href="%(weburl)s/yourapprovals/?ln=%(ln)s">%(approvals)s</a> :: """ % {
                          'weburl' : weburl,
                          'ln' : ln,
                          'approvals' : _("approvals"),


--- orig/modules/webstyle/lib/webinterface_layout.py
+++ mod/modules/webstyle/lib/webinterface_layout.py
@@ -33,6 +33,7 @@
 from invenio.websubmit_webinterface import WebInterfaceSubmitPages
 from invenio.websubmit_webinterface import WebInterfacePublilinePages 
 from invenio.websubmit_webinterface import WebInterfaceYourSubmissionsPages 
+from invenio.websubmit_webinterface import WebInterfaceYourApprovalsPages
 from invenio.websession_webinterface import WebInterfaceYourAccountPages
 from invenio.webalert_webinterface import WebInterfaceYourAlertsPages
 from invenio.webbasket_webinterface import WebInterfaceYourBasketsPages
@@ -66,6 +67,7 @@
         ('getfile.py', 'getfile'),
         'publiline',
         'yoursubmissions',
+        'yourapprovals',
         'submit',
 
 
@@ -82,6 +84,8 @@
     publiline = WebInterfacePublilinePages()
     
     yoursubmissions = WebInterfaceYourSubmissionsPages()
+    
+    yourapprovals = WebInterfaceYourApprovalsPages()
 
     youraccount = WebInterfaceYourAccountPages()
 


--- orig/modules/websubmit/doc/approval.html.wml
+++ mod/modules/websubmit/doc/approval.html.wml
@@ -28,7 +28,7 @@
             the document server. The request is usually sent  to you through an email.
             Once you have made your decision, you will also receive a confirmation email.<br><br>
             <span class="guideheader">T</span>he document should appear on the 
-            <A HREF="<WEBURL>/publiline.py">Documents Status list</A> and on your  personal 
+            <A HREF="<WEBURL>/publiline/">Documents Status list</A> and on your  personal 
             <a href="approvals.<lang:star: *>.html">approvals page</a>.
             There you will be able to send a new request if you lost the first one. 
         </BLOCKQUOTE>


--- orig/modules/websubmit/lib/Makefile.am
+++ mod/modules/websubmit/lib/Makefile.am
@@ -32,7 +32,8 @@
         websubmitadmin_engine.py	\
         websubmitadmin_templates.py \
         websubmit_publiline.py \
-        websubmit_yoursubmissions.py
+        websubmit_yoursubmissions.py \
+        websubmit_yourapprovals.py
 
 EXTRA_DIST = $(pylib_DATA)
 


--- orig/modules/websubmit/lib/websubmit_templates.py
+++ mod/modules/websubmit/lib/websubmit_templates.py
@@ -1506,14 +1506,14 @@
             out += """<UL><LI><b>%(docname)s</b><UL><small>""" % doctype
 
             if doctype ['categories'] is None:            
-                out += '''<LI><A HREF="publiline.py?doctype=%(doctype)s">%(generalref)s</a><br>''' % {
+                out += '''<LI><A HREF="publiline/?doctype=%(doctype)s">%(generalref)s</a><br>''' % {
                     'docname' : doctype['docname'],
                     'doctype' : doctype['doctype'],
                     'generalref' : _("You are general referee")}
 
             else:
                 for category in doctype['categories']:
-                    out += """<LI><A HREF="publiline.py?doctype=%(doctype)s&categ=%(categ)s">%(referee)s</a><br>""" % {
+                    out += """<LI><A HREF="publiline/?doctype=%(doctype)s&categ=%(categ)s">%(referee)s</a><br>""" % {
                         'referee' : (_("You are referee for category: %(name)s (%(id)s)") % {
                                        'name' : category['name'],
                                        'id'   : category['id']}),
@@ -1558,7 +1558,7 @@
             }
 
         for doc in docs:
-            out += "<li><A HREF='publiline.py?doctype=%(doctype)s'>%(docname)s</A><BR>" % doc
+            out += "<li><A HREF='publiline/?doctype=%(doctype)s'>%(docname)s</A><BR>" % doc
 
         out += """</blockquote>
                 </td>
@@ -1603,7 +1603,7 @@
                       <td class="portalboxbody">
                       %(choose_categ)s
                       <blockquote>
-                      <FORM action="publiline.py" method="get">
+                      <FORM action="publiline" method="get">
                           <INPUT type="hidden" name="doctype" value='%(doctype)s'>
                           <INPUT type="hidden" name="categ" value=''>
                           </FORM>
@@ -1720,7 +1720,7 @@
                     <td class="portalboxbody">
                     %(choose_report)s
                     <blockquote>
-                      <FORM action="publiline.py" method="get">
+                      <FORM action="publiline" method="get">
                         <INPUT type="hidden" name="doctype" value='%(doctype)s'>
                         <INPUT type="hidden" name="categ" value='%(categ)s'>
                         <INPUT type="hidden" name="RN" value=''>
@@ -1864,7 +1864,7 @@
                      'requestsent' : _("Your request has been sent to the referee!"),
                    }
 
-        out += """<FORM action="publiline.py">
+        out += """<FORM action="publiline">
                     <INPUT type="hidden" name="RN" value="%(rn)s">
                     <INPUT type="hidden" name="categ" value="%(categ)s">
                     <INPUT type="hidden" name="doctype" value="%(doctype)s">


--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -35,6 +35,7 @@
 from invenio.websubmit_config import *
 from invenio.websubmit_publiline import *
 from invenio.websubmit_yoursubmissions import *
+from invenio.websubmit_yourapprovals import *
 from invenio.file import *
 from invenio.access_control_config import CFG_ACCESS_CONTROL_LEVEL_SITE
 from invenio.webinterface_handler import wash_urlargd, WebInterfaceDirectory
@@ -178,6 +179,79 @@
     return True, ''
 
 
+class WebInterfaceYourApprovalsPages(WebInterfaceDirectory):
+
+  # Only the index function is public
+  _exports = ['']
+
+  def index(self, req, form):
+      
+      # Sanitize args
+      args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''), 'deletedId': (str, ''), 'deletedAction': (str, ''), 'deletedDoctype': (str, '')})
+      ln = args['ln']
+      order = args['order']
+      doctype = args['doctype']
+      deletedId = args['deletedId']
+      deletedAction = args['deletedAction']
+      deletedDoctype = args['deletedDoctype']
+
+      # load the right message language
+      _ = gettext_set_language(ln)
+
+      t=""
+      # get user ID:
+      try:
+          uid = getUid(req)
+          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+              return page_not_authorized(req, "../yourapprovals/index")
+          u_email = get_email(uid)
+      except Error, e:
+          return errorMsg(e.value,req, ln = ln)
+
+      res = run_sql("select sdocname,ldocname from sbmDOCTYPE")
+      referees = []
+      for row in res:
+          doctype = row[0]
+          docname = row[1]
+          reftext = ""
+          if isReferee(uid,doctype,"*"):
+              referees.append ({'doctype': doctype,
+                                'docname': docname,
+                                'categories': None})
+          else:
+              res2 = run_sql("select sname,lname from sbmCATEGORIES where doctype=%s",(doctype,))
+              categories = []
+              for row2 in res2:
+                  category = row2[0]
+                  categname = row2[1]
+                  if isReferee(uid,doctype,category):
+                      categories.append({
+                                          'id' : category,
+                                          'name' : categname,
+                                        })
+              referees.append({
+                              'doctype' : doctype,
+                              'docname' : docname,
+                              'categories' : categories
+                             })
+
+      t = websubmit_templates.tmpl_yourapprovals(
+            ln = ln,
+            referees = referees
+          )
+      return page(title=_("Your Approvals"),
+                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+                               'sweburl' : sweburl,
+                               'account' : _("Your Account"),
+                            },
+                  body=t,
+                  description="",
+                  keywords="",
+                  uid=uid,
+                  language=ln,
+                  req=req)
+
+
 class WebInterfaceYourSubmissionsPages(WebInterfaceDirectory):
 
   # Only the index function is public
@@ -202,7 +276,7 @@
       try:
           uid = getUid(req)
           if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-              return page_not_authorized(req, "../yoursubmissions.py/index")
+              return page_not_authorized(req, "../yoursubmissions/index")
           u_email = get_email(uid)
       except Error, e:
           return errorMsg(e.value, req, ln)
@@ -348,7 +422,7 @@
       try:
           uid = getUid(req)
           if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-              return page_not_authorized(req, "../publiline.py/index")
+              return page_not_authorized(req, "../publiline/index")
           uid_email = get_email(uid)
       except Error, e:
           return errorMsg(e.value,req, ln = ln)


--- orig/modules/websubmit/web/yourapprovals.py
+++ mod/modules/websubmit/lib/websubmit_yourapprovals.py
@@ -35,66 +35,6 @@
 import invenio.template
 websubmit_templates = invenio.template.load('websubmit')
 
-def index(req,c=cdsname,ln=cdslang,order="",doctype="",deletedId="",deletedAction="",deletedDoctype=""):
-    global uid
-    ln = wash_language(ln)
-
-    # load the right message language
-    _ = gettext_set_language(ln)
-
-    t=""
-    # get user ID:
-    try:
-        uid = getUid(req)
-        if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-            return page_not_authorized(req, "../yourapprovals.py/index")
-        u_email = get_email(uid)
-    except Error, e:
-        return errorMsg(e.value,req, ln = ln)
-
-    res = run_sql("select sdocname,ldocname from sbmDOCTYPE")
-    referees = []
-    for row in res:
-        doctype = row[0]
-        docname = row[1]
-        reftext = ""
-        if isReferee(uid,doctype,"*"):
-            referees.append ({'doctype': doctype,
-                              'docname': docname,
-                              'categories': None})
-        else:
-            res2 = run_sql("select sname,lname from sbmCATEGORIES where doctype=%s",(doctype,))
-            categories = []
-            for row2 in res2:
-                category = row2[0]
-                categname = row2[1]
-                if isReferee(uid,doctype,category):
-                    categories.append({
-                                        'id' : category,
-                                        'name' : categname,
-                                      })
-            referees.append({
-                            'doctype' : doctype,
-                            'docname' : docname,
-                            'categories' : categories
-                           })
-
-
-    t = websubmit_templates.tmpl_yourapprovals(
-          ln = ln,
-          referees = referees
-        )
-    return page(title=_("Your Approvals"),
-                navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                             'sweburl' : sweburl,
-                             'account' : _("Your Account"),
-                          },
-                body=t,
-                description="",
-                keywords="",
-                uid=uid,
-                language=ln,
-                req=req)
 
 def isReferee(uid,doctype="",categ=""):
     (auth_code, auth_message) = acc_authorize_action(uid, "referee",verbose=0,doctype=doctype, categ=categ)


--- orig/modules/websubmit/web/Makefile.am
+++ mod/modules/websubmit/web/Makefile.am
@@ -21,8 +21,7 @@
 
 docdir = $(localstatedir)/www
 
-doc_DATA = approve.py 		\
-           yourapprovals.py
+doc_DATA = approve.py 
 
 EXTRA_DIST = $(doc_DATA)
 




* modified files

--- orig/modules/websubmit/lib/websubmit_publiline.py
+++ mod/modules/websubmit/lib/websubmit_publiline.py
@@ -306,19 +306,3 @@
     send_email(FROMADDR,adminemail,body,0)
     return ""
 
-def errorMsg(title,req,c=cdsname,ln=cdslang):
-    return page(title="error",
-                body = create_error_box(req, title=title,verbose=0, ln=ln),
-                description="%s - Internal Error" % c,
-                keywords="%s, CDS Invenio, Internal Error" % c,
-                language=ln,
-                req=req)
-
-def warningMsg(title,req,c=cdsname,ln=cdslang):
-    return page(title="warning",
-                body = title,
-                description="%s - Internal Error" % c,
-                keywords="%s, CDS Invenio, Internal Error" % c,
-                language=ln,
-                req=req)
-


--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -178,6 +178,25 @@
 
     return True, ''
 
+# Errors pages
+def errorMsg(title,req,c=cdsname,ln=cdslang):
+    _ = gettext_set_language(ln)
+    return page(title=_("Error"),
+                    body = create_error_box(req, title=title,verbose=0, ln=ln),
+                    description=_("Internal Error"),
+                    keywords="CDS Invenio, Internal Error",
+                    language=ln,
+                    req=req)
+
+def warningMsg(title,req,c=cdsname,ln=cdslang):
+    _ = gettext_set_language(ln)
+    return page(title=_("Warning"),
+                    body = title,
+                    description=_("Internal Error"),
+                    keywords="CDS Invenio, Internal Error",
+                    language=ln,
+                    req=req)
+
 
 class WebInterfaceYourApprovalsPages(WebInterfaceDirectory):
 
@@ -818,22 +837,3 @@
     # Answer to both /submit/ and /submit
     __call__ = index
 
-
-def errorMsg(title,req,c=cdsname,ln=cdslang):
-    _ = gettext_set_language(ln)
-    return page(title=_("Error"),
-                    body = create_error_box(req, title=title,verbose=0, ln=ln),
-                    description=_("Internal Error"),
-                    keywords="CDS Invenio, Internal Error",
-                    language=ln,
-                    req=req)
-
-def warningMsg(title,req,c=cdsname,ln=cdslang):
-    _ = gettext_set_language(ln)
-    return page(title=_("Warning"),
-                    body = title,
-                    description=_("Internal Error"),
-                    keywords="CDS Invenio, Internal Error",
-                    language=ln,
-                    req=req)
-


--- orig/modules/websubmit/lib/websubmit_yourapprovals.py
+++ mod/modules/websubmit/lib/websubmit_yourapprovals.py
@@ -42,12 +42,3 @@
         return 1
     else:
         return 0
-
-def errorMsg(title,req,c=cdsname,ln=cdslang):
-    return page(title="error",
-                    body = create_error_box(req, title=title,verbose=0, ln=ln),
-                    description="%s - Internal Error" % c,
-                    keywords="%s, CDS Invenio, Internal Error" % c,
-                    language=ln,
-                    req=req)
-


--- orig/modules/websubmit/lib/websubmit_yoursubmissions.py
+++ mod/modules/websubmit/lib/websubmit_yoursubmissions.py
@@ -53,19 +53,3 @@
             shutil.rmtree(full)        
     return ""
 
-def warningMsg(title,req,c=cdsname,ln=cdslang):
-    return page(title="warning",
-                body = title,
-                description="%s - Internal Error" % c,
-                keywords="%s, CDS Invenio, Internal Error" % c,
-                language=ln,
-                req=req)
-
-def errorMsg(title,req,c=cdsname,ln=cdslang):
-    return page(title="error",
-                body = create_error_box(req, title=title,verbose=0, ln=ln),
-                description="%s - Internal Error" % c,
-                keywords="%s, CDS Invenio, Internal Error" % c,
-                language=ln,
-                req=req)
-




* modified files

--- orig/modules/websubmit/lib/websubmit_templates.py
+++ mod/modules/websubmit/lib/websubmit_templates.py
@@ -1603,7 +1603,7 @@
                       <td class="portalboxbody">
                       %(choose_categ)s
                       <blockquote>
-                      <FORM action="publiline" method="get">
+                      <FORM action="publiline/" method="get">
                           <INPUT type="hidden" name="doctype" value='%(doctype)s'>
                           <INPUT type="hidden" name="categ" value=''>
                           </FORM>
@@ -1720,7 +1720,7 @@
                     <td class="portalboxbody">
                     %(choose_report)s
                     <blockquote>
-                      <FORM action="publiline" method="get">
+                      <FORM action="publiline/" method="get">
                         <INPUT type="hidden" name="doctype" value='%(doctype)s'>
                         <INPUT type="hidden" name="categ" value='%(categ)s'>
                         <INPUT type="hidden" name="RN" value=''>
@@ -1864,7 +1864,7 @@
                      'requestsent' : _("Your request has been sent to the referee!"),
                    }
 
-        out += """<FORM action="publiline">
+        out += """<FORM action="publiline/">
                     <INPUT type="hidden" name="RN" value="%(rn)s">
                     <INPUT type="hidden" name="categ" value="%(categ)s">
                     <INPUT type="hidden" name="doctype" value="%(doctype)s">



* removed files

    modules/websubmit/web/approve.py

* modified files

--- orig/modules/webstyle/lib/webinterface_layout.py
+++ mod/modules/webstyle/lib/webinterface_layout.py
@@ -34,6 +34,7 @@
 from invenio.websubmit_webinterface import WebInterfacePublilinePages 
 from invenio.websubmit_webinterface import WebInterfaceYourSubmissionsPages 
 from invenio.websubmit_webinterface import WebInterfaceYourApprovalsPages
+from invenio.websubmit_webinterface import WebInterfaceApprovePages
 from invenio.websession_webinterface import WebInterfaceYourAccountPages
 from invenio.webalert_webinterface import WebInterfaceYourAlertsPages
 from invenio.webbasket_webinterface import WebInterfaceYourBasketsPages
@@ -68,6 +69,7 @@
         'publiline',
         'yoursubmissions',
         'yourapprovals',
+        'approve',
         'submit',
 
 
@@ -87,6 +89,8 @@
     
     yourapprovals = WebInterfaceYourApprovalsPages()
 
+    approve = WebInterfaceApprovePages()
+
     youraccount = WebInterfaceYourAccountPages()
 
     youralerts = WebInterfaceYourAlertsPages()


--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -198,6 +198,39 @@
                     req=req)
 
 
+class WebInterfaceApprovePages(WebInterfaceDirectory):
+
+  # Only the index function is public
+  _exports = ['']
+
+  def index(self, req, form):
+
+      # Check user rights
+      uid = getUid(req)
+      if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+          return page_not_authorized(req, "../approve/index")
+
+      # Sanitize args
+      args = wash_urlargd(form, {'access': (str, '')})
+      ln = args['ln']
+      access = args['access']
+          
+      if access == "":
+          return errorMsg("approve: cannot determine document reference",req)
+      res = run_sql("select doctype,rn from sbmAPPROVAL where access=%s",(access,))
+      if len(res) == 0:
+          return errorMsg("approve: cannot find document in database",req)
+      else:
+          doctype = res[0][0]
+          rn = res[0][1]
+      res = run_sql("select value from sbmPARAMETERS where name='edsrn' and doctype=%s",(doctype,))
+      edsrn = res[0][0]
+      url = "%s/sub.py?%s=%s&password=%s@APP%s" % (urlpath,edsrn,rn,access,doctype)
+      req.err_headers_out.add("Location", url)
+      raise apache.SERVER_RETURN, apache.HTTP_MOVED_PERMANENTLY
+      return ""
+          
+
 class WebInterfaceYourApprovalsPages(WebInterfaceDirectory):
 
   # Only the index function is public


--- orig/modules/websubmit/web/Makefile.am
+++ mod/modules/websubmit/web/Makefile.am
@@ -21,7 +21,7 @@
 
 docdir = $(localstatedir)/www
 
-doc_DATA = approve.py 
+doc_DATA = 
 
 EXTRA_DIST = $(doc_DATA)
 


* modified files

--- orig/modules/websubmit/lib/websubmit_webinterface.py
+++ mod/modules/websubmit/lib/websubmit_webinterface.py
@@ -18,6 +18,7 @@
 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 
 import string
+from StringIO import StringIO
 import os
 import time
 import types
@@ -26,8 +27,9 @@
 import sys
 from urllib import quote
 
+
 from invenio.dbquery import run_sql, Error
-from invenio.config import cdsname,cdslang,weburl
+from invenio.config import cdsname, cdslang, weburl
 from invenio.access_control_engine import acc_authorize_action
 from invenio.access_control_admin import acc_isRole
 from invenio.webpage import page, create_error_box
@@ -47,7 +49,8 @@
 websubmit_templates = invenio.template.load('websubmit')
 
 
-from Infoscience.Access import ipmask, ipmatch
+from Infoscience.Access import ipmask, ipmatch, email_to_units
+from Infoscience import MARC
 
 _valid_ips = {
     'restricted': [ ipmask('127.0.0.1/32'),
@@ -121,10 +124,10 @@
                 units = []
             else:
                 uid_email = get_email (uid)
-                units = Access.email_to_units(uid_email)
+                units = email_to_units(uid_email)
                 
-        except MySQLdb.Error, e:
-            return False, errorMsg(e.value, req)
+        except Error, e:
+            return False, errorMsg(str(e), req)
 
         xml = print_record(recid, format='xm')
 
@@ -179,7 +182,7 @@
     return True, ''
 
 # Errors pages
-def errorMsg(title,req,c=cdsname,ln=cdslang):
+def errorMsg(title, req, c=cdsname, ln=cdslang):
     _ = gettext_set_language(ln)
     return page(title=_("Error"),
                     body = create_error_box(req, title=title,verbose=0, ln=ln),
@@ -188,7 +191,7 @@
                     language=ln,
                     req=req)
 
-def warningMsg(title,req,c=cdsname,ln=cdslang):
+def warningMsg(title, req, c=cdsname, ln=cdslang):
     _ = gettext_set_language(ln)
     return page(title=_("Warning"),
                     body = title,
@@ -200,312 +203,316 @@
 
 class WebInterfaceApprovePages(WebInterfaceDirectory):
 
-  # Only the index function is public
-  _exports = ['']
+    # Only the index function is public
+    _exports = ['']
 
-  def index(self, req, form):
+    def index(self, req, form):
+
+        # Check user rights
+        uid = getUid(req)
+        if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+            return page_not_authorized(req, "../approve/index")
 
-      # Check user rights
-      uid = getUid(req)
-      if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-          return page_not_authorized(req, "../approve/index")
-
-      # Sanitize args
-      args = wash_urlargd(form, {'access': (str, '')})
-      ln = args['ln']
-      access = args['access']
+        # Sanitize args
+        args = wash_urlargd(form, {'access': (str, '')})
+        ln = args['ln']
+        access = args['access']
           
-      if access == "":
-          return errorMsg("approve: cannot determine document reference",req)
-      res = run_sql("select doctype,rn from sbmAPPROVAL where access=%s",(access,))
-      if len(res) == 0:
-          return errorMsg("approve: cannot find document in database",req)
-      else:
-          doctype = res[0][0]
-          rn = res[0][1]
-      res = run_sql("select value from sbmPARAMETERS where name='edsrn' and doctype=%s",(doctype,))
-      edsrn = res[0][0]
-      url = "%s/sub.py?%s=%s&password=%s@APP%s" % (urlpath,edsrn,rn,access,doctype)
-      req.err_headers_out.add("Location", url)
-      raise apache.SERVER_RETURN, apache.HTTP_MOVED_PERMANENTLY
-      return ""
+        if access == "":
+            return errorMsg("approve: cannot determine document reference", req)
+        res = run_sql("select doctype,rn from sbmAPPROVAL where access=%s", (access,))
+        if len(res) == 0:
+            return errorMsg("approve: cannot find document in database", req)
+        else:
+            doctype = res[0][0]
+            rn = res[0][1]
+        res = run_sql("select value from sbmPARAMETERS where name='edsrn' and doctype=%s", (doctype,))
+        edsrn = res[0][0]
+        url = "%s/sub.py?%s=%s&password=%s@APP%s" % (urlpath, edsrn, rn, access, doctype)
+        req.err_headers_out.add("Location", url)
+        raise apache.SERVER_RETURN, apache.HTTP_MOVED_PERMANENTLY
+        return ""
           
 
 class WebInterfaceYourApprovalsPages(WebInterfaceDirectory):
 
-  # Only the index function is public
-  _exports = ['']
+    # Only the index function is public
+    _exports = ['']
 
-  def index(self, req, form):
+    def index(self, req, form):
       
-      # Sanitize args
-      args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''), 'deletedId': (str, ''), 'deletedAction': (str, ''), 'deletedDoctype': (str, '')})
-      ln = args['ln']
-      order = args['order']
-      doctype = args['doctype']
-      deletedId = args['deletedId']
-      deletedAction = args['deletedAction']
-      deletedDoctype = args['deletedDoctype']
-
-      # load the right message language
-      _ = gettext_set_language(ln)
-
-      t=""
-      # get user ID:
-      try:
-          uid = getUid(req)
-          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-              return page_not_authorized(req, "../yourapprovals/index")
-          u_email = get_email(uid)
-      except Error, e:
-          return errorMsg(e.value,req, ln = ln)
-
-      res = run_sql("select sdocname,ldocname from sbmDOCTYPE")
-      referees = []
-      for row in res:
-          doctype = row[0]
-          docname = row[1]
-          reftext = ""
-          if isReferee(uid,doctype,"*"):
-              referees.append ({'doctype': doctype,
-                                'docname': docname,
-                                'categories': None})
-          else:
-              res2 = run_sql("select sname,lname from sbmCATEGORIES where doctype=%s",(doctype,))
-              categories = []
-              for row2 in res2:
-                  category = row2[0]
-                  categname = row2[1]
-                  if isReferee(uid,doctype,category):
-                      categories.append({
-                                          'id' : category,
-                                          'name' : categname,
-                                        })
-              referees.append({
-                              'doctype' : doctype,
-                              'docname' : docname,
-                              'categories' : categories
-                             })
+        # Sanitize args
+        args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''),
+                                 'deletedId': (str, ''), 'deletedAction': (str, ''),
+                                 'deletedDoctype': (str, '')})
+        ln = args['ln']
+        order = args['order']
+        doctype = args['doctype']
+        deletedId = args['deletedId']
+        deletedAction = args['deletedAction']
+        deletedDoctype = args['deletedDoctype']
 
-      t = websubmit_templates.tmpl_yourapprovals(
+        # load the right message language
+        _ = gettext_set_language(ln)
+
+        t = ""
+        # get user ID:
+        try:
+            uid = getUid(req)
+            if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+                return page_not_authorized(req, "../yourapprovals/index")
+            u_email = get_email(uid)
+        except Error, e:
+            return errorMsg(str(e), req, ln = ln)
+
+        res = run_sql("select sdocname,ldocname from sbmDOCTYPE")
+        referees = []
+        for row in res:
+            doctype = row[0]
+            docname = row[1]
+            reftext = ""
+            if isReferee(uid, doctype, "*"):
+                referees.append ({'doctype': doctype,
+                                  'docname': docname,
+                                  'categories': None})
+            else:
+                res2 = run_sql("select sname,lname from sbmCATEGORIES where doctype=%s", (doctype,))
+                categories = []
+                for row2 in res2:
+                    category = row2[0]
+                    categname = row2[1]
+                    if isReferee(uid, doctype, category):
+                        categories.append({
+                            'id' : category,
+                            'name' : categname,
+                            })
+                referees.append({
+                    'doctype' : doctype,
+                    'docname' : docname,
+                    'categories' : categories
+                    })
+
+        t = websubmit_templates.tmpl_yourapprovals(
             ln = ln,
             referees = referees
-          )
-      return page(title=_("Your Approvals"),
-                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                               'sweburl' : sweburl,
-                               'account' : _("Your Account"),
-                            },
-                  body=t,
-                  description="",
-                  keywords="",
-                  uid=uid,
-                  language=ln,
-                  req=req)
+            )
+        return page(title=_("Your Approvals"),
+                    navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+            'sweburl' : sweburl,
+            'account' : _("Your Account"),
+            },
+                    body=t,
+                    description="",
+                    keywords="",
+                    uid=uid,
+                    language=ln,
+                    req=req)
 
 
 class WebInterfaceYourSubmissionsPages(WebInterfaceDirectory):
 
-  # Only the index function is public
-  _exports = ['']
+    # Only the index function is public
+    _exports = ['']
 
-  def index(self, req, form):
+    def index(self, req, form):
       
-      # Sanitize args
-      args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''), 'deletedId': (str, ''), 'deletedAction': (str, ''), 'deletedDoctype': (str, '')})
-      ln = args['ln']
-      order = args['order']
-      doctype = args['doctype']
-      deletedId = args['deletedId']
-      deletedAction = args['deletedAction']
-      deletedDoctype = args['deletedDoctype']
-
-      # load the right message language
-      _ = gettext_set_language(ln)
-
-      t=""
-      # get user ID:
-      try:
-          uid = getUid(req)
-          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-              return page_not_authorized(req, "../yoursubmissions/index")
-          u_email = get_email(uid)
-      except Error, e:
-          return errorMsg(e.value, req, ln)
-
-      if u_email == "guest" or u_email == "":
-          return warningMsg(websubmit_templates.tmpl_warning_message(
-                   ln = ln,
-                   msg = _("You first have to login before using this feature. Use the left menu to log in."),
-                 ),req, ln = ln)
-
-
-      if deletedId != "":
-          t += deleteSubmission(deletedId,deletedAction,deletedDoctype,u_email)
-
-      # doctypes
-      res = run_sql("select ldocname,sdocname from sbmDOCTYPE order by ldocname")
-      doctypes = []
-      for row in res:
-          doctypes.append({
-                            'id' : row[1],
-                            'name' : row[0],
-                            'selected' : (doctype == row[1]),
-                          })
-
-      # submissions
-      # request order default value
-      reqorder = "sbmSUBMISSIONS.md DESC, lactname"
-      # requested value
-      if order == "actiondown":
-          reqorder = "lactname ASC, sbmSUBMISSIONS.md DESC"
-      elif order == "actionup":
-          reqorder = "lactname DESC, sbmSUBMISSIONS.md DESC"
-      elif order == "refdown":
-          reqorder = "reference ASC, sbmSUBMISSIONS.md DESC, lactname DESC"
-      elif order == "refup":
-          reqorder = "reference DESC, sbmSUBMISSIONS.md DESC, lactname DESC"
-      elif order == "cddown":
-          reqorder = "sbmSUBMISSIONS.cd DESC, lactname"
-      elif order == "cdup":
-          reqorder = "sbmSUBMISSIONS.cd ASC, lactname"
-      elif order == "mddown":
-          reqorder = "sbmSUBMISSIONS.md DESC, lactname"
-      elif order == "mdup":
-          reqorder = "sbmSUBMISSIONS.md ASC, lactname"
-      elif order == "statusdown":
-          reqorder = "sbmSUBMISSIONS.status DESC, lactname"
-      elif order == "statusup":
-          reqorder = "sbmSUBMISSIONS.status ASC, lactname"
-      if doctype != "":
-          docselect = " and doctype='%s' " % doctype
-      else:
-          docselect = ""
-
-      res = run_sql("SELECT sbmSUBMISSIONS.* FROM sbmSUBMISSIONS,sbmACTION WHERE sactname=action and email=%s and id!='' "+docselect+" ORDER BY doctype,"+reqorder,(u_email,))
-      currentdoctype = ""
-      currentaction = ""
-      currentstatus = ""
-
-      submissions = []
-      for row in res:
-          if currentdoctype != row[1]:
-              currentdoctype = row[1]
-              currentaction = ""
-              currentstatus = ""
-              res2 = run_sql("SELECT ldocname FROM sbmDOCTYPE WHERE  sdocname=%s",(currentdoctype,))
-              if res2:
-                  ldocname = res2[0][0]
-              else:
-                  ldocname = """***Unknown Document Type - (%s)""" % (currentdoctype,)
-
-          if currentaction != row[2]:
-              currentaction = row[2]
-              res2 = run_sql("SELECT lactname FROM sbmACTION WHERE  sactname=%s",(currentaction,))
-              if res2:
-                  lactname = res2[0][0]
-              else:
-                  lactname = "\""
-          else:
-              lactname = "\""
-
-          if currentstatus != row[3]:
-              currentstatus = row[3]
-              status=row[3]
-          else:
-              status = "\""
-
-          submissions.append({
-                               'docname' : ldocname,
-                               'actname' : lactname,
-                               'status' : status,
-                               'cdate' : row[6],
-                               'mdate' : row[7],
-                               'reference' : row[5],
-                               'id' : row[4],
-                               'act' : currentaction,
-                               'doctype' : currentdoctype,
-                               'pending' : (row[3] == "pending")
-                             })
-      # display
-      t += websubmit_templates.tmpl_yoursubmissions(
-             ln = ln,
-             weburl = weburl,
-             images = images,
-             order = order,
-             doctypes = doctypes,
-             submissions = submissions,
-           )
-
-      return page(title="Your Submissions",
-                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                               'sweburl' : sweburl,
-                               'account' : _("Your Account"),
-                            },
-                  body=t,
-                  description="",
-                  keywords="",
-                  uid=uid,
-                  language=ln,
-                  req=req)
+        # Sanitize args
+        args = wash_urlargd(form, {'order': (str, ''), 'doctype': (str, ''),
+                                   'deletedId': (str, ''), 'deletedAction': (str, ''),
+                                   'deletedDoctype': (str, '')})
+        ln = args['ln']
+        order = args['order']
+        doctype = args['doctype']
+        deletedId = args['deletedId']
+        deletedAction = args['deletedAction']
+        deletedDoctype = args['deletedDoctype']
+
+        # load the right message language
+        _ = gettext_set_language(ln)
+
+        t = ""
+        # get user ID:
+        try:
+            uid = getUid(req)
+            if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+                return page_not_authorized(req, "../yoursubmissions/index")
+            u_email = get_email(uid)
+        except Error, e:
+            return errorMsg(str(e), req, ln)
+
+        if u_email == "guest" or u_email == "":
+            return warningMsg(websubmit_templates.tmpl_warning_message(
+                ln = ln,
+                msg = _("You first have to login before using this feature. Use the left menu to log in."),
+                ),req, ln = ln)
+
+        if deletedId != "":
+            t += deleteSubmission(deletedId, deletedAction, deletedDoctype, u_email)
+
+        # doctypes
+        res = run_sql("select ldocname,sdocname from sbmDOCTYPE order by ldocname")
+        doctypes = []
+        for row in res:
+            doctypes.append({
+                'id' : row[1],
+                'name' : row[0],
+                'selected' : (doctype == row[1]),
+                })
+
+        # submissions
+        # request order default value
+        reqorder = "sbmSUBMISSIONS.md DESC, lactname"
+        # requested value
+        if order == "actiondown":
+            reqorder = "lactname ASC, sbmSUBMISSIONS.md DESC"
+        elif order == "actionup":
+            reqorder = "lactname DESC, sbmSUBMISSIONS.md DESC"
+        elif order == "refdown":
+            reqorder = "reference ASC, sbmSUBMISSIONS.md DESC, lactname DESC"
+        elif order == "refup":
+            reqorder = "reference DESC, sbmSUBMISSIONS.md DESC, lactname DESC"
+        elif order == "cddown":
+            reqorder = "sbmSUBMISSIONS.cd DESC, lactname"
+        elif order == "cdup":
+            reqorder = "sbmSUBMISSIONS.cd ASC, lactname"
+        elif order == "mddown":
+            reqorder = "sbmSUBMISSIONS.md DESC, lactname"
+        elif order == "mdup":
+            reqorder = "sbmSUBMISSIONS.md ASC, lactname"
+        elif order == "statusdown":
+            reqorder = "sbmSUBMISSIONS.status DESC, lactname"
+        elif order == "statusup":
+            reqorder = "sbmSUBMISSIONS.status ASC, lactname"
+        if doctype != "":
+            docselect = " and doctype='%s' " % doctype
+        else:
+            docselect = ""
+
+        res = run_sql("SELECT sbmSUBMISSIONS.* FROM sbmSUBMISSIONS,sbmACTION WHERE sactname=action and email=%s and id!='' "+docselect+" ORDER BY doctype,"+reqorder, (u_email,))
+        currentdoctype = ""
+        currentaction = ""
+        currentstatus = ""
+
+        submissions = []
+        for row in res:
+            if currentdoctype != row[1]:
+                currentdoctype = row[1]
+                currentaction = ""
+                currentstatus = ""
+                res2 = run_sql("SELECT ldocname FROM sbmDOCTYPE WHERE  sdocname=%s",
+                               (currentdoctype,))
+                if res2:
+                    ldocname = res2[0][0]
+                else:
+                    ldocname = """***Unknown Document Type - (%s)""" % (currentdoctype,)
+
+            if currentaction != row[2]:
+                currentaction = row[2]
+                res2 = run_sql("SELECT lactname FROM sbmACTION WHERE  sactname=%s", (currentaction,))
+                if res2:
+                    lactname = res2[0][0]
+                else:
+                    lactname = "\""
+            else:
+                lactname = "\""
+
+            if currentstatus != row[3]:
+                currentstatus = row[3]
+                status = row[3]
+            else:
+                status = "\""
+
+            submissions.append({
+                'docname' : ldocname,
+                'actname' : lactname,
+                'status' : status,
+                'cdate' : row[6],
+                'mdate' : row[7],
+                'reference' : row[5],
+                'id' : row[4],
+                'act' : currentaction,
+                'doctype' : currentdoctype,
+                'pending' : (row[3] == "pending")
+                })
+        # display
+        t += websubmit_templates.tmpl_yoursubmissions(
+            ln = ln,
+            weburl = weburl,
+            images = images,
+            order = order,
+            doctypes = doctypes,
+            submissions = submissions,
+            )
+
+        return page(title="Your Submissions",
+                    navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+            'sweburl' : sweburl,
+            'account' : _("Your Account"),
+            },
+                    body=t,
+                    description="",
+                    keywords="",
+                    uid=uid,
+                    language=ln,
+                    req=req)
 
 
 class WebInterfacePublilinePages(WebInterfaceDirectory):
 
-  # Only the index function is public
-  _exports = ['']
+    # Only the index function is public
+    _exports = ['']
 
-  # default Method
-  def index(self, req, form):
+    # default Method
+    def index(self, req, form):
       
-      # Sanitize args
-      args = wash_urlargd(form, {'doctype': (str, ''), 'categ': (str, ''), 'RN': (str, ''), 'send': (str, '')})
-      ln = args['ln']
-      doctype = args['doctype']
-      categ = args['categ']
-      RN = args['RN']
-      send = args['send']
-
-      # load the right message language
-      _ = gettext_set_language(ln)
-
-      t=""
-      # get user ID:
-      try:
-          uid = getUid(req)
-          if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
-              return page_not_authorized(req, "../publiline/index")
-          uid_email = get_email(uid)
-      except Error, e:
-          return errorMsg(e.value,req, ln = ln)
-      if doctype == "":
-          t = selectDoctype(ln)
-      elif categ == "":
-          t = selectCateg(doctype, ln)
-      elif RN == "":
-          t = selectDocument(doctype,categ, ln)
-      else:
-          t = displayDocument(doctype,categ,RN,send, ln)
-      return page(title="publication line",
-                  navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
-                               'sweburl' : sweburl,
-                               'account' : _("Your Account"),
-                            },
-                  body=t,
-                  description="",
-                  keywords="",
-                  uid=uid,
-                  language=ln,
-                  req=req)
+        # Sanitize args
+        args = wash_urlargd(form, {'doctype': (str, ''), 'categ': (str, ''),
+                                   'RN': (str, ''), 'send': (str, '')})
+        ln = args['ln']
+        doctype = args['doctype']
+        categ = args['categ']
+        RN = args['RN']
+        send = args['send']
+
+        # load the right message language
+        _ = gettext_set_language(ln)
+
+        t = ""
+        # get user ID:
+        try:
+            uid = getUid(req)
+            if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
+                return page_not_authorized(req, "../publiline/index")
+            uid_email = get_email(uid)
+        except Error, e:
+            return errorMsg(str(e), req, ln = ln)
+        if doctype == "":
+            t = selectDoctype(ln)
+        elif categ == "":
+            t = selectCateg(doctype, ln)
+        elif RN == "":
+            t = selectDocument(doctype, categ, ln)
+        else:
+            t = displayDocument(doctype, categ, RN, send, ln)
+        return page(title="publication line",
+                    navtrail= """<a class="navtrail" href="%(sweburl)s/youraccount/display">%(account)s</a>""" % {
+            'sweburl' : sweburl,
+            'account' : _("Your Account"),
+            },
+                    body=t,
+                    description="",
+                    keywords="",
+                    uid=uid,
+                    language=ln,
+                    req=req)
 
 
 class WebInterfaceFilesPages(WebInterfaceDirectory):
 
-    def __init__(self,recid):
+    def __init__(self, recid):
         self.recid = recid
-        return
-    
 
+    
     def _lookup(self, component, path):
         # after /record/<recid>/files/ every part is used as the file
         # name (with possible path in the case of archives to be
@@ -572,7 +579,7 @@
                 # search this filename in the complete list of files
                 for doc in bibarchive.listBibDocs():
                     if filename in [f.fullname for f in doc.listAllFiles()]:
-                        docfile=doc.getFile(name,format,args['version'])
+                        docfile = doc.getFile(name, format, args['version'])
                         
                         if docfile is None:
                             return warningMsg(_("can't find file..."), req, cdsname, ln)
@@ -629,7 +636,7 @@
         'mode': (str, ''),
         })
 
-    def _getfile_py(req,c=cdsname,ln=cdslang,recid="",docid="",version="",name="",format="", mode=""):
+    def _getfile_py(req, c=cdsname, ln=cdslang, recid="", docid="", version="", name="", format="", mode=""):
         _ = gettext_set_language(ln)
 
         # get user ID:
@@ -639,21 +646,21 @@
                 return page_not_authorized(req, "../getfile.py/index")
             uid_email = get_email(uid)
         except Error, e:
-            return errorMsg(e.value,req)
+            return errorMsg(str(e), req)
 
-        filelist=""
+        filelist = ""
 
         # redirect to a canonical URL as far as it is possible (what
         # if we only have a docid, and no file supplied?)
-        if name!="":
-            if docid=="":
+        if name != "":
+            if docid == "":
                 return errorMsg(_("Parameter docid missing"), req, c, ln)
 
             doc = BibDoc(bibdocid=docid)
-            docfile=doc.getFile(name,format,version)
+            docfile = doc.getFile(name, format, version)
             
             if docfile == None:
-                return warningMsg(_("can't find file..."),req, c, ln)
+                return warningMsg(_("can't find file..."), req, c, ln)
 
             # redirect to this specific file, possibly dropping
             # the version if we are referring to the latest one.
@@ -723,36 +730,36 @@
 
         myQuery = req.args
         if sub == "":
-            return errorMsg("Sorry parameter missing...",req)
+            return errorMsg("Sorry parameter missing...", req)
         res = run_sql("select docname,actname from sbmIMPLEMENT where subname=%s", (sub,))
         if len(res)==0:
-            return errorMsg("Sorry. Can't analyse parameter",req)
+            return errorMsg("Sorry. Can't analyse parameter", req)
         else:
             # get document type
             doctype = res[0][0]
             # get action name
             action = res[0][1]
         # retrieve other parameter values
-        params = re.sub("sub=[^&]*","",myQuery)
+        params = re.sub("sub=[^&]*", "", myQuery)
         # find existing access number
-        result = re.search("access=([^&]*)",params)
+        result = re.search("access=([^&]*)", params)
         if result != None:
             access = result.group(1)
-            params = re.sub("access=[^&]*","",params)
+            params = re.sub("access=[^&]*", "", params)
         else:
             # create 'unique' access number
             pid = os.getpid()
             now = time.time()
-            access = "%i_%s" % (now,pid)
+            access = "%i_%s" % (now, pid)
         # retrieve 'dir' value
-        res = run_sql ("select dir from sbmACTION where sactname=%s",(action,))
+        res = run_sql ("select dir from sbmACTION where sactname=%s", (action,))
         dir = res[0][0]
         try:
             mainmenu = req.headers_in['Referer']
         except:
             mainmenu = ""
         url = "/submit?doctype=%s&dir=%s&access=%s&act=%s&startPg=1%s&mainmenu=%s" % (
-            doctype,dir,access,action,params,quote(mainmenu))
+            doctype, dir, access, action, params, quote(mainmenu))
         req.err_headers_out.add("Location", url)
         raise apache.SERVER_RETURN, apache.HTTP_MOVED_PERMANENTLY
         return ""
@@ -765,12 +772,12 @@
 
         myQuery = req.args
         if myQuery:
-            if re.search("@",myQuery):
-                param = re.sub("@.*","",myQuery)
-                IN = re.sub(".*@","",myQuery)
+            if re.search("@", myQuery):
+                param = re.sub("@.*", "", myQuery)
+                IN = re.sub(".*@", "", myQuery)
             else:
                 IN = myQuery
-            url = "%s/submit/direct?sub=%s&%s" % (urlpath,IN,param)
+            url = "%s/submit/direct?sub=%s&%s" % (urlpath, IN, param)
             req.err_headers_out.add("Location", url)
             raise apache.SERVER_RETURN, apache.HTTP_MOVED_PERMANENTLY
             return ""
@@ -789,8 +796,8 @@
         if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
             return page_not_authorized(req, "../summary.py/index")
 
-        t=""
-        curdir  = "%s/%s/%s/%s" % (storage,args['indir'],args['doctype'],args['access'])
+        t = ""
+        curdir  = "%s/%s/%s/%s" % (storage, args['indir'], args['doctype'], args['access'])
         subname = "%s%s" % (args['act'], args['doctype'])
         
         res = run_sql("select sdesc,fidesc,pagenb,level from sbmFIELD where subname=%s "
@@ -806,12 +813,12 @@
                        'page' : arr[2],
                        'name' : arr[0],
                       }
-                if os.path.exists("%s/%s" % (curdir,arr[1])):
-                    fd = open("%s/%s" % (curdir,arr[1]),"r")
+                if os.path.exists("%s/%s" % (curdir, arr[1])):
+                    fd = open("%s/%s" % (curdir, arr[1]), "r")
                     value = fd.read()
                     fd.close()
-                    value = value.replace("\n"," ")
-                    value = value.replace("Select:","")
+                    value = value.replace("\n", " ")
+                    value = value.replace("Select:", "")
                 else:
                     value = ""
                 val['value'] = value
@@ -852,16 +859,16 @@
             if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1:
                 return page_not_authorized(req, "../submit")
 
-            if doctype=="":
-                return home(req,c,ln)
-            elif act=="":
-                return action(req,c,ln,doctype)
+            if doctype == "":
+                return home(req, c, ln)
+            elif act == "":
+                return action(req, c, ln, doctype)
             elif int(step)==0:
-                return interface(req,c,ln, doctype, act, startPg, indir,
+                return interface(req, c, ln, doctype, act, startPg, indir,
                                  access, mainmenu, fromdir, file, nextPg,
                                  nbPg, curpage)
             else:
-                return endaction(req,c,ln, doctype, act, startPg, indir,
+                return endaction(req, c, ln, doctype, act, startPg, indir,
                                  access,mainmenu, fromdir, file, nextPg,
                                  nbPg, curpage, step, mode)
 



