コード例 #1
0
ファイル: journalist.py プロジェクト: akiellor/securedrop
def bulk_download(sid, docs_selected):
    source = get_source(sid)
    filenames = [store.path(sid, doc['name']) for doc in docs_selected]
    zip = store.get_bulk_archive(filenames)
    return send_file(zip.name, mimetype="application/zip",
                     attachment_filename=source.journalist_designation + ".zip",
                     as_attachment=True)
コード例 #2
0
ファイル: utils.py プロジェクト: zyphlar/securedrop
def download(zip_basename, submissions):
    """Send client contents of ZIP-file *zip_basename*-<timestamp>.zip
    containing *submissions*. The ZIP-file, being a
    :class:`tempfile.NamedTemporaryFile`, is stored on disk only
    temporarily.

    :param str zip_basename: The basename of the ZIP-file download.

    :param list submissions: A list of :class:`db.Submission`s to
                             include in the ZIP-file.
    """
    zf = store.get_bulk_archive(submissions, zip_directory=zip_basename)
    attachment_filename = "{}--{}.zip".format(
        zip_basename,
        datetime.utcnow().strftime("%Y-%m-%d--%H-%M-%S"))

    # Mark the submissions that have been downloaded as such
    for submission in submissions:
        submission.downloaded = True
    db_session.commit()

    return send_file(zf.name,
                     mimetype="application/zip",
                     attachment_filename=attachment_filename,
                     as_attachment=True)
コード例 #3
0
ファイル: journalist.py プロジェクト: ryanj/securedrop
def bulk_download(sid, docs_selected):
    filenames = [store.path(sid, doc["name"]) for doc in docs_selected]
    zip = store.get_bulk_archive(filenames)
    return send_file(
        zip.name,
        mimetype="application/zip",
        attachment_filename=db.display_id(sid, db.sqlalchemy_handle()) + ".zip",
        as_attachment=True,
    )
コード例 #4
0
ファイル: journalist.py プロジェクト: zhanglaocai/securedrop
def bulk_download(sid, docs_selected):
    filenames = [store.path(sid, doc['name']) for doc in docs_selected]
    zip = store.get_bulk_archive(filenames)
    return send_file(
        zip.name,
        mimetype="application/zip",
        attachment_filename=db.display_id(sid, db.sqlalchemy_handle()) +
        ".zip",
        as_attachment=True)
コード例 #5
0
ファイル: test.py プロジェクト: dtauerbach/securedrop
    def test_get_zip(self):
        sid = 'EQZGCJBRGISGOTC2NZVWG6LILJBHEV3CINNEWSCLLFTUWZJPKJFECLS2NZ4G4U3QOZCFKTTPNZMVIWDCJBBHMUDBGFHXCQ3R'
        files = ['abc1_msg.gpg', 'abc2_msg.gpg']
        filenames = _setup_test_docs(sid, files)

        archive = zipfile.ZipFile(store.get_bulk_archive(filenames))

        archivefile_contents = archive.namelist()

        for archived_file, actual_file in zip(archivefile_contents, filenames):
            actual_file_content = open(actual_file).read()
            zipped_file_content = archive.read(archived_file)
            self.assertEquals(zipped_file_content, actual_file_content)
コード例 #6
0
    def test_get_zip(self):
        sid = 'EQZGCJBRGISGOTC2NZVWG6LILJBHEV3CINNEWSCLLFTUWZJPKJFECLS2NZ4G4U3QOZCFKTTPNZMVIWDCJBBHMUDBGFHXCQ3R'
        files = ['abc1_msg.gpg', 'abc2_msg.gpg']
        filenames = _setup_test_docs(sid, files)

        archive = zipfile.ZipFile(store.get_bulk_archive(filenames))

        archivefile_contents = archive.namelist()

        for archived_file, actual_file in zip(archivefile_contents, filenames):
            actual_file_content = open(actual_file).read()
            zipped_file_content = archive.read(archived_file)
            self.assertEquals(zipped_file_content, actual_file_content)
