def profile_list(request): funcao = user(request) user_id = request.session['user_id'] #print("can_enter:"+str(not(Coordenador.objects.filter(pk=request.session['user_id']).exists()) or not(Administrador.objects.filter(pk=request.session['user_id']).exists()))) if not (Coordenador.objects.filter(pk=request.session['user_id']).exists() ) and not (Administrador.objects.filter( pk=request.session['user_id']).exists()) or not ( 'user_id' in request.session): context = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) users = Utilizador.objects.all().annotate( cargo=Value('Participante', CharField()), estado=Value('Pendente', CharField()), UO=Value('-', CharField()), no_enc=Value(0, IntegerField()), year=Value(0, IntegerField())) atual = datetime.now().year for u in users: if Coordenador.objects.filter(pk=u.idutilizador).exists(): u.cargo = "Coordenador" u.UO = UnidadeOrganica.objects.get(pk=Coordenador.objects.get( pk=u.idutilizador).unidade_organica_iduo.pk).sigla if u.validada == 2: u.estado = "Validado" u.year = year(u, atual) elif Colaborador.objects.filter(pk=u.idutilizador).exists(): u.cargo = "Colaborador" curso_id = Colaborador.objects.get(pk=u.pk).curso_idcurso.pk u.UO = UnidadeOrganica.objects.get(pk=Curso.objects.get( pk=curso_id).unidade_organica_iduo.pk).sigla if u.validada == 1: u.estado = "Validado" u.year = year(u, atual) elif ProfessorUniversitario.objects.filter(pk=u.idutilizador).exists(): u.cargo = "Docente Universitario" dep = ProfessorUniversitario.objects.get( pk=u.idutilizador).departamento_iddepartamento u.UO = UnidadeOrganica.objects.get( pk=dep.unidade_organica_iduo.pk).sigla if u.validada == 3: u.estado = "Validado" u.year = year(u, atual) elif Administrador.objects.filter(pk=u.pk).exists(): u.cargo = "Administrador" if u.validada == 4: u.estado = "Validado" u.year = year(u, atual) elif Participante.objects.filter(pk=u.pk).exists(): u.estado = "Validado" u.year = year(u, atual) #print(str(u.idutilizador)+" "+str(user_id)) u.no_enc = u.pk u.idutilizador = u.idutilizador if Coordenador.objects.filter(pk=user_id).exists(): me = UnidadeOrganica.objects.get(pk=Coordenador.objects.get( pk=user_id).unidade_organica_iduo.pk).sigla elif Administrador.objects.filter(pk=user_id).exists(): me = Administrador.objects.get(pk=user_id) me.sigla = None me_id = user_id campus = Campus.objects.all() uos = uo() #print(users) return render( request, "list_users.html", { 'atual': atual, "users": users, "funcao": funcao, "me": me, "me_id": me_id, "campus": campus, "uos": uos, 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request), 'colaboradores': Colaborador.objects.all(), 'docentes': ProfessorUniversitario.objects.all() })
def profile(request, id): id = id #print(id!=request.session['user_id'] and not(Administrador.objects.filter(pk=request.session['user_id']).exists())) if not (Administrador.objects.filter(pk=request.session['user_id']).exists( )) and not (Coordenador.objects.filter( pk=request.session['user_id']).exists()): context = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) name = Utilizador.objects.get(idutilizador=id).nome me = request.session['user_id'] form = ModifyForm() email = Utilizador.objects.get(idutilizador=id).email telefone = Utilizador.objects.get(idutilizador=id).telefone UO = False dep = False ano = False cursoname = False funcao = False if Administrador.objects.filter(utilizador_idutilizador=id).exists(): funcao = "administardor" elif ProfessorUniversitario.objects.filter( utilizador_idutilizador=id).exists(): funcao = "Docente Univesitario" depid = ProfessorUniversitario.objects.get( utilizador_idutilizador=id).departamento_iddepartamento dep = Departamento.objects.get(pk=depid.pk).nome UO = UnidadeOrganica.objects.get( pk=depid.unidade_organica_iduo.pk).sigla elif Coordenador.objects.filter(utilizador_idutilizador=id).exists(): funcao = "Coordenador" IDUO = Coordenador.objects.get(pk=id).unidade_organica_iduo UO = UnidadeOrganica.objects.get(pk=IDUO.pk).sigla elif Colaborador.objects.filter(utilizador_idutilizador=id).exists(): #ano = Utilizador.objects.get(pk=id).dia_aberto_ano.pk funcao = "Colaborador" curso = Colaborador.objects.get( utilizador_idutilizador=id).curso_idcurso cursoname = curso.nome UO = UnidadeOrganica.objects.get( pk=curso.unidade_organica_iduo.pk).sigla elif Participante.objects.filter(pk=id).exists(): funcao = "Participante" return render( request, 'profile.html', { "form": form, 'nome': name, 'UO': UO, 'email': email, "ano": ano, 'telefone': telefone, 'funcao': funcao, 'ano': ano, 'curso': cursoname, 'dep': dep, "me": me, 'id': id, 'func': user(request), 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) })
def login_request(request): if 'user_id' in request.session: context = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) if request.method == 'POST': form = AuthenticationForm(request.POST) tentatives = int(request.POST['tentatives']) #print(request.POST['email']) #print(request.POST['password']) if request.POST['email'] != '' and request.POST['password'] != '': #print(signing.dumps(request.POST['password'])) if Utilizador.objects.filter( email=request.POST['email'], password=hashlib.sha256(request.POST['password'].encode( 'utf-8')).hexdigest()).exists(): username = Utilizador.objects.get(email=request.POST['email']) if username.validada != int(5): messages.success(request, f"Bem-vindo {username.nome}") user = Utilizador.objects.get(email=request.POST['email']) request.session['user_id'] = user.idutilizador request.session['type'] = user.validada request.session['id_encrypt'] = user.pk #print(request.session['user_id']) r = redirect('blog:blog-home') if 'check' in request.POST and request.POST['check'] == '1': Utilizador.objects.filter( pk=request.session['user_id']).update( remember_me=encrypt( request.session['user_id'])) r.set_cookie('cookie_id', encrypt(request.session['user_id']), 7 * 24 * 60 * 60) return r else: messages.error(request, f"Sua conta ainda não está validada") else: tentatives -= 1 if tentatives < 0: tentatives = 5 messages.error( request, f"Username e/ou palavra-passe incorreto(s). Tem mais {tentatives} tentativas" ) else: tentatives -= 1 if tentatives < 0: tentatives = 5 messages.error( request, f"Username e/ou palavra-passe incorreto(s). Tem mais {tentatives} tentativas" ) else: tentatives = 5 form = AuthenticationForm() if tentatives < 0: tentatives = 5 print(tentatives) return render(request=request, template_name="login.html", context={ "form": form, "tentatives": tentatives, 'p': 2 })
def modify_user(request, id): #print(id!=request.session['user_id'] or not(Administrador.objects.filter(pk=request.session['user_id']).exists())) if id != request.session['user_id'] and not (Administrador.objects.filter( pk=request.session['user_id']).exists()): context = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) name = Utilizador.objects.get(idutilizador=id).nome me = request.session['user_id'] if request.method == 'POST': form = ModifyForm(request.POST) print(request.POST['name'] != "") print(request.POST['email'] != "") print(not Utilizador.objects.filter( email=request.POST['email']).exists()) print(not Utilizador.objects.filter( telefone=request.POST['telefone']).exists()) print(request.POST['telefone'] != "") print(bool(validateEmail(request.POST['email']))) if (request.POST['name'] != "") and (request.POST['email'] != "") and ( not (Utilizador.objects.filter( email=request.POST['email']).exists()) or Utilizador.objects.get(pk=id).email == request.POST['email'] ) and (request.POST['telefone'] != "") and (validateEmail( request.POST['email'])): t = Utilizador.objects.get(pk=id) t.nome = request.POST['name'] t.email = request.POST['email'] t.telefone = request.POST['telefone'] if t.validada == 5: t.validada = 0 t.save() print("1") noti_views.new_noti( request, t.pk, 'Alteração de dados no perfil', 'Foram feitas alterações nos dados do seu perfil. Por favor consulte as alterações.' ) messages.success(request, f"Utilizador alterado com sucesso") if id == request.session['user_id']: return redirect('blog:blog-home') return redirect('profile_list') else: error = False error3 = False error5 = False data = request.POST telefone = data['telefone'] funcao = data['funcao'] email = data['email'] curso = False dep = False UO = False ano = False if 'ano' in data: ano = data['ano'] if 'curso' in data: curso = data['curso'] if 'dep' in data: dep = data['dep'] if 'UO' in data: UO = data['UO'] if request.POST['telefone'] == "": error3 = 'Preencha este campo.' if Utilizador.objects.filter(email=request.POST['email']).exists( ) and Utilizador.objects.get( email=request.POST['email']).idutilizador != id: error = "Email ja existe" return render( request, 'profile_modify.html', { 'email': email, 'UO': UO, 'telefone': telefone, 'funcao': funcao, 'curso': curso, 'dep': dep, "form": form, 'error4': error3, "error1": error, 'me': me, 'id': id, 'nome': name, 'ano': ano, 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request), 'error5': error5 }) else: form = ModifyForm() email = Utilizador.objects.get(idutilizador=id).email telefone = Utilizador.objects.get(idutilizador=id).telefone UO = False dep = False ano = False curso = False funcao = False atual = datetime.now().year u = Utilizador.objects.get(pk=id) if Administrador.objects.filter(utilizador_idutilizador=id).exists(): funcao = "Administardor" ano = year(u, atual) elif ProfessorUniversitario.objects.filter( utilizador_idutilizador=id).exists(): funcao = "Docente Univesitario" depid = ProfessorUniversitario.objects.get( utilizador_idutilizador=id).departamento_iddepartamento dep = Departamento.objects.get(pk=depid.pk).nome UO = depid.unidade_organica_iduo.sigla ano = year(u, atual) elif Coordenador.objects.filter(utilizador_idutilizador=id).exists(): funcao = "Coordenador" IDUO = Coordenador.objects.get(pk=id).unidade_organica_iduo UO = UnidadeOrganica.objects.get(pk=IDUO.pk).sigla ano = year(u, atual) elif Colaborador.objects.filter(utilizador_idutilizador=id).exists(): funcao = "Colaborador" cursoid = Colaborador.objects.get( utilizador_idutilizador=id).curso_idcurso UO = Curso.objects.get(pk=cursoid.pk).unidade_organica_iduo.sigla ano = year(u, atual) elif Participante.objects.filter(utilizador_idutilizador=id).exists(): funcao = "Participante" ano = year(u, atual) return render( request, 'profile_modify.html', { "form": form, 'nome': name, 'UO': UO, 'email': email, "ano": ano, 'telefone': telefone, 'funcao': funcao, 'ano': ano, 'curso': curso, 'dep': dep, "me": me, 'id': id, 'func': user(request), 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) })
def register(request): me = None #print("enter"+str(not('user_id' in request.session) and not('type' in request.session))) if 'user_id' in request.session and request.session['type'] != 4: context = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) elif ('user_id' in request.session) and ('type' in request.session): if request.session['type'] != 4: ontext = { 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request) } return render(request, "not_for-u.html", context) if 'user_id' in request.session: me = request.session['user_id'] UOs = UnidadeOrganica.objects.all() deps = dep() cursos = curso() if request.method == 'POST': form = UserRegisterForm(request.POST) data = request.POST form.is_valid() #print(data) #print(len(data['name'])>0) #print(len(data['email'])>0) #print(len(data['password1'])>0) #print(validateEmail(data['email'])) #print(type_user(data,None)) #print(request.POST['password1']==request.POST['password2']) #print(not Utilizador.objects.filter(email=request.POST['email']).exists()) #print(not Utilizador.objects.filter(telefone=request.POST['telefone']).exists()) #print(password_check(request.POST['password1'])) print(request.POST) print(vefy(data)) if data['funcao'] != '3' and data['funcao'] != '1': mutable = data._mutable data._mutable = True data['curso'] = '0' data['departamento'] = '0' data._mutable = mutable if vefy(data) and ( len(data['name']) > 0 and len(data['name']) < 255 ) and (len(data['email']) > 0 and len(data['email']) < 255) and ( len(data['password1']) > 0 and len(data['password1']) < 255) and validateEmail( data['email']) and ( type_user(data, None, request) is True or type_user(data, None, request) == 4) and request.POST['password1'] == request.POST[ 'password2'] and not Utilizador.objects.filter( email=request.POST['email']).exists( ) and password_check( request.POST['password1']) is True: form.save() user_id = Utilizador.objects.get( email=request.POST['email']).idutilizador type_user(data, user_id, request) if 'user_id' in request.session: validacoes(request, 1, user_id) messages.success(request, f'Registo efetuado com Sucesso!') return redirect('blog:blog-home') else: error = False error3 = False error2 = False error1 = False error5 = True error6 = True error7 = True if request.POST['email'] == "": error = 'Preencha este campo.' if request.POST['telefone'] == "": error3 = 'Preencha este campo.' if request.POST['password1'] == "": error1 = 'Preencha este campo.' if request.POST['password2'] == "": error2 = 'Preencha este campo.' if Utilizador.objects.filter(email=request.POST['email']).exists(): error = "Email ja existe" elif not validateEmail(data['email']): error = "Formato do email errado." if request.POST['password1'] != request.POST['password2']: error2 = "Passwords nao coincidem" if password_check(request.POST['password1']) != True: error1 = password_check(request.POST['password1']) if data['UO'] == '0' and (data['funcao'] == '3' or data['funcao'] == '2' or data['funcao'] == '1'): error5 = 'Preencha este campo' if data['curso'] == '0' and data['funcao'] == '1' or not ( vefy(data)): error6 = 'Campo mal preenchido/ Não preenchido' if data['departamento'] == '0' and data['funcao'] == '3' or not ( vefy(data)): error7 = 'Campo mal preenchido/ Não preenchido' return render( request, 'register.html', { 'me': me, "func": user(request), 'form': form, 'cursos': cursos, 'UOs': UOs, 'deps': deps, 'error1': error, 'error2': error1, 'error3': error2, 'error4': error3, 'error5': type_user(data, None, request), 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request), 'p': 1, 'error5': error5, 'error6': error6, 'error7': error7 }) form = UserRegisterForm() return render( request, 'register.html', { 'form': form, 'UOs': UOs, 'deps': deps, 'cursos': cursos, "func": user(request), 'me': me, 'i': len(noti_not_checked(request)), 'not_checked': noti_not_checked(request), 'p': 1, 'error5': True, 'error6': True, 'error7': True })