def run(self):
        site = setup_plone(self.app)
        self.collector = DocumentCollector(site)

        c = self.collector
        if not self.options.quiet:
            print "SUMMARY"
            print "======="
            print "Total Documents: %s" % len(c.all_docs())
            print "Documents with file: %s" % len(c.docs_with_file())
            print "Documents missing PDF: %s" % len(c.docs_missing_pdf())
            print

        if self.options.list:
            # List only
            self.list_docs()
        else:
            # Queue conversion jobs
            self.convert_docs()
class ConvertMissingPDFsCmd(Command):
    """Render PDF previews for documents that don't have one yet
    """

    def _build_arg_parser(self):
        parser = super(ConvertMissingPDFsCmd, self)._build_arg_parser()

        parser.add_argument(
            '-q',
            '--quiet',
            action='store_true',
            help='Only output bare minimum.')

        parser.add_argument(
            '-l',
            '--list',
            action='store_true',
            help="Only list documents missing a PDF (don't convert).")

        parser.add_argument(
            '-n',
            '--num_docs',
            type=int,
            default=50,
            help="Number of documents to be converted to PDF.")

        return parser

    def run(self):
        site = setup_plone(self.app)
        self.collector = DocumentCollector(site)

        c = self.collector
        if not self.options.quiet:
            print "SUMMARY"
            print "======="
            print "Total Documents: %s" % len(c.all_docs())
            print "Documents with file: %s" % len(c.docs_with_file())
            print "Documents missing PDF: %s" % len(c.docs_missing_pdf())
            print

        if self.options.list:
            # List only
            self.list_docs()
        else:
            # Queue conversion jobs
            self.convert_docs()

    def list_docs(self):
        """List documents that should have a preview PDF, but don't.
        """
        for doc in self.collector.docs_missing_pdf():
            status = get_status(doc)
            print doc, status

    def convert_docs(self):
        """Convert a random batch documents to PDF.
        """
        # Select `num_docs` random documents to be converted
        docs_missing_pdf = self.collector.docs_missing_pdf()
        random.shuffle(docs_missing_pdf)
        docs = docs_missing_pdf[:self.options.num_docs]

        # Queue conversion jobs
        converter = PDFConverter()

        print "Queueing conversion jobs for %s docs...\n" % len(docs)

        for doc in docs:
            result = converter.queue_conversion_job(doc)
            if result == 'SUCCESS':
                msg = "Queued job for %s.\n" % doc
            else:
                msg = "Queueing job for %s failed: %s\n" % (doc, result)
            print msg

        print "Done.\n"