refactor create in abstract (Thread)

master/v0.1.0
TBS093A 2020-08-28 17:13:15 +02:00
parent 6f220ca3f9
commit 207d7c1030
1 changed files with 69 additions and 52 deletions

View File

@ -9,28 +9,19 @@ class ObjectAbstract(models.Model):
@classmethod @classmethod
def addObject(self, request, parentID, privilige): def addObject(self, request, parentID, privilige):
if self.modelIsUser(self) or checkSession(request, privilige): if checkSession(request, privilige):
object = jsonLoad(request) object = jsonLoad(request)
if self.modelIsUser(self): if self.__checkUniqueValues(self, parentID, object):
object['privilige'] = 1 return self.__saveObject(self, parentID, object)
object['password'] = createPassHash(object['password'])
if self.checkUniqueValues(self, parentID, object):
return self.saveObject(self, parentID, object)
else: else:
return HttpResponse("Object Is Already Exist") return HttpResponse("Object Is Already Exist")
else: else:
return HttpResponse("No Permission") return HttpResponse("No Permission")
def modelIsUser(model): def __checkUniqueValues(model, parentID, objectDict):
return model == Users objectsAll = model.__allObjectsDict(model)
def checkUniqueValues(model, parentID, objectDict):
objectsAll = model.allObjectsDict(model)
for x in objectsAll: for x in objectsAll:
if model == Users: if model == Threads:
if x['login'].upper() == objectDict['login'].upper():
return False
elif model == Threads:
if x['name'].upper() == objectDict['name'].upper(): if x['name'].upper() == objectDict['name'].upper():
return False return False
elif model == Ratings: elif model == Ratings:
@ -38,18 +29,7 @@ class ObjectAbstract(models.Model):
return False return False
return True return True
@classmethod def __saveObject(model, parentID, objectDict):
def allObjectsDict(model):
objectAll = model.objects.all()
list = []
for x in objectAll:
list.append(x.toDict())
return list
def modelIsNotUser(model):
return model != Users
def saveObject(model, parentID, objectDict):
newObject = model() newObject = model()
newObject.fromDict(objectDict) newObject.fromDict(objectDict)
if model.modelHaveParent(model): if model.modelHaveParent(model):
@ -64,6 +44,17 @@ class ObjectAbstract(models.Model):
return HttpResponse(f"{model.__name__}/{Comments}: Add new Objects: {newObject.toDict()} and {newComment.toDict()}") return HttpResponse(f"{model.__name__}/{Comments}: Add new Objects: {newObject.toDict()} and {newComment.toDict()}")
return HttpResponse(f"{model.__name__}: Add new Object: {newObject.toDict()}") return HttpResponse(f"{model.__name__}: Add new Object: {newObject.toDict()}")
@classmethod
def __allObjectsDict(model):
objectAll = model.objects.all()
list = []
for x in objectAll:
list.append(x.toDict())
return list
def modelIsNotUser(model):
return model != Users
def modelHaveParent(model): def modelHaveParent(model):
return model != Threads and model != Users return model != Threads and model != Users
@ -86,7 +77,7 @@ class ObjectAbstract(models.Model):
@classmethod @classmethod
def getAllObjects(self, request, privilige): def getAllObjects(self, request, privilige):
objectsAll = self.allObjectsDict(self) objectsAll = self.__allObjectsDict(self)
return HttpResponse(json.dumps(objectsAll)) return HttpResponse(json.dumps(objectsAll))
@classmethod @classmethod
@ -127,19 +118,11 @@ class ObjectAbstract(models.Model):
return HttpResponse("No Permission") return HttpResponse("No Permission")
@classmethod @classmethod
def deleteObject(self, request, objectID, privilige): def deleteObject(model, request, objectID, privilige):
if checkSession(request, privilige): objectDel = model.objects.get(pk = objectID)
objectDel = self.objects.get(pk = objectID) if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request):
if checkUserPermission(objectDel.toDict(), request):
if self.modelIsUser(self):
if checkPassHash(objectDict['password'], objectDel.password):
pass
else:
return HttpResponse("Bad Password")
objectDel.delete() objectDel.delete()
return HttpResponse(f"{self.__name__}: {objectDel} has been deleted") return HttpResponse(f"{model.__name__}: {objectDel} has been deleted")
else:
return HttpResponse("No Permission")
else: else:
return HttpResponse("No Permission") return HttpResponse("No Permission")
@ -170,37 +153,39 @@ class Users(ObjectAbstract):
# Get One User # Get One User
def __getObjectNormal(objectID): def __getObjectNormal(objectID):
oneUser = User.objects.get(pk = objectID).toDict() oneUser = Users.objects.get(pk = objectID).toDict()
return HttpResponse(json.dumps(oneUser)) return HttpResponse(json.dumps(oneUser))
# Create User # Create User
def addObject(self, request, parentID, privilige): @classmethod
def addObject(request, privilige):
newUser = jsonLoad(request) newUser = jsonLoad(request)
newUser['privilige'] = 1 newUser['privilige'] = 1
newUser['password'] = createPassHash(object['password']) newUser['password'] = createPassHash(object['password'])
if self.__validateUnique(self, parentID, newUser): if self.__validateUnique(newUser):
return self.__saveObject(self, parentID, newUser) return self.__saveObject(newUser)
else: else:
return HttpResponse("User Is Already Exist") return HttpResponse("User Is Already Exist")
def __validateUnique(self, parentID, userDict): def __validateUnique(userDict):
usersAll = self.allObjectsDict(User) usersAll = self.__allObjectsDict(User)
for user in usersAll: for user in usersAll:
if user['login'].upper() == userDict['login'].upper(): if user['login'].upper() == userDict['login'].upper():
return False return False
return True return True
def __saveObject(model, parentID, objectDict): def __saveObject(objectDict):
newUser = User() newUser = Users()
newUser.fromDict(objectDict) newUser.fromDict(objectDict)
newUser.save() newUser.save()
return HttpResponse(f"Add new User: {newUser.toDict()}") return HttpResponse(f"Add new User: {newUser.toDict()}")
# Update User # Update User
@classmethod
def updateObject(request, userDict, objectID): def updateObject(request, userDict, objectID):
putUser = User.objects.get(pk = objectID) putUser = Users.objects.get(pk = objectID)
if checkPassHash(userDict['passwordOld'], putUser.password): if checkPassHash(userDict['passwordOld'], putUser.password):
if 'passwordNew' in userDict.keys(): if 'passwordNew' in userDict.keys():
userDict['password'] = createPassHash(objectDict['passwordNew']) userDict['password'] = createPassHash(objectDict['passwordNew'])
@ -213,8 +198,8 @@ class Users(ObjectAbstract):
# Delete User # Delete User
@classmethod @classmethod
def deleteObject(self, request, objectID, privilige): def deleteObject(request, objectID, privilige):
objectDel = self.objects.get(pk = objectID) objectDel = Users.objects.get(pk = objectID)
if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request): if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request):
if checkPassHash(objectDict['password'], objectDel.password): if checkPassHash(objectDict['password'], objectDel.password):
pass pass
@ -244,6 +229,38 @@ class Threads(ObjectAbstract):
"moderator_avatar": self.user.avatar, "moderator_avatar": self.user.avatar,
"moderator_privilige": self.user.privilige} "moderator_privilige": self.user.privilige}
# Get One Thread
# Create Thread
@classmethod
def addObject(request, privilige):
object = jsonLoad(request)
if checkSession(request, privilige):
if self.__checkUniqueValues(object):
return self.__saveObject(object)
else:
return HttpResponse("Object Is Already Exist")
else:
return HttpResponse("No Permission")
def __checkUniqueValues(objectDict):
objectsAll = Threads.__allObjectsDict(model)
for x in objectsAll:
if x['name'].upper() == objectDict['name'].upper():
return False
return True
def __saveObject(objectDict):
newObject = Threads()
newObject.fromDict(objectDict)
newObject.save()
return HttpResponse(f"Add new Thread: {newObject.toDict()}")
# Update Thread
# Delete Thread
class Subjects(ObjectAbstract): class Subjects(ObjectAbstract):
name = models.CharField(max_length=30) name = models.CharField(max_length=30)