Completed
Push — master ( dfce6e...04c3f6 )
by Andrew
24s
created

CountryFilter   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 13
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A link() 0 8 2
A gen_link() 0 12 3
1
import inspect
2
import sys
3
4
from django.contrib import admin
5
from django.contrib.admin import SimpleListFilter
6
from django.core import urlresolvers
7
from django.db.models import Count, ForeignKey
8
from django.utils.html import format_html
9
10
from chat import models
11
from chat.models import UserJoinedInfo
12
from django.conf import settings
13
14
exclude_auto = ()
15
model_classes = (class_name[1] for class_name in inspect.getmembers(sys.modules[models.__name__], inspect.isclass)
16
					if class_name[1].__module__ == models.__name__ and class_name[0] not in exclude_auto)
17
for model in model_classes:
18
	fields = []
19
	class_struct = {'fields': fields, 'list_display': fields}
20
	for field in model._meta.fields:
21
		if isinstance(field, ForeignKey):
22
			def gen_link(field):
23
				def link(obj):
24
					print(field)
25
					another = getattr(obj, field.name)
26
					if another is None:
27
						return "Null"
28
					else:
29
						link = '/admin/chat/{}/{}/change'.format(another._meta.verbose_name, another.id)
30
						return u'<a href="%s">%s</a>' % (link, another.id)
31
				link.allow_tags = True
32
				link.__name__ = str(field.name)
33
				return link
34
			fields.append(gen_link(field))
35
		else:
36
			fields.append(field.name)
37
38
	admin.site.register(model, type(
39
		'SubClass',
40
		(admin.ModelAdmin,),
41
		class_struct
42
	))
43
44
45
# class CountryFilter(SimpleListFilter):
46
# 	title = 'country'
47
# 	parameter_name = 'country'
48
#
49
# 	def lookups(self, request, model_admin):
50
# 		query_set = model_admin.model.objects.values('ip__country').annotate(count=Count('ip__country'))
51
# 		return [(c['ip__country'], '%s(%s)' % (c['ip__country'], c['count'])) for c in query_set]
52
#
53
# 	def queryset(self, request, queryset):
54
# 		if self.value():
55
# 			return queryset.filter(ip__country=self.value())
56
# 		else:
57
# 			return queryset
58
#
59
#
60
# @admin.register(UserJoinedInfo)
61
# class UserLocation(admin.ModelAdmin):
62
# 	list_display = ["time", "link_to_B"]
63
#
64
# 	def link_to_B(self, obj):
65
# 		link = urlresolvers.reverse("admin:chat_user_change", args=[obj.Object.id])  # model name has to be lowercase
66
# 		return u'<a href="%s">%s</a>' % (link, obj.B.name)
67
#
68
# 	link_to_B.allow_tags = True
69