[Django][Python] Djangoでzipパスワード付きファイルをダウンロード

移転しました。

ググってもzipパスワード付きファイルを作成する方法は、日本のサイトでなかなか見つからんかったが海外のサイトで発見。

参考URL
http://www.example-code.com/python/cert_usePrivateKeyFromPEM.asp

とおもいきや、なんかWindowsしかこれつかえんらしい。
つかえん。。。

結局以下を参考に、popenで対応。

参考URL
http://mail.python.org/pipermail/python-list/2008-March/480814.html

def download(request):
     reponse = HttpResponse();
     response = HttpResponse(mimetype='application/zip')
     tmp_dir = '/tmp/'
     zip_file = 'hoge.zip'
     csv_file = 'hoge.csv'
     fw = open(tmp_dir + csv_file, 'w')
     fw.write('うぉぉ!!!!!!!!!!!!!')
     fw.close()
     cmd = "zip -P %s -e %s %s" % (ZIP_PASS, tmp_dir + zip_file, tmp_dir + csv_file)
     print cmd
     os.popen(cmd, 'r')
     response['Content-Disposition'] = 'attachment;filename=' + zip_file
     dzip = open(tmp_dir + zip_file, 'r')
     response.write(dzip.read());
     os.remove(tmp_dir + zip_file) 
     os.remove(tmp_dir + csv_file) 
     return response;

ちなみに Python で zip ファイル作る方法も調べたのでめもっとく

from zipfile import ZipFile

z = ZipFile('hoge.zip', 'w')
z.writestr('hoge.csv', 'hoge content')
z.close()