datatracker/ietf/ipr/admin.py

115 lines
4.5 KiB
Python

# Copyright The IETF Trust 2010-2019, All Rights Reserved
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
from django import forms
from django.contrib import admin
from ietf.name.models import DocRelationshipName
from ietf.ipr.models import (IprDisclosureBase, IprDocRel, IprEvent,
RelatedIpr, HolderIprDisclosure, ThirdPartyIprDisclosure, GenericIprDisclosure,
NonDocSpecificIprDisclosure, LegacyMigrationIprEvent)
# ------------------------------------------------------
# ModelAdmins
# ------------------------------------------------------
class IprDocRelAdminForm(forms.ModelForm):
class Meta:
model = IprDocRel
fields = '__all__'
widgets = {
'sections':forms.TextInput,
}
class IprDocRelInline(admin.TabularInline):
model = IprDocRel
form = IprDocRelAdminForm
raw_id_fields = ['document']
extra = 1
class RelatedIprInline(admin.TabularInline):
model = RelatedIpr
raw_id_fields = ['target']
fk_name = 'source'
extra = 1
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "relationship":
kwargs["queryset"] = DocRelationshipName.objects.filter(slug='updates')
return super(RelatedIprInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
class IprDisclosureBaseAdmin(admin.ModelAdmin):
list_display = ['title', 'time', 'related_docs', 'state']
search_fields = ['title', 'legal_name']
raw_id_fields = ['by']
inlines = [IprDocRelInline,RelatedIprInline]
def related_docs(self, obj):
return ", ".join(a.formatted_name() for a in IprDocRel.objects.filter(disclosure=obj).order_by("id").select_related("document"))
admin.site.register(IprDisclosureBase, IprDisclosureBaseAdmin)
class HolderIprDisclosureAdmin(admin.ModelAdmin):
list_display = ['title', 'time', 'related_docs', 'state']
raw_id_fields = ["by"]
inlines = [IprDocRelInline,RelatedIprInline]
def related_docs(self, obj):
return ", ".join(a.formatted_name() for a in IprDocRel.objects.filter(disclosure=obj).order_by("id").select_related("document"))
admin.site.register(HolderIprDisclosure, HolderIprDisclosureAdmin)
class ThirdPartyIprDisclosureAdmin(admin.ModelAdmin):
list_display = ['title', 'time', 'related_docs', 'state']
raw_id_fields = ["by"]
inlines = [IprDocRelInline,RelatedIprInline]
def related_docs(self, obj):
return ", ".join(a.formatted_name() for a in IprDocRel.objects.filter(disclosure=obj).order_by("id").select_related("document"))
admin.site.register(ThirdPartyIprDisclosure, ThirdPartyIprDisclosureAdmin)
class GenericIprDisclosureAdmin(admin.ModelAdmin):
list_display = ['title', 'time', 'related_docs', 'state']
raw_id_fields = ["by"]
inlines = [RelatedIprInline]
def related_docs(self, obj):
return ", ".join(a.formatted_name() for a in IprDocRel.objects.filter(disclosure=obj).order_by("id").select_related("document"))
admin.site.register(GenericIprDisclosure, GenericIprDisclosureAdmin)
class NonDocSpecificIprDisclosureAdmin(admin.ModelAdmin):
list_display = ['title', 'time', 'related_docs', 'state']
raw_id_fields = ["by"]
inlines = [RelatedIprInline]
def related_docs(self, obj):
return ", ".join(a.formatted_name() for a in IprDocRel.objects.filter(disclosure=obj).order_by("id").select_related("document"))
admin.site.register(NonDocSpecificIprDisclosure, NonDocSpecificIprDisclosureAdmin)
class IprDocRelAdmin(admin.ModelAdmin):
raw_id_fields = ["disclosure", "document"]
admin.site.register(IprDocRel, IprDocRelAdmin)
class RelatedIprAdmin(admin.ModelAdmin):
list_display = ['source', 'target', 'relationship', ]
search_fields = ['source__name', 'target__name', 'target__docs__name', ]
raw_id_fields = ['source', 'target', ]
admin.site.register(RelatedIpr, RelatedIprAdmin)
class IprEventAdmin(admin.ModelAdmin):
list_display = ["disclosure", "type", "by", "time"]
list_filter = ["time", "type"]
search_fields = ["disclosure__title", "by__name"]
raw_id_fields = ["disclosure", "by", "message", "in_reply_to"]
admin.site.register(IprEvent, IprEventAdmin)
class LegacyMigrationIprEventAdmin(admin.ModelAdmin):
list_display = ['id', 'time', 'type', 'by', 'disclosure', 'desc', 'message', 'in_reply_to', 'response_due']
list_filter = ['time', 'type', 'response_due']
raw_id_fields = ['by', 'disclosure', 'message', 'in_reply_to']
admin.site.register(LegacyMigrationIprEvent, LegacyMigrationIprEventAdmin)