Exemplo n.º 1
0
 def appstruct(self):
     context = self.request.context
     appstruct = {}
     view_name = self.context.default_view or "view"
     for name, _ in get_registered_slots(view_name):
         appstruct[name] = self._used_snippets(context, name)
     return appstruct
Exemplo n.º 2
0
 def appstruct(self):
     context = self.request.context
     appstruct = {}
     view_name = self.context.default_view or "view"
     for name, _ in get_registered_slots(view_name):
         appstruct[name] = self._used_snippets(context, name)
     return appstruct
Exemplo n.º 3
0
 def __init__(self, context, request, **kwargs):
     super(SlotsEditView, self).__init__(context, request, **kwargs)
     self.schema = colander.SchemaNode(colander.Mapping(), name="slots")
     view_name = context.default_view or "view"
     for name, title in get_registered_slots(view_name):
         choices = self._available_snippets(self.request.context, name)
         choices = map(lambda s: ("snippet-%d" % s.id, s.title), choices)
         snippet = colander.SchemaNode(colander.Mapping(), 
                 name="snippet-mapping", title=_(u'Snippet'))
         snippet.add(colander.SchemaNode(colander.String(),
             widget=SelectWidget(values=choices),
             name='snippet'))
         self.schema.add(colander.SchemaNode(colander.Sequence(), 
             snippet, name=name, title=title, missing=[],
             widget=SequenceWidget(orderable=True),
             validator=validate_list))
Exemplo n.º 4
0
 def __init__(self, context, request, **kwargs):
     super(SlotsEditView, self).__init__(context, request, **kwargs)
     self.schema = colander.SchemaNode(colander.Mapping(), name="slots")
     view_name = context.default_view or "view"
     for name, title in get_registered_slots(view_name):
         choices = self._available_snippets(self.request.context, name)
         choices = map(lambda s: ("snippet-%d" % s.id, s.title), choices)
         snippet = colander.SchemaNode(colander.Mapping(),
                                       name="snippet-mapping",
                                       title=_(u'Snippet'))
         snippet.add(
             colander.SchemaNode(colander.String(),
                                 widget=SelectWidget(values=choices),
                                 name='snippet'))
         self.schema.add(
             colander.SchemaNode(colander.Sequence(),
                                 snippet,
                                 name=name,
                                 title=title,
                                 missing=[],
                                 widget=SequenceWidget(orderable=True),
                                 validator=validate_list))
Exemplo n.º 5
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))
Exemplo n.º 6
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))