cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
messages_ajax.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 # @COPYRIGHT_begin
3 #
4 # Copyright [2010-2014] Institute of Nuclear Physics PAN, Krakow, Poland
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # @COPYRIGHT_end
19 
20 ##
21 # @package src.wi.utils.messages_ajax
22 #
23 # @author Piotr W√≥jcik
24 # @date 23.11.2010
25 #
26 
27 import json
28 
29 from django.http import HttpResponse
30 from django.utils.translation import ugettext as _
31 
32 from wi.utils.exceptions import RestErrorException
33 
34 
35 ##
36 #
37 # Returns json encoded ajax response.
38 #
39 def success(message, status=0):
40  return HttpResponse(content=json.dumps({'status': status, 'data': message}), content_type="application/json")
41 
42 
43 ##
44 #
45 # Returns json encoded ajax response (error).
46 #
47 def error(message):
48  return success(message, status=8000)
49 
50 
51 ##
52 #
53 # Returns json encoded ajax response containing a file.
54 #
55 def success_with_key(message, filename, name, status=0):
56  return HttpResponse(content=json.dumps({'status': status, 'data': message, 'file': filename, 'name': name}), content_type="application/json")
57 
58 
59 ##
60 #
61 # Decorator checking whether request is an AJAX request.
62 #
63 def ajax_request(view_func):
64  ##
65  #
66  # Returned decorated function.
67  #
68  def wrap(request, *args, **kwds):
69  if not request.is_ajax():
70  return error(_('Not AJAX request!'))
71  try:
72  return view_func(request, *args, **kwds)
73  except RestErrorException as ex:
74  return error(ex.value)
75  return wrap
76