'Create the item of the given category and block id in split and old mongo, add it to the optional
parent. The parent category is only needed because old mongo requires it for the id.
Note: if draft = False, it will create the draft and then publish it; so, it will overwrite any
existing draft for both the new item and the parent'

def _create_item(self, category, name, data, metadata, parent_category, parent_name, draft=True, split=True):

    location = self.old_course_key.make_usage_key(category, name)
    self.draft_mongo.create_item(self.user_id, location.course_key, location.block_type, block_id=location.block_id, definition_data=data, metadata=metadata, runtime=self.runtime)
    if (not draft):
        self.draft_mongo.publish(location, self.user_id)
    if isinstance(data, basestring):
        fields = {'data': data}
    else:
        fields = data.copy()
    fields.update(metadata)
    if parent_name:
        parent_location = self.old_course_key.make_usage_key(parent_category, parent_name)
        parent = self.draft_mongo.get_item(parent_location)
        parent.children.append(location)
        self.draft_mongo.update_item(parent, self.user_id)
        if (not draft):
            self.draft_mongo.publish(parent_location, self.user_id)
        if split:
            self.split_mongo.create_child(self.user_id, BlockUsageLocator(course_key=self.split_course_key, block_type=parent_category, block_id=parent_name), category, block_id=name, fields=fields)
    elif split:
        self.split_mongo.create_item(self.user_id, self.split_course_key, category, block_id=name, fields=fields)
