Example #1
0
    def model_run( self, model_context ):
        templname = 'shipreport'
        outoptions = OutputOptions()
        yield ChangeObject( outoptions )
        outformat = outoptions.outformat
        of_opt = outformat_options(outformat, templname)
        select_report_file = SelectFile( of_opt['filefilter'] )
        select_report_file.existing = False
        report_filename = (yield select_report_file)[0]

        report_fullfilename = addext(report_filename, outformat)
        fileloader = FileSystemLoader(templdir)
        env = Environment(loader=fileloader)
        reporttempl = env.get_template(templname + '.md')
        archive = model_context.get_object()
        archive.voltot = 0
        serlist = natsort.natsorted(archive.series, key=lambda ser: ser.signum)
        for series in serlist:
            if series.volumes:
                series.voltot = max(vol.volno for vol in series.volumes)
                archive.voltot = archive.voltot + series.voltot
        reportsrc = reporttempl.render(archive = archive, serlist = serlist)

        convert_report(of_opt['templsetting'], of_opt['templfullname'], reportsrc,
                report_fullfilename, of_opt['pdoc_writer'])
Example #2
0
 def model_run( self, model_context ):
     from camelot.view.action_steps import SelectFile
     select_file = SelectFile()
     select_file.existing = False
     filenames = yield select_file
     for filename in filenames:
         file = open(filename, 'w')
         for translation in model_context.get_collection():
             file.write( (u'msgid  "%s"\n'%translation.source).encode('utf-8') )
             file.write( (u'msgstr "%s"\n\n'%translation.value).encode('utf-8') )
Example #3
0
 def model_run(self, model_context):
     from camelot.view.action_steps import SelectFile
     select_file = SelectFile()
     select_file.existing = False
     filenames = yield select_file
     for filename in filenames:
         file = open(filename, 'w')
         for translation in model_context.get_collection():
             file.write(
                 (u'msgid  "%s"\n' % translation.source).encode('utf-8'))
             file.write(
                 (u'msgstr "%s"\n\n' % translation.value).encode('utf-8'))
Example #4
0
 def model_run( self, model_context ):
     templname = 'ead'
     filefilter = 'XML-dokument (*.xml);;Alla (*.*)'
     select_report_file = SelectFile( filefilter )
     select_report_file.existing = False
     report_filename = (yield select_report_file)[0]
     report_fullfilename = addext(report_filename, 'xml')
     fileloader = FileSystemLoader(templdir)
     env = Environment(loader=fileloader)
     reporttempl = env.get_template(templname + '.xml')
     archive = model_context.get_object()
     serlist = natsort.natsorted(archive.series, key=lambda ser: ser.signum)
     reporttempl.stream(archive = archive, serlist = serlist).dump(report_fullfilename, encoding='utf-8')
Example #5
0
    def model_run( self, model_context ):
        objclass = model_context.get_object().__class__.__name__
        if objclass == 'Archive':
            templname = 'description'
        elif objclass == 'Creator':
            templname = 'procreport'
        outoptions = OutputOptions()
        yield ChangeObject( outoptions )
        outformat = outoptions.outformat
        of_opt = outformat_options(outformat, templname)
        select_report_file = SelectFile( of_opt['filefilter'] )
        select_report_file.existing = False
        report_filename = (yield select_report_file)[0]

        report_fullfilename = addext(report_filename, outformat)
        fileloader = FileSystemLoader(templdir)
        env = Environment(loader=fileloader)
        reporttempl = env.get_template(templname + '.md')
        logo = os.path.join(templdir, "logo")
        if objclass == 'Archive':
            archive = model_context.get_object()
            serlist = natsort.natsorted(archive.series, key=lambda ser: ser.signum)
            descpath = os.path.join(settings.CAMELOT_MEDIA_ROOT(), archive.description.name)
            with open(descpath) as descfile:
                description = unicode(descfile.read(), 'utf-8')
            reportsrc = reporttempl.render(archive = archive, serlist = serlist,
                    description = description, logo = logo)
        elif objclass == 'Creator':
            creator = model_context.get_object()
            objlist = natsort.natsorted(creator.arch_objects, key=lambda obj: obj.signum)
            divlist = natsort.natsorted(creator.divisions, key=lambda div: div.signum)
            reportsrc = reporttempl.render(creator = creator, 
                    objlist = objlist, divlist = divlist, logo = logo)

        convert_report(of_opt['templsetting'], of_opt['templfullname'], reportsrc,
                report_fullfilename, of_opt['pdoc_writer'], ['--toc'])
Example #6
0
    def model_run( self, model_context ):
        templname = 'procdesc'
        outoptions = OutputOptions()
        yield ChangeObject( outoptions )
        outformat = outoptions.outformat
        of_opt = outformat_options(outformat, templname)
        select_report_file = SelectFile( of_opt['filefilter'] )
        select_report_file.existing = False
        report_filename = (yield select_report_file)[0]

        report_fullfilename = addext(report_filename, outformat)
        fileloader = FileSystemLoader(templdir)
        env = Environment(loader=fileloader)
        reporttempl = env.get_template(templname + '.md')
        logo = os.path.join(templdir, "logo")
        creator = model_context.get_object()
        descpath = os.path.join(settings.CAMELOT_MEDIA_ROOT(), creator.description.name)
        with open(descpath) as descfile:
            description = unicode(descfile.read(), 'utf-8')
        reportsrc = reporttempl.render(creator = creator, 
                description = description, logo = logo)

        convert_report(of_opt['templsetting'], of_opt['templfullname'], reportsrc,
                report_fullfilename, of_opt['pdoc_writer'])
