Source code for Assign_GUP.report_summary


# Copyright (c) 2009 - 2016, UChicago Argonne, LLC.
# See LICENSE file for details.

'''
show a read-only text page with how many primary and secondary proposals assigned to each reviewer

::

    total number of proposals: #
    primary proposals per reviewer: #.#
    
    Overall topic strength: TBA
     
    Primary assignments:
    reviewer1  ##: ##### ##### #####
    reviewer2  ##: ##### ##### #####
    reviewer3  ##: ##### ##### #####
     
    Secondary assignments:
    reviewer1  ##: ##### ##### #####
    reviewer2  ##: ##### ##### #####
    reviewer3  ##: ##### ##### #####
    
    Unassigned proposals: #

'''

# Copyright (c) 2009 - 2015, UChicago Argonne, LLC.
# See LICENSE file for details.


import os, sys
from PyQt4 import QtGui

import history
import plainTextEdit


[docs]class Report(plainTextEdit.TextWindow): ''' ''' def __init__(self, parent, agup, settings): self.settings = settings self.agup = agup self.title = 'Reviewer Assignment Summary' text = self.makeText() plainTextEdit.TextWindow.__init__(self, parent, self.title, text, self.settings) self.plainTextEdit.setReadOnly(True) self.plainTextEdit.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap) self.show()
[docs] def makeText(self): ''' generate the text of the panel ''' text = [self.title, '', 'Total number of proposals: ' + str(len(self.agup.proposals)), ] unassigned = [] for prop in self.agup.proposals: for r in prop.getAssignedReviewers(): if r is None: unassigned.append(prop) break text.append('Unassigned proposals: ' + str(len(unassigned))) # text.append('') # text.append('Overall topic strength: ' + 'TBA') if len(self.agup.reviewers) > 0: mean = float(len(self.agup.proposals)) / float(len(self.agup.reviewers)) text.append('average primary proposals per reviewer: ' + str(int(mean*10+0.5)/10.0)) # 0.0 precision text.append('') width = max([len(_.getFullName()) for _ in self.agup.reviewers]) fmt = '%s%d%s: ' % ('%0', width, 's %3d') for role, label in enumerate(['Primary', 'Secondary']): text.append(label + ' assignments:') for rvwr in self.agup.reviewers: full_name = rvwr.getFullName() prop_list = rvwr.getAssignments(self.agup.proposals, role+1) row = fmt % (full_name, len(prop_list)) + ' '.join(prop_list) text.append(row) text.append('') return '\n'.join(text)
[docs] def update(self): ''' ''' text = self.makeText() self.setText(text) history.addLog(self.__class__.__name__ + '.update()', False)