

def start_expr(self, user, template_name, hackathon_name=None):
    '\n        A user uses a template to start a experiment under a hackathon\n        :param hackathon_name:\n        :param template_name:\n        :param user_id:\n        :return:\n        '
    self.log.debug(('try to start experiment for hackathon %s using template %s' % (hackathon_name, template_name)))
    hackathon = self.__verify_hackathon(hackathon_name)
    template = self.__verify_template(hackathon, template_name)
    if user:
        expr = self.__check_expr_status(user, hackathon, template)
        if expr:
            return self.__report_expr_status(expr)
    return self.__start_new_expr(hackathon, template, user)

dataset/ETHPy150Open msopentechcn/open-hackathon/open-hackathon-server/src/hackathon/expr/expr_mgr.py ExprManager.start_expr/original