code: def get_uids_strpositions(self):
          
          uids_positions = dict()
          layout = self.context.getLayout()
          layout = layout and layout or []
          # Map the analysis uids with their positions.
          occupied = []
          next_positions = {}
          for item in layout:
              uid = item.get("analysis_uid", "")
              slot = int(item["position"])
              occupied.append(slot)
              position = next_positions.get(slot, 1)
              str_position = "{:010}:{:010}".format(slot, position)
              next_positions[slot] = position + 1
              uids_positions[uid] = str_position
  
          # Fill empties
          last_slot = max(occupied) if occupied else 1
          empties = [num for num in range(1, last_slot) if num not in occupied]
          for empty_slot in empties:
              str_position = "{:010}:{:010}".format(empty_slot, 1)
              uid = "empty-{}".format(empty_slot)
              uids_positions[uid] = str_position
  
          return uids_positions
docs: Returns a dict with the positions of each analysis within the
          current worksheet in accordance with the current layout. The key of the
          dict is the uid of the analysis and the value is an string
          representation of the full position of the analysis within the list:
  
              {<analysis_uid>: '<slot_number>:<position_within_slot>',}
  
          :returns: a dictionary with the full position within the worksheet of
                    all analyses defined in the current layout.