Skip to content

Commit 5da3e65

Browse files
committed
Return commit id on successful commit
Knowing the commit id of changes can be useful for example when wanting to compare to committed changes and knowing which one finished first and other features that we want in the future.
1 parent 26591fc commit 5da3e65

6 files changed

Lines changed: 18 additions & 10 deletions

File tree

adminapi/dataset.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ def commit(self):
282282
for obj in self:
283283
obj._confirm_changes()
284284

285+
return result['commit_id']
286+
285287
def _fetch_results(self):
286288
request_data = {'filters': self._filters}
287289
if self._restrict is not None:
@@ -489,6 +491,8 @@ def commit(self):
489491

490492
self._confirm_changes()
491493

494+
return result['commit_id']
495+
492496

493497
class MultiAttr(set):
494498
"""This class must redefine all mutable methods of the set class

serveradmin/api/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def dataset_commit(request, app, data):
9999
kwargs[key] = value
100100

101101
try:
102-
commit_query(app=app, **kwargs)
102+
_, commit_id = commit_query(app=app, **kwargs)
103103
except ValidationError as error:
104104
return {
105105
'status': 'error',
@@ -109,6 +109,7 @@ def dataset_commit(request, app, data):
109109

110110
return {
111111
'status': 'success',
112+
'commit_id': commit_id,
112113
}
113114

114115

serveradmin/dataset.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ def _fetch_new_object(self, servertype):
1818

1919
def commit(self, app=None, user=None):
2020
commit_obj = self._build_commit_object()
21-
commit_query(app=app, user=user, **commit_obj)
21+
_, commit_id = commit_query(app=app, user=user, **commit_obj)
2222
self._confirm_changes()
23+
return commit_id
2324

2425
def _fetch_results(self):
2526
return execute_query(self._filters, self._restrict, self._order_by)
@@ -28,5 +29,6 @@ def _fetch_results(self):
2829
class DatasetObject(ApiDatasetObject):
2930
def commit(self, app=None, user=None):
3031
commit_obj = self._build_commit_object()
31-
commit_query(app=app, user=user, **commit_obj)
32+
_, commit_id = commit_query(app=app, user=user, **commit_obj)
3233
self._confirm_changes()
34+
return commit_id

serveradmin/serverdb/query_committer.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def commit_query(created=[], changed=[], deleted=[], app=None, user=None):
129129
created_objects, changed_objects, deleted_objects
130130
)
131131

132-
_log_changes(user, app, changed, created_objects, deleted_objects)
132+
commit_id = _log_changes(user, app, changed, created_objects, deleted_objects)
133133

134134
post_commit.send_robust(
135135
commit_query, created=created, changed=changed, deleted=deleted
@@ -139,7 +139,7 @@ def commit_query(created=[], changed=[], deleted=[], app=None, user=None):
139139
list(created_objects.values()),
140140
list(changed_objects.values()),
141141
list(deleted_objects.values()),
142-
)
142+
), commit_id
143143

144144

145145
def _validate(attribute_lookup, changed, changed_objects):
@@ -467,7 +467,7 @@ def _acl_violations(touched_objects, pending_changes, acl):
467467
return violations or None
468468

469469

470-
def _log_changes(user, app, changed, created_objects, deleted_objects):
470+
def _log_changes(user, app, changed, created_objects, deleted_objects) -> int:
471471
changes = list()
472472
commit = ChangeCommit(user=user, app=app)
473473

@@ -504,6 +504,8 @@ def _log_changes(user, app, changed, created_objects, deleted_objects):
504504
commit.save()
505505
Change.objects.bulk_create(changes)
506506

507+
return commit.id
508+
507509

508510
def _fetch_servers(object_ids):
509511
servers = {

serveradmin/serverdb/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ def recreate(request, change_id):
183183
server_object.pop(attribute_id)
184184

185185
try:
186-
commit = commit_query([server_object], user=request.user)
187-
object_id = str(commit.created[0]['object_id'])
186+
changes_obj, _ = commit_query([server_object], user=request.user)
187+
object_id = str(changes_obj.created[0]['object_id'])
188188
except (CommitError, ValidationError) as error:
189189
messages.error(request, str(error))
190190
return redirect(reverse('serverdb_changes'))

serveradmin/servershell/views.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,7 @@ def _edit(request: HttpRequest, server, edit_mode=False, template='edit'): # NO
315315
messages.info(request, str('Nothing has changed.'))
316316
else:
317317
try:
318-
commit_obj = commit_query(created, changed,
319-
user=request.user)
318+
commit_obj, _ = commit_query(created, changed, user=request.user)
320319
except (PermissionDenied, ValidationError) as err:
321320
messages.error(request, str(err))
322321
else:

0 commit comments

Comments
 (0)