From 1c3dbdfff990f868eb8ca8ece466cdc35d921ec2 Mon Sep 17 00:00:00 2001 From: Timothy Liu <154667371+timothyliu3d@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:17:23 -0800 Subject: [PATCH 1/3] feat: Add `shifter.guide.Rig.refresh_metadata()` method. --- release/scripts/mgear/shifter/guide.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/release/scripts/mgear/shifter/guide.py b/release/scripts/mgear/shifter/guide.py index e200e566..a23d4685 100644 --- a/release/scripts/mgear/shifter/guide.py +++ b/release/scripts/mgear/shifter/guide.py @@ -1073,6 +1073,23 @@ def get_guide_template_dict(self, meta=None): return self.guide_template_dict + def refresh_metadata(self): + attr = self.model.attr("user") + newvalue = getpass.getuser() + attr.set(newvalue) + + attr = self.model.attr("date") + newvalue = str(datetime.datetime.now()) + attr.set(newvalue) + + attr = self.model.attr("maya_version") + newvalue = str(mel.eval("getApplicationVersionAsFloat")) + attr.set(newvalue) + + attr = self.model.attr("gear_version") + newvalue = mgear.getVersion() + attr.set(newvalue) + def addOptionsValues(self): """Gather or change some options values according to some others. From 17fc2de2e354229f04255f9dc53db3e3600c9267 Mon Sep 17 00:00:00 2001 From: Timothy Liu <154667371+timothyliu3d@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:18:55 -0800 Subject: [PATCH 2/3] feat: Refresh guide metadata on export. --- release/scripts/mgear/shifter/io.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/release/scripts/mgear/shifter/io.py b/release/scripts/mgear/shifter/io.py index a541c2b1..e42e7188 100644 --- a/release/scripts/mgear/shifter/io.py +++ b/release/scripts/mgear/shifter/io.py @@ -145,14 +145,19 @@ def _get_file(write=False): def export_guide_template(filePath=None, meta=None, conf=None, *args): - """Export the guide templata to a file + """Export the guide template to a file. Args: - filePath (str, optional): Path to save the file - meta (dict, optional): Arbitraty metadata dictionary. This can - be use to store any custom information in a dictionary format. + filePath (str, optional): Path to save the file. + meta (dict, optional): Arbitrary metadata dictionary. This can + be used to store any custom information in a dictionary format. """ if not conf: + selection = pm.selected() + if selection: + rig = shifter.Rig() + rig.guide.setFromHierarchy(selection[0]) + rig.guide.refresh_metadata() conf = get_template_from_selection(meta) if conf: data_string = json.dumps(conf, indent=4, sort_keys=True) From ca4feee31878d2af7ba96fa1f43e1d8fbf1d7f29 Mon Sep 17 00:00:00 2001 From: Timothy Liu <154667371+timothyliu3d@users.noreply.github.com> Date: Mon, 9 Feb 2026 21:50:12 -0800 Subject: [PATCH 3/3] refactor: Extract "get user metadata" from "refresh user metadata". --- release/scripts/mgear/core/utils.py | 18 +++++++++++++- release/scripts/mgear/shifter/guide.py | 34 ++++++++------------------ release/scripts/mgear/shifter/io.py | 2 +- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/release/scripts/mgear/core/utils.py b/release/scripts/mgear/core/utils.py index fd804c2e..f29598d2 100644 --- a/release/scripts/mgear/core/utils.py +++ b/release/scripts/mgear/core/utils.py @@ -1,10 +1,12 @@ -"""Utilitie functions""" +"""Utility functions""" import os import sys import timeit from functools import wraps +import datetime +import getpass from maya import cmds import mgear.pymaya as pm @@ -441,3 +443,17 @@ def get_maya_path(): maya_path = os.environ['MAYA_LOCATION'] maya_path = os.path.normpath(os.path.join(maya_path,"bin")) return maya_path + + +def get_user_metadata(): + """ + :return: User metadata including username, date, Maya version, and mGear version. + :rtype: dict[str, str] + """ + data = { + "user": getpass.getuser(), + "date": str(datetime.datetime.now()), + "maya_version": str(mel.eval("getApplicationVersionAsFloat")), + "gear_version": mgear.getVersion(), + } + return data diff --git a/release/scripts/mgear/shifter/guide.py b/release/scripts/mgear/shifter/guide.py index a23d4685..6bd59b53 100644 --- a/release/scripts/mgear/shifter/guide.py +++ b/release/scripts/mgear/shifter/guide.py @@ -1,6 +1,5 @@ # Built-in import datetime -import getpass import json import os import sys @@ -628,17 +627,17 @@ def addParameters(self): # -------------------------------------------------- # Comments self.pComments = self.addParam("comments", "string", "") - self.pUser = self.addParam("user", "string", getpass.getuser()) - self.pDate = self.addParam( - "date", "string", str(datetime.datetime.now()) - ) + + user_metadata = utils.get_user_metadata() + self.pUser = self.addParam("user", "string", user_metadata["user"]) + self.pDate = self.addParam("date", "string", user_metadata["date"]) self.pMayaVersion = self.addParam( "maya_version", "string", - str(pm.mel.eval("getApplicationVersionAsFloat")), + user_metadata["maya_version"], ) self.pGearVersion = self.addParam( - "gear_version", "string", mgear.getVersion() + "gear_version", "string", user_metadata["gear_version"] ) # -------------------------------------------------- @@ -1073,22 +1072,10 @@ def get_guide_template_dict(self, meta=None): return self.guide_template_dict - def refresh_metadata(self): - attr = self.model.attr("user") - newvalue = getpass.getuser() - attr.set(newvalue) - - attr = self.model.attr("date") - newvalue = str(datetime.datetime.now()) - attr.set(newvalue) - - attr = self.model.attr("maya_version") - newvalue = str(mel.eval("getApplicationVersionAsFloat")) - attr.set(newvalue) - - attr = self.model.attr("gear_version") - newvalue = mgear.getVersion() - attr.set(newvalue) + def refresh_user_metadata(self): + for k, v in utils.get_user_metadata().items(): + attr = self.model.attr(k) + attr.set(v) def addOptionsValues(self): """Gather or change some options values according to some others. @@ -3827,7 +3814,6 @@ def data_collector_pathEmbbeded(self, *args): ) - # Backwards compatibility aliases MainGuide = Main RigGuide = Rig diff --git a/release/scripts/mgear/shifter/io.py b/release/scripts/mgear/shifter/io.py index e42e7188..11d8ad6e 100644 --- a/release/scripts/mgear/shifter/io.py +++ b/release/scripts/mgear/shifter/io.py @@ -157,7 +157,7 @@ def export_guide_template(filePath=None, meta=None, conf=None, *args): if selection: rig = shifter.Rig() rig.guide.setFromHierarchy(selection[0]) - rig.guide.refresh_metadata() + rig.guide.refresh_user_metadata() conf = get_template_from_selection(meta) if conf: data_string = json.dumps(conf, indent=4, sort_keys=True)