| 79 | @login_required |
| 80 | @require_POST |
| 81 | def sync_processing_node(request): |
| 82 | hostname = request.POST.get('hostname') |
| 83 | port = int(request.POST.get('port')) |
| 84 | token = request.POST.get('token') |
| 85 | |
| 86 | if hostname is not None and port is not None and token is not None: |
| 87 | nodes = get_objects_for_user(request.user, 'view_processingnode', ProcessingNode, |
| 88 | accept_global_perms=False) |
| 89 | matches = [n for n in nodes if n.hostname == hostname and n.port == port and n.token == token] |
| 90 | if len(matches) == 0: |
| 91 | # Add |
| 92 | node = ProcessingNode.objects.create(hostname=hostname, port=port, token=token, label="Lightning") |
| 93 | assign_perm('view_processingnode', request.user, node) |
| 94 | assign_perm('change_processingnode', request.user, node) |
| 95 | assign_perm('delete_processingnode', request.user, node) |
| 96 | |
| 97 | # Keep track of lightning node IDs |
| 98 | lightning_nodes = ds.get_json('nodes', []) |
| 99 | lightning_nodes.append(node.id) |
| 100 | ds.set_json('nodes', lightning_nodes) |
| 101 | |
| 102 | return get_processing_nodes(request) |
| 103 | else: |
| 104 | # Already added |
| 105 | return get_processing_nodes(request) |
| 106 | else: |
| 107 | return JsonResponse({'error': 'Invalid call (params missing)'}) |
| 108 | |
| 109 | @login_required |
| 110 | def get_processing_nodes(request): |