コード例 #7
0
    def test_get_zip(self):
        source, _ = utils.db_helper.init_source()
        submissions = utils.db_helper.submit(source, 2)
        filenames = [os.path.join(config.STORE_DIR,
                                  source.filesystem_id,
                                  submission.filename)
                     for submission in submissions]

        archive = zipfile.ZipFile(store.get_bulk_archive(submissions))
        archivefile_contents = archive.namelist()

        for archived_file, actual_file in zip(archivefile_contents, filenames):
            actual_file_content = open(actual_file).read()
            zipped_file_content = archive.read(archived_file)
            self.assertEquals(zipped_file_content, actual_file_content)
コード例 #8
0
ファイル: journalist.py プロジェクト: fowlslegs/securedrop
def bulk_download(sid, items_selected):
    source = get_source(sid)
    filenames = [store.path(sid, item.filename) for item in items_selected]

    # Mark the submissions that are about to be downloaded as such
    for item in items_selected:
        if isinstance(item, Submission):
            item.downloaded = True
    db_session.commit()

    zf = store.get_bulk_archive(filenames, zip_directory=source.journalist_filename)
    attachment_filename = "{}--{}.zip".format(
        source.journalist_filename, datetime.utcnow().strftime("%Y-%m-%d--%H-%M-%S")
    )
    return send_file(zf.name, mimetype="application/zip", attachment_filename=attachment_filename, as_attachment=True)
コード例 #9
0
ファイル: journalist.py プロジェクト: pep8er/securedrop
def bulk_download(sid, items_selected):
    source = get_source(sid)
    filenames = [store.path(sid, item.filename) for item in items_selected]

    # Mark the submissions that are about to be downloaded as such
    for item in items_selected:
        if isinstance(item, Submission):
            item.downloaded = True
    db_session.commit()

    zf = store.get_bulk_archive(filenames, zip_directory=source.journalist_filename)
    attachment_filename = "{}--{}.zip".format(source.journalist_filename,
                                              datetime.utcnow().strftime("%Y-%m-%d--%H-%M-%S"))
    return send_file(zf.name, mimetype="application/zip",
                     attachment_filename=attachment_filename,
                     as_attachment=True)
コード例 #10
0
    def test_get_zip(self):
        sid = 'EQZGCJBRGISGOTC2NZVWG6LILJBHEV3CINNEWSCLLFTUWZJPKJFECLS2NZ4G4U3QOZCFKTTPNZMVIWDCJBBHMUDBGFHXCQ3R'
        source = Source(sid, crypto_util.display_id())
        db_session.add(source)
        db_session.commit()

        files = ['1-abc1-msg.gpg', '2-abc2-msg.gpg']
        filenames = common.setup_test_docs(sid, files)

        archive = zipfile.ZipFile(store.get_bulk_archive(filenames))

        archivefile_contents = archive.namelist()

        for archived_file, actual_file in zip(archivefile_contents, filenames):
            actual_file_content = open(actual_file).read()
            zipped_file_content = archive.read(archived_file)
            self.assertEquals(zipped_file_content, actual_file_content)
コード例 #11
0
ファイル: utils.py プロジェクト: freedomofpress/securedrop
def download(zip_basename, submissions):
    """Send client contents of ZIP-file *zip_basename*-<timestamp>.zip
    containing *submissions*. The ZIP-file, being a
    :class:`tempfile.NamedTemporaryFile`, is stored on disk only
    temporarily.

    :param str zip_basename: The basename of the ZIP-file download.

    :param list submissions: A list of :class:`db.Submission`s to
                             include in the ZIP-file.
    """
    zf = store.get_bulk_archive(submissions,
                                zip_directory=zip_basename)
    attachment_filename = "{}--{}.zip".format(
        zip_basename, datetime.utcnow().strftime("%Y-%m-%d--%H-%M-%S"))

    # Mark the submissions that have been downloaded as such
    for submission in submissions:
        submission.downloaded = True
    db_session.commit()

    return send_file(zf.name, mimetype="application/zip",
                     attachment_filename=attachment_filename,
                     as_attachment=True)
コード例 #12
0
ファイル: journalist.py プロジェクト: misjoinder/cartodrop
def bulk_download(sid, docs_selected):
    filenames = [store.path(sid, doc['name']) for doc in docs_selected]
    zip = store.get_bulk_archive(filenames)
    return send_file(zip.name, mimetype="application/zip",
                     attachment_filename=crypto_util.displayid(sid) + ".zip",
                     as_attachment=True)