src/ldt/ldt/forms/fields.py
author ymh <ymh.work@gmail.com>
Wed, 15 May 2013 10:05:17 +0200
changeset 1190 129d45eec68c
parent 1064 d8b2af693c69
permissions -rw-r--r--
Clean warning and errors for Django 1.5

"""
Field classes.
"""

from django import forms
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
import time

__all__ = (
    'LdtDurationField'
)

class LdtDurationField (forms.TimeField):
    """
    A field allowing to enter the duration format (eg: XhMM, XXhMM, HH:MM:SS)
    """
    
    default_error_messages = {
        'required': _(u'The duration field can not be empty.'),
        'invalid': _(u'Enter a valid duration format;'),
    }
    
    def __init__(self, formats, *args, **kwargs):
        self.formats = formats
        super(LdtDurationField, self).__init__(*args, **kwargs)
    
    def to_python(self, value):
        dur = value
        for f in self.formats:
            try:
                dur = time.strptime(dur, f)
                dur = dur.tm_hour*3600 + dur.tm_min*60 + dur.tm_sec
                dur = dur*1000
                break
            except:
                pass
        return dur
    
    def validate(self, value):
        if value==None or value=="":
            raise ValidationError(self.default_error_messages['required'])
        else:
            try:
                int(value)
            except (ValueError, TypeError):
                raise ValidationError(self.default_error_messages['invalid'])