some more thorough documentation for #614

This commit is contained in:
Adrian Sampson 2014-03-21 17:51:50 -07:00
parent 3b403937d6
commit ddddbbb919
2 changed files with 23 additions and 10 deletions

View file

@ -1020,20 +1020,33 @@ class DateField(MediaField):
self._set_date_tuple(mediafile, date.year, date.month, date.day)
def _get_date_tuple(self, mediafile):
datestring = MediaField.__get__(self, mediafile, None)
"""Get a 3-item sequence representing the date consisting of a
year, month, and day number. Each number is either an integer or
None.
"""
# Get the underlying data and split on hyphens.
datestring = super(DateField, self).__get__(mediafile, None)
datestring = re.sub(r'[Tt ].*$', '', unicode(datestring))
items = unicode(datestring).split('-')
# A date with more than 3 components is not a date we understand. In
# that case, act like we saw no date components.
if len(items) > 3:
items = []
items = items + [None] * (3 - len(items))
# Ensure that we have exactly 3 components, possibly by
# truncating or padding.
items = items[:3]
if len(items) < 3:
items += [None] * (3 - len(items))
# Use year field if year is missing.
if not items[0] and hasattr(self, '_year_field'):
# Fallback to addition year field
items[0] = self._year_field.__get__(mediafile)
# Convert each component to an integer if possible.
return [_safe_cast(int, item) for item in items]
def _set_date_tuple(self, mediafile, year, month=None, day=None):
"""Set the value of the field given a year, month, and day
number. Each number can be an integer or None to indicate an
unset component.
"""
date = [year or 0]
if month:
date.append(month)

View file

@ -198,7 +198,7 @@ class LazySaveTestMixin(object):
self.assertNotEqual(os.stat(mediafile.path).st_mtime, mtime)
def _set_past_mtime(self, path):
mtime = round(time.time()-10000)
mtime = round(time.time() - 10000)
os.utime(path, (mtime, mtime))
return mtime
@ -333,7 +333,8 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin):
mediafile = self._mediafile_fixture('full')
for key, value in self.audio_properties.items():
if isinstance(value, float):
self.assertAlmostEqual(getattr(mediafile, key), value, delta=0.1)
self.assertAlmostEqual(getattr(mediafile, key), value,
delta=0.1)
else:
self.assertEqual(getattr(mediafile, key), value)
@ -474,7 +475,6 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin):
self.assertEqual(mediafile.date, datetime.date.min)
def assertTags(self, mediafile, tags):
__unittest = True
errors = []
for key, value in tags.items():
try: