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 156 157 160 164 165 167 169 170 171 172 175 176 177 179 180 181 182 185 187 188 190 196 199 200 201 202 204 206 207 213 215 216 217 219 228 234 237 242 245 246 248 250 251 254 255 256 257 258 261 262 263 264 265 266 270 271 274 275 277 279 280 281 283 285 286 288 289 292 294 295 298 299 301 304 305 307 309 311 313 315 316 317 318 321 322 325 326 327 328 329 330 331 332 335 337 338 340 341 342 343 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 369 372 373 374 379 380 381 385 388 389 390 |
# -*- 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:
extra_data=extra_data)
not in self.mandatory_placeholders): extra_data=extra_data)
""" 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') general_module['fields'].remove('status')
'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)
'can_publish': perms.check('publish'), '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
|