def auto_set_key_name(sender, **kwargs): from gogogo.views.db.forms import next_key_name kwargs = kwargs["kwargs"] if "auto_set_key_name" in kwargs: if sender.kind() in auto_set_key_name_table and "key_name" not in kwargs: fields = auto_set_key_name_table[sender.kind()] items = [] for f in fields: if not hasattr(sender,f): # It is not a property. It is a keyword items.append(f) continue prop = getattr(sender,f) value = kwargs[f] if isinstance(prop,db.ReferenceProperty): if isinstance(value,db.Key): items.append(value.id_or_name()) else: items.append(value.key().id_or_name()) elif isinstance(prop,MLStringProperty): items.append(MLStringProperty.to_key_name(value)) else: items.append(value) key_name = "-".join(items) kwargs["key_name"] = next_key_name(sender,key_name) del kwargs["auto_set_key_name"]
def trEntity(entity,request): """ Translate an entity """ if entity == None: return None ret = {} ret.update(entity) lang = MLStringProperty.get_current_lang(request) for prop in entity['instance'].properties().values(): datastore_value = prop.get_value_for_datastore(entity['instance']) if not datastore_value == []: ret[prop.name] = datastore_value if request and isinstance(prop,MLStringProperty): ret[prop.name] = MLStringProperty.trans(datastore_value,lang) return ret
def create_entity(model,request = None): """ Create entity (a dict object) from model with: MLString translated. (based on Models._to_entity(self, entity) ) Deprecated function. Please use createEntity. """ entity = {} code_index = -1 for prop in model.properties().values(): datastore_value = prop.get_value_for_datastore(model) if not datastore_value == []: entity[prop.name] = datastore_value if request and isinstance(prop,MLStringProperty): if code_index < 0 and request != None: for (i,lang) in enumerate(settings.LANGUAGES): if lang[0] == request.LANGUAGE_CODE: code_index = i break entity[prop.name] = MLStringProperty.trans(datastore_value,code_index) #entity[prop.name] = datastore_value[0] return entity