Exemplo n.º 1
0
    def is_deleted(self):
        username = self.username
        if username and isinstance(username, str):
            username = self.username.decode('utf-8')
            
        data = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails, 
                                                   ModelsDadosFuncdetails.username==self.username.decode('utf-8'))
        L_field = []

        for field in data:
            if field.deleted == True:
                L_field.append(True)

        if len(L_field) == data.count():
            return True
        return False
Exemplo n.º 2
0
    def get_FuncDetailsByField(fields={}, case_sensitive=False, if_empty_return_all=True):
        L_username = []
        L_retorno = []
        
        expressions = []
        expression_name = []
        campos = []
        
        data = []
        data_username = []
        
        for item in fields.items():
            field, value = item[0], item[1]
            
            if value:
                if field == 'name':
                    if not isinstance(value, unicode):
                        value = unicode(value, 'utf-8')
                    expression_name += [ModelsDadosFuncdetails.value.like(value,case_sensitive=case_sensitive)]
                    expression_name += [ModelsDadosFuncdetails.username.like(value,case_sensitive=case_sensitive)]
                else:
                    if isinstance(value, list):
                        for val in value:
                            expressions += [ModelsDadosFuncdetails.value.like(unicode(val, 'utf-8'),case_sensitive=case_sensitive)]
                    else:
                        expressions += [ModelsDadosFuncdetails.value.like(unicode(value, 'utf-8'),case_sensitive=case_sensitive)]
                    campos += [unicode(field, 'utf-8')]
        
        if campos and expressions:
            data = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails,
                                                       ModelsConfgMyvindula.name.is_in(campos), 
                                                       ModelsDadosFuncdetails.field_id==ModelsConfgMyvindula.id,
                                                       ModelsDadosFuncdetails.deleted==False,
                                                       Or(*expressions),)

        if expression_name:
            data_username = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails,
                                                                ModelsConfgMyvindula.name.is_in([u'name', u'nickname']),
                                                                ModelsDadosFuncdetails.field_id==ModelsConfgMyvindula.id,
                                                                ModelsDadosFuncdetails.deleted==False,
                                                                Or(*expression_name),)
            
        if (data and data.count() > 0) or (data_username and data_username.count() > 0):
            L_username_aux = []
            L_username_aux2 = []
            
            for item in data:
                if not item.username in L_username_aux:
                    L_username_aux.append(item.username)
            
            for item in data_username:
                if not item.username in L_username_aux2:
                    L_username_aux2.append(item.username)
                    
            #verifica se a busca foi feita tanto por nome quando pelos outros filtros
            if expressions and expression_name:
                if L_username_aux and L_username_aux2:
                    for i in L_username_aux:
                        if (i in L_username_aux2) and (i not in L_username):
                            L_username.append(i)
                            
            #verifica se a busca foi feita apenas por filtro
            elif expressions:
                L_username = L_username_aux
                
            #verifica se a busca foi feita apenas por nome e username
            else:
                L_username = L_username_aux2
                
        elif if_empty_return_all:
            #Pegando os usuarios com distinct
            select = Select(ModelsDadosFuncdetails.username,
                            ModelsDadosFuncdetails.deleted==False,
                            distinct=True)
            
            data = ModelsDadosFuncdetails().store.execute(select)
            for item in data:
                L_username.append(item[0])

        key = generate_cache_key('FuncDetails:get_FuncDetailsByField',
                                 L_retorno=str(L_username),
                                 fields=str(fields))
        sorted_user_list = get_redis_cache(key)
        if not sorted_user_list:
            for user in L_username:
                L_retorno.append(FuncDetails(user))
            
            sorted_user_list = sorted(L_retorno, key=por_name)
            try:
                set_redis_cache(key,'FuncDetails:get_FuncDetailsByField:keys',sorted_user_list,600)
            except:
                sorted_user_list = [i.username for i in L_retorno]
                set_redis_cache(key,'FuncDetails:get_FuncDetailsByField:keys',sorted_user_list,600)

        return sorted_user_list
Exemplo n.º 3
0
    def get_AllFuncUsernameList(filter=None,b_size=None,b_start=None,sorted_by=por_name,reverse=False,search_all_fields=True):
        #Nao usar o b_size, b_start
        #TODO: Consertar a forma que esta sendo ordenada a lista
        #TODO: Melhorar, ainda nao está bom, tempo melhorado de 11 para 2 sec
        key = generate_cache_key(domain='FuncDetails:get_AllFuncUsernameList', 
                                 filter=filter,
                                 b_size=b_size,
                                 b_start=b_start,
                                 sorted_by=str(sorted_by),
                                 search_all_fields=str(search_all_fields))
        
        L_username = get_redis_cache(key)

        if not L_username:
            L_username = []
            L_retorno = []
            
            if b_size != None and b_start != None:
                b_start = int(b_start)
                b_size = b_start + int(b_size)
            else:
                b_start = None
                b_size = None
            
            if filter:
                #Ajustando filtro para o caso de busca
                #por mais de uma palavra Ex: '%palavra1%palavra2%'
                
                filter = filter.split(' ')
                filter = '%'.join(filter)
                
                data = []
                
                if search_all_fields:
                    data = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails, 
                                                               ModelsDadosFuncdetails.deleted==False,
                                                               ModelsDadosFuncdetails.value.like('%'+filter+'%',case_sensitive=False))
                else:
                    #Faz a busca só pelos campos de NOME, EMAIL E APELIDO!
                    fields = ModelsConfgMyvindula().store.find(ModelsConfgMyvindula, 
                                                               ModelsConfgMyvindula.deleted==False,
                                                               ModelsConfgMyvindula.name.is_in([u'nickname', u'name', u'email']))
                    id_fields = []
                    for field in fields:
                        id_fields.append(field.id) 
                    if id_fields:
                        data = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails, 
                                                                   ModelsDadosFuncdetails.deleted==False,
                                                                   ModelsDadosFuncdetails.field_id.is_in(id_fields),
                                                                   ModelsDadosFuncdetails.value.like('%'+filter+'%',case_sensitive=False))
                if data and data.count() > 0:
                    for item in data:
                        if not item.username in L_username:
                            L_username.append(item.username)
            else:
                #Pegando os usuarios com distinct
                select = Select(ModelsDadosFuncdetails.username,
                                ModelsDadosFuncdetails.deleted==False,
                                distinct=True)
                data = ModelsDadosFuncdetails().store.execute(select)
                for item in data:
                    L_username.append(item[0])

            
            for user in L_username[b_start:b_size]:
                L_retorno.append(FuncDetails(user))
            
            #O reverse é utilizado para quando se trata de um campo de DATA
            L_username  = [i.username for i in sorted(L_retorno, key=sorted_by, reverse=reverse)]
            set_redis_cache(key,'FuncDetails:get_AllFuncUsernameList:keys',L_username,1800)
        
        return L_username
Exemplo n.º 4
0
 def get_AllFuncFakeList(filter=None):
     L_username = []
     data = ModelsDadosFuncdetails().store.find(ModelsDadosFuncdetails)
     if filter:
         data = data.find(ModelsDadosFuncdetails.value.like('%'+filter+'%',case_sensitive=False))
     return range(data.count())