def reattach(self, itemid, collectionid): coll = VSCollection(host=self.config.value('vs_host'), port=self.config.value('vs_port'), user=self.config.value('vs_user'), passwd=self.config.value('vs_password')) coll.name = collectionid coll.addToCollection(itemid, type="item") self.logger.info("Attached item {0} to {1}".format(itemid, collectionid)) self.logger.info("Updating management metadata for {0}".format(itemid)) completed = False held = False deletable = False sensitive = False deep_archive = False if coll.get('gnm_project_status') == 'Completed': completed = True elif coll.get('gnm_project_status') == 'Held': held = True if coll.get('gnm_storage_rule_deletable') == 'storage_rule_deletable': deletable = True if coll.get('gnm_storage_rule_sensitive') == 'storage_rule_sensitive': sensitive = True if coll.get('gnm_storage_ruke_deep_archive') == 'storage_rule_deep_archive': deep_archive = True item = VSItem(host=self.options.vshost, port=self.options.vsport, user=self.options.vsuser, passwd=self.options.vspass) item.name = itemid item.set_metadata({ 'gnm_storage_rule_projects_completed': ['storage_rule_projects_completed' if completed else ''], 'gnm_storage_rule_projects_held' : ['storage_rule_projects_held' if held else ''], 'gnm_storage_rule_deletable' : ['storage_rule_deletable' if deletable else ''], 'gnm_storage_rule_sensitive' : ['storage_rule_sensitive' if sensitive else ''], 'gnm_storage_rule_deep_archive' : ['storage_rule_deep_archive' if deep_archive else ''] }) self.logger.info("Updated metadata for item {0}".format(item.name))
def reattach(self, itemid, collectionid): coll = VSCollection(host=self.config.value('vs_host'), port=self.config.value('vs_port'), user=self.config.value('vs_user'), passwd=self.config.value('vs_password')) coll.name = collectionid coll.addToCollection(itemid, type="item") self.logger.info("Attached item {0} to {1}".format( itemid, collectionid)) self.logger.info("Updating management metadata for {0}".format(itemid)) completed = False held = False deletable = False sensitive = False deep_archive = False if coll.get('gnm_project_status') == 'Completed': completed = True elif coll.get('gnm_project_status') == 'Held': held = True if coll.get('gnm_storage_rule_deletable') == 'storage_rule_deletable': deletable = True if coll.get('gnm_storage_rule_sensitive') == 'storage_rule_sensitive': sensitive = True if coll.get('gnm_storage_ruke_deep_archive' ) == 'storage_rule_deep_archive': deep_archive = True item = VSItem(host=self.options.vshost, port=self.options.vsport, user=self.options.vsuser, passwd=self.options.vspass) item.name = itemid item.set_metadata({ 'gnm_storage_rule_projects_completed': ['storage_rule_projects_completed' if completed else ''], 'gnm_storage_rule_projects_held': ['storage_rule_projects_held' if held else ''], 'gnm_storage_rule_deletable': ['storage_rule_deletable' if deletable else ''], 'gnm_storage_rule_sensitive': ['storage_rule_sensitive' if sensitive else ''], 'gnm_storage_rule_deep_archive': ['storage_rule_deep_archive' if deep_archive else ''] }) self.logger.info("Updated metadata for item {0}".format(item.name))
def post(self, request): from pprint import pformat from gnmvidispine.vidispine_api import VSException from gnmvidispine.vs_item import VSItem from gnmvidispine.vs_collection import VSCollection from gnmvidispine.vs_metadata import VSMetadata from django.conf import settings from portal.plugins.gnm_masters.models import VSMaster, MasterModel from portal.plugins.gnm_projects.models import VSProject from django.contrib.auth.models import User import re is_vsid = re.compile(r'^\w{2}-\d+') try: comm_id = request.POST['plutoconverter_commission_id_input'] proj_id = request.POST['plutoconverter_project_id_input'] item_id = request.POST['plutoconverter_item_id_input'] except StandardError as e: return Response({'status': 'error', 'error': unicode(e)},status=400) if not is_vsid.match(comm_id) or not is_vsid.match(proj_id) or not is_vsid.match(item_id): return Response({'status': 'error', 'error': 'Not a valid Vidispine ID'},status=400) try: item = VSItem(user=settings.VIDISPINE_USERNAME, passwd=settings.VIDISPINE_PASSWORD, url=settings.VIDISPINE_URL) item.populate(item_id) if item.get('gnm_type') == 'master': return Response({'status': 'error', 'error': '{0} is already a master'.format(item_id)},status=400) project = VSCollection(user=settings.VIDISPINE_USERNAME, passwd=settings.VIDISPINE_PASSWORD, url=settings.VIDISPINE_URL) project.populate(proj_id) commission_id = project.get('__parent_collection') logger.info("Project {0} belongs to commission {1}".format(project.name, commission_id)) commission = VSCollection(user=settings.VIDISPINE_USERNAME, passwd=settings.VIDISPINE_PASSWORD, url=settings.VIDISPINE_URL) commission.populate(commission_id) md_to_set = { 'gnm_commission_title' : commission.get('gnm_commission_title'), 'gnm_commission_workinggroup' : commission.get('gnm_commission_workinggroup'), 'gnm_project_headline' : project.get('gnm_project_headline'), 'gnm_master_website_headline' : item.get('title'), 'gnm_master_website_standfirst': item.get('gnm_asset_description'), 'gnm_master_website_byline' : item.get('gnm_asset_owner'), # 'gnm_master_website_tags': breakout_tags(item.get('gnm_asset_user_keywords',allowArray=True), # host=options.vshost,user=options.vsuser,passwd=options.vspasswd), 'gnm_type' : 'Master', 'gnm_master_language' : settings.LANGUAGE_CODE[0:2], } logger.info("Going to add {0} to project {1}".format(item_id,md_to_set)) project.addToCollection(item) logger.info("Going to set metadata on {0}: {1}".format(item_id, md_to_set)) item.set_metadata(md_to_set) logger.info("SUCCESS: item {0} has been converted to master".format(item_id)) admin_user = User.objects.get(username=settings.VIDISPINE_USERNAME) vs_project = VSProject(proj_id, admin_user) vs_master = VSMaster(item_id, admin_user) vs_project.add_master(vs_master) return Response({'status': 'success', 'itemid': item_id },status=200) except VSException as e: if raven_client is not None: raven_client.captureException() return Response({'status': 'error', 'error': "Vidispine said {0}".format(unicode(e))},status=500) except StandardError as e: if raven_client is not None: raven_client.captureException() return Response({'status': 'error', 'error': unicode(e)},status=500)