popular categories

This commit is contained in:
Diego Calvo
2022-01-31 12:34:13 +01:00
parent 66016020a5
commit 6644d46f75
4 changed files with 12 additions and 6 deletions

View File

@@ -26,7 +26,7 @@ class ProductAdmin(admin.ModelAdmin):
class CategoryTagAdmin(TagModelAdmin): class CategoryTagAdmin(TagModelAdmin):
form = forms.CategoryTagForm form = forms.CategoryTagForm
list_display = ('label', 'name', 'official') list_display = ('label', 'name', 'official', 'level')
search_fields = ('label', 'name', 'slug') search_fields = ('label', 'name', 'slug')

View File

@@ -19,7 +19,7 @@ class CategoryTagForm(forms.ModelForm):
parent_category = autocomplete.Select2ListCreateChoiceField(required=False, widget=autocomplete.Select2(url='category-tag-autocomplete', attrs={"data-tags": "true"})) parent_category = autocomplete.Select2ListCreateChoiceField(required=False, widget=autocomplete.Select2(url='category-tag-autocomplete', attrs={"data-tags": "true"}))
class Meta: class Meta:
model = CategoryTag model = CategoryTag
fields = ('name', 'label', 'slug', 'parent_category', 'official') fields = ('name', 'label', 'slug', 'parent_category', 'official', 'image')
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)

View File

@@ -6,6 +6,11 @@ from companies.models import Company
# Create your models here. # Create your models here.
def categoryimage_path(instance, filename):
"""Add the instance's id to the path
"""
return f"category/{instance.id}/{filename}"
class TreeTag(TagTreeModel): class TreeTag(TagTreeModel):
class TagMeta: class TagMeta:
initial = "" initial = ""
@@ -17,6 +22,7 @@ class TreeTag(TagTreeModel):
class CategoryTag(TagTreeModel): class CategoryTag(TagTreeModel):
official = models.BooleanField('Oficial', default=False) official = models.BooleanField('Oficial', default=False)
image = models.ImageField('Imagen de la categoría', upload_to='categories/', null=True, blank=True)
class TagMeta: class TagMeta:
initial = "" initial = ""
force_lowercase = False force_lowercase = False

View File

@@ -121,16 +121,16 @@ def get_latest_companies(number):
return result return result
def get_popular_categories(number): def get_popular_categories(number):
categories_list = list(CategoryTag.objects.filter(level=1, official=True).values_list('name', flat=True)) categories_list = list(CategoryTag.objects.filter(level=1, official=True).values('name', 'image'))
counted_categories = [] counted_categories = []
for cat in categories_list: for cat in categories_list:
count = 0 count = 0
categories = get_category_and_descendants(cat) categories = get_category_and_descendants(cat['name'])
for i in categories: for i in categories:
count += i.count count += i.count
counted_categories.append({ counted_categories.append({
"name": cat, "name": cat['name'],
"image": None, "image": cat['image'],
"count": count "count": count
}) })
popular = sorted(counted_categories, key=lambda d: d['count'], reverse=True)[:number] popular = sorted(counted_categories, key=lambda d: d['count'], reverse=True)[:number]