Skip to content

Instantly share code, notes, and snippets.

@RichardBronosky
Created December 30, 2010 20:54
Show Gist options
  • Select an option

  • Save RichardBronosky/760287 to your computer and use it in GitHub Desktop.

Select an option

Save RichardBronosky/760287 to your computer and use it in GitHub Desktop.
from django.contrib import admin
from django.contrib.auth.models import User
from pto.models import Request, Holiday
class HolidayAdmin(admin.ModelAdmin):
list_display = ('name', 'start_date')
list_display_links = ('name',)
class RequestAdmin(admin.ModelAdmin):
list_display = ('employee', 'start_date', 'end_date')
exclude = ('created_by',)
def save_model(self, request, obj, form, change):
obj.created_by = request.user
obj.save()
# TODO: This may require custom validation for security
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "employee":
kwargs["queryset"] = User.objects.filter(pk__in=([request.user.pk] + [i['user_id'] for i in request.user.reports.all().values()]))
return super(RequestAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
# def has_change_permission(self, request, obj=None):
# from pprint import pprint; import IPython; IPython.Shell.IPShellEmbed(argv=[])()
# class Media:
# js = ("my_code.js",)
admin.site.register(Request, RequestAdmin)
admin.site.register(Holiday, HolidayAdmin)
from datetime import datetime
from django.db import models
from django.contrib.auth.models import User
class Request(models.Model):
TYPE_CHOICES = (
('T', 'timeoff'),
('S', 'sick'),
('B', 'bereavement'),
)
STATUS_CHOICES = (
('P', 'pending'),
('C', 'canceled'),
('D', 'denied'),
('A', 'approved'),
('C', 'completed'),
('R', 'correction requested'),
('auto generated', (
('-', 'decreased'),
('+', 'increased'),
('^', 'adjusted'),
('$', 'compensated'),
)
)
)
employee = models.ForeignKey(User, related_name='pto_requests', default='request.user')
created_by = models.ForeignKey(User, related_name='pto_requests_created')
type = models.CharField(max_length=1, choices=TYPE_CHOICES, default='T')
start_date = models.DateTimeField(default=datetime.combine(datetime.today(), datetime.min.time()))
end_date = models.DateTimeField(default=datetime.combine(datetime.today(), datetime.max.time()))
days_requested = models.DecimalField(max_digits=5, decimal_places=2)
status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='P')
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
comment = models.TextField(blank=True)
class Holiday(models.Model):
name = models.CharField(max_length=140)
start_date = models.DateTimeField(default=datetime.combine(datetime.today(), datetime.min.time()))
end_date = models.DateTimeField(default=datetime.combine(datetime.today(), datetime.max.time()))
comment = models.TextField(blank=True)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from userprofiles.models import UserProfile
class UserProfileInline(admin.StackedInline):
model = UserProfile
fk_name = 'user'
max_num = 1
class CustomUserAdmin(UserAdmin):
inlines = [UserProfileInline,]
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'is_active', 'get_manager', 'get_primary_group')
def get_primary_group(self, obj):
try:
return obj.groups.all()[0]
except IndexError:
return ""
get_primary_group.short_description = 'Group'
def get_manager(self, obj):
return obj.userprofile.manager
get_manager.short_description = 'Manager'
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
manager = models.ForeignKey(User, related_name='manager')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment