Skip to content
This repository was archived by the owner on Mar 18, 2019. It is now read-only.

Commit adc6f0f

Browse files
committed
transition -> inplace
1 parent 7492399 commit adc6f0f

File tree

9 files changed

+33
-32
lines changed

9 files changed

+33
-32
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ You can also inspect the document URL and title.
6060

6161
### Interacting with documents
6262

63-
Documents in the Python Core API library are immutable objects. To perform a transition we use the `.action()` function and assign the resulting new document.
63+
Documents in the Python Core API library are immutable objects. To perform a transition we use the `coreapi.action()` function and assign the resulting new document.
6464

6565
>>> doc = coreapi.action(doc, ['add_note'], params={'description': 'My new note.'})
6666

coreapi/codecs/corejson.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ def _document_to_primative(node, base_url=None):
7777
ret['url'] = url
7878
if node.action:
7979
ret['action'] = node.action
80-
if node.transition:
81-
ret['transition'] = node.transition
80+
if node.inplace is not None:
81+
ret['inplace'] = node.inplace
8282
if node.fields:
8383
# Use short format for optional fields, long format for required.
8484
ret['fields'] = [
@@ -144,9 +144,9 @@ def _primative_to_document(data, base_url=None):
144144
if not isinstance(action, string_types):
145145
action = ''
146146

147-
transition = data.get('transition')
148-
if not isinstance(transition, string_types):
149-
transition = ''
147+
inplace = data.get('inplace')
148+
if not isinstance(inplace, bool):
149+
inplace = None
150150

151151
fields = data.get('fields', [])
152152
if not isinstance(fields, list):
@@ -167,7 +167,7 @@ def _primative_to_document(data, base_url=None):
167167
for item in fields
168168
]
169169

170-
return Link(url=url, action=action, transition=transition, fields=fields)
170+
return Link(url=url, action=action, inplace=inplace, fields=fields)
171171

172172
elif isinstance(data, dict) and data.get('_type') == 'error':
173173
# Error

