Skip to content

Instantly share code, notes, and snippets.

@debuggerpk
Created March 9, 2012 20:13
Show Gist options
  • Save debuggerpk/2008419 to your computer and use it in GitHub Desktop.
Save debuggerpk/2008419 to your computer and use it in GitHub Desktop.
axe
__author__ = 'yousuf jawwad'
__adult_supervision__ = 'fahad yousuf'
from django.contrib import admin
from Cricket.models import Season, League, Team, Fixture, Player, TossResult, InningsCard, BattingDetail
from django.http import HttpResponseRedirect
from Cricket.fixtures import generate
class ButtonableModelAdmin(admin.ModelAdmin):
buttons=()
def change_view(self, request, object_id, extra_context={}):
extra_context['buttons']=self.buttons
return super(ButtonableModelAdmin, self).change_view(request, object_id, extra_context)
def button_view_dispatcher(self, request, object_id, command):
obj = self.model._default_manager.get(pk=object_id)
return getattr(self, command)(request, obj)\
or HttpResponseRedirect(request.META['HTTP_REFERER'])
def get_urls(self):
from django.conf.urls.defaults import patterns, url
from django.utils.functional import update_wrapper
def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
return update_wrapper(wrapper, view)
info = self.model._meta.app_label, self.model._meta.module_name
return patterns('',
*(url(r'^(\d+)/(%s)/$' % but[0], wrap(self.button_view_dispatcher)) for but in self.buttons)
) + super(ButtonableModelAdmin, self).get_urls()
class SeasonAdmin(ButtonableModelAdmin):
list_display = (
'Year',
'start_date',
'end_date',
'fixgen',
'in_progress'
)
ordering = (
'Year',
)
def generatefixtures(self, request, obj):
generate(obj)
generatefixtures.short_description = "Generate Fixtures"
generatefixtures.url = "generatefixtures"
buttons = [(
generatefixtures.func_name,
generatefixtures.short_description
)]
class TeamsInline(admin.StackedInline):
model = Team
extra = 3
class LeagueAdmin(admin.ModelAdmin):
list_display = (
'name',
'league_type',
'play_days',
)
inlines = [
TeamsInline
]
class PlayerInline(admin.StackedInline):
model = Player
extra = 3
fieldsets = (
('None', {
'fields': (
('name',
'team',
'role',
'preffered_position',),
'status',
)
}
),
('Player History',{
'classes': ('collapse',),
'fields': (
'best_batting',
'best_bowling',
('score', 'balls'),
('overs', 'wickets'),
'catches',
)
}
),
)
class TeamAdmin(admin.ModelAdmin):
list_display = (
'name',
'league',
)
list_display_links = (
'name',
)
inlines = [
PlayerInline
]
class BattingInline(admin.TabularInline):
model = BattingDetail
extra = 0
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
temp = request._obj_
if db_field.name == 'player':
kwargs = Player.objects.filter(team = obj.team)
else:
pass
return super(BattingInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
class InningCardAdmin(admin.ModelAdmin):
re
inlines = [BattingInline]
class TossInline(admin.StackedInline):
model = TossResult
extra = 0
class InningCardInline(admin.TabularInline):
model = InningsCard
extra = 0
class FixtureAdmin(admin.ModelAdmin):
list_display = (
'fixdate',
'team_one',
'team_two',
'league',
'season',
'status',
)
ordering = (
'fixdate',
'season',
'league',
)
list_filter = (
'season',
'league',
'status',
)
fieldsets = (
('None',{
'fields': (
'fixdate',
('team_one', 'team_two',),
('league', 'season', 'status',),
)
}),
('Score Details',{
'classes': ('collapse',),
'fields': (
('score_home', 'wickets_home'),
('score_away', 'wickets_away'),
)
})
)
inlines = [TossInline, InningCardInline]
admin.site.register(Season, SeasonAdmin)
admin.site.register(League, LeagueAdmin)
admin.site.register(Team, TeamAdmin)
admin.site.register(Fixture, FixtureAdmin)
admin.site.register(InningsCard, InningCardAdmin)
#admin.site.register(Player, PlayerInline)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment