class HoDanAdmin(admin.ModelAdmin): list_display = ('update_time', 'status', 'name', 'phone', 'get_note', 'location', 'tinh', 'huyen', 'xa', 'volunteer', 'cuuho') list_display_links = ('name', 'phone') list_editable = ('status', ) list_filter = (('status', ChoiceDropdownFilter), ('tinh', RelatedDropdownFilter), ('huyen', RelatedDropdownFilter), ('xa', RelatedDropdownFilter)) search_fields = ('name', 'phone', 'note') actions = [export_ho_dan_as_excel_action()] # Built-in auto complete selection from Django autocomplete_fields = ['volunteer', 'cuuho'] def get_queryset(self, request): queryset = super(HoDanAdmin, self).get_queryset(request) queryset = queryset\ .prefetch_related('tinh', 'huyen', 'xa', 'volunteer', 'cuuho')\ .order_by('-status', '-update_time') return queryset def get_note(self, obj): if obj.note: return (' '.join(obj.note.split()[:80]) + '...') else: return '' get_note.short_description = 'Ghi chú' class Media: css = {'all': ('/static/css/custom.css', )}
class HoDanAdmin(DynamicRawIDMixin, NumericFilterModelAdmin, MapAdmin, HoDanHistoryAdmin, admin.ModelAdmin): dynamic_raw_id_fields = ('tinh', 'huyen', 'xa', 'volunteer', 'cuuho') list_display = ('id', 'get_update_time', 'status', 'name', 'phone', 'get_note', 'people_number', 'location', 'tinh', 'huyen', 'xa', 'volunteer', 'cuuho') list_display_links = ('id', 'name', 'phone',) list_editable = ('status',) list_filter = ( ('people_number', PeopleNumericFilter), ('status', ChoiceDropdownFilter), ('tinh', DynamicRawIDFilter), ('huyen', DynamicRawIDFilter), ('xa', DynamicRawIDFilter), 'update_time', ) search_fields = ('name', 'phone', 'note', 'id') actions = [export_ho_dan_as_excel_action()] form = HoDanLocationForm list_per_page = PAGE_SIZE def get_queryset(self, request): queryset = super(HoDanAdmin, self).get_queryset(request) queryset = queryset\ .prefetch_related('tinh', 'huyen', 'xa', 'volunteer', 'cuuho')\ .order_by('-status', '-update_time') return queryset def get_note(self, obj): if obj.note: return (' '.join(obj.note.split()[:80]) + '...') else: return '' get_note.short_description = 'Ghi chú' def get_update_time(self, obj): # TODO: ho tro trong vong 3 ngay # se remove code ngay sau do # 23 / 10 / 2020 00:00:00 GMT + 7 compare_time = datetime.datetime( 2020, 10, 22, 17, 0, 0, tzinfo=datetime.timezone.utc).astimezone(tz=pytz.timezone(TIME_ZONE)) update_time = utc_to_local(obj.update_time).strftime("%m/%d/%Y %H:%M") if utc_to_local(obj.created_time) >= compare_time: return format_html('<div class="highlight-red"> {} </div>', update_time) else: return format_html('<div class="highlight-blue"> {} </div>', update_time) get_update_time.short_description = 'Cập nhật' get_update_time.allow_tags = True class Media: css = { 'all': (f'/static/css/custom.css?v={REVISION}',) }
class HoDanAdmin(admin.ModelAdmin): list_display = ('update_time', 'status', 'name', 'phone', 'get_note', 'location', 'tinh', 'huyen', 'xa', 'volunteer', 'cuuho') list_display_links = ('name', 'phone') list_editable = ('status', 'tinh', 'huyen', 'xa', 'volunteer', 'cuuho') list_filter = (('status', ChoiceDropdownFilter), ('tinh', RelatedDropdownFilter), ('huyen', RelatedDropdownFilter), ('xa', RelatedDropdownFilter)) search_fields = ('name', 'phone', 'note') actions = [export_ho_dan_as_excel_action()] def get_note(self, obj): if obj.note: return (' '.join(obj.note.split()[:15]) + '...') else: return '' get_note.short_description = 'Ghi chú'