class BaseDate(BaseShortcut): """ Base Abstract Model that provides: * an added field that automatically sets the insert date * an updated field which updates itself automatically We don't use django's autoaddnow=True because that makes the fields not visible in the admin. """ added = models.DateTimeField(_('created on'), default=now()) updated = models.DateTimeField(_('updated on'), default=now()) class Meta: abstract = True def save(self, *args, **kwargs): """ automatically update updated date field """ # auto fill updated field with current time unless explicitly disabled auto_update = kwargs.get('auto_update', True) if auto_update: self.updated = now() # remove eventual auto_update if 'auto_update' in kwargs: kwargs.pop('auto_update') super(BaseDate, self).save(*args, **kwargs)
def get_setting(name, semester=None, year=None, time=None): """ Gets the setting value at the given time. """ if time is not None: pass elif semester is not None and year is not None: # get time object for end of semester if semester == 'spring': month, day = settings.SPRING_SEMESTER_END elif semester == 'fall': month, day = settings.FALL_SEMESTER_END else: raise ValueError time = datetime.datetime(year, month, day) else: time = now() try: setting = Setting.objects.filter(name=name, time_set__lte=time).latest('time_set') except Setting.DoesNotExist: # if it doesn't exist for that time, just get the latest value setting = Setting.objects.filter(name=name).latest('time_set') if setting is None: raise ValueError('Setting {} does not exist.'.format(name)) cleaned_value = setting_validators[setting.value_type]( setting.value)['value'] return cleaned_value
def get_setting(name, semester=None, year=None, time=None): """ Gets the setting value at the given time. """ if time is not None: pass elif semester is not None and year is not None: # get time object for end of semester if semester == 'spring': month, day = settings.SPRING_SEMESTER_END elif semester == 'fall': month, day = settings.FALL_SEMESTER_END else: raise ValueError time = datetime.datetime(year, month, day) else: time = now() try: setting = Setting.objects.filter(name=name, time_set__lte=time).latest('time_set') except Setting.DoesNotExist: # if it doesn't exist for that time, just get the latest value setting = Setting.objects.filter(name=name).latest('time_set') if setting is None: raise ValueError('Setting {} does not exist.'.format(name)) cleaned_value = setting_validators[setting.value_type](setting.value)['value'] return cleaned_value
def dues_required(semester=None, year=None, time=None): dues_required_semester = get_setting(name='Collect Dues') if time is None and semester is None: time = now() if time: semester = current_semester(time) return dues_required_semester == 'both' or dues_required_semester == semester
def save(self, *args, **kwargs): """ automatically update updated date field """ # auto fill updated field with current time unless explicitly disabled auto_update = kwargs.get('auto_update', True) if auto_update: self.updated = now() # remove eventual auto_update if 'auto_update' in kwargs: kwargs.pop('auto_update') super(BaseDate, self).save(*args, **kwargs)