def test_good_timezones(self): date = u'2012-01-01T12:20:00' dt = datetime(2012, 1, 1, 12, 20, 0) #utc self.assertEqual(helper.get_datetime(date + u'-00:00'), dt) self.assertEqual(helper.get_datetime(date + u'+00:00'), dt) #positive timezone self.assertEqual(helper.get_datetime(date + u'+01:30'), dt - timedelta(hours=1, minutes=30)) #negative timezone self.assertEqual(helper.get_datetime(date + u'-01:30'), dt - timedelta(hours=-1, minutes=-30))
def test_good_timezones(self): date = u'2012-01-01T12:20:00' dt = datetime(2012, 1, 1, 12, 20, 0) #utc self.assertEqual(helper.get_datetime(date + u'-00:00'), dt) self.assertEqual(helper.get_datetime(date + u'+00:00'), dt) #positive timezone self.assertEqual(helper.get_datetime(date + u'+01:30'), dt - timedelta(hours=1, minutes = 30)) #negative timezone self.assertEqual(helper.get_datetime(date + u'-01:30'), dt - timedelta(hours=-1, minutes = -30))
class TestSiteListFetchHandling(unittest.TestCase): goodxml = """ <SiteList xmlns="http://isdcf.com/2010/04/SiteList" xmlns:xlink="http://www.w3.org/1999/xlink"> <Originator>orig</Originator> <SystemName>sysName</SystemName> <DateTimeCreated>2001-01-01T15:49:40.220</DateTimeCreated> <FacilityList> <Facility id="A" modified="2011-04-07T12:10:01-00:00" xlink:href="linkA" xlink:type="simple"/> <Facility id="B" modified="2012-05-08T12:11:02-01:20" xlink:href="linkB" xlink:type="simple"/> <Facility id="C" modified="2013-06-09T12:12:03+03:40" xlink:href="linkC" xlink:type="simple"/> </FacilityList> </SiteList> """ datetimeA = helper.get_datetime(u'2011-04-07T12:10:01-00:00') datetimeB = helper.get_datetime(u'2012-05-08T12:11:02-01:20') datetimeC = helper.get_datetime(u'2013-06-09T12:12:03+03:40') def setUp(self): self.sites = SiteListParser(self.goodxml) def test_no_date(self): dict = self.sites.get_sites() self.assertEqual(len(dict), 3) #datetimes should be correct, given that TestSiteListDateHandling worked self.assertEqual(dict[u'linkA'], self.datetimeA) self.assertEqual(dict[u'linkB'], self.datetimeB) self.assertEqual(dict[u'linkC'], self.datetimeC) def test_middle_date(self): #beginning of 2012, should only return B and C dict = self.sites.get_sites(datetime(2012, 1, 1, 12, 0, 0)) self.assertEqual(len(dict), 2) self.assertFalse(u'linkA' in dict) self.assertEqual(dict[u'linkB'], self.datetimeB) self.assertEqual(dict[u'linkC'], self.datetimeC) def test_before_date(self): #beginning of 2011, should return all dict = self.sites.get_sites(datetime(2011, 1, 1, 12, 0, 0)) self.assertEqual(len(dict), 3) self.assertEqual(dict[u'linkA'], self.datetimeA) self.assertEqual(dict[u'linkB'], self.datetimeB) self.assertEqual(dict[u'linkC'], self.datetimeC) def test_middle_date(self): #beginning of 2014, should not return anything dict = self.sites.get_sites(datetime(2014, 1, 1, 12, 0, 0)) self.assertEqual(len(dict), 0)
def test_dates(self): #normal good date self.assertEqual(helper.get_datetime(u'2012-01-13T12:30:00+00:00'), datetime(2012, 1, 13, 12, 30, 0)) #bad date (month 13) self.assertRaises(ValueError, helper.get_datetime, u'2012-13-13T12:30:00+00:00')
def __init__(self, system): self.active = get_boolean(system.IsActive) self.configuration = get_string(system.Digital3DConfiguration) self.install_date = get_datetime(system.InstallDate) self.screen_color = get_string(system.ScreenColor) # enum self.screen_luminance = get_uint(system.ScreenLuminance) # 1 to 29 self.ghostbusting = get_boolean(system.Ghostbusting) self.ghostbusting_configuration = get_string(system.GhostbustingConfiguration)
def __init__(self, software): self.kind = get_string(software.SoftwareKind) # enum self.producer = get_string(software.SoftwareProducer) self.description = get_string(software.Description) self.version = get_string(software.Version) self.filename = get_string(software.FileName) self.file_size = get_uint(software.FileSize) self.file_time = get_datetime(software.FileDateTime)
def __init__(self, auditorium): self.number = get_uint(auditorium.AuditoriumNumber) self.name = get_string(auditorium.AuditoriumName) self.supports_35mm = get_boolean(auditorium.Supports35MM) self.screen_aspect_ratio = get_string(auditorium.ScreenAspectRatio) # enum self.adjustable_screen_mask = get_string(auditorium.AdjustableScreenMask) # enum self.audio_format = get_string(auditorium.AudioFormat) self.install_date = get_datetime(auditorium.AuditoriumInstallDate) self.large_format_type = get_string(auditorium.LargeFormatType) self.digital_3d_system = None if auditorium.Digital3DSystem: self.digital_3d_system = Digital3DSystem(auditorium.Digital3DSystem) self.devices = [Device(device) for device in auditorium.DeviceGroupList(u"Device")]
def __init__(self, xml): """Parses an XML sitelist, and constructs a container holding the the XML document's data. :param string xml: Either the contents of an XML file, or a file handle. This will parse the contents and construct ``sites``. :param boolean validate: Defaults to true. If set, will validate the given XML file against the Sitelist XML Schema xsd file, as found on the `FLM-x Homepage`. """ #If it's a file, we call .read() on it so that it can be consumed twice - once by XMLValidator, and once by #beautiful soup if not (isinstance(xml, str) or isinstance(xml, unicode)): try: xml = xml.read() except AttributeError as e: _logger.critical(repr(e)) raise FlmxCriticalError(repr(e)) validate_XML( xml, os.path.join(os.path.dirname(__file__), u'schema', u'schema_sitelist.xsd')) soup = BeautifulSoup(xml, u"xml") self.originator = soup.SiteList.Originator.string self.system_name = soup.SiteList.SystemName.string facilities = [] for facility in soup.find_all(u'Facility'): facLink = FacilityLink() facLink.id_code = facility[u'id'] # strip the timezone from the ISO timecode facLink.last_modified = get_datetime(facility[u'modified']) facLink.xlink_href = facility[u'xlink:href'] facLink.xlink_type = facility[u'xlink:type'] facilities.append(facLink) self.facilities = sorted(facilities, key=attrgetter(u'last_modified'))
def __init__(self, device): self.type = get_string(device.DeviceTypeID) self.id = get_string(device.DeviceIdentifier) self.serial = get_string(device.DeviceSerial) self.manufacturer_id = None if device.ManufacturerID: self.manufacturer_id = device.ManufacturerID.get_text().split(u":", 2)[2] self.manufacturer_name = get_string(device.ManufacturerName) self.model_number = get_string(device.ModelNumber) self.install_date = get_datetime(device.InstallDate) self.resolution = get_string(device.Resolution) self.active = get_boolean(device.IsActive) self.integrator = get_string(device.Integrator) self.vpf_finance_entity = get_string(device.VPFFinanceEntity) self.vpf_start_date = None if device.VPFStartDate: self.vpf_start_date = get_date(device.VPFStartDate) self.ip_addresses = [] if device.IPAddressList: self.ip_addresses = [IPAddress(ip_address) for ip_address in device.IPAddressList(u"IPAddress")] self.software = [] if device.SoftwareList: self.software = [Software(program) for program in device.SoftwareList(u"Software")] self.certificates = [] if device.KeyInfoList: self.certificates = [Certificate(certificate) for certificate in device.KeyInfoList(u"X509Data")] self.watermarking = [] if device.WatermarkingList: self.watermarking = [Watermarking(watermark) for watermark in device.WatermarkingList(u"Watermarking")] self.kdm_deliveries = deliveries(device.KDMDeliveryMethodList) self.dcp_deliveries = deliveries(device.DCPDeliveryMethodList)
def test_dates(self): #normal good date self.assertEqual(helper.get_datetime(u'2012-01-13T12:30:00+00:00'), datetime(2012, 1, 13, 12, 30, 0)) #bad date (month 13) self.assertRaises(ValueError, helper.get_datetime, u'2012-13-13T12:30:00+00:00')
def test_no_minutes_timezone(self): #timezone as +00 (no minutes) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00+01'), datetime(2012, 1, 1, 11, 30, 0)) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00-01'), datetime(2012, 1, 1, 13, 30, 0))
def test_no_colon_timezone(self): #timezone as +0000 self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00+0130'), datetime(2012, 1, 1, 11, 0, 0)) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00-0130'), datetime(2012, 1, 1, 14, 0, 0))
def test_millis_no_timezone(self): # with millis and no tz self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00.123'), datetime(2012, 1, 1, 12, 30, 1))
def test_millis_timezones(self): # with millis appended - just flooring that value for the moment self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00.123+01:00'), datetime(2012, 1, 1, 11, 30, 1))
def test_no_millis_no_timezone(self): # missing "+00:00" or similar self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00'), datetime(2012, 1, 1, 12, 30, 0))
def test_no_minutes_timezone(self): #timezone as +00 (no minutes) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00+01'), datetime(2012, 1, 1, 11, 30, 0)) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00-01'), datetime(2012, 1, 1, 13, 30, 0))
def test_no_colon_timezone(self): #timezone as +0000 self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00+0130'), datetime(2012, 1, 1, 11, 0, 0)) self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00-0130'), datetime(2012, 1, 1, 14, 0, 0))
def test_millis_no_timezone(self): # with millis and no tz self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00.123'), datetime(2012, 1, 1, 12, 30, 1))
def test_millis_timezones(self): # with millis appended - just flooring that value for the moment self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00.123+01:00'), datetime(2012, 1, 1, 11, 30, 1))
def test_no_millis_no_timezone(self): # missing "+00:00" or similar self.assertEqual(helper.get_datetime(u'2012-01-01T12:30:00'), datetime(2012, 1, 1, 12, 30, 0))