atomresponder/pac_xml.py (31 lines of code) (raw):

from .s3_mixin import S3Mixin from .vs_mixin import VSMixin import urllib.parse import logging logger = logging.getLogger(__name__) class PacXmlProcessor(S3Mixin, VSMixin): default_expiry_time = 360 @staticmethod def get_admin_user(): from django.contrib.auth.models import User try: return User.objects.get(username="admin") except User.DoesNotExist: admins = User.objects.filter(is_superuser=True) if admins.count()>0: return admins[0] else: raise RuntimeError("No admin users could be found in the system, surely this is not right?") def link_to_item(self, pac_xml_record, vsitem): """ Performs the connection of data to an item. :param pac_xml_record: Instance of models.PacFormXml describing to data to link :param vsitem: populated gnmvidispine.vs_item object :return: """ #from portal.plugins.gnm_masters.edl_import import update_edl_data parsed = urllib.parse.urlparse(pac_xml_record.pacdata_url) if parsed.scheme != "s3": raise RuntimeError("Only PAC data download from S3 is supported at present") pac_xml_record.status = "DOWNLOADING" pac_xml_record.save() logger.info("{n}: Downloading PAC data from {0}".format(pac_xml_record.pacdata_url,n=vsitem.name)) if parsed.path[0]=='/': #s3 does not like leading / s3path = parsed.path[1:] else: s3path = parsed.path filename = self.download_to_local_location(bucket=parsed.hostname, key=s3path) logger.info("{n}: Download completed".format(n=vsitem.name)) # with open(filename,"r") as f: # logger.info("{n}: Linking EDL data from {0}".format(filename,n=vsitem.name)) # pac_xml_record.status = "INPROGRESS" # pac_xml_record.save() # task_id = update_edl_data(f, vsitem.name, self.get_admin_user()) # logger.info("{n}: Commenced EDL ingest in celery task {0}".format(task_id, n=vsitem.name))