Exemplo n.º 1
0
    def get_item_form(self, stream, env, item, initial, draft=None):
        if item.state not in (item.ABSENT, item.DELETED):
            return PublishItemHandler.get_item_form(
                    self, stream, env, item, initial, draft)

        # XXX this method looks hacky
        # Get existing language version and fill the form with object reflection
        # to current language model
        for lang in item.models.langs:
            # XXX item.models is not an interface
            if lang == item.models.lang:
                continue
            source_item = item._item_version('admin', lang)
            if source_item and \
                    source_item.state not in (item.ABSENT, item.DELETED):
                break
        else:
            # The item has been deleted on all language versions, creation is
            # not allowed
            raise HTTPNotFound
        # make object reflection, do not add it to db
        #fake_item = item.__class__()
        ## XXX do not replicate text fields, creation time, etc
        #replicate_attributes(source_item, fake_item)
        #form = PublishItemHandler.get_item_form(
        #        self, stream, env, fake_item, initial, draft)
        # XXX hack!
        #form.item = item

        # hack do get initial value for form from source item
        source_form = PublishItemHandler.get_item_form(
                    self, stream, env, source_item, initial, draft)
        form = PublishItemHandler.get_item_form(
                self, stream, env, item, initial, draft)
        form.accept(source_form.raw_data)
        form.errors = {}
        for key in form.raw_data.keys():
            field = form.get_field(key)
            if self.drop_field_on_i18n(field, key):
                field.set_raw_value(form.raw_data,
                                    field.from_python(field.get_initial()))
        return form
Exemplo n.º 2
0
    def get_item_form(self, stream, env, item, initial, draft=None):
        if item.state not in (item.ABSENT, item.DELETED):
            return PublishItemHandler.get_item_form(
                    self, stream, env, item, initial, draft)

        # XXX this method looks hacky
        # Get existing language version and fill the form with object reflection
        # to current language model
        for lang in item.models.langs:
            # XXX item.models is not an interface
            if lang == item.models.lang:
                continue
            source_item = item._item_version('admin', lang)
            if source_item and \
                    source_item.state not in (item.ABSENT, item.DELETED):
                break
        else:
            # The item has been deleted on all language versions, creation is
            # not allowed
            raise HTTPNotFound
        # make object reflection, do not add it to db
        #fake_item = item.__class__()
        ## XXX do not replicate text fields, creation time, etc
        #replicate_attributes(source_item, fake_item)
        #form = PublishItemHandler.get_item_form(
        #        self, stream, env, fake_item, initial, draft)
        # XXX hack!
        #form.item = item

        # hack do get initial value for form from source item
        source_form = PublishItemHandler.get_item_form(
                    self, stream, env, source_item, initial, draft)
        form = PublishItemHandler.get_item_form(
                self, stream, env, item, initial, draft)
        form.accept(source_form.raw_data)
        form.errors = {}

        return form
Exemplo n.º 3
0
 def process_item_template_data(self, env, td):
     item = td['item']
     if item.state in (item.ABSENT, item.DELETED):
         td['title'] = u'Создание языковой версии объекта'
     return PublishItemHandler.process_item_template_data(self, env, td)
Exemplo n.º 4
0
 def process_item_template_data(self, env, td):
     item = td['item']
     if item.state in (item.ABSENT, item.DELETED):
         td['title'] = u'Создание языковой версии объекта'
     return PublishItemHandler.process_item_template_data(self, env, td)
Exemplo n.º 5
0
 def process_item_template_data(self, env, td):
     item = td["item"]
     if item.state in (item.ABSENT, item.DELETED):
         td["title"] = u"Создание языковой версии объекта"
     return PublishItemHandler.process_item_template_data(self, env, td)