~ubuntu-branches/debian/sid/python-django/sid

« back to all changes in this revision

Viewing changes to tests/test_client/views.py

  • Committer: Package Import Robot
  • Author(s): Raphaël Hertzog
  • Date: 2014-09-17 14:15:11 UTC
  • mfrom: (1.3.17) (6.2.18 experimental)
  • Revision ID: package-import@ubuntu.com-20140917141511-icneokthe9ww5sk4
Tags: 1.7-2
* Release to unstable.
* Add a migrate-south sample script to help users apply their South
  migrations. Thanks to Brian May.

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
from django.utils.decorators import method_decorator
12
12
from django.utils.six.moves.urllib.parse import urlencode
13
13
 
 
14
 
14
15
def get_view(request):
15
16
    "A simple view that expects a GET request, and returns a rendered template"
16
17
    t = Template('This is a test. {{ var }} is the value.', name='GET Template')
18
19
 
19
20
    return HttpResponse(t.render(c))
20
21
 
 
22
 
21
23
def post_view(request):
22
24
    """A view that expects a POST, and returns a different template depending
23
25
    on whether any POST data is available
35
37
 
36
38
    return HttpResponse(t.render(c))
37
39
 
 
40
 
38
41
def view_with_header(request):
39
42
    "A view that has a custom header"
40
43
    response = HttpResponse()
41
44
    response['X-DJANGO-TEST'] = 'Slartibartfast'
42
45
    return response
43
46
 
 
47
 
44
48
def raw_post_view(request):
45
49
    """A view which expects raw XML to be posted and returns content extracted
46
50
    from the XML"""
56
60
 
57
61
    return HttpResponse(t.render(c))
58
62
 
 
63
 
59
64
def redirect_view(request):
60
65
    "A view that redirects all requests to the GET view"
61
66
    if request.GET:
62
67
        query = '?' + urlencode(request.GET, True)
63
68
    else:
64
69
        query = ''
65
 
    return HttpResponseRedirect('/test_client/get_view/' + query)
 
70
    return HttpResponseRedirect('/get_view/' + query)
 
71
 
66
72
 
67
73
def view_with_secure(request):
68
74
    "A view that indicates if the request was secure"
69
75
    response = HttpResponse()
70
76
    response.test_was_secure_request = request.is_secure()
 
77
    response.test_server_port = request.META.get('SERVER_PORT', 80)
71
78
    return response
72
79
 
 
80
 
73
81
def double_redirect_view(request):
74
82
    "A view that redirects all requests to a redirection view"
75
 
    return HttpResponseRedirect('/test_client/permanent_redirect_view/')
 
83
    return HttpResponseRedirect('/permanent_redirect_view/')
 
84
 
76
85
 
77
86
def bad_view(request):
78
87
    "A view that returns a 404 with some error content"
86
95
    ('e', 'Fifth Choice')
87
96
)
88
97
 
 
98
 
89
99
class TestForm(Form):
90
100
    text = fields.CharField()
91
101
    email = fields.EmailField()
99
109
            raise ValidationError("Non-field error.")
100
110
        return cleaned_data
101
111
 
 
112
 
102
113
def form_view(request):
103
114
    "A view that tests a simple form"
104
115
    if request.method == 'POST':
116
127
 
117
128
    return HttpResponse(t.render(c))
118
129
 
 
130
 
119
131
def form_view_with_template(request):
120
132
    "A view that tests a simple form"
121
133
    if request.method == 'POST':
134
146
        }
135
147
    )
136
148
 
 
149
 
137
150
class BaseTestFormSet(BaseFormSet):
138
151
    def clean(self):
139
152
        """Checks that no two email addresses are the same."""
153
166
 
154
167
TestFormSet = formset_factory(TestForm, BaseTestFormSet)
155
168
 
 
169
 
156
170
def formset_view(request):
157
171
    "A view that tests a simple formset"
158
172
    if request.method == 'POST':
171
185
        c = Context({'my_formset': formset})
172
186
    return HttpResponse(t.render(c))
173
187
 
 
188
 
174
189
def login_protected_view(request):
175
190
    "A simple view that is login protected."
176
191
    t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')
179
194
    return HttpResponse(t.render(c))
180
195
login_protected_view = login_required(login_protected_view)
181
196
 
 
197
 
182
198
def login_protected_view_changed_redirect(request):
183
199
    "A simple view that is login protected with a custom redirect field set"
184
200
    t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')
187
203
    return HttpResponse(t.render(c))
188
204
login_protected_view_changed_redirect = login_required(redirect_field_name="redirect_to")(login_protected_view_changed_redirect)
189
205
 
 
206
 
190
207
def _permission_protected_view(request):
191
208
    "A simple view that is permission protected."
192
209
    t = Template('This is a permission protected test. '
193
210
                 'Username is {{ user.username }}. '
194
 
                 'Permissions are {{ user.get_all_permissions }}.' ,
 
211
                 'Permissions are {{ user.get_all_permissions }}.',
195
212
                 name='Permissions Template')
196
213
    c = Context({'user': request.user})
197
214
    return HttpResponse(t.render(c))
198
215
permission_protected_view = permission_required('permission_not_granted')(_permission_protected_view)
199
216
permission_protected_view_exception = permission_required('permission_not_granted', raise_exception=True)(_permission_protected_view)
200
217
 
 
218
 
201
219
class _ViewManager(object):
202
220
    @method_decorator(login_required)
203
221
    def login_protected_view(self, request):
211
229
    def permission_protected_view(self, request):
212
230
        t = Template('This is a permission protected test using a method. '
213
231
                     'Username is {{ user.username }}. '
214
 
                     'Permissions are {{ user.get_all_permissions }}.' ,
 
232
                     'Permissions are {{ user.get_all_permissions }}.',
215
233
                     name='Permissions Template')
216
234
        c = Context({'user': request.user})
217
235
        return HttpResponse(t.render(c))
220
238
login_protected_method_view = _view_manager.login_protected_view
221
239
permission_protected_method_view = _view_manager.permission_protected_view
222
240
 
 
241
 
223
242
def session_view(request):
224
243
    "A view that modifies the session"
225
244
    request.session['tobacconist'] = 'hovercraft'
229
248
    c = Context()
230
249
    return HttpResponse(t.render(c))
231
250
 
 
251
 
232
252
def broken_view(request):
233
253
    """A view which just raises an exception, simulating a broken view."""
234
254
    raise KeyError("Oops! Looks like you wrote some bad code.")
235
255
 
 
256
 
236
257
def mail_sending_view(request):
237
258
    mail.EmailMessage(
238
259
        "Test message",
241
262
        ['first@example.com', 'second@example.com']).send()
242
263
    return HttpResponse("Mail sent")
243
264
 
 
265
 
244
266
def mass_mail_sending_view(request):
245
267
    m1 = mail.EmailMessage(
246
268
        'First Test message',
254
276
        ['second@example.com', 'third@example.com'])
255
277
 
256
278
    c = mail.get_connection()
257
 
    c.send_messages([m1,m2])
 
279
    c.send_messages([m1, m2])
258
280
 
259
281
    return HttpResponse("Mail sent")
 
282
 
 
283
 
 
284
def django_project_redirect(request):
 
285
    return HttpResponseRedirect('https://www.djangoproject.com/')