Beispiel #1
0
 def save_success(self, appstruct):
     appstruct.pop('csrf_token', None)
     context = self.request.context
     mapper = lambda snippet: ("snippet-%d" % snippet.id, snippet)
     view_name = self.context.default_view or "view"
     slots_names = [name for name, title in get_registered_slots(view_name)]
     for slot in context.slots:
         if slot.name in slots_names:
             snippets = self._available_snippets(context, slot.name)
             snippets = dict(map(mapper, snippets))
             while slot.snippets:
                 slot.snippets.pop()
             for snippet in appstruct[slot.name]:
                 snippet_id = snippet['snippet']
                 if snippet_id in snippets:
                     s = snippets[snippet_id]
                     if s not in slot.snippets:
                         slot.snippets.append(snippets[snippet_id])
             del appstruct[slot.name]
     for slot_name in appstruct:
         snippets = self._available_snippets(context, slot_name)
         snippets = dict(map(mapper, snippets))
         slot = DocumentSlot()
         slot.document = context
         slot.name = slot_name
         for snippet in appstruct[slot_name]:
             snippet_id = snippet['snippet']
             if snippet_id in snippets:
                 s = snippets[snippet_id]
                 if s not in slot.snippets:
                     slot.snippets.append(snippets[snippet_id])
     for slot in context.slots:
         if slot.name not in slots_names:
             context.slots.remove(slot)
             DBSession.delete(slot)
     DBSession.flush()
     return HTTPFound(self.request.resource_url(context))
Beispiel #2
0
 def save_success(self, appstruct):
     appstruct.pop('csrf_token', None)
     context = self.request.context
     mapper = lambda snippet: ("snippet-%d" % snippet.id, snippet)
     view_name = self.context.default_view or "view"
     slots_names = [name for name, title in get_registered_slots(view_name)]
     for slot in context.slots:
         if slot.name in slots_names:
             snippets = self._available_snippets(context, slot.name)
             snippets = dict(map(mapper, snippets))
             while slot.snippets:
                 slot.snippets.pop()
             for snippet in appstruct[slot.name]:
                 snippet_id = snippet['snippet']
                 if snippet_id in snippets:
                     s = snippets[snippet_id]
                     if s not in slot.snippets:
                         slot.snippets.append(snippets[snippet_id])
             del appstruct[slot.name]
     for slot_name in appstruct:
         snippets = self._available_snippets(context, slot_name)
         snippets = dict(map(mapper, snippets))
         slot = DocumentSlot()
         slot.document = context
         slot.name = slot_name
         for snippet in appstruct[slot_name]:
             snippet_id = snippet['snippet']
             if snippet_id in snippets:
                 s = snippets[snippet_id]
                 if s not in slot.snippets:
                     slot.snippets.append(snippets[snippet_id])
     for slot in context.slots:
         if slot.name not in slots_names:
             context.slots.remove(slot)
             DBSession.delete(slot)
     DBSession.flush()
     return HTTPFound(self.request.resource_url(context))