Woocommerce and some fixes

This commit is contained in:
Diego Calvo
2021-04-08 15:12:05 +02:00
parent 06bababfa6
commit 2ecab694b9
10 changed files with 1456 additions and 26 deletions

View File

@@ -30,8 +30,9 @@ from products.models import Product, CategoryTag
from products.serializers import ProductSerializer, TagFilterSerializer, SearchResultSerializer
from companies.models import Company
from stats.models import StatsLog
from back_latienda.permissions import IsCreator, IsSiteAdmin, ReadOnly
from back_latienda.permissions import IsProductOwner, IsSiteAdmin, ReadOnly
from .utils import extract_search_filters, ranked_product_search, product_loader, get_related_products
from utils.woocommerce import migrate_shop_products
from utils.tag_serializers import TaggitSerializer
from utils.tag_filters import ProductTagFilter, ProductOrderFilter
@@ -48,7 +49,7 @@ logging.basicConfig(
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.filter(active=True).order_by('-created')
serializer_class = ProductSerializer
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
permission_classes = [IsAuthenticatedOrReadOnly, IsProductOwner]
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_class = ProductTagFilter
@@ -71,7 +72,7 @@ class MyProductsViewSet(viewsets.ModelViewSet):
"""
model = Product
serializer_class = ProductSerializer
permission_classes = [IsAuthenticated]
permission_classes = [IsAuthenticated, IsProductOwner]
def get_queryset(self):
return self.model.objects.filter(company=self.request.user.company).order_by('-created')
@@ -403,3 +404,32 @@ def all_categories(request):
all_categories.append(instance.name)
return Response(data=all_categories)
@api_view(['POST'])
@permission_classes([IsAuthenticated,])
def sync_shop(request):
print(request.data)
url = request.data.get('url')
key = request.data.get('key')
secret = request.data.get('secret')
print(f"Starting migration...")
response = migrate_shop_products(url, key, secret, request.user )
print(f"Products created: {len(response['new_products'])}")
print(response["error"])
if response["error"]:
message = render_to_string('sync_failed.html', {})
# send email to company
subject = "Estado de la sincronización"
email = EmailMessage(subject, message, to=[request.user.email])
email.content_subtype = "html"
email.send()
else:
message = render_to_string('sync_success.html', {
'new_products': len(response['new_products'])
})
# send email to company
subject = "Estado de la sincronización"
email = EmailMessage(subject, message, to=[request.user.email])
email.content_subtype = "html"
email.send()
return Response()