blob: 4385cc0bc35e2aba4dba931348f7bb8eddc9bffd [file] [log] [blame]
lombardofrc3051ef2019-01-16 10:59:18 +01001# Copyright 2018 EveryUP Srl
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import yaml
16import json
17import logging
18from sf_t3d.decorators import login_required
19from django.http import HttpResponse
20from django.shortcuts import render, redirect
21
22from lib.util import Util
23import authosm.utils as osmutils
24from lib.osm.osmclient.clientv2 import Client
25
26logging.basicConfig(level=logging.DEBUG)
27log = logging.getLogger('instancehandler/view.py')
28
29@login_required
30def list(request):
31 user = osmutils.get_user(request)
32 client = Client()
33 result = {}
34 result_client = client.nst_list(user.get_token())
35
36 result['templates'] = result_client['data'] if result_client and result_client['error'] is False else []
37
38 return __response_handler(request, result, 'nst_list.html')
39
40@login_required
41def create_template(request, template_id=None):
42 return
43
44@login_required
45def edit(request, template_id=None):
46 user = osmutils.get_user(request)
47 client = Client()
48 if request.method == 'GET':
49 page = 'nst_edit.html'
50 result = client.nst_content(user.get_token(), template_id)
51 if result['error']:
52 return __response_handler(request, result, url=page, status=500)
53 else:
54 return __response_handler(request, {'template': {'template_id': str(template_id), 'data': result['data']}}, url=page, status=200)
55 elif request.method == 'POST':
56 result = client.nst_content_update(user.get_token(), template_id, request.POST.get('text'))
57 if result['error'] == True:
58 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
59 else:
60 return __response_handler(request, {}, url=None, status=200)
61
62
63@login_required
64def details(request, template_id=None):
65 user = osmutils.get_user(request)
66 client = Client()
67 result = client.nst_details(user.get_token(), template_id)
68 if result['error']:
69 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
70 else:
71 return __response_handler(request, result, url=None, status=200)
72
73@login_required
74def delete_template(request, template_id=None):
75 user = osmutils.get_user(request)
76
77 client = Client()
78 result = client.nst_delete(user.get_token(), template_id)
79
80 if result['error']:
81 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
82 else:
83 return __response_handler(request, {}, url=None, status=200)
84
85
86@login_required
87def download_template(request, package_id=None):
88 return
89
90@login_required
91def onboard_template(request):
92 user = osmutils.get_user(request)
93 if request.method == 'POST':
94 data_type = request.POST.get('type')
95 if data_type == "file":
96 file_uploaded = request.FILES['file']
97 try:
98 client = Client()
99 result = client.nst_onboard(user.get_token(), file_uploaded)
100 except Exception as e:
101 log.exception(e)
102 result = {'error': True, 'data': str(e)}
103 else:
104 result = {'error': True, 'data': 'Create descriptor: Unknown data type'}
105
106 if result['error']:
107 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
108 else:
109 return __response_handler(request, {}, url=None, status=200)
110
111
112def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):
113 raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',')
114 if not to_redirect and ('application/json' in raw_content_types or url is None):
115 return HttpResponse(json.dumps(data_res), content_type="application/json", *args, **kwargs)
116 elif to_redirect:
117 return redirect(url, *args, **kwargs)
118 else:
119 return render(request, url, data_res)