restfulview.py
2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from pyramid_restler.view import RESTfulView
from pyramid.response import Response
from lbbulk.model.BulkUpload import BulkUpload
import configparser
import json
import requests
class RegCustomView(RESTfulView):
def create_member(self):
member = self.context.create_member(self._get_data())
id = self.context.get_member_id_as_string(member)
headers = {'Location': '/'.join((self.request.path, id))}
return Response(status=201, headers=headers)
def _get_data(self):
""" Read json data from the post sent by some source """
content_type = self.request.content_type
if content_type == 'application/json':
data = json.loads(self.request.body)
elif content_type == 'application/x-www-form-urlencoded':
data = dict(self.request.POST)
else:
data = self.request.params
data = self.send_to_lightbase(data)
# Must come with the external key as a value of
# 'data.json_reg.id_reg'
return data
def send_to_lightbase(self, data):
""" Sends the registers to a neo-light base and returns a dict
with the external key and lighbase's id_reg """
data['json_reg'] = json.loads(data['json_reg'])
# converte os filhos pra dicts
# existente = BulkUpload.verifica_registro(data)
registro = self.is_error(data)
# id_source = registro['id_source']
id_source = 1
external_key = registro['json_reg']['id_reg']
registro['json_reg'].pop('id_reg', None)
registro['json_reg'].pop('name_source', None)
registro['json_reg'] = json.dumps(registro['json_reg'])
url = self.get_url_lightbase()
# if existente:
# r = requests.put(url, data=registro)
# id_reg = existente
# data = None
if False:
pass
else:
r = requests.post(url, data=registro)
id_reg = self.is_error_resp(r.json())
data = {
'id_source':id_source,
'id_reg':id_reg,
'external_key':external_key
}
return data
def get_url_lightbase(self): #TODO
""" Returns url from config """
domain = 'http://localhost/lightbase'
base_name = 'wmi'
# url = (settings['domain'] + '/' + settings['base_name'] + '/reg')
url = (domain + '/' + base_name + '/reg')
return url
def is_error(self,data): #TODO
return data
def is_error_resp(self,r):
if type(r) is dict:
raise TypeError('Lightbase error ' + str(r['_status']) + ': ' + r['_error_message'])
return r