def get_url(self, obj, lang=None, get={}): ct = ContentType.objects.get_for_model(self.model) info = ct.app_label, ct.model if lang: get.update({self.query_language_key: lang}) url = '%s?%s' % (self.reverse('admin:%s_%s_change' % info, args=(obj.id,)), urlencode(get)) return url
def put(self, path, data={}, content_type=MULTIPART_CONTENT, **extra): "Construct a PUT request." if content_type is MULTIPART_CONTENT: post_data = encode_multipart(BOUNDARY, data) else: post_data = data # Make `data` into a querystring only if it's not already a string. If # it is a string, we'll assume that the caller has already encoded it. query_string = None if not isinstance(data, string_types): query_string = urlencode(data, doseq=True) parsed = urlparse(path) r = { 'CONTENT_LENGTH': len(post_data), 'CONTENT_TYPE': content_type, 'PATH_INFO': self._get_path(parsed), 'QUERY_STRING': query_string or parsed[4], 'REQUEST_METHOD': 'PUT', 'wsgi.input': FakePayload(post_data), } r.update(extra) return self.request(**r)
def get_url(self, obj, lang=None, get={}): ct = ContentType.objects.get_for_model(self.model) info = ct.app_label, ct.model if lang: get.update({self.query_language_key: lang}) url = '%s?%s' % (self.reverse('admin:%s_%s_change' % info, args=(obj.id, )), urlencode(get)) return url
def delete(self, path, data={}, **extra): "Construct a DELETE request." parsed = urlparse(path) r = { 'PATH_INFO': self._get_path(parsed), 'QUERY_STRING': urlencode(data, doseq=True) or parsed[4], 'REQUEST_METHOD': 'DELETE', 'wsgi.input': FakePayload('') } r.update(extra) return self.request(**r)
def options(self, path, data={}, **extra): "Constrict an OPTIONS request" parsed = urlparse(path) r = { 'PATH_INFO': self._get_path(parsed), 'QUERY_STRING': urlencode(data, doseq=True) or parsed[4], 'REQUEST_METHOD': 'OPTIONS', 'wsgi.input': FakePayload('') } r.update(extra) return self.request(**r)
def get(self, path, data={}, **extra): "Construct a GET request" parsed = urlparse(path) r = { 'CONTENT_TYPE': 'text/html; charset=utf-8', 'PATH_INFO': self._get_path(parsed), 'QUERY_STRING': urlencode(data, doseq=True) or parsed[4], 'REQUEST_METHOD': 'GET', 'wsgi.input': FakePayload('') } r.update(extra) return self.request(**r)
def test_admin_change_form_language_tabs_urls(self): with LanguageOverride('en'): with self.login_user_context(username='******', password='******'): get_url = reverse('admin:app_normal_change', args=(self.normal_id[1],)) response = self.client.get(get_url) self.assertEqual(response.status_code, 200) tabs = response.context['language_tabs'] from hvad.compat.urls import urlencode for actual_tab_url, name, key, status in tabs: expected_tab_url = '%s?%s' % (get_url, urlencode({'language': key})) self.assertEqual(expected_tab_url, actual_tab_url)
def get_language_tabs(self, request, available_languages): tabs = [] get = dict(request.GET) language = self._language(request) for key, name in settings.LANGUAGES: get.update({'language': key}) url = '%s?%s' % (request.path, urlencode(get)) if language == key: status = 'current' elif key in available_languages: status = 'available' else: status = 'empty' tabs.append((url, name, key, status)) return tabs
def test_admin_change_form_language_tabs_urls(self): with LanguageOverride('en'): with self.login_user_context(username='******', password='******'): obj = Normal.objects.language('en').create( shared_field="shared", translated_field='English', ) get_url = reverse('admin:app_normal_change', args=(obj.pk,)) response = self.client.get(get_url) self.assertEqual(response.status_code, 200) tabs = response.context['language_tabs'] from hvad.compat.urls import urlencode for actual_tab_url, name, key, status in tabs: expected_tab_url = '%s?%s' % (get_url, urlencode({'language': key})) self.assertEqual(expected_tab_url, actual_tab_url)