Problemas com (13, 'Permission denied') na Locaweb, não estando numa Storage.

412 views
Skip to first unread message

Guilherme Carvalho

unread,
Nov 16, 2009, 6:25:57 AM11/16/09
to django...@googlegroups.com
Estou com uma aplicação na Locaweb, que não está numa máquina do tipo Storage quando eu tento enviar um arquivo via Upload eu recebo a mensagem de erro:

OSError at /admin/seminovo/seminovo/add/

(13, 'Permission denied')
Request Method: POST
Request URL: http://site.araguaiamotors.com.br/admin/seminovo/seminovo/add/
Exception Type: OSError
Exception Value:
(13, 'Permission denied')
Exception Location: /usr/lib/python2.6/site-packages/django/core/files/storage.py in _save, line 157
Python Executable: /usr/bin/python
Python Version: 2.6.1
Python Path: ['/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/PIL', '/home/araguaiamotors/wsgi_apps']
Server time: Seg, 16 Nov 2009 08:16:00 -0300

O meu settings.py está assim, o que alterei de principal foi o MEDIA_URL = 'wsgi_apps/toyota/media/'.
# Django settings for toyota project.
import os
LOCAL = lambda *args:os.path.join(os.path.dirname(__file__), *args)

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
('WebMaster', 'webmaster@*************.com.br'),
)

MANAGERS = ADMINS

DATABASE_ENGINE = 'postgresql_psycopg2' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = '************' # Or path to database file if using sqlite3.
DATABASE_USER = '***********' # Not used with sqlite3.
DATABASE_PASSWORD = '*************' # Not used with sqlite3.
DATABASE_HOST = '**********************************' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '5432' # Set to empty string for default. Not used with sqlite3.

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Araguaina'

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'pt-BR'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = LOCAL('media')
#MEDIA_ROOT = "wsgi_apps/toyota/media"

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = 'wsgi_apps/toyota/media/'

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/_media/'

# Make this unique, and don't share it with anybody.
SECRET_KEY = '5!q--ao$ds16a0f)89x4l88pv90e8)6k6dhh6e3+7jht$bgcs3'

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
# 'django.template.loaders.eggs.load_template_source',
)

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)

ROOT_URLCONF = 'toyota.urls'

TEMPLATE_DIRS = LOCAL('templates'
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'toyota.contato',
'toyota.empresa',
'toyota.veiculo',
'toyota.noticia',
'toyota.servico',
'toyota.seminovo',
'toyota.telefone',
'toyota.fotoseminovo',
'toyota.caracteristicaveiculo',
'toyota.dicas',
'toyota.bannercabecalho',
'toyota.cliente',
)

EMAIL_HOST = '****************'
EMAIL_HOST_USER = '*******************************'
EMAIL_HOST_PASSWORD = '********'
EMAIL_PORT = '587'
EMAIL_USE_TLS = True
EMAIL_SUBJECT_PREFIX = '**********************'

Atenciosamente,

Guilherme de Carvalho Carneiro

Fred Chevitarese

unread,
Nov 16, 2009, 6:29:05 AM11/16/09
to django...@googlegroups.com
Acho que você está sem permissão pra gravar na pasta.. .
Já checou as permissões ?

Eu disse "acho" ;)

http://chevitarese.wordpress.com
Fred Chevitarese - GNU/Linux

Paulo Roberto Macedo Chaves

unread,
Nov 16, 2009, 6:36:10 AM11/16/09
to django...@googlegroups.com
Já tive um problema de Storage na Locaweb, se for um problema na hora de obter o Lock eles resolveram para mim, vá no HelpDesk e busque pelo chamado 1925506

Guilherme Carvalho

unread,
Nov 16, 2009, 6:37:14 AM11/16/09
to django...@googlegroups.com
Deu permissão 755 com -R na pasta media


Atenciosamente,

Guilherme de Carvalho Carneiro




Guilherme Carvalho

unread,
Nov 16, 2009, 6:45:05 AM11/16/09
to django...@googlegroups.com
Como disse na primeira mensagem, minha aplicação não encontra-se numa máquina storage.


Atenciosamente,

Guilherme de Carvalho Carneiro


Paulo Roberto Macedo Chaves

unread,
Nov 16, 2009, 7:04:19 AM11/16/09
to django...@googlegroups.com
Eu queria dizer storage no sentido de armazenamento mesmo.

Guilherme Carvalho

unread,
Nov 16, 2009, 7:17:09 AM11/16/09
to django...@googlegroups.com
Logo quando eu criei a aplicação realmente estava numa storage o que bloqueava o upload via Django, mas já solicitei e já foi alterada de Storage para uma hospedagem normal.

Será que mudando o MEDIA_URL tem que fazer alguma outra modificação? Meu Models está assim no campo de upload.

fotoprincipal = models.ImageField(upload_to='fotos/seminovos')

O admin.py desta app está assim:

from toyota.seminovo.models import SemiNovo
from toyota.fotoseminovo.models import FotoSeminovo
from django.contrib import admin

class Foto(admin.TabularInline):
    model = FotoSeminovo
    extra = 5

class SemiNovoAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,        {'fields': ['fkEmpresa', 'fotoprincipal', 'marca', 'modelo', 'placa', 'anomodelo', 'anofabricacao', 'cor', 'valorcompra', 'valorvenda']}),
        ('Opcionais', {'fields': ['opcionais']}),
    ]  
    inlines = [Foto]
    list_display = ('placa', 'marca', 'modelo', 'anomodelo', 'anofabricacao', 'valorcompra', 'valorvenda')
    list_filter = ['marca']
   
admin.site.register(SemiNovo, SemiNovoAdmin)



Atenciosamente,

Guilherme de Carvalho Carneiro
Diretor de TI | Advogaweb - Seu Software jurídico on-line
www.advogaweb.com.br
guilherme.carvalho[at]advogaweb.com.br
Reply all
Reply to author
Forward
0 new messages