Пример #1
0
	def get_containers(self):
		try:
			return self._flat_containers
		except:
			try:
				c = json_loads(self.containers or "")
			except ValueError:
				c = {}
			r = dict(c.get('_parent_', {}).items())
			for (k,v) in c.items():
				if k.startswith('_'): continue
				if v:
					r[k] = v 
			self._flat_containers = r 
			return r
Пример #2
0
	def save(self,*args,**kwargs):
		try:
			if not self.parent and self.slug != DEFAULT_LAYOUT_SLUG:
				self.parent = Layout.get()
			if self.parent and self.parent != self:
				try:
					c = json_loads(self.containers or "")
				except ValueError:
					c = {}
				r = dict(self.parent.get_containers().items())
				for (k,v) in c.items():
					if v:
						r[k] = None
						del r[k] 
				if r:
					c['_parent_'] = r 
				self.containers = json_dumps(c)
		except:
			pass
		super(Layout, self).save(*args, **kwargs)
		
		children = Layout.objects.filter(parent=self).exclude(pk=self.pk)
		for child in children:
			child.save()