mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	add static files
This commit is contained in:
		
							
								
								
									
										321
									
								
								static/rest_framework/docs/js/api.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										321
									
								
								static/rest_framework/docs/js/api.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,321 @@
 | 
			
		||||
var responseDisplay = 'data'
 | 
			
		||||
var coreapi = window.coreapi
 | 
			
		||||
var schema = window.schema
 | 
			
		||||
 | 
			
		||||
function normalizeKeys (arr) {
 | 
			
		||||
  var _normarr = [];
 | 
			
		||||
  for (var i = 0; i < arr.length; i++) {
 | 
			
		||||
    _normarr = _normarr.concat(arr[i].split(' > '));
 | 
			
		||||
  }
 | 
			
		||||
  return _normarr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function normalizeHTTPHeader (str) {
 | 
			
		||||
  // Capitalize HTTP headers for display.
 | 
			
		||||
  return (str.charAt(0).toUpperCase() + str.substring(1))
 | 
			
		||||
    .replace(/-(.)/g, function ($1) {
 | 
			
		||||
      return $1.toUpperCase()
 | 
			
		||||
    })
 | 
			
		||||
    .replace(/(Www)/g, function ($1) {
 | 
			
		||||
      return 'WWW'
 | 
			
		||||
    })
 | 
			
		||||
    .replace(/(Xss)/g, function ($1) {
 | 
			
		||||
      return 'XSS'
 | 
			
		||||
    })
 | 
			
		||||
    .replace(/(Md5)/g, function ($1) {
 | 
			
		||||
      return 'MD5'
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function formEntries (form) {
 | 
			
		||||
  // Polyfill for new FormData(form).entries()
 | 
			
		||||
  var formData = new FormData(form)
 | 
			
		||||
  if (formData.entries !== undefined) {
 | 
			
		||||
    return Array.from(formData.entries())
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var entries = []
 | 
			
		||||
 | 
			
		||||
  for (var i = 0; i < form.elements.length; i++) {
 | 
			
		||||
    var element = form.elements[i]
 | 
			
		||||
 | 
			
		||||
    if (!element.name) {
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (element.type === 'file') {
 | 
			
		||||
      for (var j = 0; j < element.files.length; j++) {
 | 
			
		||||
        entries.push([element.name, element.files[j]])
 | 
			
		||||
      }
 | 
			
		||||
    } else if (element.type === 'select-multiple' || element.type === 'select-one') {
 | 
			
		||||
      for (var j = 0; j < element.selectedOptions.length; j++) {
 | 
			
		||||
        entries.push([element.name, element.selectedOptions[j].value])
 | 
			
		||||
      }
 | 
			
		||||
    } else if (element.type === 'checkbox') {
 | 
			
		||||
      if (element.checked) {
 | 
			
		||||
        entries.push([element.name, element.value])
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      entries.push([element.name, element.value])
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return entries
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$(function () {
 | 
			
		||||
  var $selectedAuthentication = $('#selected-authentication')
 | 
			
		||||
  var $authControl = $('#auth-control')
 | 
			
		||||
  var $authTokenModal = $('#auth_token_modal')
 | 
			
		||||
  var $authBasicModal = $('#auth_basic_modal')
 | 
			
		||||
  var $authSessionModal = $('#auth_session_modal')
 | 
			
		||||
 | 
			
		||||
  // Language Control
 | 
			
		||||
  $('#language-control li').click(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
    var $languageMenuItem = $(this).find('a')
 | 
			
		||||
    var $languageControls = $(this).closest('ul').find('li')
 | 
			
		||||
    var $languageControlLinks = $languageControls.find('a')
 | 
			
		||||
    var language = $languageMenuItem.data('language')
 | 
			
		||||
 | 
			
		||||
    $languageControlLinks.not('[data-language="' + language + '"]').parent().removeClass('active')
 | 
			
		||||
    $languageControlLinks.filter('[data-language="' + language + '"]').parent().addClass('active')
 | 
			
		||||
 | 
			
		||||
    $('#selected-language').text(language)
 | 
			
		||||
 | 
			
		||||
    var $codeBlocks = $('pre.highlight')
 | 
			
		||||
    $codeBlocks.not('[data-language="' + language + '"]').addClass('hide')
 | 
			
		||||
    $codeBlocks.filter('[data-language="' + language + '"]').removeClass('hide')
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // API Explorer
 | 
			
		||||
  $('form.api-interaction').submit(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
 | 
			
		||||
    var $form = $(this).closest('form')
 | 
			
		||||
    var $requestMethod = $form.find('.request-method')
 | 
			
		||||
    var $requestUrl = $form.find('.request-url')
 | 
			
		||||
    var $toggleView = $form.closest('.modal-content').find('.toggle-view')
 | 
			
		||||
    var $responseStatusCode = $form.find('.response-status-code')
 | 
			
		||||
    var $meta = $form.find('.meta')
 | 
			
		||||
    var $responseRawResponse = $form.find('.response-raw-response')
 | 
			
		||||
    var $requestAwaiting = $form.find('.request-awaiting')
 | 
			
		||||
    var $responseRaw = $form.find('.response-raw')
 | 
			
		||||
    var $responseData = $form.find('.response-data')
 | 
			
		||||
    var key = normalizeKeys($form.data('key'))
 | 
			
		||||
    var params = {}
 | 
			
		||||
    var entries = formEntries($form.get()[0])
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < entries.length; i++) {
 | 
			
		||||
      var entry = entries[i]
 | 
			
		||||
      var paramKey = entry[0]
 | 
			
		||||
      var paramValue = entry[1]
 | 
			
		||||
      var $elem = $form.find('[name="' + paramKey + '"]')
 | 
			
		||||
      var dataType = $elem.data('type') || 'string'
 | 
			
		||||
 | 
			
		||||
      if (dataType === 'integer' && paramValue) {
 | 
			
		||||
        var value = parseInt(paramValue)
 | 
			
		||||
        if (!isNaN(value)) {
 | 
			
		||||
          params[paramKey] = value
 | 
			
		||||
        }
 | 
			
		||||
      } else if (dataType === 'number' && paramValue) {
 | 
			
		||||
        var value = parseFloat(paramValue)
 | 
			
		||||
        if (!isNaN(value)) {
 | 
			
		||||
          params[paramKey] = value
 | 
			
		||||
        }
 | 
			
		||||
      } else if (dataType === 'boolean' && paramValue) {
 | 
			
		||||
        var value = {
 | 
			
		||||
          'true': true,
 | 
			
		||||
          'false': false
 | 
			
		||||
        }[paramValue.toLowerCase()]
 | 
			
		||||
        if (value !== undefined) {
 | 
			
		||||
          params[paramKey] = value
 | 
			
		||||
        }
 | 
			
		||||
      } else if (dataType === 'array' && paramValue) {
 | 
			
		||||
        try {
 | 
			
		||||
          params[paramKey] = JSON.parse(paramValue)
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
          // Ignore malformed JSON
 | 
			
		||||
        }
 | 
			
		||||
      } else if (dataType === 'object' && paramValue) {
 | 
			
		||||
        try {
 | 
			
		||||
          params[paramKey] = JSON.parse(paramValue)
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
          // Ignore malformed JSON
 | 
			
		||||
        }
 | 
			
		||||
      } else if (dataType === 'string' && paramValue) {
 | 
			
		||||
        params[paramKey] = paramValue
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $form.find(':checkbox').each(function (index) {
 | 
			
		||||
      // Handle unselected checkboxes
 | 
			
		||||
      var name = $(this).attr('name')
 | 
			
		||||
      if (!params.hasOwnProperty(name)) {
 | 
			
		||||
        params[name] = false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    function requestCallback (request) {
 | 
			
		||||
      // Fill in the "GET /foo/" display.
 | 
			
		||||
      var parser = document.createElement('a')
 | 
			
		||||
      parser.href = request.url
 | 
			
		||||
      var method = request.options.method
 | 
			
		||||
      var path = parser.pathname + parser.hash + parser.search
 | 
			
		||||
 | 
			
		||||
      $requestMethod.text(method)
 | 
			
		||||
      $requestUrl.text(path)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function responseCallback (response, responseText) {
 | 
			
		||||
      // Display the 'Data'/'Raw' control.
 | 
			
		||||
      $toggleView.removeClass('hide')
 | 
			
		||||
 | 
			
		||||
      // Fill in the "200 OK" display.
 | 
			
		||||
      $responseStatusCode.removeClass('label-success').removeClass('label-danger')
 | 
			
		||||
      if (response.ok) {
 | 
			
		||||
        $responseStatusCode.addClass('label-success')
 | 
			
		||||
      } else {
 | 
			
		||||
        $responseStatusCode.addClass('label-danger')
 | 
			
		||||
      }
 | 
			
		||||
      $responseStatusCode.text(response.status)
 | 
			
		||||
      $meta.removeClass('hide')
 | 
			
		||||
 | 
			
		||||
      // Fill in the Raw HTTP response display.
 | 
			
		||||
      var panelText = 'HTTP/1.1 ' + response.status + ' ' + response.statusText + '\n'
 | 
			
		||||
      response.headers.forEach(function (header, key) {
 | 
			
		||||
        panelText += normalizeHTTPHeader(key) + ': ' + header + '\n'
 | 
			
		||||
      })
 | 
			
		||||
      if (responseText) {
 | 
			
		||||
        panelText += '\n' + responseText
 | 
			
		||||
      }
 | 
			
		||||
      $responseRawResponse.text(panelText)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Instantiate a client to make the outgoing request.
 | 
			
		||||
    var options = {
 | 
			
		||||
      requestCallback: requestCallback,
 | 
			
		||||
      responseCallback: responseCallback
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Setup authentication options.
 | 
			
		||||
    if (window.auth && window.auth.type === 'token') {
 | 
			
		||||
      // Header authentication
 | 
			
		||||
      options.auth = new coreapi.auth.TokenAuthentication({
 | 
			
		||||
        scheme: window.auth.scheme,
 | 
			
		||||
        token: window.auth.token
 | 
			
		||||
      })
 | 
			
		||||
    } else if (window.auth && window.auth.type === 'basic') {
 | 
			
		||||
      // Basic authentication
 | 
			
		||||
      options.auth = new coreapi.auth.BasicAuthentication({
 | 
			
		||||
        username: window.auth.username,
 | 
			
		||||
        password: window.auth.password
 | 
			
		||||
      })
 | 
			
		||||
    } else if (window.auth && window.auth.type === 'session') {
 | 
			
		||||
      // Session authentication
 | 
			
		||||
      options.auth = new coreapi.auth.SessionAuthentication({
 | 
			
		||||
        csrfCookieName: 'csrftoken',
 | 
			
		||||
        csrfHeaderName: 'X-CSRFToken'
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var client = new coreapi.Client(options)
 | 
			
		||||
    client.action(schema, key, params).then(function (data) {
 | 
			
		||||
      var response = JSON.stringify(data, null, 2)
 | 
			
		||||
      $requestAwaiting.addClass('hide')
 | 
			
		||||
      $responseRaw.addClass('hide')
 | 
			
		||||
      $responseData.addClass('hide').text('').jsonView(response)
 | 
			
		||||
 | 
			
		||||
      if (responseDisplay === 'data') {
 | 
			
		||||
        $responseData.removeClass('hide')
 | 
			
		||||
      } else {
 | 
			
		||||
        $responseRaw.removeClass('hide')
 | 
			
		||||
      }
 | 
			
		||||
    }).catch(function (error) {
 | 
			
		||||
      var response = JSON.stringify(error.content, null, 2)
 | 
			
		||||
      $requestAwaiting.addClass('hide')
 | 
			
		||||
      $responseRaw.addClass('hide')
 | 
			
		||||
      $responseData.addClass('hide').text('').jsonView(response)
 | 
			
		||||
 | 
			
		||||
      if (responseDisplay === 'data') {
 | 
			
		||||
        $responseData.removeClass('hide')
 | 
			
		||||
      } else {
 | 
			
		||||
        $responseRaw.removeClass('hide')
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // 'Data'/'Raw' control
 | 
			
		||||
  $('.toggle-view button').click(function () {
 | 
			
		||||
    var $modalContent = $(this).closest('.modal-content')
 | 
			
		||||
    var $modalResponseRaw = $modalContent.find('.response-raw')
 | 
			
		||||
    var $modalResponseData = $modalContent.find('.response-data')
 | 
			
		||||
 | 
			
		||||
    responseDisplay = $(this).data('display-toggle')
 | 
			
		||||
 | 
			
		||||
    $(this).removeClass('btn-default').addClass('btn-info').siblings().removeClass('btn-info')
 | 
			
		||||
 | 
			
		||||
    if (responseDisplay === 'raw') {
 | 
			
		||||
      $modalResponseRaw.removeClass('hide')
 | 
			
		||||
      $modalResponseData.addClass('hide')
 | 
			
		||||
    } else {
 | 
			
		||||
      $modalResponseData.removeClass('hide')
 | 
			
		||||
      $modalResponseRaw.addClass('hide')
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // Authentication: none
 | 
			
		||||
  $authControl.find("[data-auth='none']").click(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
    window.auth = null
 | 
			
		||||
    $selectedAuthentication.text('none')
 | 
			
		||||
    $authControl.find("[data-auth]").closest('li').removeClass('active')
 | 
			
		||||
    $authControl.find("[data-auth='none']").closest('li').addClass('active')
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // Authentication: token
 | 
			
		||||
  $('form.authentication-token-form').submit(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
    var $form = $(this).closest('form')
 | 
			
		||||
    var scheme = $form.find('input#scheme').val()
 | 
			
		||||
    var token = $form.find('input#token').val()
 | 
			
		||||
    window.auth = {
 | 
			
		||||
      'type': 'token',
 | 
			
		||||
      'scheme': scheme,
 | 
			
		||||
      'token': token
 | 
			
		||||
    }
 | 
			
		||||
    $selectedAuthentication.text('token')
 | 
			
		||||
    $authControl.find("[data-auth]").closest('li').removeClass('active')
 | 
			
		||||
    $authControl.find("[data-auth='token']").closest('li').addClass('active')
 | 
			
		||||
    $authTokenModal.modal('hide')
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // Authentication: basic
 | 
			
		||||
  $('form.authentication-basic-form').submit(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
    var $form = $(this).closest('form')
 | 
			
		||||
    var username = $form.find('input#username').val()
 | 
			
		||||
    var password = $form.find('input#password').val()
 | 
			
		||||
    window.auth = {
 | 
			
		||||
      'type': 'basic',
 | 
			
		||||
      'username': username,
 | 
			
		||||
      'password': password
 | 
			
		||||
    }
 | 
			
		||||
    $selectedAuthentication.text('basic')
 | 
			
		||||
    $authControl.find("[data-auth]").closest('li').removeClass('active')
 | 
			
		||||
    $authControl.find("[data-auth='basic']").closest('li').addClass('active')
 | 
			
		||||
    $authBasicModal.modal('hide')
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  // Authentication: session
 | 
			
		||||
  $('form.authentication-session-form').submit(function (event) {
 | 
			
		||||
    event.preventDefault()
 | 
			
		||||
    window.auth = {
 | 
			
		||||
      'type': 'session'
 | 
			
		||||
    }
 | 
			
		||||
    $selectedAuthentication.text('session')
 | 
			
		||||
    $authControl.find("[data-auth]").closest('li').removeClass('active')
 | 
			
		||||
    $authControl.find("[data-auth='session']").closest('li').addClass('active')
 | 
			
		||||
    $authSessionModal.modal('hide')
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										2
									
								
								static/rest_framework/docs/js/highlight.pack.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								static/rest_framework/docs/js/highlight.pack.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										7
									
								
								static/rest_framework/docs/js/jquery.json-view.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								static/rest_framework/docs/js/jquery.json-view.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
/**
 | 
			
		||||
 * jquery.json-view - jQuery collapsible JSON plugin
 | 
			
		||||
 * @version v1.0.0
 | 
			
		||||
 * @link http://github.com/bazh/jquery.json-view
 | 
			
		||||
 * @license MIT
 | 
			
		||||
 */
 | 
			
		||||
!function(e){"use strict";var n=function(n){var a=e("<span />",{"class":"collapser",on:{click:function(){var n=e(this);n.toggleClass("collapsed");var a=n.parent().children(".block"),p=a.children("ul");n.hasClass("collapsed")?(p.hide(),a.children(".dots, .comments").show()):(p.show(),a.children(".dots, .comments").hide())}}});return n&&a.addClass("collapsed"),a},a=function(a,p){var t=e.extend({},{nl2br:!0},p),r=function(e){return e.toString()?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"):""},s=function(n,a){return e("<span />",{"class":a,html:r(n)})},l=function(a,p){switch(e.type(a)){case"object":p||(p=0);var c=e("<span />",{"class":"block"}),d=Object.keys(a).length;if(!d)return c.append(s("{","b")).append(" ").append(s("}","b"));c.append(s("{","b"));var i=e("<ul />",{"class":"obj collapsible level"+p});return e.each(a,function(a,t){d--;var r=e("<li />").append(s('"',"q")).append(a).append(s('"',"q")).append(": ").append(l(t,p+1));-1===["object","array"].indexOf(e.type(t))||e.isEmptyObject(t)||r.prepend(n()),d>0&&r.append(","),i.append(r)}),c.append(i),c.append(s("...","dots")),c.append(s("}","b")),c.append(1===Object.keys(a).length?s("// 1 item","comments"):s("// "+Object.keys(a).length+" items","comments")),c;case"array":p||(p=0);var d=a.length,c=e("<span />",{"class":"block"});if(!d)return c.append(s("[","b")).append(" ").append(s("]","b"));c.append(s("[","b"));var i=e("<ul />",{"class":"obj collapsible level"+p});return e.each(a,function(a,t){d--;var r=e("<li />").append(l(t,p+1));-1===["object","array"].indexOf(e.type(t))||e.isEmptyObject(t)||r.prepend(n()),d>0&&r.append(","),i.append(r)}),c.append(i),c.append(s("...","dots")),c.append(s("]","b")),c.append(1===a.length?s("// 1 item","comments"):s("// "+a.length+" items","comments")),c;case"string":if(a=r(a),/^(http|https|file):\/\/[^\s]+$/i.test(a))return e("<span />").append(s('"',"q")).append(e("<a />",{href:a,text:a})).append(s('"',"q"));if(t.nl2br){var o=/\n/g;o.test(a)&&(a=(a+"").replace(o,"<br />"))}var u=e("<span />",{"class":"str"}).html(a);return e("<span />").append(s('"',"q")).append(u).append(s('"',"q"));case"number":return s(a.toString(),"num");case"undefined":return s("undefined","undef");case"null":return s("null","null");case"boolean":return s(a?"true":"false","bool")}};return l(a)};return e.fn.jsonView=function(n,p){var t=e(this);if(p=e.extend({},{nl2br:!0},p),"string"==typeof n)try{n=JSON.parse(n)}catch(r){}return t.append(e("<div />",{"class":"json-view"}).append(a(n,p))),t}}(jQuery);
 | 
			
		||||
		Reference in New Issue
	
	Block a user