Skip to content

Instantly share code, notes, and snippets.

@Shankjbs571
Created July 17, 2023 06:09
Show Gist options
  • Save Shankjbs571/03920bdd8aafd5b42f61f715369454b3 to your computer and use it in GitHub Desktop.
Save Shankjbs571/03920bdd8aafd5b42f61f715369454b3 to your computer and use it in GitHub Desktop.
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