Example #1
0
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', )}
Example #2
0
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}',)
        }
Example #3
0
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ú'