示例#1
0
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)
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
    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)