X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fadmin.py;h=bc49b8a8deeebfdb2198c6c371041d86e36ae066;hb=acd45144b5e0fe049a61c4dcc826af934135e943;hp=656ca42eb4381435c06f63225ad3940839c3e1af;hpb=133c9210c6fbc1e7802cac06b181a872d08d2b90;p=plstackapi.git diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index 656ca42..bc49b8a 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -9,7 +9,8 @@ from django.utils.safestring import mark_safe 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): @@ -424,7 +425,7 @@ class UserAdmin(UserAdmin, OSModelAdmin): 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',)}), ) @@ -498,10 +499,16 @@ class ReservationAddRefreshForm(ReservationAddForm): 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 """ @@ -514,12 +521,18 @@ class ReservationAdmin(admin.ModelAdmin): 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) @@ -527,9 +540,15 @@ class ReservationAdmin(admin.ModelAdmin): 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 if obj is not None: + # For changes, set request._slice to the slice already set in the + # object. request._slice = obj.slice self.form = ReservationChangeForm else: