Ignore:
Timestamp:
9 Oct 2012, 10:29:49 (12 years ago)
Author:
Henrik Bettermann
Message:

Send detailed information about file uploaded.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py

    r9311 r9322  
    6767from waeup.kofa.utils.helpers import get_user_account
    6868from waeup.kofa.mandates.mandate import PasswordMandate
     69from waeup.kofa.datacenter import DataCenterFile
    6970
    7071grok.context(IKofaObject)
     
    154155        view.redirect(view.url(view.context, redirect))
    155156    return
     157
     158def getPreviewTable(view, n):
     159    """Get transposed table with n sample record.
     160
     161    The first column contains the headers.
     162    """
     163    if not view.reader:
     164        return
     165    header = view.getPreviewHeader()
     166    num = 0
     167    data = []
     168    for line in view.reader:
     169        if num > n-1:
     170            break
     171        num += 1
     172        data.append(line)
     173    result = []
     174    for name in header:
     175        result_line = []
     176        result_line.append(name)
     177        for d in data:
     178            result_line.append(d[name])
     179        result.append(result_line)
     180    return result
    156181
    157182# Save function used for save methods in pages
     
    838863    cancel_button =_(u'Cancel')
    839864
    840     def _notifyImportManagers(self, normalized_filename):
     865    def getPreviewHeader(self):
     866        """Get the header fields of uploaded CSV file.
     867        """
     868        reader = csv.reader(open(self.fullpath, 'rb'))
     869        return reader.next()
     870
     871    def getImporters(self):
     872        importers = getAllUtilitiesRegisteredFor(IBatchProcessor)
     873        importers = sorted(
     874            [dict(title=x.name, name=x.util_name) for x in importers])
     875        return importers
     876
     877    def _notifyImportManagers(self, normalized_filename, importer, import_mode):
    841878        """Send email to Import Managers
    842879        """
     880        # Get information about file
     881        self.fullpath = os.path.join(self.context.storage, normalized_filename)
     882        uploadfile = DataCenterFile(self.fullpath)
     883        self.reader = csv.DictReader(open(self.fullpath, 'rb'))
     884        table = getPreviewTable(self, 3)
     885        mail_table = ''
     886        for line in table:
     887            header = line[0]
     888            data = str(line[1:]).strip('[').strip(']')
     889            mail_table += '%s: %s\n' % (line[0], data)
     890        # Collect all recipient addresses
    843891        kofa_utils = getUtility(IKofaUtils)
    844892        import_managers = get_users_with_role(
     
    862910                      'waeup.kofa',
    863911                      target_language=kofa_utils.PORTAL_LANGUAGE)
    864             text = _('File ${a} uploaded.', mapping = {'a':normalized_filename})
     912            text = _("""File: ${a}
     913Processor: ${b}
     914Import Mode: ${c}
     915Datasets: ${d}
     916
     917${e}
     918
     919""", mapping = {'a':normalized_filename,
     920                'b':importer,
     921                'c':import_mode,
     922                'd':uploadfile.lines - 1,
     923                'e':mail_table})
    865924            success = kofa_utils.sendContactForm(
    866925                    fullname,email,
     
    875934            return
    876935
    877     def update(self, uploadfile=None, CANCEL=None, SUBMIT=None):
     936    def update(self, uploadfile=None, import_mode=None,
     937               importer=None, CANCEL=None, SUBMIT=None):
    878938        if CANCEL is not None:
    879939            self.redirect(self.url(self.context))
     
    903963            ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
    904964            logger.info('%s - uploaded: %s' % (ob_class, target))
    905             self._notifyImportManagers(normalized_filename)
     965            self._notifyImportManagers(
     966                normalized_filename, importer, import_mode)
    906967
    907968        except IOError:
     
    10501111
    10511112    def getPreviewTable(self):
    1052         """Get transposed table with 3 sample records.
    1053 
    1054         The first column contains the headers.
    1055         """
    1056         if not self.reader:
    1057             return
    1058         header = self.getPreviewHeader()
    1059         num = 0
    1060         data = []
    1061         for line in self.reader:
    1062             if num > 2:
    1063                 break
    1064             num += 1
    1065             data.append(line)
    1066         result = []
    1067         for name in header:
    1068             result_line = []
    1069             result_line.append(name)
    1070             for d in data:
    1071                 result_line.append(d[name])
    1072             result.append(result_line)
    1073         return result
     1113        return getPreviewTable(self, 3)
    10741114
    10751115    def getImporters(self):
Note: See TracChangeset for help on using the changeset viewer.