Beispiel #1
0
	def setStatusUI(self, message, type = '') : 
		self.ui.status_label.setText(message)

		if type == 'success' : 
			self.ui.status_label.setStyleSheet('color: yellow')

		if type == 'error' : 
			self.ui.status_label.setStyleSheet('color: red')

		hook.log(message)
		QtGui.QApplication.processEvents()
Beispiel #2
0
    def setStatusUI(self, message, type=''):
        self.ui.status_label.setText(message)

        if type == 'success':
            self.ui.status_label.setStyleSheet('color: yellow')

        if type == 'error':
            self.ui.status_label.setStyleSheet('color: red')

        hook.log(message)
        QtGui.QApplication.processEvents()
Beispiel #3
0
	def setStatusUI(self, message, type = '', underline = False, trace = True, doubleLine = False) : 
		self.ui.status_label.setText(message)

		if type == 'success' : 
			self.ui.status_label.setStyleSheet('color: yellow')

		if type == 'error' : 
			self.ui.status_label.setStyleSheet('color: red')

		hook.log(message, underline, trace, doubleLine)
		QtGui.QApplication.processEvents()
Beispiel #4
0
	def initFunction(self) : 
		# get configuration -> reading from config.txt. If config not found or not enough data, stop working.

		# welcome text
		hook.log('Launch %s' % self.windowTitle, True, False)

		rootPath = self.getConfigRootPath()

		if rootPath : 
			self.info = self.getSceneInfo(rootPath)

			if self.info : 
				self.setupUI()

			else : 
				hook.warning('Not in a correct workspace!')
				self.publishButton(False)

		else : 
			hook.warning('Not in a correct workspace!')
			self.publishButton(False)
Beispiel #5
0
	def doPublish(self) : 

		if self.workMode == 'publish' : 
			# dialog confirm to publish
			result = self.messageBox('Publish Confirm', self.getDisplayData())

			if result == QtGui.QMessageBox.Ok : 

				# check if the publish really exists
				result2 = self.checkPublish()

				# if user agree to increment version, then continue
				if result2 : 

					# log start time
					startTime = datetime.now()
					hook.log('####### Start publishing... \\n%s' % startTime, True)
					self.setProgress('==== Publish Section ====', '', True, False, '', self.statusColor)

					# save current work file
					scene = hook.save()

					self.setStatusUI('Scene save')
					self.setProgress('Scene saved', '', scene)
					self.setProgressbar(self.progressIncrement, True)

					
					# copy this version to publish dir
					result = self.makePublish(scene)

					self.setStatusUI('Publish current scene to %s' % result)
					self.setProgress('Publish', '', result)
					self.setProgressbar(self.progressIncrement, True)

					# increment work version
					workFile = self.incrementWorkVersion()

					self.setStatusUI('save current file to %s' % workFile)
					self.setProgress('Increment work file', '',  workFile)
					self.setProgressbar(self.progressIncrement, True)

					
					# connect shotgun
					self.setProgress('==== Shotgun Section ====', '', True, False, '', self.statusColor)

					self.updateShotgun()

					self.setStatusUI('==============================================')
					self.setStatusUI('Publish Complete. See Output for Details', 'success', True, False)


					# set post process
					self.setPostProcess()

					# end log
					endTime = datetime.now()
					duration = endTime - startTime
					hook.log('####### End publishing \\n%s' % endTime, True)
					hook.log('Duration %s' % duration, True)
					self.setProgress('====== Publish Complete ======', '', True, False, '', self.statusColor)
					self.setProgress('==== %s ====' % duration, '', True, False, '', self.statusColor)
					self.setProgressbar(100, True)

					# set dialog
					self.completeDialog('Publish Complete', 'Publish Complete')
					self.setProgressbar(100, False)

		if self.workMode == 'work' : 
			# increment work version
			workFile = self.incrementWorkVersion()
			self.setStatusUI('save current file to %s' % workFile)

			# set post process
			self.setPostProcess()
			self.setProgress('Save increment', '', workFile)
