示例#1
0
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"]
示例#2
0
文件: utils.py 项目: gogogo/gogogo-hk
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
示例#3
0
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