def get_session_context(login): context = cherrypy.session.get('session_context') # print "user login : %s" % login user = rwObjects.get_employee_by_login(login) # print "user attrs: %s" % user.get_attrs() for key in user.get_attrs(): context[key] = user.__dict__[key] context['company'] = rwObjects.get_company_by_id(user.comp_id).name context['company_uuid'] = rwObjects.get_company_by_id(user.comp_id).uuid context['company_prefix'] = rwObjects.get_company_by_id(user.comp_id).prefix context['groups'] = list() context['back_ref'] = "/" context['menu'] = "main" context['username'] = context['login'].split("@", 1)[0] context['groups'] = user.access_groups context['message_to_user'] = "" cherrypy.session['session_context'] = context return context
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)