Beispiel #6
0
	def setPlayblastStatus(self) : 

		hook.log('Checking playblast ...')
		hook.log('Animation playblast', True, True, True)


		# anim department only look for 1 playblast file

		if self.info['department'] == 'anim' : 
			self.playblastVersion = self.getShotPlayblast()

			display = str()

			hook.log('Rv playblast', True, True, True)

			if self.playblastVersion['rvPlayblast'] : 
				display += 'RV Playblast available / '
				hook.log('Found %s' % self.playblastVersion['rvPlayblast'])

			else : 
				display += 'RV Playblast not found / '
				hook.log('Playblast for rv Missing')

			hook.log('Sg playblast', True, True, True)

			if self.playblastVersion['sgPlayblast'] : 
				display += 'Shotgun Playblast available, Ready to upload'
				hook.log('Found %s' % self.playblastVersion['sgPlayblast'])

			else : 
				display += 'Shotgun Playblast not found'
				hook.log('Playblast for sg Missing')

			hook.log('Summary', True, True, True)

			self.setStatusUI(display, 'success', False, False)


		# layout department will looking for shots and find available playblast for those shots

		if self.info['department'] == 'layout' : 
			self.layoutShotInfo = self.getSequencePlayblast()
			rvExists = []
			rvMissing = []
			sgExists = []
			sgMissing = []

			hook.log('Layout playblast', True, True, True)


			for each in self.layoutShotInfo : 
				if each['rvExists'] : 
					rvExists.append(each['rvPlayblast'])

				else : 
					rvMissing.append(each['rvPlayblast'])

				if each['sgExists'] : 
					sgExists.append(each['sgPlayblast'])

				else : 
					sgMissing.append(each['sgPlayblast'])


			hook.log('Rv playblast (%s files)' % len(rvExists), True, True, True)

			for each in rvExists : 
				hook.log('Found %s' % each)

			hook.log('Sg playblast (%s files)' % len(sgExists), True, True, True)

			for each in sgExists : 
				hook.log('Found %s' % each)

			hook.log('Missing Rv playblast (%s files)' % len(rvMissing), True, True, True)

			for each in rvMissing : 
				hook.log('Missing %s' % each)

			hook.log('Missing Sg playblast (%s files)' % len(sgMissing), True, True, True)

			for each in sgMissing : 
				hook.log('Missing %s' % each)

			hook.log('Summary', True, True, True)

			self.setStatusUI('%s/%s RV Playblast files available / %s/%s SG Playblast files available'  % (len(rvExists), len(self.layoutShotInfo), len(sgExists), len(self.layoutShotInfo)), 'success')
