def acquire_label(self, field_name): label_name = "%s__%s__%s" % (self.__class__.__name__, field_name, self.jeeves_id) if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) restrictor = getattr(self, "jeeves_restrict_" + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(self, ctxt), True) return label
def acquire_label(self, field_name): label_name = '%s__%s__%s' % \ (self.__class__.__name__, field_name, self.jeeves_id) if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) restrictor = getattr(self, 'jeeves_restrict_' + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(self, ctxt), True) return label
def acquire_label_by_name(app_label, label_name): if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) model_name, field_name, jeeves_id = label_name.split('__') model = get_model(app_label, model_name) # TODO: optimization: most of the time this obj will be the one we are # already fetching obj = model.objects.get(use_base_env=True, jeeves_id=jeeves_id) restrictor = getattr(model, 'jeeves_restrict_' + field_name) JeevesLib.restrict(label, lambda ctxt : restrictor(obj, ctxt), True) return label
def acquire_label_by_name(app_label, label_name): if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) model_name, field_name, jeeves_id = label_name.split('__') model = get_model(app_label, model_name) # TODO: optimization: most of the time this obj will be the one we are # already fetching obj = model.objects.get(use_base_env=True, jeeves_id=jeeves_id) restrictor = getattr(model, 'jeeves_restrict_' + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(obj, ctxt), True) return label
def acquire_label_by_name(app_label, label_name, obj): """Gets a label by name. """ if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) model_name, field_name, jeeves_id = label_name.split("__") model = get_model(app_label, model_name) # NOTE(JY): Optimization implemented. Make sure it's correct. # TODO: optimization: most of the time this obj will be the one we are # already fetching """ if obj == None: obj = model.objects.get(use_base_env=True , skip_optimize=True, jeeves_id=jeeves_id) """ restrictor = getattr(model, "jeeves_restrict_" + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(obj, ctxt), True) return label
def acquire_label_by_name(app_label, label_name, obj): """Gets a label by name. """ if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) model_name, field_name, jeeves_id = label_name.split('__') model = get_model(app_label, model_name) # NOTE(JY): Optimization implemented. Make sure it's correct. # TODO: optimization: most of the time this obj will be the one we are # already fetching ''' if obj == None: obj = model.objects.get(use_base_env=True , skip_optimize=True, jeeves_id=jeeves_id) ''' restrictor = getattr(model, 'jeeves_restrict_' + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(obj, ctxt), True) return label
def acquire_label_by_name(app_label, label_name, obj=None): """Gets a label by name. """ if JeevesLib.doesLabelExist(label_name): return JeevesLib.getLabel(label_name) else: label = JeevesLib.mkLabel(label_name, uniquify=False) model_name, field_name, jeeves_id = label_name.split('__') # Get the model that corresponds to the application label and # model name. # TODO: Make get_model faster? model = apps.get_model(app_label, model_name) # Gets the current row so we can feed it to the policy. # TODO: Figure out why we need the faceted value here... obj = model.objects.get(use_base_env=True, jeeves_id=jeeves_id) restrictor = getattr(model, 'jeeves_restrict_' + field_name) JeevesLib.restrict(label, lambda ctxt: restrictor(obj, ctxt), True) return label