31
31
'ShowUsefulnessHandler',
32
32
'DeleteReviewHandler',
37
from datetime import datetime, timedelta
38
from datetime import (
39
45
from django.conf import settings
46
from django.core.serializers.json import DjangoJSONEncoder
40
47
from django.http import (
42
49
HttpResponseBadRequest,
44
51
HttpResponseForbidden,
46
53
from django.shortcuts import get_object_or_404
54
from django.utils import datetime_safe
55
from piston.emitters import (
47
59
from piston.handler import BaseHandler
60
from piston.utils import Mimer
49
62
from reviewsapp.forms import ReviewForm, ReviewEditForm
50
63
from reviewsapp.models import (
65
78
HttpResponseForbidden._is_string = True
81
class Django13JSONEncoder(DjangoJSONEncoder):
83
JSONEncoder subclass that knows how to encode date/time types in a
84
Django 1.3 compatible way.
87
DATE_FORMAT = "%Y-%m-%d"
88
TIME_FORMAT = "%H:%M:%S"
91
if isinstance(o, datetime):
92
d = datetime_safe.new_datetime(o)
93
return d.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
94
elif isinstance(o, date):
95
d = datetime_safe.new_date(o)
96
return d.strftime(self.DATE_FORMAT)
97
elif isinstance(o, time):
98
return o.strftime(self.TIME_FORMAT)
100
return super(Django13JSONEncoder, self).default(o)
103
class Django13JSONEmitter(JSONEmitter):
104
"""JSON emitter, using non-iso format for datetimes.
106
This emitter is compatible with django 1.3 style of serializing
107
datetime objects in JSON.
109
def render(self, request):
110
cb = request.GET.get('callback', None)
111
seria = json.dumps(self.construct(),
112
cls=Django13JSONEncoder,
113
ensure_ascii=False, indent=4)
116
if cb and is_valid_jsonp_callback_value(cb):
117
return '%s(%s)' % (cb, seria)
122
Emitter.register('json', Django13JSONEmitter,
123
'application/json; charset=utf-8')
124
Mimer.register(json.loads, ('application/json',))
68
127
class ServerStatusHandler(BaseHandler):
69
128
allowed_methods = ('GET', 'OPTIONS',)