use hermetization in AbstractCRUD classes && fix

master/v0.1.0
TBS093A 2020-08-29 16:13:39 +02:00
parent f0dad53d60
commit 0e4b4b6211
2 changed files with 32 additions and 27 deletions

View File

@ -6,25 +6,25 @@ class AbstractUtilsCRUD():
""" """
@classmethod @classmethod
def objectFactory(self): def _objectFactory(self):
""" """
return a new specific object return a new specific object
""" """
pass pass
@classmethod @classmethod
def setParentID(self, parentID): def _setParentID(self, parentID):
""" """
set object parent id set object parent id
""" """
pass pass
@classmethod @classmethod
def allObjectsDict(self): def _allObjectsDict(self):
""" """
map all class objects to dict map all class objects to dict
""" """
objectAll = self.objectFactory().objects.all() objectAll = self._objectFactory().objects.all()
list = [] list = []
for x in objectAll: for x in objectAll:
list.append(x.toDict()) list.append(x.toDict())
@ -46,7 +46,7 @@ class AbstractGet(AbstractUtilsCRUD):
return self.__getObjectNormal(self, objectID) return self.__getObjectNormal(self, objectID)
def __getObjectNormal(self, objectID): def __getObjectNormal(self, objectID):
object = self.objectFactory().objects.get(pk = objectID).toDict() object = self._objectFactory().objects.get(pk = objectID).toDict()
return HttpResponse(json.dumps(object)) return HttpResponse(json.dumps(object))
@classmethod @classmethod
@ -54,7 +54,7 @@ class AbstractGet(AbstractUtilsCRUD):
""" """
get all objects get all objects
""" """
objectsAll = self.allObjectsDict() objectsAll = self._allObjectsDict()
return HttpResponse(json.dumps(objectsAll)) return HttpResponse(json.dumps(objectsAll))
@classmethod @classmethod
@ -67,7 +67,7 @@ class AbstractGet(AbstractUtilsCRUD):
def __getAllByParentID(self, parentID): def __getAllByParentID(self, parentID):
list = [ list = [
x.toDict() x.toDict()
for x in self.objectFactory() for x in self._objectFactory()
.__get.objects.filter(**{ parent_id_field: parentID }) .__get.objects.filter(**{ parent_id_field: parentID })
] ]
return json.dumps(list) return json.dumps(list)
@ -85,46 +85,46 @@ class AbstractCreate(AbstractUtilsCRUD):
""" """
object = jsonLoad(request) object = jsonLoad(request)
if checkSession(request, privilige): if checkSession(request, privilige):
if self.validateUnique(object): if self._validateUnique(object):
return self.saveObject(object) return self._saveObject(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 validateUnique(self, userDict): def _validateUnique(self, userDict):
""" """
use validate in override this method use validate in override this method
""" """
return True return True
def saveObject(self, objectDict): def _saveObject(self, objectDict):
""" """
save object without parent save object without parent
""" """
newObject = self.objectFactory() newObject = self._objectFactory()
newObject.fromDict(objectDict) newObject.fromDict(objectDict)
newObject.save() newObject.save()
return HttpResponse(f"Add new Object: {newObject.toDict()}") return HttpResponse(f"Add new Object: {newObject.toDict()}")
def saveObject(self, parentID, objectDict): def _saveObject(self, parentID, objectDict):
""" """
save object with parent & subject + comment & set trigger time save object with parent & subject + comment & set trigger time
""" """
newObject = self.objectFactory() newObject = self._objectFactory()
newObject.fromDict(objectDict) newObject.fromDict(objectDict)
self.setParentID(parentID) self.__setParentID(parentID)
self.createFirstComment(newObject, objectDict) self._createFirstComment(newObject, objectDict)
self.setActualTimeTrigger() self._setActualTimeTrigger()
newObject.save() newObject.save()
return HttpResponse(f"Add new Object: {newObject.toDict()}") return HttpResponse(f"Add new Object: {newObject.toDict()}")
def createFirstComment(newSubject, objectDict): def _createFirstComment(newSubject, objectDict):
pass pass
def setActualTimeTrigger(): def _setActualTimeTrigger():
pass pass
@ -134,15 +134,19 @@ class AbstractUpdate(AbstractUtilsCRUD):
""" """
@classmethod @classmethod
def updateObject(self, objectDict, objectID): def putObject(self, request, objectID, privilige):
objectOld = self.objectFactory().objects.get(pk = objectID) object = jsonLoad(request)
objectOld.fromDict(objectDict) if checkSession(request, privilige) and checkUserPermission(object, request)
if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request): return self._updateObject(object, objectID)
objectOld.save() else:
return HttpResponse(f"Update Object: {objectOld.toDict()}")
else
return HttpResponse("No Permission") return HttpResponse("No Permission")
def _updateObject(self, objectDict, objectID):
objectOld = self._objectFactory().objects.get(pk = objectID)
objectOld.fromDict(objectDict)
objectOld.save()
return HttpResponse(f"Update Object: {objectOld.toDict()}")
class AbstractDelete(AbstractUtilsCRUD): class AbstractDelete(AbstractUtilsCRUD):
""" """
@ -151,7 +155,7 @@ class AbstractDelete(AbstractUtilsCRUD):
@classmethod @classmethod
def deleteObject(self, request, objectID, privilige): def deleteObject(self, request, objectID, privilige):
objectDel = self.objectFactory().objects.get(pk = objectID) objectDel = self._objectFactory().objects.get(pk = objectID)
if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request): if checkSession(request, privilige) and checkUserPermission(objectDel.toDict(), request):
objectDel.delete() objectDel.delete()
return HttpResponse(f"Delete Object: {objectDel}") return HttpResponse(f"Delete Object: {objectDel}")

View File

@ -3,6 +3,7 @@ from django.http import HttpResponse
from django.db.models import Avg from django.db.models import Avg
from datetime import datetime from datetime import datetime
from .utilities import * from .utilities import *
from .AbstractCRUD import AbstractCRUD
class ObjectAbstract(models.Model): class ObjectAbstract(models.Model):