from django.contrib.auth.admin import UserAdmin
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.contrib.auth.forms import ReadOnlyPasswordHashField
-from django.contrib.auth.signals import user_logged_in
+from django.contrib.auth.signals import user_logged_in
+from django.utils import timezone
class ReadonlyTabularInline(admin.TabularInline):
list_filter = ('site',)
inlines = [SitePrivilegeInline, SliceMembershipInline]
fieldsets = (
- (None, {'fields': ('email', 'password', 'site', 'is_admin')}),
+ (None, {'fields': ('email', 'password', 'site', 'is_admin', 'timezone')}),
('Personal info', {'fields': ('firstname','lastname','phone', 'key')}),
#('Important dates', {'fields': ('last_login',)}),
)
redrawn.
"""
- """ don't validate anything """
+ """ don't validate anything other than slice """
+ dont_validate_fields = ("startTime", "duration")
+
def full_clean(self):
result = super(ReservationAddForm, self).full_clean()
- self._errors = forms.util.ErrorDict()
+
+ for fieldname in self.dont_validate_fields:
+ if fieldname in self._errors:
+ del self._errors[fieldname]
+
return result
""" don't save anything """
form = ReservationAddForm
def add_view(self, request, form_url='', extra_context=None):
+ timezone.activate(request.user.timezone)
request._refresh = False
request._slice = None
if request.method == 'POST':
+ # "refresh" will be set to "1" if the form was submitted due to
+ # a change in the Slice dropdown.
if request.POST.get("refresh","1") == "1":
request._refresh = True
request.POST["refresh"] = "0"
+
+ # Keep track of the slice that was selected, so the
+ # reservedResource inline can filter items for the slice.
request._slice = request.POST.get("slice",None)
if (request._slice is not None):
request._slice = Slice.objects.get(id=request._slice)
result = super(ReservationAdmin, self).add_view(request, form_url, extra_context)
return result
+ def changelist_view(self, request, extra_context = None):
+ timezone.activate(request.user.timezone)
+ return super(ReservationAdmin, self).changelist_view(request, extra_context)
+
def get_form(self, request, obj=None, **kwargs):
request._obj_ = obj\r
if obj is not None:\r
+ # For changes, set request._slice to the slice already set in the\r
+ # object.\r
request._slice = obj.slice\r
self.form = ReservationChangeForm\r
else:\r