def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing fieldsets. """ general_fields = list(self.general_fields) # some ugly business to remove freeze_date # from the field list general_module = { 'fields': list(self.general_fields), 'classes': ('module-general',), } default_fieldsets = list(self.fieldsets) if not request.user.has_perm('pages.can_freeze'): general_module['fields'].remove('freeze_date') if not request.user.has_perm('pages.can_publish'): general_module['fields'].remove('status') default_fieldsets[0][1] = general_module placeholder_fieldsets = [] template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): if placeholder.ctype not in self.mandatory_placeholders: placeholder_fieldsets.append(placeholder.ctype) additional_fieldsets = [] additional_fieldsets.append((_('Content'), { 'fields': placeholder_fieldsets, 'classes': ('module-content',), })) return default_fieldsets + additional_fieldsets
def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing fieldsets. """ general_fields = list(self.general_fields) # some ugly business to remove freeze_date # from the field list general_module = { 'fields': list(self.general_fields), 'classes': ('module-general', ), } default_fieldsets = list(self.fieldsets) if not request.user.has_perm('pages.can_freeze'): general_module['fields'].remove('freeze_date') if not request.user.has_perm('pages.can_publish'): general_module['fields'].remove('status') default_fieldsets[0][1] = general_module placeholder_fieldsets = [] template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): if placeholder.ctype not in self.mandatory_placeholders: placeholder_fieldsets.append(placeholder.ctype) additional_fieldsets = [] additional_fieldsets.append((_('Content'), { 'fields': placeholder_fieldsets, 'classes': ('module-content', ), })) return default_fieldsets + additional_fieldsets
def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing fieldsets. """ general_fields = list(self.general_fields) # some ugly business to remove freeze_date # from the field list general_module = {"fields": list(self.general_fields), "classes": ("module-general",)} default_fieldsets = list(self.fieldsets) if not request.user.has_perm("pages.can_freeze"): general_module["fields"].remove("freeze_date") if not request.user.has_perm("pages.can_publish"): general_module["fields"].remove("status") default_fieldsets[0][1] = general_module placeholder_fieldsets = [] template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): if placeholder.ctype not in self.mandatory_placeholders: placeholder_fieldsets.append(placeholder.ctype) additional_fieldsets = [] additional_fieldsets.append((_("Content"), {"fields": placeholder_fieldsets, "classes": ("module-content",)})) return default_fieldsets + additional_fieldsets
def get_form(self, request, obj=None, **kwargs): """Get a :class:`Page <pages.admin.forms.PageForm>` for the :class:`Page <pages.models.Page>` and modify its fields depending on the request.""" template = get_template_from_request(request, obj) #model = create_page_model(get_placeholders(template)) form = make_form(self.model, get_placeholders(template)) # bound the form language = get_language_from_request(request) form.base_fields['language'].initial = language if obj: initial_slug = obj.slug(language=language, fallback=False) initial_title = obj.title(language=language, fallback=False) form.base_fields['slug'].initial = initial_slug form.base_fields['title'].initial = initial_title template = get_template_from_request(request, obj) page_templates = settings.get_page_templates() template_choices = list(page_templates) # is default template is not in the list add it if not [ tpl for tpl in template_choices if tpl[0] == settings.PAGE_DEFAULT_TEMPLATE ]: template_choices.insert( 0, (settings.PAGE_DEFAULT_TEMPLATE, _('Default template'))) form.base_fields['template'].choices = template_choices form.base_fields['template'].initial = force_text(template) for placeholder in get_placeholders(template): ctype = placeholder.ctype if obj: initial = placeholder.get_content(obj, language, lang_fallback=False) else: initial = None form.base_fields[ctype] = placeholder.get_field(obj, language, initial=initial) return form
def get_form(self, request, obj=None, **kwargs): """Get a :class:`Page <pages.admin.forms.PageForm>` for the :class:`Page <pages.models.Page>` and modify its fields depending on the request.""" template = get_template_from_request(request, obj) model = create_page_model(get_placeholders(template)) form = make_form(model) # bound the form language = get_language_from_request(request) form.base_fields['language'].initial = language if obj: initial_slug = obj.slug(language=language, fallback=False) initial_title = obj.title(language=language, fallback=False) form.base_fields['slug'].initial = initial_slug form.base_fields['title'].initial = initial_title form.base_fields['slug'].label = _('Slug') template = get_template_from_request(request, obj) page_templates = settings.get_page_templates() if len(page_templates) > 0: template_choices = list(page_templates) template_choices.insert( 0, (settings.PAGE_DEFAULT_TEMPLATE, _('Default template'))) form.base_fields['template'].choices = template_choices form.base_fields['template'].initial = force_text(template) for placeholder in get_placeholders(template): name = placeholder.name if obj: initial = placeholder.get_content(obj, language, name) else: initial = None form.base_fields[name] = placeholder.get_field(obj, language, initial=initial) return form
def get_form(self, request, obj=None, **kwargs): """Get a :class:`Page <pages.admin.forms.PageForm>` for the :class:`Page <pages.models.Page>` and modify its fields depending on the request.""" template = get_template_from_request(request, obj) #model = create_page_model(get_placeholders(template)) form = make_form(self.model, get_placeholders(template)) # bound the form language = get_language_from_request(request) form.base_fields['language'].initial = language if obj: initial_slug = obj.slug(language=language, fallback=False) initial_title = obj.title(language=language, fallback=False) form.base_fields['slug'].initial = initial_slug form.base_fields['title'].initial = initial_title template = get_template_from_request(request, obj) page_templates = settings.get_page_templates() template_choices = list(page_templates) # is default template is not in the list add it if not [tpl for tpl in template_choices if tpl[0] == settings.PAGE_DEFAULT_TEMPLATE]: template_choices.insert(0, (settings.PAGE_DEFAULT_TEMPLATE, _('Default template'))) form.base_fields['template'].choices = template_choices form.base_fields['template'].initial = force_text(template) for placeholder in get_placeholders(template): ctype = placeholder.ctype if obj: initial = placeholder.get_content(obj, language, lang_fallback=False) else: initial = None form.base_fields[ctype] = placeholder.get_field(obj, language, initial=initial) return form
def get_form(self, request, obj=None, **kwargs): """Get a :class:`Page <pages.admin.forms.PageForm>` for the :class:`Page <pages.models.Page>` and modify its fields depending on the request.""" template = get_template_from_request(request, obj) model = create_page_model(get_placeholders(template)) form = make_form(model) # bound the form language = get_language_from_request(request) form.base_fields['language'].initial = language if obj: initial_slug = obj.slug(language=language, fallback=False) initial_title = obj.title(language=language, fallback=False) form.base_fields['slug'].initial = initial_slug form.base_fields['title'].initial = initial_title form.base_fields['slug'].label = _('Slug') template = get_template_from_request(request, obj) page_templates = settings.get_page_templates() if len(page_templates) > 0: template_choices = list(page_templates) template_choices.insert(0, (settings.PAGE_DEFAULT_TEMPLATE, _('Default template'))) form.base_fields['template'].choices = template_choices form.base_fields['template'].initial = force_text(template) for placeholder in get_placeholders(template): name = placeholder.name if obj: initial = placeholder.get_content(obj, language, name) else: initial = None form.base_fields[name] = placeholder.get_field(obj, language, initial=initial) return form
def change_view(self, request, object_id, form_url='', extra_context=None): """The ``change`` admin view for the :class:`Page <pages.models.Page>`.""" language = get_language_from_request(request) extra_context = { 'language': language, 'page_languages': settings.PAGE_LANGUAGES, } try: int(object_id) except ValueError: raise Http404('The "%s" part of the location is invalid.' % str(object_id)) try: obj = self.model.objects.get(pk=object_id) except self.model.DoesNotExist: # Don't raise Http404 just yet, because we haven't checked # permissions yet. We don't want an unauthenticated user to be able # to determine whether a given object exists. obj = None else: template = get_template_from_request(request, obj) extra_context['placeholders'] = get_placeholders(template) extra_context['traduction_languages'] = [ l for l in settings.PAGE_LANGUAGES if Content.objects.get_content(obj, l[0], "title") and l[0] != language ] extra_context['page'] = obj response = super(PageAdmin, self).change_view(request, object_id, form_url=form_url, extra_context=extra_context) if request.method == 'POST' and isinstance(response, HttpResponseRedirect): if '_continue' in request.POST or '_saveasnew' in request.POST or '_addanother' in request.POST: addlanguage = True else: addlanguage = False if addlanguage: from six.moves import urllib splitted = list(urllib.parse.urlparse(response.url)) query = urllib.parse.parse_qs(splitted[4]) query['language'] = language splitted[4] = urllib.parse.urlencode(query) response = HttpResponseRedirect( urllib.parse.urlunparse(splitted)) return response
def change_view(self, request, object_id, form_url='', extra_context=None): """The ``change`` admin view for the :class:`Page <pages.models.Page>`.""" language = get_language_from_request(request) extra_context = { 'language': language, 'page_languages': settings.PAGE_LANGUAGES, } try: int(object_id) except ValueError: raise Http404('The "%s" part of the location is invalid.' % str(object_id)) try: obj = self.model.objects.get(pk=object_id) except self.model.DoesNotExist: # Don't raise Http404 just yet, because we haven't checked # permissions yet. We don't want an unauthenticated user to be able # to determine whether a given object exists. obj = None else: template = get_template_from_request(request, obj) extra_context['placeholders'] = get_placeholders(template) extra_context['traduction_languages'] = [l for l in settings.PAGE_LANGUAGES if Content.objects.get_content(obj, l[0], "title") and l[0] != language] extra_context['page'] = obj response = super(PageAdmin, self).change_view(request, object_id, form_url=form_url, extra_context=extra_context) if request.method == 'POST' and isinstance(response, HttpResponseRedirect): if '_continue' in request.POST or '_saveasnew' in request.POST or '_addanother' in request.POST: addlanguage = True else: addlanguage = False if addlanguage: from six.moves import urllib splitted = list(urllib.parse.urlparse(response.url)) query = urllib.parse.parse_qs(splitted[4]) query['language'] = language splitted[4] = urllib.parse.urlencode(query) response = HttpResponseRedirect(urllib.parse.urlunparse(splitted)) return response
def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing fieldsets. """ # some ugly business to remove freeze_date # from the field list general_module = { 'fields': list(self.general_fields), 'classes': ('module-general', ), } default_fieldsets = list(self.fieldsets) if not request.user.has_perm('pages.can_freeze'): general_module['fields'].remove('freeze_date') if not request.user.has_perm('pages.can_publish'): general_module['fields'].remove('status') default_fieldsets[0][1] = general_module placeholder_fieldsets = [] section_placeholder_fieldsets = defaultdict(list) template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): if placeholder.ctype not in self.mandatory_placeholders and not placeholder.section: placeholder_fieldsets.append(placeholder.ctype) elif placeholder.section: section_placeholder_fieldsets[placeholder.section].append( placeholder.ctype) additional_fieldsets = [] for title, fieldset in section_placeholder_fieldsets.items(): additional_fieldsets.append((title, { 'fields': fieldset, 'classes': ('module-content collapse grp-collapse grp-closed', ), })) additional_fieldsets.append((_('Content'), { 'fields': placeholder_fieldsets, 'classes': ('module-content', ), })) return default_fieldsets + additional_fieldsets
def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing fieldsets. """ # some ugly business to remove freeze_date # from the field list general_module = { 'fields': list(self.general_fields), 'classes': ('module-general',), } default_fieldsets = list(self.fieldsets) if not request.user.has_perm('pages.can_freeze'): general_module['fields'].remove('freeze_date') if not request.user.has_perm('pages.can_publish'): general_module['fields'].remove('status') if not len(registry): general_module['fields'].remove('delegate_to') default_fieldsets[0][1] = general_module placeholder_fieldsets = [] section_placeholder_fieldsets = defaultdict(list) template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): if placeholder.ctype not in self.mandatory_placeholders and not placeholder.section: placeholder_fieldsets.append(placeholder.ctype) elif placeholder.section: section_placeholder_fieldsets[placeholder.section].append(placeholder.ctype) additional_fieldsets = [] for title, fieldset in section_placeholder_fieldsets.items(): additional_fieldsets.append((title, { 'fields': fieldset, 'classes': ('module-content collapse grp-collapse grp-closed',), })) additional_fieldsets.append((_('Content'), { 'fields': placeholder_fieldsets, 'classes': ('module-content',), })) return default_fieldsets + additional_fieldsets