Beispiel #1
0
 def get_blank_tile(sourcetilegroup):
     if len(sourcetilegroup[0]['data']) > 0:
         if sourcetilegroup[0]['data'][0] != {}:
             if sourcetilegroup[0]['data'][0].keys()[0] not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(tiles[0]['data'][0].keys()[0], resourceid=resourceinstanceid)
                 cache(blank_tile)
             else:
                 blank_tile = blanktilecache[tiles[0]['data'][0].keys()[0]]
         else:
             blank_tile = None
     else:
         blank_tile = None
     return blank_tile
Beispiel #2
0
    def post(self, request):
        member_of_set_nodegroup_id = "63e49254-c444-11e9-afbe-a4d18cec433a"

        related_resource_id = request.POST.get("relatedresourceid")
        data = JSONDeserializer().deserialize(request.POST.get("data"))
        nodegroup_id = request.POST.get("nodegroupid", member_of_set_nodegroup_id)
        node_id = request.POST.get("node_id", member_of_set_nodegroup_id)
        transaction_id = request.POST.get("transactionid", None)

        try:
            with transaction.atomic():
                for datum in data:
                    action = datum["action"]
                    resource_id = datum["resourceid"] if "resourceid" in datum else None
                    tile_id = datum["tileid"] if "tileid" in datum else None

                    related_resource_template = {
                        "resourceId": "",
                        "ontologyProperty": "",
                        "resourceXresourceId": "",
                        "inverseOntologyProperty": "",
                    }

                    if tile_id is not None:
                        tile = Tile.objects.get(pk=tile_id)
                    else:
                        try:
                            tile = Tile.objects.get(resourceinstance=resource_id, nodegroup=nodegroup_id)
                        except ObjectDoesNotExist as e:
                            tile = Tile.get_blank_tile(nodeid=node_id, resourceid=resource_id)
                            tile.data[node_id] = []

                    list_of_rr_resources = [data["resourceId"] for data in tile.data[node_id]]

                    if related_resource_id not in list_of_rr_resources and action == "add":
                        related_resource_template["resourceId"] = related_resource_id
                        tile.data[node_id].append(related_resource_template)
                        tile.save(transaction_id=transaction_id)
                    elif related_resource_id in list_of_rr_resources and action == "remove":
                        rr_data = tile.data[node_id]
                        tile.data[node_id] = [rr for rr in rr_data if rr["resourceId"] != related_resource_id]
                        tile.save(transaction_id=transaction_id)

                return JSONResponse({"result": "success"})

        except Exception as e:
            logger.exception(e)
            response = {"result": "failed", "message": [_("Request Failed"), _("Unable to save")]}
            return JSONResponse(response, status=500)
Beispiel #3
0
 def get_blank_tile(source_data):
     if len(source_data) > 0:
         if source_data[0] != {}:
             key = str(source_data[0].keys()[0])
             if key not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(key)
                 cache(blank_tile)
             else:
                 blank_tile = blanktilecache[key]
         else:
             blank_tile = None
     else:
         blank_tile = None
     # return deepcopy(blank_tile)
     return cPickle.loads(cPickle.dumps(blank_tile, -1))
Beispiel #4
0
 def get_blank_tile(source_data):
     if len(source_data) > 0:
         if source_data[0] != {}:
             key = str(source_data[0].keys()[0])
             if key not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(key)
                 cache(blank_tile)
             else:
                 blank_tile = blanktilecache[key]
         else:
             blank_tile = None
     else:
         blank_tile = None
     # return deepcopy(blank_tile)
     return cPickle.loads(cPickle.dumps(blank_tile, -1))
Beispiel #5
0
 def get_blank_tile(sourcetilegroup):
     if len(sourcetilegroup[0]['data']) > 0:
         if sourcetilegroup[0]['data'][0] != {}:
             if sourcetilegroup[0]['data'][0].keys(
             )[0] not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(
                     tiles[0]['data'][0].keys()[0],
                     resourceid=resourceinstanceid)
                 cache(blank_tile)
             else:
                 blank_tile = blanktilecache[
                     tiles[0]['data'][0].keys()[0]]
         else:
             blank_tile = None
     else:
         blank_tile = None
     return blank_tile
Beispiel #6
0
 def get_blank_tile(self, sourcetilegroup, blanktilecache, tiles, resourceinstanceid):
     if len(sourcetilegroup[0]['data']) > 0:
         if sourcetilegroup[0]['data'][0] != {}:
             if sourcetilegroup[0]['data'][0].keys()[0] not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(tiles[0]['data'][0].keys()[0], resourceid=resourceinstanceid)
                 if blank_tile.data != {}:
                     for tile in blank_tile.tiles.values():
                         if isinstance(tile, Tile):
                             for key in tile.data.keys():
                                 blanktilecache[key] = blank_tile
             else:
                 blank_tile = blanktilecache[tiles[0]['data'][0].keys()[0]]
         else:
             blank_tile = None
     else:
         blank_tile = None
     return blank_tile
Beispiel #7
0
 def get_blank_tile(self, sourcetilegroup, blanktilecache, tiles, resourceinstanceid):
     if len(sourcetilegroup[0]["data"]) > 0:
         if sourcetilegroup[0]["data"][0] != {}:
             if list(sourcetilegroup[0]["data"][0].keys())[0] not in blanktilecache:
                 blank_tile = Tile.get_blank_tile(list(tiles[0]["data"][0].keys())[0], resourceid=resourceinstanceid)
                 if blank_tile.data != {}:
                     for tile in blank_tile.tiles:
                         if isinstance(tile, Tile):
                             for key in list(tile.data.keys()):
                                 blanktilecache[key] = blank_tile
             else:
                 blank_tile = blanktilecache[list(tiles[0]["data"][0].keys())[0]]
         else:
             blank_tile = None
     else:
         blank_tile = None
     return blank_tile