working to fix tag widgets in admin

This commit is contained in:
Sam
2021-03-04 12:37:15 +00:00
parent c99b81b751
commit 657b717c07
7 changed files with 50 additions and 4 deletions

View File

@@ -34,8 +34,11 @@ SECRET_KEY = 'td*#7t-(1e9^(g0cod*hs**dp(%zvg@=$cug_-dtzcj#i2mrz@'
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'dal',
'dal_select2',
'suit', 'suit',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
@@ -54,7 +57,6 @@ INSTALLED_APPS = [
'anymail', 'anymail',
'storages', 'storages',
# local apps # local apps
'core', 'core',
'geo', 'geo',

View File

@@ -42,5 +42,6 @@ urlpatterns = [
path('api/v1/my_company/', company_views.my_company , name='my-company'), path('api/v1/my_company/', company_views.my_company , name='my-company'),
path('api/v1/my_products/', product_views.my_products, name='my-products'), path('api/v1/my_products/', product_views.my_products, name='my-products'),
path('api/v1/stats/me/', stat_views.track_user, name='user-tracker'), path('api/v1/stats/me/', stat_views.track_user, name='user-tracker'),
path('api/v1/autocomplete/category-tag/', product_views.CategoryTagAutocomplete.as_view(), name='category-autocomplete'),
path('api/v1/', include(router.urls)), path('api/v1/', include(router.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@@ -1,10 +1,21 @@
from django.contrib import admin from django.contrib import admin
from . import models from . import models
from . import forms
# Register your models here. # Register your models here.
class CagtegoryAdmin(admin.ModelAdmin):
form = forms.CategoryTagForm
class CategoryInline(admin.TabularInline):
model = models.CategoryTag
form = forms.CategoryTagForm
admin.site.register(models.Product) admin.site.register(models.Product)
admin.site.register(models.TreeTag) admin.site.register(models.TreeTag)
admin.site.register(models.CategoryTag) admin.site.register(models.CategoryTag, CagtegoryAdmin)
admin.site.register(models.AttributeTag) admin.site.register(models.AttributeTag)

14
products/forms.py Normal file
View File

@@ -0,0 +1,14 @@
from dal import autocomplete
from django import forms
from .models import CategoryTag
class CategoryTagForm(forms.ModelForm):
class Meta:
model = CategoryTag
fields = ('__all__')
widgets = {
'category': autocomplete.ModelSelect2(url='cagtegory-autocomplete')
}

View File

@@ -34,7 +34,6 @@ class AttributeTag(TagTreeModel):
# autocomplete_view = 'myapp.views.hobbies_autocomplete' # autocomplete_view = 'myapp.views.hobbies_autocomplete'
class Product(models.Model): class Product(models.Model):
SYNCHRONIZED = 'SYNCHRONIZED' SYNCHRONIZED = 'SYNCHRONIZED'

View File

@@ -16,10 +16,11 @@ from rest_framework.filters import OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
import requests import requests
from products.models import Product from products.models import Product, CategoryTag
from products.serializers import ProductSerializer, TagFilterSerializer, SearchResultSerializer from products.serializers import ProductSerializer, TagFilterSerializer, SearchResultSerializer
from companies.models import Company from companies.models import Company
from history.models import HistorySync from history.models import HistorySync
from dal import autocomplete
from back_latienda.permissions import IsCreator from back_latienda.permissions import IsCreator
from .utils import extract_search_filters, find_related_products_v3, find_related_products_v6, product_loader from .utils import extract_search_filters, find_related_products_v3, find_related_products_v6, product_loader
@@ -214,3 +215,20 @@ def product_search(request):
return Response(data={"filters": filters, "count": total_results, "products": result_list, 'prices': prices}) return Response(data={"filters": filters, "count": total_results, "products": result_list, 'prices': prices})
except Exception as e: except Exception as e:
return Response({"errors": {"details": str(e)}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response({"errors": {"details": str(e)}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class CategoryTagAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Get the tag model dynamically
Tag = Product.category.tag_model
# Return nothing if not auth
if not self.request.is_authenticated():
return Tag.objects.none()
qs = Tag.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return self.q

View File

@@ -14,6 +14,7 @@ drf-extra-fields==3.0.4
django-ipware==3.0.2 django-ipware==3.0.2
geoip2==4.1.0 geoip2==4.1.0
woocommerce==2.1.1 woocommerce==2.1.1
django-autocomplete-light==3.8.2
# manually install `pip install --default-timeout=100 future` to avoid wcapi to timeout # manually install `pip install --default-timeout=100 future` to avoid wcapi to timeout
# required for production # required for production
django-anymail[amazon_ses]==8.2 django-anymail[amazon_ses]==8.2