Здравствуйте, пытаюсь загрузить изображение к продукту в админке, но при сохранение появляется ошибка
Объясните пожалуйста в чем причина этой ошибки и как исправить:
An error occurred (InvalidAccessKeyId) when calling the PutObject operation: The AWS Access Key Id you provided does not exist in our records.
Код модели продукта:
import random
import os
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from django.db import models
from django.db.models import Q
from django.db.models.signals import pre_save, post_save
from django.urls import reverse
from ecommerce.aws.download.utils import AWSDownload
from ecommerce.aws.utils import ProtectedS3Storage
from ecommerce.utils import unique_slug_generator, get_filename
def get_filename_ext(filepath):
base_name = os.path.basename(filepath)
name, ext = os.path.splitext(base_name)
return name, ext
def upload_image_path(instance, filename):
# print(instance)
# print(filename)
new_filename = random.randint(1, 3910209312)
name, ext = get_filename_ext(filename)
final_filename = '{new_filename}{ext}'.format(new_filename=new_filename, ext=ext)
return "products/{new_filename}/{final_filename}".format(
new_filename=new_filename,
final_filename=final_filename
)
class ProductQuerySet(models.query.QuerySet):
def active(self):
return self.filter(active=True)
def featured(self):
return self.filter(featured=True, active=True)
def search(self, query):
lookups = (Q(title__icontains=query) |
Q(description__icontains=query) |
Q(price__icontains=query) |
Q(tag__title__icontains=query)
)
# tshirt, t-shirt, t shirt, red, green, blue,
return self.filter(lookups).distinct()
class ProductManager(models.Manager):
def get_queryset(self):
return ProductQuerySet(self.model, using=self._db)
def all(self):
return self.get_queryset().active()
def featured(self): # Product.objects.featured()
return self.get_queryset().featured()
def get_by_id(self, id):
qs = self.get_queryset().filter(id=id) # Product.objects == self.get_queryset()
if qs.count() == 1:
return qs.first()
return None
def search(self, query):
return self.get_queryset().active().search(query)
class Product(models.Model):
title = models.CharField(max_length=120)
slug = models.SlugField(blank=True, unique=True)
description = models.TextField()
price = models.DecimalField(decimal_places=2, max_digits=20, default=39.99)
featured = models.BooleanField(default=False)
active = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
is_digital = models.BooleanField(default=False) # User Library
objects = ProductManager()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.productfile_set = None
def get_absolute_url(self):
# return "/products/{slug}/".format(slug=self.slug)
return reverse("products:detail", kwargs={"slug": self.slug})
def __str__(self):
return self.title
def __unicode__(self):
return self.title
@property
def name(self):
return self.title
def get_downloads(self):
qs = self.productfile_set.all()
return qs
def product_pre_save_receiver(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = unique_slug_generator(instance)
pre_save.connect(product_pre_save_receiver, sender=Product)
def upload_product_file_loc(instance, filename):
slug = instance.product.slug
# id_ = 0
id_ = instance.id
if id_ is None:
Klass = instance.__class__
qs = Klass.objects.all().order_by('-pk')
if qs.exists():
id_ = qs.first().id + 1
else:
id_ = 0
if not slug:
slug = unique_slug_generator(instance.product)
location = "product/{slug}/{id}/".format(slug=slug, id=id_)
return location + filename # "path/to/filename.mp4"
class ProductImage(models.Model):
product = models.ForeignKey(Product, blank=True, null=True, default=None)
image = models.ImageField(upload_to='product_image/', null=True, default=None)
is_main = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __str__(self):
return "Заказ %s" % self.id
class Meta:
verbose_name = 'Фотография'
verbose_name_plural = 'Фотографии'
Камнями не кидаться, код не совсем мой, склеиваю как могу))