Example #7
0
    def model_run( self, model_context ):
        from reportlab.pdfgen import canvas
        from reportlab.lib.units import mm
        #import textwrap
        objclass = model_context.get_object().__class__.__name__
        
        lo = LabelOptions()
        yield ChangeObject( lo )
        filefilter = 'PDF-dokument (*.pdf);;Alla (*.*)'
        select_report_file = SelectFile( filefilter )
        select_report_file.existing = False
        report_filename = (yield select_report_file)[0]
        report_fullfilename = addext(report_filename, 'pdf')
        labelstrings_all = []
        fileloader = FileSystemLoader(templdir)
        env = Environment(loader=fileloader)
        if objclass == 'Archive':
            labeltempl = env.get_template('label.txt')
            archive = model_context.get_object()
            serlist = natsort.natsorted(archive.series, key=lambda ser: ser.signum)
            for series in serlist:
                vollist = natsort.natsorted(series.volumes, key=lambda vol: vol.volno)
                for volume in vollist:
                    curlabel = labeltempl.render(archive = archive, series = series,
                        volume = volume).replace('--', u'\u2013')
                    labelstrings_all.append(curlabel)
        elif objclass == 'Creator':
            objtempl = env.get_template('objlabel.txt')
            proctempl = env.get_template('proclabel.txt')
            typetempl = env.get_template('typelabel.txt')
            creator = model_context.get_object()
            objlist = natsort.natsorted(creator.arch_objects, key=lambda obj: obj.signum)
            for obj in objlist:
                unitlist = natsort.natsorted(obj.storage_units,
                        key=lambda unit: unit.signum)
                for unit in unitlist:
                    curlabel = objtempl.render(obj = obj, unit = unit).replace('--', u'\u2013')
                    labelstrings_all.append(curlabel)
            divlist = natsort.natsorted(creator.divisions, key=lambda div: div.signum)
            for div in divlist:
                proclist =  natsort.natsorted(div.processes, key=lambda proc: proc.signum)
                for proc in proclist:
                    unitlist = natsort.natsorted(proc.storage_units,
                        key=lambda unit: unit.signum)
                    for unit in unitlist:
                        curlabel = proctempl.render(div = div, proc = proc,
                            unit = unit).replace('--', u'\u2013')
                        labelstrings_all.append(curlabel)
                    acttypelist = natsort.natsorted(proc.acttypes, 
                            key=lambda atype: atype.signum)
                    for acttype in acttypelist:
                        unitlist = natsort.natsorted(acttype.storage_units,
                            key=lambda unit: unit.signum)
                        for unit in unitlist:
                            curlabel = typetempl.render(div = div, proc = proc,
                                    acttype = acttype, unit = unit).replace('--', u'\u2013')
                            labelstrings_all.append(curlabel)

        
        # Inspired by http://two.pairlist.net/pipermail/reportlab-users/2006-October/005401.html
        labelsize_x = lo.labelsize_x * mm
        labelsize_y = lo.labelsize_y * mm
        labelsep_x = lo.labelsep_x * mm
        labelsep_y = lo.labelsep_y * mm
        labels_xy = lo.labels_x * lo.labels_y
        papersize_x = lo.papersize_x * mm
        papersize_y = lo.papersize_y * mm
        margin_x = lo.margin_x * mm 
        margin_y = lo.margin_y * mm 
        labeltot_x = labelsize_x + labelsep_x
        labeltot_y = labelsize_y + labelsep_y
        fontsize = 10

        def chunks(l, n):
            n = max(1, n)
            return [l[i:i + n] for i in range(0, len(l), n)]
        
        labelstrings_bysheet = chunks(labelstrings_all, labels_xy)
        c = canvas.Canvas(report_fullfilename)
        c.setPageSize((papersize_x, papersize_y))

        def LabelPosition(labelord):
            y, x = divmod(labelord, lo.labels_x)
            x = margin_x + x * labeltot_x
            y = (papersize_y - margin_y) - y * labeltot_y
            return x, y
        
        for sheet in labelstrings_bysheet:
            for labelord in range(0, len(sheet)):
                x, y = LabelPosition(labelord)
                #c.rect(x, y, labelsize_x, -labelsize_y)
                labeltext = c.beginText(x+fontsize, y-2*fontsize)
                labeltext.setFont('Helvetica', fontsize, fontsize)
                labeltext.textLines(sheet[labelord])
                #labeltext.textLines(textwrap.fill(sheet[labelord], 25, 
                #    drop_whitespace = True, replace_whitespace = False))
                c.drawText(labeltext)
                    
            c.showPage()

        c.save()