1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
from django.utils import formats
from datetime import datetime, timedelta
from dateutil import rrule
import uuid, tempfile, zipfile, os
# Text formatted date. *sigh*
def get_week_dates(date=None):
if date == None:
date = formats.date_format(datetime.now(), "SHORT_DATE_FORMAT")
dt = datetime.strptime(date, '%m/%d/%Y')
return get_week_dates_datetime(dt=dt)
def get_week_dates_datetime(dt=None):
week_dates = {}
weekday = dt.weekday()
if weekday == 6:
week_dates['start_date'] = dt
else:
weekday = weekday + 1
week_dates['start_date'] = dt - timedelta(days=weekday)
week_dates['end_date'] = week_dates['start_date'] + timedelta(days=6)
week_dates['next_week'] = week_dates['end_date'] + timedelta(days=1)
week_dates['previous_week'] = week_dates['start_date'] - timedelta(days=1)
return week_dates
def split_loads_by_day(loads,start_date,end_date):
split_loads = {}
for date in rrule.rrule(rrule.DAILY,dtstart=start_date, until=end_date):
if date not in split_loads:
split_loads[date] = loads.filter(date=date)
return split_loads
# This is used to set the upload path of the document for Paperwork Objects
def paperwork_user_directory_path(instance, filename):
# We don't want the UUID to be too long, just enough so there aren't any
# filename conflicts
return 'paperwork/{:d}/'.format(instance.load.pk) + \
str(uuid.uuid4())[0:9] + filename
def zip_attachments_for_loads(loads, pre_append, date):
td = tempfile.TemporaryDirectory()
zip_file_basename = pre_append + '-' + \
date.strftime('%m.%d.%Y') + \
'.zip'
zip_file_name = td.name + '/' + zip_file_basename
z = zipfile.ZipFile(zip_file_name, 'w')
for l in loads:
for p in l.paperwork_set.all():
if os.path.exists(p.document.path):
try:
exp = re.compile('\.[^.]*$', re.IGNORECASE)
ext = exp.findall(p.document.path)
ext = ext[0]
except Exception as e:
print(e)
ext = '.pdf'
desc = l.description.replace('"', '')
desc = l.description.replace('/', '--')
# Get the name for the zip file
zipname = desc + '-' + l.user.identity.name + ext
z.write(p.document.path, zipname)
# print(p.document)
# Finally close off the zip file
z.close()
fh = open(zip_file_name, 'rb')
return (zip_file_basename, fh)
|