mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
owner.update_owner_history - optimization
as it may be used very often
This commit is contained in:
@@ -62,7 +62,8 @@ class Usecase:
|
||||
self.settings = {"element": element}
|
||||
|
||||
def execute(self) -> Union[ifcopenshell.entity_instance, None]:
|
||||
if not hasattr(self.settings["element"], "OwnerHistory"):
|
||||
element = self.settings["element"]
|
||||
if not element.is_a("IfcRoot"):
|
||||
return
|
||||
user = ifcopenshell.api.owner.settings.get_user(self.file)
|
||||
if not user:
|
||||
@@ -70,14 +71,24 @@ class Usecase:
|
||||
application = ifcopenshell.api.owner.settings.get_application(self.file)
|
||||
if not application:
|
||||
return
|
||||
if not self.settings["element"].OwnerHistory:
|
||||
self.settings["element"].OwnerHistory = ifcopenshell.api.run("owner.create_owner_history", self.file)
|
||||
return self.settings["element"].OwnerHistory
|
||||
if self.file.get_total_inverses(self.settings["element"].OwnerHistory) > 1:
|
||||
new = ifcopenshell.util.element.copy(self.file, self.settings["element"].OwnerHistory)
|
||||
self.settings["element"].OwnerHistory = new
|
||||
self.settings["element"].OwnerHistory.ChangeAction = "MODIFIED"
|
||||
self.settings["element"].OwnerHistory.LastModifiedDate = int(time.time())
|
||||
self.settings["element"].OwnerHistory.LastModifyingUser = user
|
||||
self.settings["element"].OwnerHistory.LastModifyingApplication = application
|
||||
return self.settings["element"].OwnerHistory
|
||||
|
||||
# 1 IfcRoot IfcOwnerHistory
|
||||
owner_history = element[1]
|
||||
if not owner_history:
|
||||
owner_history = ifcopenshell.api.run("owner.create_owner_history", self.file)
|
||||
element[1] = owner_history
|
||||
return owner_history
|
||||
|
||||
if self.file.get_total_inverses(owner_history) > 1:
|
||||
owner_history = ifcopenshell.util.element.copy(self.file, owner_history)
|
||||
element[1] = owner_history
|
||||
|
||||
# 3 IfcOwnerHistory ChangeAction
|
||||
owner_history[3] = "MODIFIED"
|
||||
# 4 IfcOwnerHistory LastModifiedDate
|
||||
owner_history[4] = int(time.time())
|
||||
# 5 IfcOwnerHistory LastModifyingUser
|
||||
owner_history[5] = user
|
||||
# 6 IfcOwnerHistory LastModifyingApplication
|
||||
owner_history[6] = application
|
||||
return owner_history
|
||||
|
||||
Reference in New Issue
Block a user