Beispiel #7
0
	def createShotgunVersion(self) : 

		projName = self.info['project']
		# taskID from update task status
		taskID = self.taskID
		taskName = self.taskName

		# linked to entity ID -> assetID/shotID from update task status
		entityID = self.entityInfo['id']
		entityName = self.entityInfo['name']

		thumbnailPath = None

		# status of the created version, read from config.txt -> versionStatus
		status = self.configData['versionStatus']

		description = str(self.ui.comment_textEdit.toPlainText())
		ext = self.configData['extension']
		snapShotExt = self.configData['snapShot']
		mediaExt = self.configData['mediaExtension']

		# publish file
		publishPath = self.publishPath
		publishFile = self.publishVersion
		version = publishFile.split('.')[1]

		name = os.path.basename(publishFile).replace('.%s' % ext, '')
		publishPath = os.path.normpath(os.path.join(publishPath, publishFile))

		snapshotPath = os.path.join(self.publishPath, self.snapshotDir)
		previewFile = os.path.normpath(os.path.join(snapshotPath, '%s.%s' % (name, snapShotExt)))
		playblastFile = str()
		upload = False
		result = None

		if os.path.exists(previewFile) : 
			thumbnailPath = previewFile


		if self.info['entity'] == self.asset : 
			# logging
			self.setStatusUI('Create version for Assets', '', True, True, True)
			hook.logList(['projName : %s' % projName, 'entityID : %s' % entityID, 'taskID : %s' % taskID, 
							'name : %s' % name, 'status : %s' % status, 'description : %s' % description, 
							'publishPath : %s' % hook.convertPath(publishPath), 'version : %s' % version, 
							'thumbnailPath : %s' % hook.convertPath(thumbnailPath)]
						)

			# create asset version
			result = sgUtils.sgCreateAssetVersion(projName, entityID, taskID, name, status, description, publishPath, version, thumbnailPath)

			# log result 
			hook.logList([result])
			hook.log('Create version success')

			self.setProgress('Create asset version', '', result)
			self.setProgressbar(self.progressIncrement, True)



		if self.info['entity'] == self.shot : 
			if self.info['department'] == 'anim' : 
				if self.ui.playblast_checkBox.isChecked() : 
					if self.playblastVersion : 
						rvPlayblast = self.playblastVersion['rvPlayblast']
						sgPlayblast = self.playblastVersion['sgPlayblast']


						# only create version if sgPlayblast available
						if sgPlayblast : 
							if self.ui.upload_checkBox.isChecked() : 
								upload = True

							self.setStatusUI('Create version for %s' % entityName, True, True, True)
							hook.logList(['projName : %s' % projName, 'entityID : %s' % entityID, 'taskID : %s' % taskID, 
										'name : %s' % name, 'status : %s' % status, 'description : %s' % description, 
										'publishPath : %s' % hook.convertPath(publishPath), 'version : %s' % version, 'thumbnailPath : %s' % hook.convertPath(thumbnailPath), 
										'rvPlayblast : %s' % hook.convertPath(rvPlayblast), 'sgPlayblast : %s' % hook.convertPath(sgPlayblast), 'upload : %s' % upload]
										)

							result = sgUtils.sgCreateShotVersion2(projName, entityID, taskID, name, status, description, publishPath, version, thumbnailPath, rvPlayblast, sgPlayblast, upload)
							hook.logList([result])
							hook.log('Create version success')
							self.setProgress('%s : Set RV Playbalst' % entityName, 'Skip : No RV playblast for %s' % entityName, rvPlayblast, True, 'na')
							self.setProgress('%s Upload SG playblast' % entityName, 'Skip : No SG Playblast for %s' % entityName, sgPlayblast, True, 'na')
							self.setProgressbar(self.progressIncrement, True)
							# self.setProgress('Create version %s' % entityName, result)

						else : 
							self.setProgress('%s : Set RV Playbalst' % entityName, 'Skip : No create version %s' % entityName, False, True, 'na')



			if self.info['department'] == 'layout' : 
				if self.ui.playblast_checkBox.isChecked() : 
					if self.layoutShotInfo : 
						incrementStep = (100 - int(self.ui.progressBar.text().replace('%', '')))/len(self.layoutShotInfo)
						for each in self.layoutShotInfo : 
							entityName = each['shotName']
							entityID = each['id']
							shotName = each['shotCode']
							sequence = each['sequence']
							taskID = None
							rvPlayblast = None
							sgPlayblast = None
							upload = False
							createVersion = False


							if each['rvExists'] : 
								name = os.path.basename(each['rvPlayblast']).replace('.%s' % mediaExt, '')
								rvPlayblast = each['rvPlayblast']
								createVersion = False

							if each['sgExists'] : 
								sgPlayblast = each['sgPlayblast']
								createVersion = True

							if self.ui.upload_checkBox.isChecked() : 
								upload = True

							if createVersion : 
								taskData = sgUtils.sgGetShotTaskID(projName, sequence, shotName, taskName) 
								taskID = taskData['id']

								self.setStatusUI('Create version for %s' % entityName, '', True, True, True)

								hook.logList(['projName : %s' % projName, 'entityID : %s' % entityID, 'taskID : %s' % taskID, 
											'name : %s' % name, 'status : %s' % status, 'description : %s' % description, 'publishPath : %s' % hook.convertPath(publishPath), 
											'version : %s' % version, 'thumbnailPath : %s' % hook.convertPath(thumbnailPath), 'rvPlayblast : %s' % rvPlayblast, 
											'sgPlayblast : %s' % hook.convertPath(sgPlayblast), 'upload : %s' % upload]
											)

								result = sgUtils.sgCreateShotVersion2(projName, entityID, taskID, name, status, description, publishPath, version, thumbnailPath, rvPlayblast, sgPlayblast, upload)

								hook.log(result)
								hook.log('Create version for %s success' % entityName)
								self.setProgress('%s : Set RV Playblast' % entityName, 'Skip : No Playblast for RV on %s' % entityName, each['rvExists'], True, 'na')
								self.setProgress('%s : Upload SG Playblast' % entityName, 'Skip : No Playblast for SG on %s' % entityName, each['sgExists'], True, 'na')
								# self.setProgress('Create version %s' % entityName, result)
								self.setProgressbar(incrementStep, True)

							else : 
								self.setProgress('Skip : No Playblast for %s' % entityName, '', False, True, 'na')
								self.setProgressbar(incrementStep, True)

		return result