Таможенная система хранения в Джанго - PullRequest
0 голосов
/ 28 июня 2010

Я пытаюсь написать простую пользовательскую систему хранения.

Мне нужно только, чтобы моя система хранения дублировала файлы с нескольких 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, чтобы он работал?

1 Ответ

0 голосов
/ 28 июня 2010

Ваша проблема больше связана с форматом вашего кода, а не с логикой этого. То есть у вас есть некоторые синтаксические ошибки.

В сообщении об ошибке вы указали, что в методе __init__ появляется строка if hasattr(content, 'chunks'):, что говорит о том, что интерпретатор считает, что вы определяете метод _save как функцию в области действия метода init, Ваши отступы, хотя и не совсем понятные здесь, в StackOverflow, кажутся грязными и могут быть причиной этой путаницы. Python очень чувствителен к ошибкам отступов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...