forked from viewflow/viewflow
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.py
95 lines (70 loc) · 2.8 KB
/
models.py
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from __future__ import unicode_literals
from django.db import models
from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible
from viewflow.models import Process, Task
class Carrier(models.Model):
DEFAULT = 'Default'
name = models.CharField(max_length=50)
phone = models.CharField(max_length=15)
def is_default(self):
return self.name == Carrier.DEFAULT
def __str__(self):
return self.name
@python_2_unicode_compatible
class Insurance(models.Model):
company_name = models.CharField(max_length=50)
cost = models.IntegerField()
def __str__(self):
return '{} ${}'.format(self.company_name, self.cost)
class Shipment(models.Model):
shipment_no = models.CharField(max_length=50)
carrier = models.ForeignKey(Carrier, null=True)
# customer
first_name = models.CharField(max_length=150)
last_name = models.CharField(max_length=150)
email = models.EmailField()
# shipment addres
address = models.CharField(max_length=150)
city = models.CharField(max_length=150)
state = models.CharField(max_length=150)
zipcode = models.CharField(max_length=10)
country = models.CharField(max_length=150)
phone = models.CharField(max_length=50)
# shipment data
need_insurance = models.BooleanField(default=False)
insurance = models.ForeignKey('Insurance', null=True)
carrier_quote = models.IntegerField(default=0)
post_label = models.TextField(blank=True, null=True)
package_tag = models.CharField(max_length=50)
class ShipmentItem(models.Model):
shipment = models.ForeignKey(Shipment)
name = models.CharField(max_length=250)
quantity = models.IntegerField(default=1)
class ShipmentProcess(Process):
shipment = models.ForeignKey(Shipment, blank=True, null=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
def is_normal_post(self):
try:
if self.shipment.carrier:
return self.shipment.carrier.is_default()
else:
return None
except (Shipment.DoesNotExist, Carrier.DoesNotExist):
return None
def need_extra_insurance(self):
try:
return self.shipment.need_insurance
except Shipment.DoesNotExist:
return None
class Meta:
verbose_name_plural = 'Shipment process list'
permissions = [
('can_start_request', 'Can start shipment request'),
('can_take_extra_insurance', 'Can take extra insurance'),
('can_package_goods', 'Can package goods'),
('can_move_package', 'Can move package')
]
class ShipmentTask(Task):
class Meta:
proxy = True