coreapi/codecs/python.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ def _to_repr(node):
2828
args = "url=%s" % repr(node.url)
2929
if node.action:
3030
args += ", action=%s" % repr(node.action)
31-
if node.transition:
32-
args += ", transition=%s" % repr(node.transition)
31+
if node.inplace is not None:
32+
args += ", inplace=%s" % repr(node.inplace)
3333
if node.fields:
3434
fields_repr = ', '.join([
3535
'required(%s)' % repr(field.name)

coreapi/document.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,13 @@ class Link(itypes.Object):
166166
"""
167167
Links represent the actions that a client may perform.
168168
"""
169-
def __init__(self, url=None, action=None, transition=None, fields=None):
169+
def __init__(self, url=None, action=None, inplace=None, fields=None):
170170
if (url is not None) and (not isinstance(url, string_types)):
171171
raise TypeError("Argument 'url' must be a string.")
172172
if (action is not None) and (not isinstance(action, string_types)):
173173
raise TypeError("Argument 'action' must be a string.")
174-
if (transition is not None) and (not isinstance(transition, string_types)):
175-
raise TypeError("Argument 'transition' must be a string.")
174+
if (inplace is not None) and (not isinstance(inplace, bool)):
175+
raise TypeError("Argument 'inplace' must be a boolean.")
176176
if (fields is not None) and (not isinstance(fields, list)):
177177
raise TypeError("Argument 'fields' must be a list.")
178178
if (fields is not None) and any([
@@ -183,7 +183,7 @@ def __init__(self, url=None, action=None, transition=None, fields=None):
183183

184184
self._url = '' if (url is None) else url
185185
self._action = '' if (action is None) else action
186-
self._transition = '' if (transition is None) else transition
186+
self._inplace = inplace
187187
self._fields = () if (fields is None) else tuple([
188188
item if isinstance(item, Field) else Field(item, required=False)
189189
for item in fields
@@ -198,8 +198,8 @@ def action(self):
198198
return self._action
199199

200200
@property
201-
def transition(self):
202-
return self._transition
201+
def inplace(self):
202+
return self._inplace
203203

204204
@property
205205
def fields(self):
@@ -210,7 +210,7 @@ def __eq__(self, other):
210210
isinstance(other, Link) and
211211
self.url == other.url and
212212
self.action == other.action and
213-
self.transition == other.transition and
213+
self.inplace == other.inplace and
214214
set(self.fields) == set(other.fields)
215215
)
216216

coreapi/templates/link.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<a class="coreapi-link" href="{{ url }}" {% if not node|is_plain_link %}data-toggle="modal" data-remote='false' data-target="#transitionModal"{% endif %} data-action="{{ node.action }}" data-transition="{{ node.transition }}" data-fields="{% for field in node.fields %}{{ field.name }} {% endfor %}">{{ key }} {% if node|is_plain_link %}<span class="glyphicon glyphicon-link" aria-hidden="true"></span>{% endif %}</a>
1+
<a class="coreapi-link" href="{{ url }}" {% if not node|is_plain_link %}data-toggle="modal" data-remote='false' data-target="#transitionModal"{% endif %} data-action="{{ node.action }}" {% if node.inplace == true %}data-inplace="true"{% elif node.inplace == false %}data-inplace="false"{% endif %} data-fields="{% for field in node.fields %}{{ field.name }} {% endfor %}">{{ key }} {% if node|is_plain_link %}<span class="glyphicon glyphicon-link" aria-hidden="true"></span>{% endif %}</a>

coreapi/transport.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def transition(self, link, params=None, session=None, link_ancestors=None):
3535
raise ErrorMessage(document.messages)
3636

3737
if link_ancestors:
38-
document = self.handle_inline_replacements(document, link, link_ancestors)
38+
document = self.handle_inplace_replacements(document, link, link_ancestors)
3939

4040
return document
4141

@@ -89,22 +89,23 @@ def load_document(self, session, response):
8989
codec = session.negotiate_decoder(content_type)
9090
return codec.load(response.content, base_url=response.url)
9191

92-
def handle_inline_replacements(self, document, link, link_ancestors):
92+
def handle_inplace_replacements(self, document, link, link_ancestors):
9393
"""
9494
Given a new document, and the link/ancestors it was created,
9595
determine if we should:
9696
9797
* Make an inline replacement and then return the modified document tree.
9898
* Return the new document as-is.
9999
"""
100-
transition_type = link.transition
101-
if not transition_type and link.action.lower() in ('put', 'patch', 'delete'):
102-
transition_type = 'inline'
100+
inplace = link.inplace
101+
if inplace is None and link.action.lower() in ('put', 'patch', 'delete'):
102+
inplace = True
103103

104-
if transition_type == 'inline':
104+
if inplace:
105105
root = link_ancestors[0].document
106106
keys_to_link_parent = link_ancestors[-1].keys
107107
if document is None:
108108
return root.delete_in(keys_to_link_parent)
109109
return root.set_in(keys_to_link_parent, document)
110+
110111
return document

tests/test_codecs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def test_link_encodings(json_codec):
151151
doc = Document(content={
152152
'link': Link(
153153
action='post',
154-
transition='inline',
154+
inplace=True,
155155
fields=['optional', required('required')]
156156
)
157157
})
@@ -161,7 +161,7 @@ def test_link_encodings(json_codec):
161161
"link": {
162162
"_type": "link",
163163
"action": "post",
164-
"transition": "inline",
164+
"inplace": true,
165165
"fields": [
166166
"optional",
167167
{

tests/test_document.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def doc():
1616
'link': Link(
1717
url='/',
1818
action='post',
19-
transition='inline',
19+
inplace=True,
2020
fields=['optional', required('required')]
2121
),
2222
'nested': {'child': Link(url='/123')}
@@ -223,7 +223,7 @@ def test_document_repr(doc):
223223
"'integer': 123, "
224224
"'list': [1, 2, 3], "
225225
"'nested': {'child': Link(url='/123')}, "
226-
"'link': Link(url='/', action='post', transition='inline', "
226+
"'link': Link(url='/', action='post', inplace=True, "
227227
"fields=['optional', required('required')])"
228228
"})"
229229
)
@@ -333,7 +333,7 @@ def test_document_equality(doc):
333333
'link': Link(
334334
url='/',
335335
action='post',
336-
transition='inline',
336+
inplace=True,
337337
fields=['optional', required('required')]
338338
),
339339
'nested': {'child': Link(url='/123')}
@@ -412,9 +412,9 @@ def test_link_action_must_be_string():
412412
Link(action=123)
413413

414414

415-
def test_link_transition_must_be_string():
415+
def test_link_inplace_must_be_boolean():
416416
with pytest.raises(TypeError):
417-
Link(transition=123)
417+
Link(inplace=123)
418418

419419

420420
def test_link_fields_must_be_list():

tests/test_transitions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def transition(self, link, params=None, session=None, link_ancestors=None):
1414
else:
1515
document = None
1616

17-
return self.handle_inline_replacements(document, link, link_ancestors)
17+
return self.handle_inplace_replacements(document, link, link_ancestors)
1818

1919

2020
session = Session(codecs=[], transports=[MockTransport()])
@@ -25,7 +25,7 @@ def doc():
2525
return Document(title='original', content={
2626
'nested': Document(content={
2727
'follow': Link(url='mock://example.com', action='get'),
28-
'action': Link(url='mock://example.com', action='post', transition='inline', fields=['foo']),
28+
'action': Link(url='mock://example.com', action='post', inplace=True, fields=['foo']),
2929
'create': Link(url='mock://example.com', action='post', fields=['foo']),
3030
'update': Link(url='mock://example.com', action='put', fields=['foo']),
3131
'delete': Link(url='mock://example.com', action='delete')

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy