예제 #1
0
    def post_login(self,userid,came_from=url('/')):
        """
        Redirect the user to the initially requested page on successful
        authentication or redirect her back to the login page if login failed.
        """        
        result=''
        if not userid:            
            result = "{success:false,msg:'session expired'}"
            return result

        u=User.by_user_name(to_unicode(userid))
        g=Group.by_group_name(to_unicode('adminGroup'))
        auth=AuthorizationService()
        auth.user=u
            
        session['username']=u.user_name
        session['user_firstname']=u.firstname
        session['has_adv_priv']=tg.config.get(constants.ADVANCED_PRIVILEGES)
        session['PAGEREFRESHINTERVAL']=tg.config.get(constants.PAGEREFRESHINTERVAL)
        session['TASKPANEREFRESH']=tg.config.get(constants.TASKPANEREFRESH)
        session['userid']=userid
        session['auth']=auth
        session['edition_string']=get_edition_string()
        session['version']=get_version()
        is_admin = u.has_group(g)
        session['is_admin']=is_admin
        session.save()

        TopCache().delete_usercache(auth)

        result = "{success:true}"
        return result
예제 #2
0
    def post_login(self,userid,came_from=url('/')):
        """
        Redirect the user to the initially requested page on successful
        authentication or redirect her back to the login page if login failed.
        """
        result=''
        if not userid:            
            result = "{success:false,msg:'session expired'}"
            return result

        u=User.by_user_name(to_unicode(userid))
        g=Group.by_group_name(to_unicode('adminGroup'))
        auth=AuthorizationService()
        auth.user=u
            
        session['username']=u.user_name
        session['user_firstname']=u.firstname
        session['has_adv_priv']=tg.config.get(constants.ADVANCED_PRIVILEGES)
        session['PAGEREFRESHINTERVAL']=tg.config.get(constants.PAGEREFRESHINTERVAL)
        session['TASKPANEREFRESH']=tg.config.get(constants.TASKPANEREFRESH)
        session['userid']=userid
        session['auth']=auth
        session['edition_string']=get_edition_string()
        session['version']=get_version()
        self.update_registerd_session()
        is_admin = u.has_group(g)
        session['is_admin']=is_admin
        session.save()
        TopCache().delete_usercache(auth)

        result = "{success:true}"
        return result
예제 #3
0
    def do_work(self, runtime_context, args=None, kw=None):
        self.task_manager = runtime_context.pop()
        self.curr_instance = datetime.utcnow()
        args = self.params
        recover = resume = False
        visible = False
        if kw:
            resume = kw.get('resume', False)
            recover = kw.get('recover', False)

        kw = self.kw_params
        self.quiet = (self.get_context_param('quiet') == True)

        if not self.quiet and resume == False and recover == False:
            self.task_started()

        try:
            try:
                task_result_running_instance = True
                if not args:
                    args = []
                if not kw:
                    kw = {}
                #build auth object
                auth = AuthorizationService()
                auth.email_address = ""
                user = User.by_user_name(self.user_name)
                auth.user = user
                if user is None:
                    u = User.by_user_name(u'admin')
                    auth.email_address = u.email_address
                    logger.info("User: "******" does not exist in CMS.")
                    raise Exception("User: "******" does not exist in CMS.")
                else:
                    auth.user = user
                    auth.user_name = user.user_name
                    auth.email_address = user.email_address

                TaskUtil.set_task_context(self.task_id)
                if recover != True and resume != True:
                    raw_result = self.exec_task(auth, self.context, *args,
                                                **kw)
                else:
                    runn = self.get_running_instance()
                    if runn:
                        self.curr_instance = runn.timestamp
                    else:
                        task_result = self.get_task_result_instance()
                        if isinstance(task_result.results, str):
                            task_result.results += "can not resume task. No running instance"
                        elif not task_result.results:
                            task_result.results = "can not resume task. No running instance"
                        task_result_running_instance = False

                    if task_result_running_instance:
                        if recover == True:
                            raw_result = self.recover_task(
                                auth, self.context, *args, **kw)
                        elif resume == True:
                            raw_result = self.resume_task(
                                auth, self.context, *args, **kw)
                if task_result_running_instance:
                    cancelled = False
                    results = raw_result
                    if isinstance(raw_result, dict):
                        if raw_result.get('status') == constants.TASK_CANCELED:
                            e = raw_result.get('msg') + "\n" + raw_result.get(
                                'results')
                            transaction.abort()
                            cancelled = True
                            if not self.quiet:
                                self.task_fail(e, auth, cancelled=True)
                        elif raw_result.get('status') == Task.SUCCEEDED:
                            results = raw_result.get('results')
                            visible = raw_result.get('visible', False)

                    else:
                        #get processed results
                        if raw_result is not None and self.processors is not None:
                            results = [
                                raw_result,
                            ]
                            for p in self.processors:
                                if issubclass(p, Processor):
                                    p().process_output(results)
                        else:
                            results = raw_result

                        if results is None:
                            desc_tuple = self.get_short_desc()
                            if desc_tuple is None:
                                results = 'Task Completed Successfully.'
                            else:
                                (short_desc, short_desc_params) = desc_tuple
                                desc = (short_desc) % short_desc_params
                                results = desc + ' Completed Successfully.'
                        #commit changes done by exec_task
                        transaction.commit()
            except Exception, e:
                #rollback any changes made in thread session
                logger.exception(to_str(e))
                transaction.abort()
                if not self.quiet:
                    self.task_fail(e, auth)
            else:
