def send(self, url, data): xform = XForm.objects.get(id=data.get("xform_id")) rows = [data.get("json")] # prefix meta columns names for bamboo prefix = (u'%(id_string)s_%(id)s' % {'id_string': xform.id_string, 'id': xform.id}) for row in rows: for col, value in row.items(): if col.startswith('_') or col.startswith('meta_') \ or col.startswith('meta/'): new_col = (u'%(prefix)s%(col)s' % {'prefix': prefix, 'col': col}) row.update({new_col: value}) del(row[col]) # create dataset on bamboo first (including current submission) if not xform.bamboo_dataset: dataset_id = get_new_bamboo_dataset(xform, force_last=True) xform.bamboo_dataset = dataset_id xform.save() else: dataset = Dataset(connection=Connection(url=get_bamboo_url(xform)), dataset_id=xform.bamboo_dataset) dataset.update_data(rows=rows)
def send(self, url, parsed_instance): xform = parsed_instance.instance.xform rows = [parsed_instance.to_dict_for_mongo()] # prefix meta columns names for bamboo prefix = (u'%(id_string)s_%(id)s' % { 'id_string': xform.id_string, 'id': xform.id }) for row in rows: for col, value in row.items(): if col.startswith('_') or col.startswith('meta_') \ or col.startswith('meta/'): new_col = (u'%(prefix)s%(col)s' % { 'prefix': prefix, 'col': col }) row.update({new_col: value}) del (row[col]) # create dataset on bamboo first (including current submission) if not xform.bamboo_dataset: dataset_id = get_new_bamboo_dataset(xform, force_last=True) xform.bamboo_dataset = dataset_id xform.save() else: dataset = Dataset(connection=Connection(url=get_bamboo_url(xform)), dataset_id=xform.bamboo_dataset) dataset.update_data(rows=rows)
def link_to_bamboo(request, username, id_string): xform = get_object_or_404(XForm, user__username__iexact=username, id_string__iexact=id_string) owner = xform.user audit = { 'xform': xform.id_string } # try to delete the dataset first (in case it exists) if xform.bamboo_dataset and delete_bamboo_dataset(xform): xform.bamboo_dataset = u'' xform.save() audit_log( Actions.BAMBOO_LINK_DELETED, request.user, owner, _("Bamboo link deleted on '%(id_string)s'.") % {'id_string': xform.id_string}, audit, request) # create a new one from all the data dataset_id = get_new_bamboo_dataset(xform) # update XForm xform.bamboo_dataset = dataset_id xform.save() ensure_rest_service(xform) audit_log( Actions.BAMBOO_LINK_CREATED, request.user, owner, _("Bamboo link created on '%(id_string)s'.") % { 'id_string': xform.id_string, }, audit, request) return HttpResponseRedirect(reverse(show, kwargs={ 'username': username, 'id_string': id_string }))
def link_to_bamboo(request, username, id_string): xform = get_object_or_404(XForm, user__username=username, id_string=id_string) owner = xform.user audit = { 'xform': xform.id_string } # try to delete the dataset first (in case it exists) if xform.bamboo_dataset and delete_bamboo_dataset(xform): xform.bamboo_dataset = u'' xform.save() audit_log( Actions.BAMBOO_LINK_DELETED, request.user, owner, _("Bamboo link deleted on '%(id_string)s'.") % {'id_string': xform.id_string}, audit, request) # create a new one from all the data dataset_id = get_new_bamboo_dataset(xform) # update XForm xform.bamboo_dataset = dataset_id xform.save() ensure_rest_service(xform) audit_log( Actions.BAMBOO_LINK_CREATED, request.user, owner, _("Bamboo link created on '%(id_string)s'.") % { 'id_string': xform.id_string, }, audit, request) return HttpResponseRedirect(reverse(show, kwargs={ 'username': username, 'id_string': id_string }))
def test_get_new_bamboo_dataset_parse_error(self, mock): self._publish_transportation_form() self._make_submissions() ret = get_new_bamboo_dataset(self.xform) self.assertEqual(ret, u'')