<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_asset_model(self, project, releasetype):
 """Create and return a new tree model that represents assets til descriptors The tree will include assettypes, assets, tasks and descriptors of the given releaetype. :param releasetype: the releasetype for the model :type releasetype: :data:`djadapter.RELEASETYPES` :param project: the project of the assets :type project: :class:`djadapter.models.Project` :returns: the created tree model :rtype: :class:`jukeboxcore.gui.treemodel.TreeModel` :raises: None """

        rootdata = treemodel.ListItemData(['Name'])
        rootitem = treemodel.TreeItem(rootdata)
        for atype in project.atype_set.all():
            atypedata = djitemdata.AtypeItemData(atype)
            atypeitem = treemodel.TreeItem(atypedata, rootitem)
            for asset in atype.asset_set.filter(project=project):
                assetdata = djitemdata.AssetItemData(asset)
                assetitem = treemodel.TreeItem(assetdata, atypeitem)
                for task in asset.tasks.all():
                    taskdata = djitemdata.TaskItemData(task)
                    taskitem = treemodel.TreeItem(taskdata, assetitem)
                    taskfiles = task.taskfile_set.filter(releasetype=releasetype, typ=self._filetype)
                    # get all descriptor values as a list. disctinct eliminates duplicates.
                    for d in taskfiles.order_by('descriptor').values_list('descriptor', flat=True).distinct():
                        ddata = treemodel.ListItemData([d,])
                        treemodel.TreeItem(ddata, taskitem)
        assetmodel = treemodel.TreeModel(rootitem)
        return assetmodel