Coverage for src/wishlists/admin.py: 64%

25 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-08-04 12:59 +0300

1from django.contrib import admin 

2from django.utils.html import format_html 

3from django.urls import reverse 

4 

5from src.wishlists.models import Wishlist 

6 

7 

8@admin.register(Wishlist) 

9class WishlistAdmin(admin.ModelAdmin): 

10 def product_display(self, obj): 

11 if obj.product: 

12 return str(obj.product) 

13 

14 return '-' 

15 

16 product_display.short_description = 'Product' 

17 

18 def product_info(self, obj): 

19 if obj.product: 

20 app_label = obj.product._meta.app_label 

21 model_name = obj.product._meta.model_name 

22 url = reverse( 

23 f'admin:{app_label}_{model_name}_change', args=[obj.product.id] 

24 ) 

25 return format_html('<a href="{}">{}</a>', url, str(obj.product)) 

26 

27 return '-' 

28 

29 product_info.short_description = 'Product' 

30 product_info.allow_tags = True 

31 

32 list_display = ( 

33 'id', 

34 'user', 

35 'product_display', 

36 'created_at', 

37 ) 

38 search_fields = ('user__username',) 

39 readonly_fields = ('created_at', 'product_info') 

40 ordering = ('-created_at',) 

41 exclude = ('content_type', 'object_id')