<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_user(self, projects=None, tasks=None):
 """Create and return a new user :param projects: the projects for the user :type projects: list of :class:`jukeboxcore.djadapter.models.Project` :param tasks: the tasks for the user :type tasks: list of :class:`jukeboxcore.djadapter.models.Task` :returns: The created user or None :rtype: None | :class:`jukeboxcore.djadapter.models.User` :raises: None """

        projects = projects or []
        tasks = tasks or []
        dialog = UserCreatorDialog(projects=projects, tasks=tasks, parent=self)
        dialog.exec_()
        user = dialog.user
        if user:
            userdata = djitemdata.UserItemData(user)
            treemodel.TreeItem(userdata, self.users_model.root)
        return user