Example #1
0
 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))
Example #2
0
    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))
Example #3
0
    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)