Я пытаюсь написать простую пользовательскую систему хранения.
Мне нужно только, чтобы моя система хранения дублировала файлы с нескольких FTP-серверов.
Подкласс хранения выглядит так:
from django.core.files.storage import Storage
from settings import MEDIA_ROOT, MEDIA_URL
import ftplib
import os
class FTPStorage(Storage):
"""FTP Storage class for Django pluggable storage system."""
def __init__(self, mediaroot=MEDIA_ROOT, base_url=MEDIA_URL):
self._netrc=open('netrc')
self._machine=[]
self._login=[]
self._password=[]
def _save(self, name, content):
content.open()
if hasattr(content, 'chunks'):
content_str = ''.join(chunk for chunk in content.chunks())
else:
content_str = content.read()
for line in netrc: #read netrc file
old=line.strip()
line=line.strip().split()
if old.startswith("machine"): machine.append(line[-1])
if old.startswith("login"): login.append(line[-1])
if old.startswith("password"): password.append(line[-1])
for i in range(len(machine)):
try:
ftp = ftplib.FTP(machine[i])
ftp.login(login[i],password[i])
except Exception,e:
print e
else:
ftp.cwd("PublicFolder")
ftp.storbinary("STOR " + os.path.basename(name), StringIO(content_str), "rb", 8*1024)
return name
Но теперь выдается ошибка:
строка: 20, в __init __
, если hasattr (content, 'chunks'):
Ошибка имени: Globalимя не определено.
Могу ли я просто написать метод _save
, чтобы он работал?