aboutsummaryrefslogtreecommitdiff
path: root/app/dispatch/misc.py
blob: 7bcdaa8f89c463efda5196e8f0786df5dd187213 (plain) (blame)
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)