1 16 26 27 28 30 31 33 34 37 40 41 45 46 47 49 51 52 53 55 57 58 61 62 63 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 89 90 91 92 93 94 95 98 99 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 118 120 122 124 125 126 127 128 129 130 131 133 134 135 140 141 145 146 147 150 155 158 161 163 165 166 167 168 171 172 173 175 176 177 178 181 182 184 190 193 194 195 196 198 200 201 207 209 210 211 213 222 228 231 236 239 240 242 244 245 248 249 250 251 252 255 256 257 258 259 260 264 265 268 269 271 273 274 275 277 279 280 282 283 286 288 289 292 293 295 298 299 301 303 305 307 309 310 311 312 315 316 318 319 320 321 322 323 324 327 329 330 332 333 334 335 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 361 364 365 366 371 372 373 377 380 381 382 |
# -*- coding: utf-8 -*-
else: from django.views.i18n import null_javascript_catalog as javascript_catalog
"""Page Admin class."""
# these mandatory fields are not versioned 'position', 'freeze_date']
# Strange django behavior. If not provided, django will try to find # 'page' foreign key in all registered models
general_fields.insert(insert_point, 'tags')
# Add support for future dating and expiration based on settings. general_fields.insert(insert_point, 'publication_end_date') general_fields.insert(insert_point, 'publication_date')
general_fields.append('delegate_to') insert_point = general_fields.index('status') + 1
[_('General'), { 'fields': general_fields, 'classes': ('module-general',), }], (_('Options'), { 'fields': normal_fields, 'classes': ('module-options',), }), )
'all': [join(settings.PAGES_MEDIA_URL, path) for path in ( 'css/rte.css', 'css/pages.css' )] } 'javascript/jquery.js', 'javascript/jquery.rte.js', 'javascript/jquery.query.js', 'javascript/pages.js', 'javascript/pages_form.js', )]
# Admin-site-wide views. url(r'^$', self.list_pages, name='page-index'), url(r'^(?P<page_id>[0-9]+)/traduction/(?P<language_id>[-\w]+)/$', traduction, name='page-traduction'), url(r'^(?P<page_id>[0-9]+)/get-content/(?P<content_id>[-\w]+)/$', get_content, name='page-get-content'), url(r'^(?P<page_id>[0-9]+)/modify-content/(?P<content_id>[-\w]+)/(?P<language_id>[-\w]+)/$', modify_content, name='page-modify-content'), url(r'^(?P<page_id>[0-9]+)/delete-content/(?P<language_id>[-\w]+)/$', delete_content, name='page-delete-content'), url(r'^(?P<page_id>[0-9]+)/sub-menu/$', sub_menu, name='page-sub-menu'), url(r'^(?P<page_id>[0-9]+)/move-page/$', move_page, name='page-move-page'), url(r'^(?P<page_id>[0-9]+)/change-status/$', change_status, name='page-change-status'), )
"""Displays the i18n JavaScript that the Django admin requires.
This takes into account the ``USE_I18N`` setting. If it's set to False, the generated JavaScript will be leaner and faster. """ return javascript_catalog(request, packages='pages')
"""Move the page in the tree if necessary and save every placeholder :class:`Content <pages.models.Content>`. """
# if True, we need to move the page except self.model.DoesNotExist: pass else:
not in self.mandatory_placeholders):
""" Add fieldsets of placeholders to the list of already existing fieldsets. """
# some ugly business to remove freeze_date # from the field list 'fields': list(self.general_fields), 'classes': ('module-general',), }
general_module['fields'].remove('freeze_date')
'fields': placeholder_fieldsets, 'classes': ('module-content',), }))
"""Given a ModelForm return an unsaved instance. ``change`` is True if the object is being changed, and False if it's being added."""
"""Get a :class:`Page <pages.admin.forms.PageForm>` for the :class:`Page <pages.models.Page>` and modify its fields depending on the request."""
_('Default template')))
else: language, initial=initial)
"""The ``change`` admin view for the :class:`Page <pages.models.Page>`.""" 'language': language, # don't see where it's used #'lang': current_lang, 'page_languages': settings.PAGE_LANGUAGES, } 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: settings.PAGE_LANGUAGES if Content.objects.get_content(obj, l[0], "title") and l[0] != language] extra_context)
"""The ``add`` admin view for the :class:`Page <pages.models.Page>`.""" 'language': get_language_from_request(request), 'page_languages': settings.PAGE_LANGUAGES, } #extra_context['placeholders'] = get_placeholders(template) extra_context)
"""Return ``True`` if the current user has permission to add a new page."""
"""Return ``True`` if the current user has permission to change the page.""" lang=lang, method=request.method)
"""Return ``True`` if the current user has permission on the page.""" lang=lang)
"""List root pages""" return admin.site.login(request)
page_ids = list(set([c.page.pk for c in Content.objects.filter(body__icontains=query)])) pages = Page.objects.filter(pk__in=page_ids) else: pages = pages.filter(sites=settings.SITE_ID)
'language': language, 'name': _("page"), 'pages': pages, 'opts': self.model._meta, 'q': query }
""" Fill in values for content blocks from official language if creating a new translation """ form = super(PageAdminWithDefaultContent, self ).get_form(request, obj, **kwargs)
language = get_language_from_request(request)
if global_settings.LANGUAGE_CODE == language: # this is the "official" language return form
if Content.objects.filter(page=obj, language=language).count(): return form
# this is a new page, try to find some default content template = get_template_from_request(request, obj) for placeholder in get_placeholders(template): name = placeholder.name form.base_fields[name] = placeholder.get_field(obj, language, initial=Content.objects.get_content(obj, global_settings.LANGUAGE_CODE, name)) return form
except AlreadyRegistered: pass
#admin.site.register(Content, ContentAdmin)
except AlreadyRegistered: pass
|