예제 #4
0
    def do_work(self, runtime_context, args = None, kw = None):
        self.task_manager = runtime_context.pop()
        self.curr_instance = datetime.utcnow()
        args = self.params
        recover = resume = False
        visible = False
        if kw:
            resume = kw.get('resume',False)
            recover= kw.get('recover',False)
        
        kw = self.kw_params
        self.quiet = (self.get_context_param('quiet') == True)

        if not self.quiet and resume==False and recover==False :
            self.task_started()

        try:
            try:
                task_result_running_instance = True
                if not args:
                    args = []
                if not kw:
                    kw = {}
                #build auth object
                auth = AuthorizationService()
                auth.email_address = ""
                user = User.by_user_name(self.user_name)
                auth.user = user
                if user is None:
                    u = User.by_user_name(u'admin')
                    auth.email_address = u.email_address
                    logger.info("User: "******" does not exist in CMS.")
                    raise Exception("User: "******" does not exist in CMS.")
                else:
                    auth.user = user
                    auth.user_name = user.user_name
                    auth.email_address = user.email_address

                TaskUtil.set_task_context(self.task_id)
                if recover != True and resume != True:
                    raw_result = self.exec_task(auth, self.context, *args, **kw)
                else:
                    runn = self.get_running_instance()
                    if runn:
                        self.curr_instance = runn.timestamp
                    else:
                        task_result = self.get_task_result_instance()
                        if isinstance(task_result.results, str):
                            task_result.results += "can not resume task. No running instance"
                        elif not task_result.results:
                            task_result.results = "can not resume task. No running instance"
                        task_result_running_instance = False

                    if task_result_running_instance:
                        if recover == True :
                            raw_result = self.recover_task(auth, self.context, *args, **kw)
                        elif resume == True:
                            raw_result = self.resume_task(auth, self.context, *args, **kw)
                if task_result_running_instance:
                    cancelled=False
                    results = raw_result
                    if isinstance(raw_result,dict):
                        if raw_result.get('status')==constants.TASK_CANCELED:
                            e=raw_result.get('msg')+"\n"+raw_result.get('results')
                            transaction.abort()
                            cancelled=True
                            if not self.quiet:
                                self.task_fail(e, auth, cancelled=True)
                        elif raw_result.get('status')==Task.SUCCEEDED:
                            results = raw_result.get('results')
                            visible = raw_result.get('visible',False)

                    else:
                        #get processed results
                        if raw_result is not None and self.processors is not None:
                            results = [raw_result,]
                            for p in self.processors:
                                if issubclass(p, Processor):
                                    p().process_output(results)
                        else:
                            results = raw_result

                        if results is None:
                            desc_tuple = self.get_short_desc()
                            if desc_tuple is None:
                                results = 'Task Completed Successfully.'
                            else:
                                (short_desc, short_desc_params) = desc_tuple
                                desc = (short_desc)%short_desc_params
                                results = desc+' Completed Successfully.'
                        #commit changes done by exec_task
                        transaction.commit()
            except Exception, e:
                #rollback any changes made in thread session
                logger.exception(to_str(e))
                transaction.abort()
                if not self.quiet:
                    self.task_fail(e, auth)
            else: