Source code for openassembly.pirate_core.fields
from time import strptime, strftime
from django import forms
from django.db import models
from django.forms import fields
from pirate_core.widgets import JqSplitDateTimeWidget
[docs]class JqSplitDateTimeField(fields.MultiValueField):
widget = JqSplitDateTimeWidget
def __init__(self, *args, **kwargs):
"""
Have to pass a list of field types to the constructor, else we
won't get any data to our compress method.
"""
self.required = kwargs.get('required', True)
print self.required
all_fields = (
fields.CharField(max_length=10),
fields.CharField(max_length=2),
fields.CharField(max_length=2),
fields.ChoiceField(choices=[('AM','AM'),('PM','PM')])
)
super(JqSplitDateTimeField, self).__init__(all_fields, *args, **kwargs)
[docs] def compress(self, data_list):
"""
Takes the values from the MultiWidget and passes them as a
list to this function. This function needs to compress the
list into a single object to save.
"""
if data_list:
if not (data_list[0] and data_list[1] and data_list[2] and data_list[3]):
if self.required:
raise forms.ValidationError("Field is missing data.")
try:
input_time = strptime("%s:%s %s"%(data_list[1], data_list[2], data_list[3]), "%I:%M %p")
datetime_string = "%s %s" % (data_list[0], strftime('%H:%M', input_time))
print "Datetime: %s"%datetime_string
return datetime_string
except:
return None
return None