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