Пример #1
0
 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
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
 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
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
 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
Пример #13
0
 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
Пример #14
0
    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)