Skip to content

Commit d40174d

Browse files
authored
Merge pull request #108 from gadventures/booking-requirements
Booking Requirements
2 parents 28e888b + 78cdcb0 commit d40174d

File tree

9 files changed

+162
-26
lines changed

9 files changed

+162
-26
lines changed

gapipy/query.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,14 @@ def all(self, limit=None):
133133
params=self._filters,
134134
parent=self.parent
135135
)
136-
generator = requestor.list()
136+
# use href when available; this change should be transparent
137+
# introduced: 2.20.0
138+
href = None
139+
if isinstance(self._raw_data, dict):
140+
href = self._raw_data.get('href')
141+
# generator to fetch list resources
142+
generator = requestor.list(href)
143+
# reset filters in case they were set on this query
137144
self._filters = {}
138145

139146
if limit:

gapipy/resources/__init__.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from .tour import ( # NOQA
1+
# flake8: NOQA
2+
from .tour import (
23
Accommodation,
34
Activity,
45
OptionalActivity,
@@ -18,7 +19,7 @@
1819
Transport,
1920
)
2021

21-
from .dossier import ( # NOQA
22+
from .dossier import (
2223
AccommodationDossier,
2324
ActivityDossier,
2425
PlaceDossier,
@@ -31,11 +32,12 @@
3132
CountryDossier,
3233
)
3334

34-
from .booking import ( # NOQA
35+
from .booking import (
3536
Agency,
3637
AgencyChain,
3738
Agent,
3839
Booking,
40+
Checkin,
3941
Customer,
4042
Invoice,
4143
DeclinedReason,
@@ -51,11 +53,13 @@
5153
TransportService,
5254
Payment,
5355
Refund,
56+
Requirement,
57+
RequirementSet,
5458
Override,
5559
OverrideReason,
5660
)
5761

58-
from .geo import ( # NOQA
62+
from .geo import (
5963
Airport,
6064
Continent,
6165
Country,
@@ -67,12 +71,8 @@
6771
Timezone,
6872
)
6973

70-
from .checkin import ( # NOQA
71-
Checkin,
72-
)
73-
7474
from .booking_company import BookingCompany
75-
from .language import Language # NOQA
75+
from .language import Language
7676

7777

7878
available_public_resources = [
@@ -137,6 +137,8 @@
137137
'Override',
138138
'Payment',
139139
'Refund',
140+
'Requirement',
141+
'RequirementSet',
140142
'SingleSupplementService',
141143
'TransportService',
142144
]

gapipy/resources/booking/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
from .agency_chain import AgencyChain
44
from .agent import Agent
55
from .booking import Booking
6+
from .checkin import Checkin
67
from .customer import Customer
78
from .declined_reason import DeclinedReason
9+
from .document import Invoice, Document
810
from .override_reason import OverrideReason
911
from .override import Override
10-
from .document import Invoice, Document
12+
from .requirement import Requirement, RequirementSet
1113
from .service import (
1214
AccommodationService,
1315
ActivityService,

gapipy/resources/booking/agency_chain.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@
66

77

88
class AgencyChain(Resource):
9-
109
_resource_name = 'agency_chains'
1110

1211
_as_is_fields = [
1312
'id',
1413
'href',
1514
'name',
16-
'flags',
15+
'agencies',
16+
'agent_notifications',
1717
'communication_preferences',
18+
'flags',
1819
'payment_options',
19-
'agencies',
2020
'passenger_notifications',
21-
'agent_notifications',
2221
]
22+
2323
_date_time_fields_local = [
2424
'date_created',
25+
'date_last_modified',
2526
]
27+
2628
_resource_fields = [
2729
('booking_company', BookingCompany),
2830
]

gapipy/resources/booking/booking.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# Python 2 and 3
22
from __future__ import unicode_literals
33

4-
from gapipy.resources.checkin import Checkin
4+
from gapipy.resources.base import Resource
55

6-
from ..base import Resource
76
from .agency_chain import AgencyChain
7+
from .checkin import Checkin
88
from .customer import Customer
99
from .document import Invoice, Document
1010
from .override import Override
11+
from .requirement import RequirementSet
1112
from .service import Service
1213
from .transaction import Payment, Refund
1314

@@ -39,14 +40,15 @@ class Booking(Resource):
3940
@property
4041
def _resource_collection_fields(self):
4142
return [
42-
('services', Service),
43+
('checkins', Checkin),
44+
('customers', Customer),
45+
('documents', Document),
4346
('invoices', Invoice),
47+
('overrides', Override),
4448
('payments', Payment),
4549
('refunds', Refund),
46-
('documents', Document),
47-
('overrides', Override),
48-
('checkins', Checkin),
49-
('customers', Customer),
50+
('requirements', RequirementSet),
51+
('services', Service),
5052
]
5153

5254
@property
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Python 2 and 3
22
from __future__ import unicode_literals
33

4-
from ..base import Resource, BaseModel
4+
from gapipy.resources.base import Resource
5+
from gapipy.models.base import BaseModel
56

67

78
class Requirement(BaseModel):

gapipy/resources/booking/document.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@
66

77
class Document(Resource):
88
_resource_name = 'documents'
9+
910
_is_listable = False
1011

11-
_as_is_fields = ['id', 'href', 'mime_type', 'content', 'type', 'audience']
12+
_as_is_fields = [
13+
'id',
14+
'href',
15+
'type',
16+
'audience',
17+
'content',
18+
'mime_type',
19+
]
1220
_date_time_fields_utc = ['date_created']
1321
_resource_fields = [
1422
('booking', 'Booking'),
@@ -17,10 +25,17 @@ class Document(Resource):
1725

1826
class Invoice(Resource):
1927
_resource_name = 'invoices'
28+
2029
_is_listable = False
2130

22-
_as_is_fields = ['id', 'href', 'audience']
31+
_as_is_fields = [
32+
'id',
33+
'href',
34+
'audience',
35+
]
36+
2337
_date_time_fields_utc = ['date_created']
38+
2439
_resource_fields = [
2540
('document', Document),
2641
('booking', 'Booking'),
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Python 2 and 3
2+
from __future__ import unicode_literals
3+
4+
from future.utils import with_metaclass
5+
6+
from gapipy.models.base import BaseModel
7+
from gapipy.resources.base import Resource
8+
from gapipy.utils import get_resource_class_from_resource_name
9+
10+
from .service import Service
11+
12+
13+
class LastModified(BaseModel):
14+
_as_is_fields = [
15+
'name',
16+
'user_type',
17+
]
18+
_date_time_fields_utc = ['date']
19+
20+
21+
class ResourceField(BaseModel):
22+
_as_is_fields = [
23+
'field',
24+
'required',
25+
'value',
26+
'viewable_by',
27+
]
28+
29+
@property
30+
def _resource_fields(self):
31+
# extract the resource_name from the raw data
32+
# and use it to return the appropriate resource
33+
# class
34+
resource_name = self._raw_data.get('resource', {}).get('resource_name')
35+
if resource_name:
36+
try:
37+
resource_class = get_resource_class_from_resource_name(resource_name)
38+
return [
39+
('resource', resource_class),
40+
]
41+
except:
42+
pass
43+
# fall back
44+
return []
45+
46+
47+
class Requirement(Resource):
48+
_resource_name = 'requirements'
49+
50+
_as_is_fields = [
51+
'id',
52+
'href',
53+
'type',
54+
'applied_overrides',
55+
'code',
56+
'editable_by',
57+
'flags',
58+
'name',
59+
'override_reasons',
60+
'status',
61+
]
62+
63+
_date_fields = [
64+
'complete_by_date',
65+
]
66+
67+
_model_fields = [
68+
('last_modified', LastModified),
69+
]
70+
71+
_resource_fields = [
72+
('booking', 'Booking'),
73+
('customer', 'Customer'),
74+
('requirement_set', 'RequirementSet'),
75+
]
76+
77+
_model_collection_fields = [
78+
('services', Service),
79+
('resource_fields', ResourceField),
80+
]
81+
82+
83+
class RequirementSet(Resource):
84+
_resource_name = 'requirement_sets'
85+
86+
_is_listable = True
87+
88+
_as_is_fields = [
89+
'id',
90+
'href',
91+
'code',
92+
'name',
93+
]
94+
95+
_date_fields = [
96+
'complete_by_date',
97+
]
98+
99+
_model_collection_fields = [
100+
('requirements', Requirement),
101+
]
102+
103+
_resource_fields = [
104+
('booking', 'Booking'),
105+
]
106+

gapipy/resources/checkin/__init__.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)