Exemplo n.º 1
0
def get_demo_and_prepare_for_classification(session, tags, account):
    demo_ktree = rwObjects.get_demo_ktree(session)
    demo_all = rwObjects.KnowledgeTree.ktree_return_childs(session,demo_ktree.id)
    already_tags = dict()
    for leaf in demo_all:
        if leaf.id != demo_ktree.id:
            already_tags[leaf.name] = leaf.uuid

    created = already_tags.keys()

    for key in tags.keys():
        if key not in created:
            # Добавляем новый узел
            print "Создаем демо раздел Дерева Знаний: %s" % key
            params = {'parent_id': demo_ktree.id, 'name': key, 'description': key,
                      'tags': 'demo',
                      'expert': account.login, 'type': 'custom'}
            try:
                status, obj = rwObjects.create_new_object(session, "knowledge_tree", params, account)
            except Exception as e:
                raise e
            else:
                already_tags[key] = obj.uuid
                print status[0]
                print status[1]
        else:
            print "Такой раздел уже существует в демо."

    for key in tags.keys():
        for msg in tags[key]:
            rwObjects.link_objects(session, already_tags[key], msg)
Exemplo n.º 2
0
    def create_new(self, **kwargs):
        data = cherrypy.request.params
        session_context = cherrypy.session.get('session_context')
        url = session_context['back_ref']
        print "Данные запроса: %s" % data

        session = rwObjects.Session()
        # Получаем по uuid создателя кейса
        try:
            source = rwObjects.get_by_uuid(session_context['uuid'])[0]
        except Exception as e:
            return ShowError("""Case.create_new. Операция: rwObjects.get_by_uuid(). Ошибка : %s""" % str(e))
        else:
            pass

        # Создаем новый Case и проводим тренировку классификатора расстояний
        try:
            status, obj = rwObjects.create_new_object(session, "cases", data, source)
        except Exception as e:
            return ShowError("""Ktree.create_new. Операция: rwObjects.create_new_object(session, 'knowledge_tree',
                             params, source). Ошибка : %s""" % str(e))
        else:
            uuid = str(obj.uuid)
            rwLearn.train_neighbors(session, rwObjects.default_neighbors_classifier)
            print status

        # Линкуем новый Case с объектом из которого он был создан
        try:
            status = rwObjects.link_objects(session,obj.uuid,data['do_object_uuid'])
        except Exception as e:
            return ShowError("""Case.create_new. Операция: rwObjects.link_objects(session,obj.uuid,
                    data['do_object_uuid']). Ошибка : %s""" % str(e))
        else:
            print status[0]
            print status[1]
            if not status[0]:
                return ShowError(str(status[0]) + status[1])

        # Линкуем новый Case с узлами Навигатора Знаний коорые были в связаны с объектм родителем
        do_obj = rwObjects.get_by_uuid(data['do_object_uuid'])[0]
        print do_obj.NAME
        print do_obj.__dict__['custom_category']
        for cat in do_obj.__dict__['custom_category']:
            print cat.name
            try:
                status = rwObjects.link_objects(session,cat.uuid,obj.uuid)
            except Exception as e:
                return ShowError("""Case.create_new. Операция: rwObjects.link_objects(session,obj.uuid,cat).
                            Ошибка : %s""" % str(e))
            else:
                print status[0]
                print status[1]
                if not status[0]:
                    return ShowError(str(status[0]) + status[1])

        session.close()
        G.reload()
        raise cherrypy.HTTPRedirect("/object/%s/addlink" % uuid)
Exemplo n.º 3
0
    def create_new(self, **kwargs):
        data = cherrypy.request.params
        session_context = cherrypy.session.get('session_context')
        employee_uuid = session_context.pop('employee_uuid')
        print employee_uuid
        print "Данные из запроса : "
        print data
        print "\nКонтекст :"
        print session_context

        params = {}

        for p in data.keys():
            params[p] = data[p]

        """
        Проверка параметров тут.
        """

        """ Извлекаем создателя и Создаем новый объект """
        source = rwObjects.get_by_uuid(session_context['uuid'])[0]
        session = rwObjects.Session()

        try:
            print "Создаем новый аккаунт."
            status, obj = rwObjects.create_new_object(session, "accounts", params, source)
        except Exception as e:
            print e
        else:
            print status

        """
        Если возвращен объект, выполняем бизнес логику.
        Если None, значит ошибка.
        """
        if obj:
            """
            Бизнес логика.
            Связываем новый аккаунт с его пользователем.
            Пользователь передается в session_context['employee_uuid']
            """
            print "Делаем линкование с пользователем при создании аккаунта."
            rwObjects.link_objects(session, employee_uuid, obj.uuid)

        session.close()

        cherrypy.session['session_context'] = session_context
        print "Переадресация на  ", session_context['back_ref']
        raise cherrypy.HTTPRedirect(session_context['back_ref'])
