def sr_date_restricted(self): if self.sensor_name in restricted: if not julian_date_check( self.julian, restricted[self.sensor_name]['by_date']['sr']): return True return False
def available_products(self, product_id, username): """ Check to see what products are available to user based on an input list of scenes :param product_id: list of desired inputs :param username: username :return: dictionary """ user = User.by_username(username) pub_prods = copy.deepcopy(OrderingProvider.sensor_products(product_id)) with open('api/domain/restricted.yaml') as f: restricted = yaml.load(f.read()) role = False if user.is_staff() else True restrict_all = restricted.get('all', {}) all_role = restrict_all.get('role', []) all_by_date = restrict_all.get('by_date', {}) upd = {'date_restricted': {}} for sensor_type, prods in pub_prods.items(): if sensor_type == 'not_implemented': continue sensor_restr = restricted.get(sensor_type, {}) role_restr = sensor_restr.get('role', []) + all_role by_date_restr = sensor_restr.get('by_date', {}) # All overrides any sensor related dates by_date_restr.update(all_by_date) outs = pub_prods[sensor_type]['products'] ins = pub_prods[sensor_type]['inputs'] remove_me = [] if role: for prod in role_restr: try: outs.remove(prod) except ValueError: continue for prod in outs: if prod in by_date_restr: r = sensor_restr['by_date'][prod] for sc_id in ins: obj = sensor.instance(sc_id) julian = '{}{}'.format(obj.year, obj.doy) if not julian_date_check(julian, r): remove_me.append(prod) if prod in upd['date_restricted']: upd['date_restricted'][prod].append(sc_id) else: upd['date_restricted'][prod] = [sc_id] for rem in remove_me: try: outs.remove(rem) except ValueError: continue if upd['date_restricted']: pub_prods.update(upd) return pub_prods
def available_products(self, product_id, username): """ Check to see what products are available to user based on an input list of scenes :param product_id: list of desired inputs :param username: username :return: dictionary """ user = User.by_username(username) pub_prods = copy.deepcopy(OrderingProvider.sensor_products(product_id)) with open(os.path.join(__location__, 'domain/restricted.yaml')) as f: restricted = yaml.safe_load(f.read()) role = False if user.is_staff() else True restrict_all = restricted.get('all', {}) all_role = restrict_all.get('role', []) all_by_date = restrict_all.get('by_date', {}) all_ordering_rsctd = restrict_all.get('ordering', []) upd = {'date_restricted': {}, 'ordering_restricted': {}} for sensor_type, prods in pub_prods.items(): if sensor_type == 'not_implemented': continue stype = sensor_type.replace( '_collection', '') if '_collection' in sensor_type else sensor_type sensor_restr = restricted.get(stype, {}) role_restr = sensor_restr.get('role', []) + all_role by_date_restr = sensor_restr.get('by_date', {}) # All overrides any sensor related dates by_date_restr.update(all_by_date) outs = pub_prods[sensor_type]['products'] ins = pub_prods[sensor_type]['inputs'] if sensor_type in all_ordering_rsctd: for sc_id in ins: if sensor_type in upd['ordering_restricted']: upd['ordering_restricted'][sensor_type].append(sc_id) else: upd['ordering_restricted'][sensor_type] = [sc_id] pub_prods.pop(sensor_type) continue remove_me = [] if role: for prod in role_restr: try: outs.remove(prod) except ValueError: continue for prod in outs: if prod in by_date_restr: r = sensor_restr['by_date'][prod] for sc_id in ins: obj = sensor.instance(sc_id) julian = '{}{}'.format(obj.year, obj.doy) if not julian_date_check(julian, r): remove_me.append(prod) if prod in upd['date_restricted']: upd['date_restricted'][prod].append(sc_id) else: upd['date_restricted'][prod] = [sc_id] for rem in remove_me: try: outs.remove(rem) except ValueError: continue if upd['date_restricted']: pub_prods.update(date_restricted=upd['date_restricted']) if upd['ordering_restricted']: pub_prods.update(ordering_restricted=upd['ordering_restricted']) return pub_prods
def sr_date_restricted(self): if self.sensor_name in restricted: if not julian_date_check(self.julian, restricted[self.sensor_name]['by_date']['sr']): return True return False