Created
July 17, 2023 06:09
-
-
Save Shankjbs571/03920bdd8aafd5b42f61f715369454b3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from dlw.views import * | |
import dlw.views.globals as g | |
import base64 | |
from Crypto.Cipher import AES | |
from Crypto.Util.Padding import pad,unpad | |
from django.contrib.auth.hashers import make_password, check_password | |
import datetime | |
''' ---------Start Login New Code -------''' | |
def encrypt(raw): | |
raw = pad(raw.encode(),16) | |
key = 'CRISNEWDELHIMUGU' | |
cipher = AES.new(key.encode('utf-8'), AES.MODE_ECB) | |
return base64.b64encode(cipher.encrypt(raw)) | |
def decrypt(enc): | |
enc = base64.b64decode(enc) | |
key = 'CRISNEWDELHIMUGU' | |
cipher = AES.new(key.encode('utf-8'), AES.MODE_ECB) | |
return unpad(cipher.decrypt(enc),16) | |
def get_client_ip(request): | |
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') | |
if x_forwarded_for: | |
ip = x_forwarded_for.split(',')[0] | |
else: | |
ip = request.META.get('REMOTE_ADDR') | |
return ip | |
def loginnew(request): | |
global rolelist | |
if request.method=='POST': | |
submit=request.POST.get('submit') | |
tod=date.today() | |
dat=datetime.datetime.now() | |
ip=get_client_ip(request) | |
if submit=='Login': | |
u_id = request.POST.get('user_id') | |
username=request.POST.get('user_id') | |
pwd=request.POST.get('password') | |
decrypted = decrypt(pwd) | |
pwd=decrypted.decode("utf-8", "ignore") | |
password=pwd | |
if User.objects.filter(username=username).exists(): | |
if empmast.objects.filter(empno=username,locked_date=tod).exists(): | |
messages.error(request,"Today, your account has been locked, please try tomorrow...") | |
else: | |
obj = list(User.objects.filter(username=username).values('password')) | |
check=check_password(password,obj[0]['password']) | |
if check: | |
user = authenticate(username=u_id, password=pwd) | |
#print(len(request.session['user_id'])) | |
request.session['user_id'] = u_id | |
if request.session.session_key is None: | |
login_attempts.objects.create(userid=username,ip=ip,attempt='T',last_login=dat) | |
cou=login_attempts.objects.filter(userid=username).order_by('-id')[:3] | |
login_attempts.objects.filter(userid=username).exclude(id__in=cou).delete() | |
passval=list(password_management.objects.filter(userid=username).values('updated_date').order_by('-id')[:1]) | |
if len(passval)==0: | |
password_management.objects.create(userid=username,updated_date=tod,password=make_password(password)) | |
passval=list(password_management.objects.filter(userid=username).values('updated_date').order_by('-id')[:1]) | |
diffdat=(tod-passval[0]['updated_date']).days | |
if diffdat >1800: | |
return render(request,'updatepassword.html') | |
else: | |
login(request, user) | |
g.usermaster=empmast.objects.filter(empno=user).first() | |
request.session["shopid"] = (g.usermaster).shopno | |
# print("userid-----------------",request.session['user_id']) | |
request.session['shop_inspection'] ='FALSE' | |
python_obj = { | |
"empno": (g.usermaster).empno , | |
"empname":(g.usermaster).empname , | |
"read": (g.usermaster).op_read , | |
"create": (g.usermaster).op_create, | |
"delete": (g.usermaster).op_delete , | |
"update": (g.usermaster).op_update, | |
"role": (g.usermaster).role , | |
"designation": (g.usermaster).desig_longdesc , | |
} | |
request.session["usermaster"]=python_obj | |
if (g.usermaster).role: | |
rolelist=(g.usermaster).role.split(",") | |
# nav=custommenu() | |
request.session["nav"] = custommenu() | |
return redirect('home') | |
else: | |
messages.error(request,"Role not assign") | |
else: | |
encrypted = encrypt(password) | |
password=encrypted.decode("utf-8", "ignore") | |
request.session['pass']=password | |
return render(request,'sessionexists.html') | |
else: | |
login_attempts.objects.create(userid=username,ip=ip,attempt='F',last_login=dat) | |
cou=login_attempts.objects.filter(userid=username).order_by('-id')[:3] | |
login_attempts.objects.filter(userid=username).exclude(id__in=cou).delete() | |
cou=login_attempts.objects.filter(userid=username).values('attempt').order_by('-id')[:3] | |
cou=list(cou) | |
if len(cou)==1: | |
length=3-len(cou) | |
messages.error(request,"Enter valid Username and Password. You have "+str(length)+" more attempts to login") | |
elif len(cou)==2: | |
if cou[1]['attempt']=='T': | |
length=2 | |
messages.error(request,"Enter valid Username and Password. You have "+str(length)+" more attempts to login") | |
else: | |
length=3-len(cou) | |
messages.error(request,"Enter valid Username and Password. You have "+str(length)+" more attempts to login") | |
elif len(cou)==3: | |
if cou[1]['attempt']=='T': | |
length=2 | |
messages.error(request,"Enter valid Username and Password. You have "+str(length)+" more attempts to login") | |
elif cou[1]['attempt']=='F': | |
if cou[2]['attempt']=='T': | |
length=1 | |
messages.error(request,"Enter valid Username and Password. You have "+str(length)+" more attempts to login") | |
else: | |
shed_user.objects.filter(shed=username).update(locked_date=tod) | |
messages.error(request,"You have entered wrong Password for 3 Times and your account has been locked!") | |
# messages.error(request,"Invalid username or password") | |
else: | |
# pass | |
login_attempts.objects.create(userid=username,ip=ip,attempt='F',last_login=dat) | |
messages.error(request,"Enter valid Username and Password!") | |
# except: | |
# messages.error(request,'Some Error Occured') | |
# return render(request,'errorpage.html') | |
elif submit=="Update Password": | |
oldpass=request.POST.get('oldpass') | |
decrypted = decrypt(oldpass) | |
oldpass=decrypted.decode("utf-8", "ignore") | |
newpass=request.POST.get('newpass') | |
decrypted = decrypt(newpass) | |
newpass=decrypted.decode("utf-8", "ignore") | |
username=request.session['user_id'] | |
obj = User.objects.filter(username=username).values('password') | |
check=check_password(oldpass,obj[0]['password']) | |
if check: | |
r=0 | |
checpass=password_management.objects.filter(userid=username).values('password').order_by('id')[:3] | |
for i in checpass: | |
if check_password(newpass,i['password']): | |
r=1 | |
if r==1: | |
messages.error(request,"The Password should not match last 3 passwords,so kindly try with different password!!!") | |
return render(request,'updatepassword.html') | |
else: | |
password_management.objects.create(updated_date=tod,userid=username,password=make_password(newpass)) | |
manage=password_management.objects.filter(userid=username).order_by('-id')[:3] | |
password_management.objects.filter(userid=username).exclude(id__in=manage).delete() | |
User.objects.filter(username=username).update(password=make_password(newpass)) | |
user = authenticate(username=username, password=newpass) | |
login(request, user) | |
g.usermaster=empmast.objects.filter(empno=user).first() | |
request.session["shopid"] = (g.usermaster).shopno | |
request.session['user_id'] = username | |
request.session['shop_inspection'] ='FALSE' | |
python_obj = { | |
"empno": (g.usermaster).empno , | |
"empname":(g.usermaster).empname , | |
"read": (g.usermaster).op_read , | |
"create": (g.usermaster).op_create, | |
"delete": (g.usermaster).op_delete , | |
"update": (g.usermaster).op_update, | |
"role": (g.usermaster).role , | |
"designation": (g.usermaster).desig_longdesc , | |
} | |
request.session["usermaster"]=python_obj | |
if (g.usermaster).role: | |
rolelist=(g.usermaster).role.split(",") | |
# nav=custommenu() | |
request.session["nav"] = custommenu() | |
return redirect('home') | |
else: | |
messages.error(request,"Role not assign") | |
else: | |
messages.error(request,"You have entered wrong old password, please enter correct password!!!") | |
return render(request,'updatepassword.html') | |
elif submit=="OK": | |
username=request.session['user_id'] | |
decrypted = decrypt(request.session['pass']) | |
pwd=decrypted.decode("utf-8", "ignore") | |
login_attempts.objects.create(userid=username,ip=ip,attempt='T',last_login=dat) | |
cou=login_attempts.objects.filter(userid=username).order_by('-id')[:3] | |
login_attempts.objects.filter(userid=username).exclude(id__in=cou).delete() | |
passval=list(password_management.objects.filter(userid=username).values('updated_date').order_by('-id')[:1]) | |
if len(passval)==0: | |
password_management.objects.create(userid=username,updated_date=tod,password=make_password(pwd)) | |
passval=list(password_management.objects.filter(userid=username).values('updated_date').order_by('-id')[:1]) | |
diffdat=(tod-passval[0]['updated_date']).days | |
# print(diffdat) | |
if diffdat >1800: | |
return render(request,'updatepassword.html') | |
else: | |
# print("OKOKOKOKK") | |
user = authenticate(username=username, password=pwd) | |
login(request, user) | |
g.usermaster=empmast.objects.filter(empno=user).first() | |
request.session["shopid"] = (g.usermaster).shopno | |
request.session['user_id'] = username | |
request.session['shop_inspection'] ='FALSE' | |
python_obj = { | |
"empno": (g.usermaster).empno , | |
"empname":(g.usermaster).empname , | |
"read": (g.usermaster).op_read , | |
"create": (g.usermaster).op_create, | |
"delete": (g.usermaster).op_delete , | |
"update": (g.usermaster).op_update, | |
"role": (g.usermaster).role , | |
"designation": (g.usermaster).desig_longdesc , | |
} | |
request.session["usermaster"]=python_obj | |
if (g.usermaster).role: | |
rolelist=(g.usermaster).role.split(",") | |
# nav=custommenu() | |
request.session["nav"] = custommenu() | |
return redirect('home') | |
else: | |
messages.error(request,"Role not assign") | |
elif submit=="Cancel": | |
del request.session['shed_name'] | |
del request.session['shed_zone'] | |
return redirect('login_page_shed') | |
#global usermaster | |
form = AuthenticationForm() | |
return render(request, 'MAIN/login.html', {"form": form}) | |
def custommenu(): | |
menustr="<ul class='navbar nav'>" | |
role=rolelist[0] | |
navmenu=custom_menu.objects.filter(role=role).all().order_by('menu') | |
for menu in navmenu: | |
if menu.perent_id == 0 : | |
menustr+="<li class='navbar-item dropdown'> <a class='navbar-link dropdown-toggle mainme' data-toggle='dropdown' data-target='dropdown_target' href="+menu.url+">" +menu.menu+"</a>" | |
pid=menu.m_id | |
substr=submenu(navmenu,pid) | |
menustr+=substr | |
menustr+="</li>" | |
menustr+="<li><a class='btn btn-dark ' onclick='foo()' style='color:#fff'><i class='glyphicon glyphicon-log-in'></i> Logout </a> </li></ul>" | |
return menustr | |
def submenu(menubar,sid): | |
role=rolelist[0] | |
menustr="" | |
sb=custom_menu.objects.filter(role=role,perent_id=sid).all().order_by('m_id') | |
if len(sb)>0: | |
menustr="<ul class='dropdown-menu' aria-labelledby='dropdown_target'>" | |
for menu in menubar: | |
if menu.perent_id == sid : | |
menustr+="<li class='dropdown-submenu'><a class='dropdown-item' href="+str(menu.url)+">" + menu.menu+"</a>" | |
pid=menu.m_id | |
substr=submenu(menubar,pid) | |
menustr+=substr | |
menustr+="</li>" | |
menustr+="</ul>" | |
return menustr | |
@login_required | |
def home(request): | |
cuser = request.user | |
obj = list(empmast.objects.filter(empno=cuser).values('role')) | |
usermaster=empmast.objects.filter(empno=cuser).first() | |
if usermaster.role == "SSEPCO" or usermaster.role == "planning_dycme" or usermaster.role == "PLG/SSE/GEN" or usermaster.role == "RATE_FIXCER" or usermaster.role == "planning_awm" or usermaster.role == "wm_tms&sms" or usermaster.role == "dycee_loco" or usermaster.role == "wm_lfs&pipe" or usermaster.role == "WM/LAS" or usermaster.role == "WM_ENG-III"or usermaster.role == "DYCME_PLANT" or usermaster.role == "AWM_TAS" or usermaster.role == "hts_ssegen" or usermaster.role == "eng-et_ssegen" or usermaster.role == "wm_elect_II" or usermaster.role == "ADE_ELECT"or usermaster.role == "Dy_CDE_I" or usermaster.role == "tms_ssegen" or usermaster.role == "las_ssegen" or usermaster.role == "lfs_ssegen" or usermaster.role == "tas_ssegen"or usermaster.role == "sms_ssegen" or usermaster.role == "paint_ssegen'" or usermaster.role == "lts_ssegen" : | |
user="A" | |
else: | |
user="O" | |
h24=hwm2.objects.filter(file_with_empno=usermaster.empno).exclude(flag=7).values('hwm2id') | |
# h5=tyo.objects.filter(file_with_empno=usermaster.empno).exclude(flag=6).values('tyoid') | |
h14=hwm14.objects.filter(file_with_empno=usermaster.empno).exclude(flag=10).values('hwm14id') | |
sch=schedule_order.objects.filter(file_with_empno=usermaster.empno).exclude(flag=5).values('schid') | |
dpo=dpoloco.objects.filter(fp_emp_id=usermaster.empno).exclude(status=2).values('dpoid') | |
hw={'h24':len(h24),'h14':len(h14),'sch':len(sch),'dpo':len(dpo)} | |
context={ | |
'usermaster':usermaster, | |
'ip':get_client_ip(request), | |
'nav':nav, | |
'hw':hw, | |
'user':user, | |
} | |
# context={ | |
# 'usermaster':(g.usermaster), | |
# 'ip':get_client_ip(request), | |
# 'nav':nav, | |
# } | |
print(obj) | |
if obj: | |
role = obj[0]['role'] | |
print(role) | |
if role == 'las_shopinspection' : | |
return redirect('las_inspection') | |
elif role == 'las_inc_inspection' : | |
return redirect('las_inspector_nomination') | |
elif role == 'las_ssegen' : | |
return redirect('las_fitment') | |
elif role == 'WM_LAS' : | |
return redirect('las_fitment_nomination') | |
elif role == 'SSE_SIG' : | |
return redirect('dlw_works') | |
elif role == 'AQAM' : | |
return redirect('dlw_workinspection') | |
elif role == 'tms_ssegen' : | |
return redirect('tmsFitment_dashboard') | |
elif role == 'tms_shopinspection' : | |
return redirect('tmsInspection_dashboard') | |
elif role == 'tas_shopinspection' : | |
return redirect('tas_inspection') | |
elif role == 'tas_ssegen' : | |
return redirect('tas_fitment') | |
elif role == 'CQAM' : | |
return redirect('ridashboard') | |
return render(request,'MAIN/home.html',context) | |
''' ---------End Login New Code -------''' | |
@login_required | |
@role_required(urlpass='/RoleGeneration/') | |
def RoleGen(request): | |
cuser=request.user | |
usermaster=empmast.objects.filter(empno=cuser).first() | |
if request.method=='POST': | |
rolename = request.POST.get('rolename') | |
role=roles.objects.filter(role=rolename) | |
if len(role)==0: | |
roles.objects.create(role=rolename,parent=rolename) | |
messages.success(request, 'Successfully Created!') | |
else: | |
messages.error(request,"already exists this role name") | |
context = { | |
'ip':get_client_ip(request), | |
'nav':nav, | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/RoleGen.html',context) | |
@login_required | |
@role_required(urlpass='/RoleDelete/') | |
def RoleDel(request): | |
cuser=request.user | |
usermaster=empmast.objects.filter(empno=cuser).first() | |
rolelist=usermaster.role.split(", ") | |
role = roles.objects.all().values('role').order_by('role').distinct() | |
users = [] | |
if request.method=="POST": | |
rolename = request.POST.get('roldel') | |
print(rolename) | |
if rolename: | |
perlist = custom_menu.objects.filter(role=rolename).values('url').distinct() | |
viewper = viewUrlPermission.objects.filter(urlname__in=perlist).values('rolespermission','id') | |
print('b',viewper) | |
for i in range(len(viewper)): | |
tempper = viewper[i]['rolespermission'] | |
print('c',tempper) | |
restemp = tempper.split(",") | |
print(restemp) | |
restemp.remove(rolename) | |
final = ",".join(restemp) | |
toupdate=viewUrlPermission.objects.get(id=viewper[i]['id']) | |
toupdate.rolespermission = final | |
toupdate.save() | |
custom_menu.objects.all().filter(role=rolename).delete() | |
roles.objects.all().filter(role=rolename).delete() | |
userremove = empmast.objects.all().values('empno').filter(role=rolename) | |
for i in range(len(userremove)): | |
# users.append(userremove[i]['empno']) | |
empmast.objects.filter(empno=userremove[i]['empno']).update(role=None,parent=None) | |
# User.objects.filter(username__in=users).delete() | |
messages.success(request, 'Successfully Deleted!') | |
else: | |
messages.error(request,"Error") | |
context = { | |
'ip':get_client_ip(request), | |
'nav':nav, | |
'subnav':subnav, | |
'roles' : role, | |
} | |
return render(request,'MAIN/RoleDel.html',context) | |
@login_required | |
@role_required(urlpass='/update_permission/') | |
def update_perm(request): | |
users=list(User.objects.all().values('username')) | |
emp=[] | |
for i in range(len(users)): | |
emp.append(users[i]['username']) | |
availableroles=roles.objects.all().values('parent').distinct() | |
if request.method == "POST": | |
updateuser=request.POST.get('emp_id') | |
sublevelrole=request.POST.getlist('role') | |
read=request.POST.get('read') | |
create=request.POST.get('create') | |
update=request.POST.get('update') | |
delete=request.POST.get('delete') | |
if read=='on': | |
read=True | |
else: | |
read=False | |
if create=='on': | |
create=True | |
else: | |
create=False | |
if update=='on': | |
update=True | |
else: | |
update=False | |
if delete=='on': | |
delete=True | |
else: | |
delete=False | |
role=request.POST.get('role') | |
sublevelrolelist= ",".join(sublevelrole) | |
if updateuser and sublevelrole: | |
usermasterupdate=empmast.objects.filter(empno=updateuser).first() | |
usermasterupdate.role=sublevelrolelist | |
usermasterupdate.parent=role | |
usermasterupdate.op_read=read | |
usermasterupdate.op_create=create | |
usermasterupdate.op_update=update | |
usermasterupdate.op_delete=delete | |
usermasterupdate.save() | |
messages.success(request, 'Successfully Updated!') | |
return redirect('update_perm') | |
else: | |
messages.error(request,"Error!") | |
return redirect('update_perm') | |
context={ | |
'users':emp, | |
'nav':nav, | |
'usermaster':(g.usermaster), | |
'ip':get_client_ip(request), | |
'roles':availableroles, | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/update_perm.html',context) | |
@login_required | |
@role_required(urlpass='/createuser/') | |
def adduser(request): | |
empno=[] | |
emp=empmast.objects.filter(role__isnull=True).values('empno','empname') | |
for i in range(len(emp)): | |
if emp[i]['empno']!=None: | |
r=emp[i]['empno'] | |
empno.append(r) | |
availableroles=roles.objects.all().values('parent').distinct() | |
if request.method == "POST": | |
emp_id=request.POST.get('emp_id') | |
email=request.POST.get('email') | |
role=request.POST.get('role') | |
read=request.POST.get('read') | |
create=request.POST.get('create') | |
update=request.POST.get('update') | |
delete=request.POST.get('delete') | |
if read=='on': | |
read=True | |
else: | |
read=False | |
if create=='on': | |
create=True | |
else: | |
create=False | |
if update=='on': | |
update=True | |
else: | |
update=False | |
if delete=='on': | |
delete=True | |
else: | |
delete=False | |
sublevelrole=request.POST.getlist('sublevel') | |
sublevelrolelist= ", ".join(sublevelrole) | |
password="dlw@123" | |
if "Superuser" in sublevelrole and emp_id and role and sublevelrole: | |
employee=empmast.objects.filter(empno=emp_id).first() | |
employee.role=sublevelrolelist | |
employee.parent=role | |
employee.op_read=read | |
employee.op_create=create | |
employee.op_update=update | |
employee.op_delete=delete | |
newuser = User.objects.create_user(username=emp_id, password=password,email=email) | |
employee.save() | |
newuser.is_staff= True | |
newuser.is_superuser=True | |
newuser.save() | |
messages.success(request, 'Successfully Created!') | |
return redirect('create') | |
elif "Superuser" not in sublevelrole and emp_id and role and sublevelrole: | |
employee=empmast.objects.filter(empno=emp_id).first() | |
employee.role=sublevelrolelist | |
employee.parent=role | |
employee.op_read=read | |
employee.op_create=create | |
employee.op_update=update | |
employee.op_delete=delete | |
newuser = User.objects.create_user(username=emp_id, password=password,email=email) | |
employee.save() | |
newuser.is_staff= True | |
newuser.is_superuser=False | |
newuser.save() | |
messages.success(request, 'Successfully Created!') | |
return redirect('adduser') | |
else: | |
messages.error(request, 'Error, Try Again!') | |
context={ | |
'nav':nav, | |
'usermaster':(g.usermaster), | |
'emp':emp, | |
'empno':empno, | |
'ip':get_client_ip(request), | |
'roles':availableroles, | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/adduser.html',context) | |
@login_required | |
@role_required(urlpass='/delete_user/') | |
def delete_user(request): | |
cuser=request.user | |
usermaster=empmast.objects.filter(empno=cuser).first() | |
rolelist=usermaster.role.split(", ") | |
users=User.objects.all() | |
if not users: | |
messages.success(request, 'No User Exist!') | |
elif request.method == "POST": | |
deleteuser=request.POST.get('emp_id') | |
delete=User.objects.filter(username=deleteuser).first() | |
if not delete: | |
messages.error(request,"Error, No user selected!") | |
return redirect('delete_user') | |
usermasterupdate=empmast.objects.filter(empno=delete.username).first() | |
usermasterupdate.role=None | |
usermasterupdate.parent=None | |
delete.is_active=False | |
delete.save() | |
usermasterupdate.save() | |
messages.success(request, 'Successfully Deleted!') | |
return redirect('delete_user') | |
context={ | |
'users':users, | |
'nav':nav, | |
'usermaster':usermaster, | |
'ip':get_client_ip(request), | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/delete_user.html',context) | |
def forgetpassword(request): | |
global key | |
today=datetime.datetime.now().strftime("%Y-%m-%d") | |
todaydmy=datetime.datetime.now().strftime("%d-%m-%Y") | |
OTP=generateOTP() | |
if request.method == "POST": | |
emp=request.POST.get('emp_id') | |
key=emp | |
regemp=empmast.objects.filter(empno=emp).first() | |
if regemp: | |
fg=fg_pass.objects.filter(empno=emp).first() | |
if fg: | |
if str(fg.valid_date)==str(today): | |
messages.info(request,'Already OTP sent (E-mail&Mobile No ) valid for '+todaydmy+'!') | |
return redirect('forgetOTPpassword') | |
else: | |
try: | |
fg_pass.objects.filter(empno=emp).update(otp=OTP,valid_date=today) | |
sms(regemp.contactno,OTP+" OTP is for Reset password EMP-id :"+emp +" valid for "+todaydmy+".") | |
email('[email protected]', 'cris@1234', "Subject: Password Reset \n\n Dear Sir, "+regemp.email,OTP+" OTP is for Reset password EMP-id :"+emp +" valid for "+todaydmy+". ") | |
messages.info(request, 'OTP sent (E-mail&Mobile No ) valid for'+todaydmy+'!') | |
print('asbc succcess') | |
except: | |
print("sending mail and SMS problem") | |
return redirect('forgetOTPpassword') | |
else: | |
try: | |
fg_pass.objects.create(empno=regemp.empno,name=regemp.empname,phone=regemp.contactno,email=regemp.email,otp=OTP,valid_date=today) | |
sms(regemp.contactno,OTP+" OTP is for Reset password EMP-id :"+emp +" valid for one Day .") | |
email('[email protected]', 'cris@1234', "Subject: Password Reset \n\n Dear Sir, "+regemp.email,OTP+" OTP is for Reset password EMP-id :"+emp +" valid for "+todaydmy+". ") | |
messages.info(request, 'OTP sent (E-mail&Mobile No ) valid for '+todaydmy+'!') | |
print('asbc') | |
except: | |
print("sending mail and SMS problem") | |
return redirect('forgetOTPpassword') | |
else: | |
messages.info(request, 'Not valid Id!') | |
context={ | |
'nav':nav, | |
'usermaster':(g.usermaster), | |
'ip':get_client_ip(request), | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/forgetpassword.html',context) | |
def forgetOTPpassword(request): | |
cuser=request.user | |
today=datetime.datetime.now().strftime("%Y-%m-%d") | |
try: | |
print('emp',key) | |
except: | |
return redirect('forgetpassword') | |
if request.method == "POST": | |
otp=request.POST.get('valueotp') | |
password=request.POST.get('password') | |
conpassword=request.POST.get('conpassword') | |
fg=fg_pass.objects.filter(empno=key).first() | |
forgetuser=User.objects.filter(username=key).first() | |
if fg: | |
if str(fg.otp)==str(otp): | |
if forgetuser and password==conpassword: | |
forgetuser.set_password(password) | |
forgetuser.save() | |
messages.info(request, 'Successfully Changed Password!') | |
return redirect('/') | |
else: | |
messages.info(request, 'Password does not match !') | |
return redirect('forgetOTPpassword') | |
else: | |
messages.info(request, 'OTP does not Valid !') | |
return redirect('forgetOTPpassword') | |
else: | |
messages.info(request, 'Not valid Id!') | |
context={ | |
'nav':nav, | |
'usermaster':(g.usermaster), | |
'ip':get_client_ip(request), | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/forgetotppassword.html',context) | |
# function to generate OTP | |
def generateOTP() : | |
# Declare a digits variable | |
# which stores all digits | |
digits = "0123456789" | |
OTP = "" | |
# length of password can be chaged | |
# by changing value in range | |
for i in range(4) : | |
OTP += digits[math.floor(random.random() * 10)] | |
return OTP | |
@login_required | |
@role_required(urlpass='/activateuser/') | |
def Activate_user(request): | |
cuser=request.user | |
rolelist=roles.objects.all() | |
empno=[] | |
users=User.objects.filter(is_active = False).values('username') | |
for i in range(len(users)): | |
if users[i]['username']!=None: | |
r=users[i]['username'] | |
empno.append(r) | |
if request.method == "POST": | |
empid=request.POST.get('emp_id') | |
role=request.POST.get('role') | |
activate=User.objects.filter(username=empid).first() | |
if not activate: | |
messages.error(request,"Error, No user selected!") | |
return redirect('activateuser') | |
usermasterupdate=empmast.objects.filter(empno=activate.username).first() | |
usermasterupdate.role=role | |
usermasterupdate.parent=role | |
activate.password='pbkdf2_sha256$180000$SPOtnlXbtbQo$jStD9tj+M4iIqQAT0e5swzTOczG9gTxHE4XuUkaO65g=' | |
activate.is_active=True | |
activate.save() | |
usermasterupdate.save() | |
messages.success(request, 'Successfully Activate!') | |
return redirect('activateuser') | |
context={ | |
'users':empno, | |
'rolelist':rolelist, | |
'nav':nav, | |
'usermaster':(g.usermaster), | |
'ip':get_client_ip(request), | |
'subnav':subnav, | |
} | |
return render(request,'MAIN/activate_user.html',context) | |
def custommenuandurl(request): | |
role=roles.objects.values('role').order_by('role') | |
file = open('dlw_integrate/urls.py','r') | |
try: | |
url=file.readlines() | |
url_alllist=['#'] | |
for i in range(len(url)): | |
if 'path' in url[i] and '#' not in url[i]: | |
urlpath=url[i].split(',')[0] | |
if 'ajax' not in url[i]: | |
xyz=urlpath.split("'") | |
if len(xyz)==3: | |
if '<' in xyz[1]: | |
url_alllist.append((xyz[1].split('<'))[0]) | |
else: | |
url_alllist.append(xyz[1]) | |
finally: | |
file.close() | |
context={ | |
'ip':get_client_ip(request), | |
'roles':role, | |
'url_alllist':url_alllist, | |
} | |
if request.method == 'POST': | |
submit=request.POST.get('submit') | |
prev_role=request.POST.get('user_role') | |
if submit == 'add_role': | |
txt_menu_id=request.POST.get('txt_menu_id') | |
txt_menu_name=request.POST.get('txt_menu_name') | |
txt_url=request.POST.get('txt_url') | |
if txt_url!='#': | |
txt_url="/"+str(txt_url) | |
txt_parent_id=request.POST.get('txt_parent_id') | |
try: | |
if txt_url == '#': | |
custom_menu.objects.create(m_id=txt_menu_id,menu=txt_menu_name,url=txt_url,perent_id=txt_parent_id,role=prev_role) | |
messages.success(request,"Successfully Added") | |
elif custom_menu.objects.filter(url=txt_url,role=prev_role).exists() : | |
messages.info(request,"Url already Linked with these Role") | |
else: | |
custom_menu.objects.create(m_id=txt_menu_id,menu=txt_menu_name,url=txt_url,perent_id=txt_parent_id,role=prev_role) | |
if viewUrlPermission.objects.filter(urlname=txt_url).exists(): | |
url_per=list(viewUrlPermission.objects.filter(urlname=txt_url).values('id')) | |
for i in range(len(url_per)): | |
url_per1=list(viewUrlPermission.objects.filter(id=url_per[0]['id']).values('rolespermission')) | |
role_exists=(url_per1[0]['rolespermission']).split(',') | |
if prev_role not in role_exists: | |
url_per1=url_per1[0]['rolespermission']+','+prev_role | |
viewUrlPermission.objects.filter(id=url_per[0]['id']).update(rolespermission=url_per1) | |
else: | |
viewUrlPermission.objects.create(rolespermission=prev_role,urlname=txt_url,navitem=txt_menu_name) | |
messages.success(request,"Successfully Added") | |
except: | |
messages.error(request,"Some Error Occured") | |
if submit == 'delete_role': | |
txt_delete_id=request.POST.get('txt_delete_id') | |
del_m_id=list(custom_menu.objects.filter(id=txt_delete_id).values('m_id')) | |
try: | |
if custom_menu.objects.filter(role=prev_role,perent_id=del_m_id[0]['m_id']).exists(): | |
messages.info(request,"Can't Delete, Since it is Parent") | |
else: | |
custom_menu.objects.filter(id=txt_delete_id).delete() | |
messages.success(request,"Successfully Deleted") | |
except: | |
messages.error(request,"Some Error Occured") | |
if submit == 'edit_role': | |
txt_menu_id=request.POST.get('txt_menu_id1') | |
txt_menu_name=request.POST.get('txt_menu_name1') | |
txt_url=request.POST.get('txt_url1') | |
if txt_url!='#': | |
txt_url="/"+str(txt_url) | |
txt_parent_id=request.POST.get('txt_parent_id1') | |
txt_edit_id=request.POST.get('txt_edit_id') | |
print(txt_edit_id) | |
try: | |
custom_menu.objects.filter(id=txt_edit_id).update(m_id=txt_menu_id,menu=txt_menu_name,url=txt_url,perent_id=txt_parent_id,role=prev_role) | |
messages.success(request,"Successfully Edited") | |
except: | |
messages.error(request,"Some Error Occured") | |
p_id=[{'p_id':0,'p_name':'Base'}] | |
m_id=[] | |
url_list = list(custom_menu.objects.filter(role=prev_role).values('id','m_id','menu','url','perent_id','role').order_by('m_id').distinct()) | |
if len(url_list)>0: | |
m_id1=[] | |
for i in range(len(url_list)): | |
if url_list[i]['url'] == '#': | |
p_id.append({'p_id':url_list[i]['m_id'],'p_name':url_list[i]['menu']}) | |
m_id1.append(url_list[i]['m_id']) | |
for x in range(1,m_id1[-1]+2): | |
if x not in m_id1: | |
m_id.append({'m_id':x}) | |
else: | |
m_id=[{'m_id':1}] | |
context={ | |
'ip':get_client_ip(request), | |
'roles':role, | |
'prev_role':prev_role, | |
'chk':1, | |
'url_list':url_list, | |
'parent_id':p_id, | |
'm_id':m_id, | |
'p_id':p_id, | |
'url_alllist':url_alllist, | |
} | |
return render(request,'MAIN/custommenu.html',context) | |
def checkrole(request): | |
empno=list(empmast.objects.filter(empno__isnull=False).values('empno')) | |
empno=list(map( lambda x:x['empno'],empno)) | |
emp='' | |
context={ | |
'ip':get_client_ip(request), | |
'empno':empno, | |
'chk':0, | |
'emp':emp, | |
} | |
if request.method=='POST': | |
try: | |
emp=request.POST.get('empno') | |
empno1=list(empmast.objects.filter(empno=emp).values()) | |
if len(empno1)>0: | |
emp=emp | |
messages.success(request, 'Details Found') | |
else: | |
emp='' | |
messages.info(request, 'Details Not Found') | |
context={ | |
'ip':get_client_ip(request), | |
'empno':empno, | |
'empno1':empno1, | |
'chk':1, | |
'emp':emp, | |
} | |
except: | |
messages.error(request, 'Some Error Occured') | |
return render(request,'MAIN/checkrole.html',context) | |
def login_post(request, name): | |
data = json.loads(name) | |
name = data['user'] | |
pwd = data['pwd'] | |
token = pwd[0:32] | |
pwd = pwd[32:len(pwd)] | |
name = decrypt_login(bytes(name, 'utf-8'), token) | |
pwd = decrypt_login(bytes(pwd, 'utf-8'), token) | |
u_id = name.decode('utf-8') | |
pwd = pwd.decode('utf-8') | |
global rolelist | |
user = authenticate(username=u_id, password=pwd) | |
if user is not None: | |
login(request, user) | |
g.usermaster=empmast.objects.filter(empno=user).first() | |
request.session["shopid"] = (g.usermaster).shopno | |
request.session['user_id'] = u_id | |
request.session['shop_inspection'] ='FALSE' | |
#print(len(request.session['user_id'])) | |
python_obj = { | |
"empno": (g.usermaster).empno , | |
"empname":(g.usermaster).empname , | |
"read": (g.usermaster).op_read , | |
"create": (g.usermaster).op_create, | |
"delete": (g.usermaster).op_delete , | |
"update": (g.usermaster).op_update, | |
"role": (g.usermaster).role , | |
"designation": (g.usermaster).desig_longdesc , | |
} | |
request.session["usermaster"]=python_obj | |
if (g.usermaster).role: | |
rolelist=(g.usermaster).role.split(",") | |
# nav=custommenu() | |
request.session["nav"] = custommenu() | |
return redirect('home') | |
else: | |
messages.error(request,"Role not assign") | |
else: | |
messages.error(request,"Invalid username or password") | |
form = AuthenticationForm() | |
return render(request, 'MAIN/loginnew.html', {"form": form}) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment