parent
10d9919d6d
commit
5d125ea8e4
9 changed files with 219 additions and 30 deletions
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import json |
||||||
|
|
||||||
|
from django.core.serializers.json import DjangoJSONEncoder |
||||||
|
from django.http import HttpResponse |
||||||
|
|
||||||
|
|
||||||
|
class JsonResponse(HttpResponse): |
||||||
|
""" |
||||||
|
An HTTP response class that consumes data to be serialized to JSON. |
||||||
|
:param data: Data to be dumped into json. By default only ``dict`` objects |
||||||
|
are allowed to be passed due to a security flaw before EcmaScript 5. See |
||||||
|
the ``safe`` parameter for more information. |
||||||
|
:param encoder: Should be an json encoder class. Defaults to |
||||||
|
``django.core.serializers.json.DjangoJSONEncoder``. |
||||||
|
:param safe: Controls if only ``dict`` objects may be serialized. Defaults |
||||||
|
to ``True``. |
||||||
|
:param json_dumps_params: A dictionary of kwargs passed to json.dumps(). |
||||||
|
""" |
||||||
|
|
||||||
|
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, |
||||||
|
json_dumps_params=None, **kwargs): |
||||||
|
if safe and not isinstance(data, dict): |
||||||
|
raise TypeError('In order to allow non-dict objects to be ' |
||||||
|
'serialized set the safe parameter to False') |
||||||
|
if json_dumps_params is None: |
||||||
|
json_dumps_params = {} |
||||||
|
kwargs.setdefault('content_type', 'application/json') |
||||||
|
data = json.dumps(data, cls=encoder, **json_dumps_params) |
||||||
|
super(JsonResponse, self).__init__(content=data, **kwargs) |
||||||
@ -1,11 +1,18 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
from django.conf.urls import patterns, url |
from django.conf.urls import patterns, url |
||||||
from .admin import * |
from .admin import * |
||||||
|
from conference.models import Conference |
||||||
|
from exposition.models import Exposition |
||||||
|
|
||||||
urlpatterns = patterns('redirects.admin', |
urlpatterns = patterns('redirects.admin', |
||||||
|
# Redirects |
||||||
url(r'^$', RedirectList.as_view(), name='redirects-list'), |
url(r'^$', RedirectList.as_view(), name='redirects-list'), |
||||||
url(r'^add/$', RedirectCreate.as_view(), name='redirects-add'), |
url(r'^add/$', RedirectCreate.as_view(), name='redirects-add'), |
||||||
url(r'^(?P<pk>\d+)/edit/$', RedirectUpdate.as_view(), name='redirects-edit'), |
url(r'^(?P<pk>\d+)/edit/$', RedirectUpdate.as_view(), name='redirects-edit'), |
||||||
url(r'^(?P<pk>\d+)/delete/$', RedirectDelete.as_view(), name='redirects-delete'), |
url(r'^(?P<pk>\d+)/delete/$', RedirectDelete.as_view(), name='redirects-delete'), |
||||||
|
|
||||||
|
# Generate new url for objects (conference/exposition) |
||||||
|
url(r'^expo/(?P<slug>.*)/$', NewUrlForObject.as_view(model=Exposition), name='redirects-add-expo'), |
||||||
|
url(r'^conf/(?P<slug>.*)/$', NewUrlForObject.as_view(model=Conference), name='redirects-add-conf'), |
||||||
|
|
||||||
) |
) |
||||||
|
|||||||
@ -0,0 +1,42 @@ |
|||||||
|
{% extends 'base.html' %} |
||||||
|
{% load static %} |
||||||
|
{% load i18n %} |
||||||
|
|
||||||
|
{% block body %} |
||||||
|
<form method="post" class="form-horizontal" action="."> {% csrf_token %} |
||||||
|
<fieldset> |
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>{{ form.verbose }}</h2> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="box-content"> |
||||||
|
|
||||||
|
{% for field in form %} |
||||||
|
<div class="control-group {% if field.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ field.label }}:</b></label> |
||||||
|
<div class="controls">{{ field }} |
||||||
|
<span class="help-inline">{{ field.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
|
||||||
|
{% if form.exist %} |
||||||
|
<div class="help-inline"> |
||||||
|
{% blocktrans with url=object.get_permanent_url %} |
||||||
|
Редирект по с такого URL {{ url }} уже сущесвтует. |
||||||
|
<br>В случае сохранения будет перезаписан. |
||||||
|
{% endblocktrans %} |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</fieldset> |
||||||
|
|
||||||
|
<div class="controls"> |
||||||
|
<input class="btn btn-large btn-primary" type="submit" value="Готово"> |
||||||
|
<input class="btn btn-large" type="reset" value="Отмена"> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
{% endblock %} |
||||||
Loading…
Reference in new issue