Пример #1
0
def configuracao(request, user):

    # O argumento 'user' é passado pelo decorador
    username = user['username']

    # Título do formulário
    title = 'Configurações'

    # Instancia a classe ConfiguracaoForm e passa como um contexto para
    # o template 'configuracao.html'
    config = ConfiguracaoForm(request.POST or None, request.FILES or None)

    context = {            
        'title': title,
        'form': config,
        'username': username,
        'user_ativo': 'user_ativo',     
    }

    if config.is_valid():
        # Permite fazer alguma operação entre a ação do usuário de
        # enviar as informações e a ação de salvá-las no banco de dados
        instance = config.save(commit=False)

        # Abre uma conexão com o banco de dados
        usuarios, db = clienteMongo()

        # Captura no objeto 'request' a imagem enviada no formulário 
        img_form = request.FILES.get('foto')

        # GridFS lida com a imagem (ou qualquer arquivo), convertendo
        # num formato aceito de MongoDB
        grid = GridFS(db, "usuarios")
        foto = grid.put(img_form)

        # Documento que será enviado para o banco de dados
        user = {'username': instance.username,
                'email': instance.email,
                'senha': hashSenha(instance.senha),
                'nome': instance.nome,
                'foto': foto,
        }

        # Captura o ID do cookie na máquina do usuário e insere essa string
        # em um ObjectId
        user_str = request.COOKIES.get('id')
        user_id = ObjectId(user_str)

        # O primeiro argumento busca o documento 
        # O segundo e o terceiro atualizam o documento
        usuarios.update_many({'_id': user_id}, {'$set':user}, upsert=True)

        return HttpResponseRedirect('timeline.html')


    return render(request, 'configuracao.html', context)
Пример #2
0
    def clean_email(self):
        # Abre uma conexão com o MongoDB
        usuarios, db = clienteMongo()

        # Devolve uma string ao invés do objeto que possui essa string
        email = self.cleaned_data.get('email')

        # Busca o email no banco de dados
        busca_email = usuarios.find_one({'email': email})

        if busca_email != None:
            raise forms.ValidationError("Email já cadastrado")
        return email
Пример #3
0
    def _wrapper(request, *args, **kwargs):

        # Captura o ID se houver um cookie
        user_str = request.COOKIES.get('id')

        if not user_str:
            return HttpResponseRedirect('localhost:8000')

        else:
            # Insere a string em um ObjectId
            user_id = ObjectId(user_str)

            # Abre uma conexão com o banco de dados
            usuarios, db = clienteMongo()

            # Busca o documento do usuário no banco de dados
            user = usuarios.find_one({'_id': user_id})

            if user:
                return func(request, user, *args, **kwargs)

            else:
                return HttpResponseRedirect('localhost:8000')
Пример #4
0
def home(request):

    # Captura o ID se houver um cookie
    user_str = request.COOKIES.get('id')
    
    # Insere a string em um ObjectId
    user_id = ObjectId(user_str)

    # Abre uma conexão com o banco de dados
    usuarios, db = clienteMongo()

    # Busca o documento do usuário no banco de dados
    user = usuarios.find_one({'_id': user_id})

    if user_str and user:

        return HttpResponseRedirect('timeline.html')

    else:

        # Título do formulário
        title = 'Registre-se!'

        # Instancia a classe RegistroForm e passa como um contexto para
        # o template 'home.html'
        regist = RegistroForm(request.POST or None)

        context = {            
            'title': title,
            'form': regist,
        }

        if regist.is_valid():

            # Abre uma conexão com o banco de dados
            usuarios, db = clienteMongo()

            # Permite fazer alguma operação entre a ação do usuário de
            # enviar as informações e a ação de salvá-las no banco de dados
            instance = regist.save(commit=False)

            # Recebe as infomações do fomulário
            user = {
                    'username': instance.username,
                    'email': instance.email,
                    'senha': hashSenha(instance.senha),
            }

            # Insere no banco de dados
            usuarios.insert_one(user)

            # Busca o documento do usuário no banco de dados
            user_id = usuarios.find_one({'email': instance.email})

            # Extrai o 'ObjectId' do usuário
            user_id = user_id['_id']

            # Extrai o valor do 'ObjectId' para uma 'string'
            user_str = str(user_id)

            # Cria um objeto para redirecionar a página
            response = HttpResponseRedirect('configuracao.html')

            max_age = 365 * 24 * 60 * 60

            expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")

            # Cria um cookie com o id do usuário
            response.set_cookie('id', user_str, max_age, expires)  

            return response

        return render(request, 'home.html', context)