diff --git a/buyers_panel/admin.py b/buyers_panel/admin.py index 23178f6..3451cb6 100644 --- a/buyers_panel/admin.py +++ b/buyers_panel/admin.py @@ -1,5 +1,9 @@ from django.contrib import admin from buyers_panel.models import BillingAddress, Order, OrderItem, Refund, Buyer +from import_export import resources +from import_export.admin import ImportExportMixin +from django.urls import reverse +from django.utils.html import format_html class OrderItemAdmin(admin.ModelAdmin): model = OrderItem @@ -19,13 +23,20 @@ def queryset(self, request, queryset): return queryset.filter(status__in=('P', 'O')) return queryset -class OrderAdmin(admin.ModelAdmin): +class OrderAdmin(ImportExportMixin, admin.ModelAdmin): model = Order - list_display = ['id','user', 'shipping_address', 'ordered_date', 'status'] - search_fields = ['ref_code', 'user',] + list_display = ['id', 'link_to_customer', 'shipping_address', 'ordered_date', 'status',] + search_fields = ['ref_code', 'user__email',] ordering = ('ordered_date',) filter_horizontal = ('items',) list_filter = ('status', OnlyActiveOrdersFilter, 'ordered', 'being_delivered', 'received',) + list_display_links = ('id', 'ordered_date',) + list_select_related = ('user',) + + def link_to_customer(self, obj): + link = reverse('admin:admin_panel_customuser_change', args=[obj.user.id]) + return format_html('{}', link, obj.user) + link_to_customer.short_description = 'Customer' class BillingAddressAdmin(admin.ModelAdmin): model = BillingAddress diff --git a/grocers_panel/admin.py b/grocers_panel/admin.py index bde88b4..cb448b1 100644 --- a/grocers_panel/admin.py +++ b/grocers_panel/admin.py @@ -1,8 +1,9 @@ from django.contrib import admin from grocers_panel.models import Shop, FoodMeal, Meal, Rating, Grocer from djangoql.admin import DjangoQLSearchMixin +from import_export.admin import ImportExportMixin -class MealAdmin(DjangoQLSearchMixin, admin.ModelAdmin): +class MealAdmin(DjangoQLSearchMixin, ImportExportMixin, admin.ModelAdmin): model = Meal list_display = ['name', 'price'] search_fields = ('name', 'id',) diff --git a/grocery_app/settings.py b/grocery_app/settings.py index 6660260..82fb611 100644 --- a/grocery_app/settings.py +++ b/grocery_app/settings.py @@ -51,6 +51,7 @@ 'django_countries', 'multiselectfield', 'djangoql', + 'import_export', 'grocery_api.apps.GroceryApiConfig', 'admin_panel.apps.AdminPanelConfig', diff --git a/requirements-dev.txt b/requirements-dev.txt index e739221..7a10c43 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -45,4 +45,5 @@ django-countries==7.2.1 django-multiselectfield==0.1.12 django-taggit-serializer==0.1.7 coreapi==2.3.3 -djangoql==0.17.1 \ No newline at end of file +djangoql==0.17.1 +django-import-export==3.2.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index eba561d..0beb692 100644 --- a/requirements.txt +++ b/requirements.txt @@ -47,4 +47,5 @@ gunicorn==20.1.0 django-heroku==0.3.1 django-taggit-serializer==0.1.7 coreapi==2.3.3 -djangoql==0.17.1 \ No newline at end of file +djangoql==0.17.1 +django-import-export==3.2.0 \ No newline at end of file