Exemplo n.º 4
0
    def create_new(self, **kwargs):
        data = cherrypy.request.params
        session_context = cherrypy.session.get('session_context')
        url = session_context['back_ref']

        print "Данные из запроса : "
        print data
        print "\nКонтекст :"
        print session_context
        print "Переадресация на show_object... ", url

        session = rwObjects.Session()
        try:
            rwObjects.KnowledgeTree.ktree_return_childs(session, data['parent_id'])
        except Exception as e:
            return ShowError("""Ktree.create_new. Операция: rwObjects.KnowledgeTree.ktree_return_childs(session,
            data['parent_id']). Ошибка : %s""" % str(e))
        else:
            pass

        source = rwObjects.get_by_uuid(session_context['uuid'])[0]

        """
        Создаем новый объект класса KnowledgeTree
        Для каждого нового типа необходимо добавить в  create_new_object условия.
        Проверка параметров происходит там же, если чего-то не хватает то ловим Exception.
        """

        try:
            status, obj = rwObjects.create_new_object(session, "knowledge_tree", data, source)
        except Exception as e:
            return ShowError("""Ktree.create_new. Операция: rwObjects.create_new_object(session, 'knowledge_tree',
                             params, source). Ошибка : %s""" % str(e))
        else:
            print status

        session.close()
        raise cherrypy.HTTPRedirect(url)
Exemplo n.º 5
0
    def create_new(self, **kwargs):
        data = cherrypy.request.params
        session_context = cherrypy.session.get('session_context')
        url = session_context['back_ref']

        print "Данные запроса: %s" % data

        params = dict()
        try:
            params['login'] = data['login']
            params['company_prefix'] = session_context['company_prefix']
            params['name'] = data['name']
            params['password'] = data['password']
            params['surname'] = data['surname']
            params['comp_id'] = session_context['comp_id']
            params['groups'] = data['groups']
        except KeyError as e:
            return ShowError("Функция Employee.create_new(). Ошибка KeyError: %s" % str(e))
        else:
            pass

        # Проверяем что этот параметр список, иначе делаем из одного значения список
        if not isinstance(params['groups'], list):
            params['groups'] = [params['groups']]

        """
        Проверка параметров тут.
        """
        for k in params.keys():
            if params[k] == "" or not params[k]:
                print "Параметр %s незаполнен." % k
                return ShowError("Параметр %s незаполнен." % k)

        source = rwObjects.get_by_uuid(session_context['uuid'])[0]
        print "Данные из запроса : "
        print params
        print "\nКонтекст :"
        print session_context
        print "Переадресация на show_object... ", url
        print source

        session = rwObjects.Session()

        try:
            status, obj = rwObjects.create_new_object(session, "employees", params, source)
        except Exception as e:
            return ShowError("Ошибка создания объекта. " + str(e))
        else:
            pass

        if not status[0]:
            return ShowError(str(status[0]) + str(status[1]))

        """
        Если возвращен объект, проводим привязку согласно бизнес логики.
        Если None, значит ошибка.
        """
        if obj:
            """
            Бизнес логика.
            Связываем нового пользователя с Компанией.
            """
            company = rwObjects.get_company_by_id(params['comp_id'])
            ref = rwObjects.Reference(source_uuid=company.uuid,
                                      source_type=company.__tablename__,
                                      source_id=company.id,
                                      target_uuid=obj.uuid,
                                      target_type=obj.__tablename__,
                                      target_id=obj.id,
                                      link=0)
            ref.create(session)

        session.close()
        raise cherrypy.HTTPRedirect(url)