Files
CyberPanel/userManagment/views.py

422 lines
14 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render,redirect
from django.http import HttpResponse
from loginSystem.views import loadLoginPage
from loginSystem.models import Administrator
import json
from plogical import hashPassword
from plogical import CyberCPLogFileWriter as logging
# Create your views here.
def loadUserHome(request):
try:
val = request.session['userID']
try:
admin = Administrator.objects.get(pk=val)
return render(request, 'userManagment/index.html',{"type":admin.type})
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)
def viewProfile(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
AdminData = {}
AdminData['userName'] = admin.userName
AdminData['firstName'] = admin.firstName
AdminData['lastName'] = admin.lastName
AdminData['userAccountsLimit'] = admin.initUserAccountsLimit
AdminData['websitesLimit'] = admin.initWebsitesLimit
AdminData['email'] = admin.email
AdminData['typeNumeric'] = admin.type
if admin.type == 1:
AdminData['type'] = "root"
elif admin.type == 2:
AdminData['type'] = "Reseller"
else:
AdminData['type'] = "User"
return render(request, 'userManagment/userProfile.html',AdminData)
except KeyError:
return redirect(loadLoginPage)
def createUser(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
if admin.type == 3:
return HttpResponse("You don't have enough priviliges to access this page.")
try:
adminType = admin.type
return render(request, 'userManagment/createUser.html',{"adminType":adminType})
except BaseException,msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("Look for errors in CyberCP Main Log File")
except KeyError:
return redirect(loadLoginPage)
def submitUserCreation(request):
try:
val = request.session['userID']
try:
currentAdmin = Administrator.objects.get(pk=val)
childUsers = Administrator.objects.filter(owner=currentAdmin.pk).count()
2017-10-24 19:16:36 +05:00
if currentAdmin.type == 1:
pass
else:
if currentAdmin.initWebsitesLimit == 0:
pass
2017-10-24 19:16:36 +05:00
elif currentAdmin.initUserAccountsLimit == childUsers:
2017-10-24 19:16:36 +05:00
data_ret = {'createStatus': 0,
'error_message': "Reached Maximum User Creation Limit"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
else:
pass
2017-10-24 19:16:36 +05:00
if request.method == 'POST':
data = json.loads(request.body)
firstName = data['firstName']
lastName = data['lastName']
email = data['email']
userName = data['userName']
password = data['password']
password = hashPassword.hash_password(password)
accountType = data['accountType']
if accountType == "Admin":
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=1,
userName=userName,
password=password,
initWebsitesLimit=0,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
elif accountType == "Normal User":
2017-10-24 19:16:36 +05:00
websitesLimit = data['websitesLimit']
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=3,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
else:
websitesLimit = data['websitesLimit']
userAccountsLimit = data['userAccountsLimit']
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=2,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
initUserAccountsLimit=userAccountsLimit,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
except BaseException, msg:
data_ret = {'createStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {'createStatus': 0, 'error_message': "Not logged in as admin",}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def modifyUsers(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
if admin.type == 3:
return HttpResponse("You don't have enough priviliges to access this page.")
if admin.type == 1:
admins = Administrator.objects.all()
adminNames = []
adminType = 1
for items in admins:
adminNames.append(items.userName)
else:
admins = Administrator.objects.filter(owner=admin.pk)
adminNames = []
adminType = 2
for items in admins:
adminNames.append(items.userName)
return render(request, 'userManagment/modifyUser.html',{"acctNames":adminNames,"adminType":adminType})
except KeyError:
return redirect(loadLoginPage)
def fetchUserDetails(request):
try:
val = request.session['userID']
try:
currentAdmin = Administrator.objects.get(pk=val)
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
user = Administrator.objects.get(userName=accountUsername)
firstName = user.firstName
lastName = user.lastName
email = user.email
if user.type == 1:
accountType = "Administrator"
elif user.type == 2:
accountType = "Reseller"
else:
accountType = "Normal User"
userAccountsLimit = user.initUserAccountsLimit
websitesLimit = user.initWebsitesLimit
userDetails = {"firstName":firstName,
"lastName": lastName,
"email": email,
"accountType": accountType,
"userAccountsLimit": userAccountsLimit,
"websitesLimit": websitesLimit}
data_ret = {'fetchStatus': 1, 'error_message': 'None',"userDetails":userDetails}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'fetchStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {'fetchStatus': 0, 'error_message': "Not logged in as admin",}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def saveModifications(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
firstName = data['firstName']
lastName = data['lastName']
email = data['email']
user = Administrator.objects.get(userName=accountUsername)
password = hashPassword.hash_password(data['password'])
if user.type == 1:
userAccountsLimit = 0
websitesLimit = 0
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 1
user.save()
data_ret = {'saveStatus': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
if data['accountType'] == "Reseller":
userAccountsLimit = data['userAccountsLimit']
websitesLimit = data['websitesLimit']
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 2
user.save()
elif data['accountType'] == "Normal User":
websitesLimit = data['websitesLimit']
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.type = 3
user.save()
else:
userAccountsLimit = 0
websitesLimit = 0
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 1
user.save()
data_ret = {'saveStatus': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {'saveStatus': 0, 'error_message': "Not logged in as admin",}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def deleteUser(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
if admin.type == 3:
return HttpResponse("You don't have enough priviliges to access this page.")
if admin.type == 1:
admins = Administrator.objects.all()
adminNames = []
for items in admins:
if not items.userName == "admin":
2017-10-24 19:16:36 +05:00
adminNames.append(items.userName)
else:
admins = Administrator.objects.filter(owner=admin.pk)
adminNames = []
for items in admins:
adminNames.append(items.userName)
return render(request, 'userManagment/deleteUser.html',{"acctNames":adminNames})
except KeyError:
return redirect(loadLoginPage)
def submitUserDeletion(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
user = Administrator.objects.get(userName=accountUsername)
user.delete()
data_ret = {'deleteStatus': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'deleteStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {'deleteStatus': 0, 'error_message': "Not logged in as admin",}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)