restore previous logic in products admin model

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 8e30737709
commit 7ad166c52a
  1. 243
      products/admin.py

@ -1,27 +1,30 @@
from django.contrib import admin from django.contrib import admin
from import_export import resources, fields, widgets from import_export import resources, fields, widgets
from import_export.admin import ImportExportModelAdmin from import_export.admin import ImportExportModelAdmin
from .models import Product, ProductCategory, ProductImage from .models import Product, ProductCategory, ProductImage, ProductAttribute, ProductAttributeValue, Manufacturer
# #
# class CustomModelResource(resources.ModelResource): class CustomModelResource(resources.ModelResource):
# def before_import_row(self, row, **kwargs): def before_import_row(self, row, **kwargs):
# """ """
# Override to add additional logic. Does nothing by default. Override to add additional logic. Does nothing by default.
# """ """
# try: try:
# row['attributes'] = eval(row['attributes']) row['attributes'] = eval(row['attributes'])
# except: except:
# try: try:
# row['discount_policy'] = eval(row['discount_policy']) row['discount_policy'] = eval(row['discount_policy'])
# except: except:
# pass pass
#
# class CustomManyToManyWidget(widgets.ManyToManyWidget):
# def clean(self, value, row=None, *args, **kwargs): class CustomManyToManyWidget(widgets.ManyToManyWidget):
# t1 = super(CustomManyToManyWidget, self).clean(value) def clean(self, value, row=None, *args, **kwargs):
# return self.model.objects.get(name=t1) if t1 else None t1 = super(CustomManyToManyWidget, self).clean(value)
return self.model.objects.get(name=t1) if t1 else None
# #
# #
# # class CustomForeignKeyWidget(widgets.ForeignKeyWidget): # # class CustomForeignKeyWidget(widgets.ForeignKeyWidget):
@ -31,6 +34,8 @@ from .models import Product, ProductCategory, ProductImage
class ProductImageInline(admin.TabularInline): class ProductImageInline(admin.TabularInline):
model = ProductImage model = ProductImage
extra = 0 extra = 0
# #
# # class ProductAttributeInline(admin.TabularInline): # # class ProductAttributeInline(admin.TabularInline):
# # model = ProductAttribute # # model = ProductAttribute
@ -38,12 +43,14 @@ class ProductImageInline(admin.TabularInline):
# # verbose_name_plural = 'ProductAttribute' # # verbose_name_plural = 'ProductAttribute'
# # suit_classes = 'suit-tab suit-tab-PA' # # suit_classes = 'suit-tab suit-tab-PA'
# # # #
# class AttributeChoiceValueInline(admin.TabularInline): class AttributeChoiceValueInline(admin.TabularInline):
# model = ProductAttributeChoiceValue model = ProductAttributeValue
# # prepopulated_fields = {'slug': ('name',)} # prepopulated_fields = {'slug': ('name',)}
# extra = 1 extra = 1
# verbose_name_plural = 'AttributeChoiceValue' verbose_name_plural = 'AttributeChoiceValue'
# suit_classes = 'suit-tab suit-tab-ACV' suit_classes = 'suit-tab suit-tab-ACV'
# # # #
# # class OfferInline(admin.TabularInline): # # class OfferInline(admin.TabularInline):
# # model = Offer # # model = Offer
@ -53,8 +60,9 @@ class ProductImageInline(admin.TabularInline):
# #
@admin.register(ProductCategory) @admin.register(ProductCategory)
class ProductCategoryAdmin(admin.ModelAdmin): class ProductCategoryAdmin(admin.ModelAdmin):
list_display = ('name','slug') list_display = ('name', 'slug')
search_fields = ('name','slug') search_fields = ('name', 'slug')
# #
# # class AttributeChoiceValueAdmin(admin.ModelAdmin): # # class AttributeChoiceValueAdmin(admin.ModelAdmin):
@ -64,93 +72,102 @@ class ProductCategoryAdmin(admin.ModelAdmin):
# # model = AttributeChoiceValue # # model = AttributeChoiceValue
# # # #
# # admin.site.register(AttributeChoiceValue, AttributeChoiceValueAdmin) # # admin.site.register(AttributeChoiceValue, AttributeChoiceValueAdmin)
@admin.register(ProductAttribute)
class ProductAttributeAdmin(admin.ModelAdmin):
list_display = ('slug','name')
search_fields = ('slug','name')
inlines = [AttributeChoiceValueInline]
# prepopulated_fields = {'slug': ('name',)}
suit_form_tabs = (('general', 'General'),
('ACV', 'AttributeValues'),)
class Meta:
model = ProductAttribute
@admin.register(Manufacturer)
class ManufacturerAdmin(admin.ModelAdmin):
list_display = ('slug', 'name')
search_fields = ('slug', 'name'),
class Meta:
model = Manufacturer
# #
# class ProductAttributeAdmin(admin.ModelAdmin):
# list_display = [field.name for field in ProductAttribute._meta.fields]
# inlines = [AttributeChoiceValueInline]
# # prepopulated_fields = {'slug': ('name',)}
#
# suit_form_tabs = (('general', 'General'),
# ('ACV', 'AttributeValues'),)
#
# class Meta:
# model = ProductAttribute
#
# admin.site.register(ProductAttribute, ProductAttributeAdmin)
#
# @admin.register(Manufacturer)
# class ProducerAdmin(admin.ModelAdmin):
# list_display = [field.name for field in Manufacturer._meta.fields]
#
#
# class ProductResource(CustomModelResource):
# # id = fields.Field(default=generate_Jid(prefix='J'),
# # readonly=True,
# # widget=widgets.CharWidget(),
# # )
#
# name = fields.Field(column_name='name', attribute='name',
# default=None,
# widget=widgets.CharWidget(),
# )
# # price = fields.Field(column_name='price', attribute='price',
# # default=0,
# # widget=widgets.DecimalWidget(),
# # )
# description = fields.Field(column_name='description', attribute='description',
# default=None,
# widget=widgets.CharWidget(),
# )
#
# # producer = fields.Field(column_name='producer', attribute='producer',
# # default=None,
# # widget=widgets.CharWidget(),
# # )
#
# category = fields.Field(column_name='category', attribute='category',
# default=None,
# widget=widgets.ForeignKeyWidget(ProductCategory, field='name'),
# )
# producer = fields.Field(column_name='producer', attribute='producer',
# default=None,
# widget=widgets.ForeignKeyWidget(Manufacturer, field='name'),
# )
# attributes = fields.Field(column_name='attributes', attribute='attributes',
# default=None,
# widget=CustomManyToManyWidget(ProductAttribute, field="name"),
# )
# is_active = fields.Field(column_name='is_active', attribute='is_active',
# default=1,
# widget=widgets.BooleanWidget())
#
# discount_policy = fields.Field(column_name='discount_policy', attribute='discount_policy',
# default={},
# widget=widgets.CharWidget())
#
# # delete = fields.Field(column_name='delete', attribute='delete',
# # default=0,
# # widget=widgets.BooleanWidget())
#
# # def for_delete(self, row, instance):
# # return self.fields['delete'].clean(row)
#
# class Meta:
# model = Product
# fields = ('id', 'name', 'description', 'producer', 'category', 'is_active', 'attributes', 'discount_policy')
# export_order = ('id', 'name', 'producer', 'is_active', 'category', 'attributes', 'description', 'discount_policy')
# # import_id_fields = ('name',)
# #
# def dehydrate_str_choices(self, obj): class ProductResource(CustomModelResource):
# if obj.id: # id = fields.Field(default=generate_Jid(prefix='J'),
# return obj.str_choices() # readonly=True,
# widget=widgets.CharWidget(),
# )
name = fields.Field(column_name='name', attribute='name',
default=None,
widget=widgets.CharWidget(),
)
# price = fields.Field(column_name='price', attribute='price',
# default=0,
# widget=widgets.DecimalWidget(),
# )
description = fields.Field(column_name='description', attribute='description',
default=None,
widget=widgets.CharWidget(),
)
# producer = fields.Field(column_name='producer', attribute='producer',
# default=None,
# widget=widgets.CharWidget(),
# )
category = fields.Field(column_name='category', attribute='category',
default=None,
widget=widgets.ForeignKeyWidget(ProductCategory, field='name'),
)
producer = fields.Field(column_name='producer', attribute='producer',
default=None,
widget=widgets.ForeignKeyWidget(Manufacturer, field='name'),
)
attributes = fields.Field(column_name='attributes', attribute='attributes',
default=None,
widget=CustomManyToManyWidget(ProductAttribute, field="name"),
)
is_active = fields.Field(column_name='is_active', attribute='is_active',
default=1,
widget=widgets.BooleanWidget())
discount_policy = fields.Field(column_name='discount_policy', attribute='discount_policy',
default={},
widget=widgets.CharWidget())
# delete = fields.Field(column_name='delete', attribute='delete',
# default=0,
# widget=widgets.BooleanWidget())
# def for_delete(self, row, instance):
# return self.fields['delete'].clean(row)
class Meta:
model = Product
fields = ('id', 'name', 'description', 'producer', 'category', 'is_active', 'attributes', 'discount_policy')
export_order = (
'id', 'name', 'producer', 'is_active', 'category', 'attributes', 'description', 'discount_policy')
# import_id_fields = ('name',)
def dehydrate_str_choices(self, obj):
if obj.id:
return obj.str_choices()
# #
@admin.register(Product) @admin.register(Product)
class ProductAdmin(ImportExportModelAdmin): class ProductAdmin(ImportExportModelAdmin):
list_display = ['id', 'name', 'category', 'manufacturer','status'] list_display = ['id', 'name', 'category', 'manufacturer', 'status']
list_filter = ['status', 'create_at', 'updated_at', 'category'] list_filter = ['status', 'create_at', 'updated_at', 'category']
search_fields = ['name', 'id'] search_fields = ['name', 'id']
# resource_class = ProductResource resource_class = ProductResource
# class OfferResource(CustomModelResource): # class OfferResource(CustomModelResource):
# name = fields.Field(column_name='name', attribute='name', # name = fields.Field(column_name='name', attribute='name',
@ -185,14 +202,10 @@ class ProductAdmin(ImportExportModelAdmin):
# list_display = ['id', 'name', 'products', 'price', 'is_active', 'attributes'] # list_display = ['id', 'name', 'products', 'price', 'is_active', 'attributes']
# resource_class = OfferResource # resource_class = OfferResource
# @admin.register(ProductImage) @admin.register(ProductImage)
# class ProductImageAdmin(admin.ModelAdmin): class ProductImageAdmin(admin.ModelAdmin):
# list_display = [field.name for field in ProductImage._meta.fields] list_display = [field.name for field in ProductImage._meta.fields]
#
# class Meta: class Meta:
# model = ProductImage model = ProductImage
# # admin.site.register(ProductImage, ProductImageAdmin)
# # admin.site.register(ProductCategory, ProductCategoryAdmin)
# # admin.site.register(Product, ProductAdmin)
# # admin.site.register(Offer, OfferAdmin)

Loading…
Cancel
Save