Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'netrender/model.py')
-rw-r--r--netrender/model.py90
1 files changed, 61 insertions, 29 deletions
diff --git a/netrender/model.py b/netrender/model.py
index c2331315..c5ee54f0 100644
--- a/netrender/model.py
+++ b/netrender/model.py
@@ -19,6 +19,11 @@
import netrender.versioning as versioning
from netrender.utils import *
+TAG_BAKING = "baking"
+TAG_RENDER = "render"
+
+TAG_ALL = set((TAG_BAKING, TAG_RENDER))
+
class LogFile:
def __init__(self, job_id = 0, slave_id = 0, frames = []):
self.job_id = job_id
@@ -47,14 +52,22 @@ class LogFile:
class RenderSlave:
_slave_map = {}
- def __init__(self):
+ def __init__(self, info = None):
self.id = ""
- self.name = ""
- self.address = ("",0)
- self.stats = ""
self.total_done = 0
self.total_error = 0
self.last_seen = 0.0
+
+ if info:
+ self.name = info.name
+ self.address = info.address
+ self.stats = info.stats
+ self.tags = info.tags
+ else:
+ self.name = ""
+ self.address = ("",0)
+ self.stats = ""
+ self.tags = set()
def serialize(self):
return {
@@ -64,7 +77,8 @@ class RenderSlave:
"stats": self.stats,
"total_done": self.total_done,
"total_error": self.total_error,
- "last_seen": self.last_seen
+ "last_seen": self.last_seen,
+ "tags": tuple(self.tags)
}
@staticmethod
@@ -85,6 +99,7 @@ class RenderSlave:
slave.total_done = data["total_done"]
slave.total_error = data["total_error"]
slave.last_seen = data["last_seen"]
+ slave.tags = set(data["tags"])
if cache:
RenderSlave._slave_map[slave_id] = slave
@@ -101,6 +116,14 @@ JOB_TYPES = {
JOB_VCS: "Versioned",
}
+JOB_SUB_RENDER = 1
+JOB_SUB_BAKING = 2
+
+JOB_SUBTYPES = {
+ JOB_SUB_RENDER: "Render",
+ JOB_SUB_BAKING: "Baking",
+ }
+
class VersioningInfo:
def __init__(self, info = None):
self._system = None
@@ -186,18 +209,8 @@ class RenderFile:
return rfile
class RenderJob:
- def __init__(self, job_info = None):
+ def __init__(self, info = None):
self.id = ""
- self.type = JOB_BLENDER
- self.name = ""
- self.category = "None"
- self.status = JOB_WAITING
- self.files = []
- self.chunks = 0
- self.priority = 0
- self.blacklist = []
- self.render = "BLENDER_RENDER"
- self.version_info = None
self.resolution = None
@@ -205,23 +218,38 @@ class RenderJob:
self.last_dispatched = 0.0
self.frames = []
- if job_info:
- self.type = job_info.type
- self.name = job_info.name
- self.category = job_info.category
- self.status = job_info.status
- self.files = job_info.files
- self.chunks = job_info.chunks
- self.priority = job_info.priority
- self.blacklist = job_info.blacklist
- self.version_info = job_info.version_info
- self.render = job_info.render
+ if info:
+ self.type = info.type
+ self.subtype = info.subtype
+ self.name = info.name
+ self.category = info.category
+ self.tags = info.tags
+ self.status = info.status
+ self.files = info.files
+ self.chunks = info.chunks
+ self.priority = info.priority
+ self.blacklist = info.blacklist
+ self.version_info = info.version_info
+ self.render = info.render
+ else:
+ self.type = JOB_BLENDER
+ self.subtype = JOB_SUB_RENDER
+ self.name = ""
+ self.category = "None"
+ self.tags = set()
+ self.status = JOB_WAITING
+ self.files = []
+ self.chunks = 0
+ self.priority = 0
+ self.blacklist = []
+ self.version_info = None
+ self.render = "BLENDER_RENDER"
def hasRenderResult(self):
- return self.type in (JOB_BLENDER, JOB_VCS)
+ return self.subtype == JOB_SUB_RENDER
def rendersWithBlender(self):
- return self.type in (JOB_BLENDER, JOB_VCS)
+ return self.subtype == JOB_SUB_RENDER
def addFile(self, file_path, start=-1, end=-1, signed=True):
def isFileInFrames():
@@ -297,8 +325,10 @@ class RenderJob:
return {
"id": self.id,
"type": self.type,
+ "subtype": self.subtype,
"name": self.name,
"category": self.category,
+ "tags": tuple(self.tags),
"status": self.status,
"files": [f.serialize() for f in self.files if f.start == -1 or not frames or (f.start <= max_frame and f.end >= min_frame)],
"frames": [f.serialize() for f in self.frames if not frames or f in frames],
@@ -320,8 +350,10 @@ class RenderJob:
job = RenderJob()
job.id = data["id"]
job.type = data["type"]
+ job.subtype = data["subtype"]
job.name = data["name"]
job.category = data["category"]
+ job.tags = set(data["tags"])
job.status = data["status"]
job.files = [RenderFile.materialize(f) for f in data["files"]]
job.frames = [RenderFrame.materialize(f) for f in data["frames"]]