25 lines
864 B
Python
25 lines
864 B
Python
|
from django.db.models import DecimalField, DurationField, Func
|
||
|
|
||
|
|
||
|
class IntervalToSeconds(Func):
|
||
|
function = ''
|
||
|
template = """
|
||
|
EXTRACT(day from %(expressions)s) * 86400 +
|
||
|
EXTRACT(hour from %(expressions)s) * 3600 +
|
||
|
EXTRACT(minute from %(expressions)s) * 60 +
|
||
|
EXTRACT(second from %(expressions)s)
|
||
|
"""
|
||
|
|
||
|
def __init__(self, expression, **extra):
|
||
|
output_field = extra.pop('output_field', DecimalField())
|
||
|
super(IntervalToSeconds, self).__init__(expression, output_field=output_field, **extra)
|
||
|
|
||
|
|
||
|
class SecondsToInterval(Func):
|
||
|
function = 'NUMTODSINTERVAL'
|
||
|
template = "%(function)s(%(expressions)s, 'SECOND')"
|
||
|
|
||
|
def __init__(self, expression, **extra):
|
||
|
output_field = extra.pop('output_field', DurationField())
|
||
|
super(SecondsToInterval, self).__init__(expression, output_field=output_field, **extra)
|