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)
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)
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'])
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)
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)