Beispiel #1
0
 def post(self, request):
     datatype_factory = DataTypeFactory()
     tileid = request.POST.get("tileid")
     nodeid = request.POST.get("nodeid")
     data = request.POST.get("data")
     resourceid = request.POST.get("resourceinstanceid", None)
     try:
         node = models.Node.objects.get(nodeid=nodeid)
         datatype = datatype_factory.get_instance(node.datatype)
     except Exception as e:
         return JSONResponse(e)
     data = datatype.process_api_data(data)
     new_tile = tile_model.update_node_value(nodeid,
                                             data,
                                             tileid,
                                             resourceinstanceid=resourceid)
     response = JSONResponse(new_tile)
     return response
Beispiel #2
0
    def post_save(self, tile, request):
        tile_already_exists = models.TileModel.objects.filter(
            resourceinstance_id=tile.resourceinstance_id).filter(
                nodegroup_id=self.config["selected_nodegroup"]).exists()
        if not tile_already_exists:
            try:
                if int(self.config['last_value']) == 0:
                    new_number = str(
                        int(self.config['starting_value']) +
                        int(self.config['last_value']) + 1)
                else:
                    new_number = str(int(self.config['last_value']) + 1)

                new_value = self.config['prefix'] + (
                    (7 - len(new_number)) * '0') + new_number + self.config[
                        'suffix']  #EAMENA numbers are 7 digits long
                fn = models.FunctionXGraph.objects.get(
                    Q(function_id="2cc07b0a-adbd-4721-86ce-dad1699caa86"),
                    Q(graph_id=tile.resourceinstance.graph_id))
                fn.config['last_value'] = new_number
                fn.save()
                nodegroup_id = self.config["selected_nodegroup"]
                target_node = self.config['target_node']
                nodegroup = models.NodeGroup.objects.get(pk=nodegroup_id)
                if tile.nodegroup.nodegroupid == nodegroup.nodegroupid:
                    tile.data[target_node] = new_value
                    return
                if nodegroup.parentnodegroup_id == tile.nodegroup.nodegroupid:
                    return
                else:
                    tile = Tile.update_node_value(
                        target_node,
                        new_value,
                        nodegroupid=nodegroup_id,
                        resourceinstanceid=tile.resourceinstance_id)
            except Exception:
                logger.exception(
                    "The incrementor function is unable to create incremented value"
                )