Skip to content
Snippets Groups Projects
Select Git revision
  • 6f08d182f5f4179b9b9bbd5fde310fb6e77a62d5
  • master default protected
  • datepicker-non-cdn
  • dev-and-graphics
  • readable-ak-times
  • feature-constraint-checking-wip
  • feature-constraint-checking
7 results

tests.py

Blame
  • Forked from KIF / AKPlanning
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    admin.py 3.05 KiB
    from django.contrib import admin
    from django.contrib.admin import SimpleListFilter
    from django.db.models import Count, F
    from django.shortcuts import render
    from django.utils import timezone
    from django.utils.translation import gettext_lazy as _
    
    from AKModel.availability import Availability
    from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, Room, AKSlot
    
    
    @admin.register(Event)
    class EventAdmin(admin.ModelAdmin):
        def get_form(self, request, obj=None, change=False, **kwargs):
            # Use timezone of event
            if obj is not None and obj.timezone:
                timezone.activate(obj.timezone)
            # No timezone available? Use UTC
            else:
                timezone.activate("UTC")
            return super().get_form(request, obj, change, **kwargs)
    
    admin.site.register(AKOwner)
    
    admin.site.register(AKCategory)
    admin.site.register(AKTrack)
    admin.site.register(AKTag)
    admin.site.register(AKRequirement)
    
    
    class WishFilter(SimpleListFilter):
      title = _("Wish") # a label for our filter
      parameter_name = 'wishes' # you can put anything here
    
      def lookups(self, request, model_admin):
        # This is where you create filter options; we have two:
        return [
            ('WISH', _("Is wish")),
            ('NO_WISH', _("Is not a wish")),
        ]
    
      def queryset(self, request, queryset):
          annotated_queryset = queryset.annotate(owner_count=Count(F('owners')))
          if self.value() == 'NO_WISH':
              return annotated_queryset.filter(owner_count__gt=0)
          if self.value() == 'WISH':
              return annotated_queryset.filter(owner_count=0)
          return queryset
    
    
    class AKAdmin(admin.ModelAdmin):
        model = AK
        list_display = ['name', 'short_name', 'category', 'is_wish']
        actions = ['wiki_export']
        list_filter = ['category', WishFilter]
        ordering = ['pk']
    
        def is_wish(self, obj):
            return obj.wish
    
        def wiki_export(self, request, queryset):
            return render(request,
                          'admin/AKModel/wiki_export.html',
                          context={"AKs": queryset})
        wiki_export.short_description = _("Export to wiki syntax")
    
        is_wish.boolean = True
    
    
    admin.site.register(AK, AKAdmin)
    
    admin.site.register(Room)
    
    
    @admin.register(AKSlot)
    class AKSlotAdmin(admin.ModelAdmin):
        readonly_fields = ['updated']
    
        def get_form(self, request, obj=None, change=False, **kwargs):
            # Use timezone of associated event
            if obj is not None and obj.event.timezone:
                timezone.activate(obj.event.timezone)
            # No timezone available? Use UTC
            else:
                timezone.activate("UTC")
            return super().get_form(request, obj, change, **kwargs)
    
    
    @admin.register(Availability)
    class AvailabilityAdmin(admin.ModelAdmin):
        def get_form(self, request, obj=None, change=False, **kwargs):
            # Use timezone of associated event
            if obj is not None and obj.event.timezone:
                timezone.activate(obj.event.timezone)
            # No timezone available? Use UTC
            else:
                timezone.activate("UTC")
            return super().get_form(request, obj, change, **kwargs)