Ejemplo n.º 1
0
 def getAccount(sessionToken):
     session = ReadOnlyAccess.getEntityCopy(Session, sessionToken)
     if session is None:
         return False, None
     if SessionUtility.isExpired(session):
         return False, None
     return True, ReadOnlyAccess.getEntityListCopy(Account, {"username": session.username})[0]
Ejemplo n.º 2
0
 def validateDelete(ownerId, propertyId):
     errors = []
     if not PersistenceValidator.checkExists(Property, propertyId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Property", "id", propertyId))
     else:
         PropertyValidator.checkOwner(errors, ownerId, propertyId)
         rentals = ReadOnlyAccess.getEntityListCopy(
             Rental, {"property": propertyId})
         viewings = ReadOnlyAccess.getEntityListCopy(
             Viewing, {"propertyId": propertyId})
         rentals = list(
             filter(
                 lambda x: Date.after(Date.toDate(x.end), Date.now()) and x.
                 status == RentalStatus.CONFIRMED, rentals))
         viewings = list(
             filter(lambda x: Date.after(Date.toDate(x.date), Date.now()),
                    viewings))
         if len(rentals) > 0:
             errors.append(
                 PersistenceValidator.activeSubEntitiesExist(
                     "Property", "Rentals", len(rentals)))
         if len(viewings) > 0:
             errors.append(
                 PersistenceValidator.activeSubEntitiesExist(
                     "Property", "Viewings", len(viewings)))
     return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 3
0
 def validateCreate(username, password):
     errors = []
     accounts = ReadOnlyAccess.getEntityListCopy(Account,
                                                 {"username": username})
     if len(accounts) > 1:
         raise Exception("Multiple Accounts with Username: " + username)
     elif len(accounts) < 1:
         errors.append(SessionValidator.incorrectUsernameOrPassword())
     else:
         credential = ReadOnlyAccess.getEntityCopy(Credential,
                                                   accounts[0].id)
         if credential is None or not PasswordUtility.checkHashedPassword(
                 password, credential.password):
             errors.append(SessionValidator.incorrectUsernameOrPassword())
     return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 4
0
 def allowOwnerOf(self, cEntity, accountField, entityId):
     entity = ReadOnlyAccess.getEntityCopy(cEntity, entityId)
     if entity is not None:
         accountId = getattr(entity, accountField)
         if accountId == self.account.id:
             self.passed = True
     return self
Ejemplo n.º 5
0
 def validateUpdate(account):
     errors = []
     if PersistenceValidator.checkExists(Account, account.id):
         original = ReadOnlyAccess.getEntityCopy(Account, account.id)
     else:
         original = Account()
         errors.append(PersistenceValidator.entityDoesNotExist("Account", "id", account.id))
     return BaseValidator.getValidationMessage(AccountValidator.checkUniqueness(errors, account, original))
Ejemplo n.º 6
0
 def validateDelete(rentalId):
     errors = RentalValidator.validateRead(rentalId)
     rental = ReadOnlyAccess.getEntityCopy(Rental, rentalId)
     if Date.after(Date.toDate(rental.end),
                   Date.now()) and rental.status == RentlStatus.CONFIRMED:
         errors.append(PersistenceValidator.entityActive(
             "Rental", rentalId))
     return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 7
0
 def validateUpdate(image):
     errors = []
     if PersistenceValidator.checkExists(Image, image.id):
         original = ReadOnlyAccess.getEntityCopy(Image, image.id)
     else:
         original = Image()
         errors.append(PersistenceValidator.entityDoesNotExist("Image", "id", image.id))
     return BaseValidator.getValidationMessage(ImageValidator.checkUniqueness(errors, image, original))
Ejemplo n.º 8
0
 def read(rentalId):
     # Validate in persistence level
     validatorResponse = RentalValidator.validateRead(rentalId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Read Entity
     rental = ReadOnlyAccess.getEntityCopy(Rental, rentalId)
     # Return Result
     return {FieldKey.SUCCESS: rental}
Ejemplo n.º 9
0
 def validateRead(propertyId, imageId):
     errors = []
     if not PersistenceValidator.checkExists(Image, imageId):
         errors.append(PersistenceValidator.entityDoesNotExist("Image", "id", imageId))
     if not PersistenceValidator.checkExists(Property, propertyId):
         errors.append(PersistenceValidator.entityDoesNotExist("Property", "id", propertyId))
     if not ReadOnlyAccess.getEntityCopy(Image, imageId).propertyId == propertyId:
         errors.append(linkedDomainNotFoundError("Property", "Image", propertyId, imageId))
     return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 10
0
 def read(propertyId, imageId):
     # Validate in persistence level
     validatorResponse = ImageValidator.validateRead(propertyId, imageId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Create and process Tasks
     property = ReadOnlyAccess.getEntityCopy(Property, propertyId)
     # Return Result
     path = FileSystemUtil.getPath("images", property.ownerId)
     return os.path.join(path, imageId + ".jpg"), 'image/jpg'
Ejemplo n.º 11
0
 def remove(propertyId, imageId):
     # Validate in persistence level
     validatorResponse = ImageValidator.validateDelete(propertyId, imageId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Get return copy, before delete
     image = ReadOnlyAccess.getEntityCopy(Image, imageId)
     property = ReadOnlyAccess.getEntityCopy(Property, propertyId)
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(
         RemoveFromFileSystemTask("images", property.ownerId, imageId,
                                  "jpg"))
     processor.add(DetachForeignKeyTask(Property, "mainImageId", imageId))
     processor.add(DeleteEntityTask(Image, imageId))
     processor.add(FlushDirectoryTask("images", []))
     processor.process()
     # Return Result
     return {FieldKey.SUCCESS: image}
Ejemplo n.º 12
0
 def read(customerId, viewingId):
     # Validate in persistence level
     validatorResponse = ViewingValidator.validateRead(
         customerId, viewingId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Create and process Tasks
     viewing = ReadOnlyAccess.getEntityCopy(Viewing, viewingId)
     # Return Result
     return {FieldKey.SUCCESS: viewing}
Ejemplo n.º 13
0
    def validateDelete(accountId):
        errors = []
        properties = ReadOnlyAccess.getEntityListCopy(Property, {"ownerId": accountId})

        rentals = ReadOnlyAccess.getEntityListCopy(Rental, {"customer": accountId})
        rentals.extend(ReadOnlyAccess.getEntityListCopy(Rental, {"agent": accountId}))
        rentals = list(filter(lambda x: Date.after(Date.toDate(x.end), Date.now()) and x.status == RentalStatus.CONFIRMED, rentals))

        viewings = ReadOnlyAccess.getEntityListCopy(Viewing, {"customerId": accountId})
        viewings = list(filter(lambda x: Date.after(Date.toDate(x.date), Date.now()), rentals))

        if len(properties) > 0:
            errors.append(PersistenceValidator.subEntitiesExist("Account", "Properties", len(properties)))
        if len(rentals) > 0:
            errors.append(PersistenceValidator.activeSubEntitiesExist("Account", "Rentals", len(rentals)))
        if len(viewings) > 0:
            errors.append(PersistenceValidator.activeSubEntitiesExist("Account", "Viewings", len(viewings)))

        return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 14
0
 def readAll(customerId):
     # Validate in persistence level
     validatorResponse = RentalValidator.validateReadAll(customerId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Read Entities
     searchFilter = {"customer": customerId}
     rentalList = ReadOnlyAccess.getEntityListCopy(Rental, searchFilter)
     # Return Result
     return {FieldKey.SUCCESS: rentalList}
Ejemplo n.º 15
0
 def readAll(propertyId):
     # Validate in persistence level
     validatorResponse = ImageValidator.validateReadAll(propertyId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Read Entities
     searchFilter = {"propertyId": propertyId}
     imageList = ReadOnlyAccess.getEntityListCopy(
         Image, {"propertyId": propertyId})
     # Return Result
     return {FieldKey.SUCCESS: imageList}
Ejemplo n.º 16
0
 def validateUpdate(rental):
     errors = []
     if PersistenceValidator.checkExists(Rental, rental.id):
         original = ReadOnlyAccess.getEntityCopy(Rental, rental.id)
     else:
         original = Rental()
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Rental", "id", rental.id))
     return BaseValidator.getValidationMessage(
         RentalValidator.checkUniqueness(errors, rental, original))
Ejemplo n.º 17
0
 def validateUpdate(viewing):
     errors = []
     if PersistenceValidator.checkExists(Viewing, viewing.id):
         original = ReadOnlyAccess.getEntityCopy(Viewing, viewing.id)
     else:
         original = Viewing()
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Viewing", "id", viewing.id))
     return BaseValidator.getValidationMessage(
         ViewingValidator.checkUniqueness(errors, viewing, original))
Ejemplo n.º 18
0
 def validateUpdate(ownerId, property):
     errors = []
     if PersistenceValidator.checkExists(Property, property.id):
         original = ReadOnlyAccess.getEntityCopy(Property, property.id)
         PropertyValidator.checkOwner(errors, ownerId, property.id)
     else:
         original = Property()
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Property", "id", property.id))
     return BaseValidator.getValidationMessage(
         PropertyValidator.checkUniqueness(errors, property, original))
Ejemplo n.º 19
0
 def readList(customerId):
     # Validate in persistence level
     validatorResponse = ViewingValidator.validateReadAll(customerId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Read Entities
     searchFilter = {"customerId": customerId}
     viewingList = ReadOnlyAccess.getEntityListCopy(Viewing, searchFilter)
     viewingList = list(
         filter(lambda x: Date.after(Date.toDate(x.date), Date.now()),
                viewingList))
     return {FieldKey.SUCCESS: viewingList}
Ejemplo n.º 20
0
 def validateReadAll(ownerId):
     errors = []
     if not PersistenceValidator.checkExists(Account, ownerId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Owner", "id", ownerId))
     elif not ReadOnlyAccess.getEntityCopy(
             Account, ownerId).type == AccountType.OWNER:
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Owner", "id", ownerId))
     return BaseValidator.getValidationMessage(errors)
Ejemplo n.º 21
0
 def update(updatedImage):
     # Validate in persistence level
     validatorResponse = ImageValidator.validateUpdate(updatedImage)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(
         UpdateEntityTask(Image, ImageService.mergeImages, updatedImage))
     processor.process()
     # Return Result
     image = ReadOnlyAccess.getEntityCopy(Image, updatedImage.id)
     return {FieldKey.SUCCESS: image}
Ejemplo n.º 22
0
 def validateCreate(property):
     errors = []
     if not PersistenceValidator.checkExists(Account, property.ownerId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Owner", "id", property.ownerId))
     elif not ReadOnlyAccess.getEntityCopy(
             Account, property.ownerId).type == AccountType.OWNER:
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Owner", "id", property.ownerId))
     return BaseValidator.getValidationMessage(
         PropertyValidator.checkUniqueness(errors, property))
Ejemplo n.º 23
0
 def delete(customerId, viewingId):
     # Validate in persistence level
     validatorResponse = ViewingValidator.validateDelete(
         customerId, viewingId)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Get return copy, before delete
     viewing = ReadOnlyAccess.getEntityCopy(Viewing, viewingId)
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(DeleteEntityTask(Viewing, viewingId))
     processor.process()
     # Return Result
     return {FieldKey.SUCCESS: viewing}
Ejemplo n.º 24
0
 def update(updatedRental):
     # Validate in persistence level
     validatorResponse = RentalValidator.validateUpdate(updatedRental)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(
         UpdateEntityTask(Rental, RentalService.mergeRentals,
                          updatedRental))
     processor.process()
     # Return Result
     rental = ReadOnlyAccess.getEntityCopy(Rental, updatedRental.id)
     return {FieldKey.SUCCESS: rental}
Ejemplo n.º 25
0
 def update(updatedViewing):
     # Validate in persistence level
     validatorResponse = ViewingValidator.validateUpdate(updatedViewing)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(
         UpdateEntityTask(Viewing, ViewingService.mergeViewings,
                          updatedViewing))
     processor.process()
     # Return Result
     viewing = ReadOnlyAccess.getEntityCopy(Viewing, updatedViewing.id)
     return {FieldKey.SUCCESS: viewing}
Ejemplo n.º 26
0
 def validateRead(customerId, viewingId):
     errors = []
     if not PersistenceValidator.checkExists(Account, customerId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Customer", "id", customerId))
     if not PersistenceValidator.checkExists(Viewing, viewingId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Viewing", "id", viewingId))
     if not ReadOnlyAccess.getEntityCopy(
             Viewing, viewingId).customerId == customerId:
         errors.append(
             PersistenceValidator.linkedDomainNotFoundError(
                 "Customer", "Viewing", customerId, viewingId))
     return errors
Ejemplo n.º 27
0
 def add(image):
     # Validate in persistence level
     validatorResponse = ImageValidator.validateCreate(image)
     if FieldKey.ERROR in validatorResponse:
         return validatorResponse
     # Get Property Info
     property = ReadOnlyAccess.getEntityCopy(Property, image.propertyId)
     # Create and process Tasks
     processor = TaskProcessor()
     processor.add(
         SaveToFileSystemTask("images", property.ownerId, image.id,
                              image.file, "jpg"))
     processor.add(SaveNewEntityTask(image))
     processor.process()
     # Return Result
     return {FieldKey.SUCCESS: image}
Ejemplo n.º 28
0
 def validateCreate(viewing):
     errors = []
     if not PersistenceValidator.checkExists(Account, viewing.customerId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Customer", "id", viewing.customerId))
     elif not ReadOnlyAccess.getEntityCopy(
             Account, viewing.customerId).type == AccountType.CUSTOMER:
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Customer", "id", viewing.customerId))
     if not PersistenceValidator.checkExists(Property, viewing.propertyId):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Property", "id", viewing.propertyId))
     return BaseValidator.getValidationMessage(
         ViewingValidator.checkUniqueness(errors, viewing.propertyId))
Ejemplo n.º 29
0
    def setMain(propertyId, imageId):
        # Validate in persistence level
        validatorResponse = ImageValidator.validateSetMain(propertyId, imageId)
        if FieldKey.ERROR in validatorResponse:
            return validatorResponse
        # Create Updated Property
        updatedProperty = Property()
        updatedProperty.id = propertyId
        updatedProperty.mainImageId = imageId
        # Create and process Tasks
        processor = TaskProcessor()
        processor.add(
            UpdateEntityTask(Property, PropertyService.mergeProperties,
                             updatedProperty))
        processor.process()

        property = ReadOnlyAccess.getEntityCopy(Property, propertyId)
        return {FieldKey.SUCCESS: property}
Ejemplo n.º 30
0
 def validateCreate(rental):
     errors = []
     if not PersistenceValidator.checkExists(Account, rental.customer):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Customer", "id", rental.customer))
     elif not ReadOnlyAccess.getEntityCopy(
             Account, rental.customer).type == AccountType.CUSTOMER:
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Customer", "id", rental.customer))
     if not PersistenceValidator.checkExists(Property, rental.property):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Property", "id", rental.property))
     if not PersistenceValidator.checkExists(Property, rental.property):
         errors.append(
             PersistenceValidator.entityDoesNotExist(
                 "Property", "id", rental.property))
     return BaseValidator.getValidationMessage(
         RentalValidator.checkUniqueness(errors, rental))