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 -*- |
||||
from django.conf.urls import patterns, url |
||||
from .admin import * |
||||
|
||||
from conference.models import Conference |
||||
from exposition.models import Exposition |
||||
|
||||
urlpatterns = patterns('redirects.admin', |
||||
# Redirects |
||||
url(r'^$', RedirectList.as_view(), name='redirects-list'), |
||||
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+)/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