aboutsummaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
3.0-betaFix rendering HTML form when API error raised. Closes #2103.Tom Christie12 years
docs-renderers-use-appropriate-renderer-class-namedocs/renderers: `StaticHTMLRenderer` instead of `TemplateHTMLRenderer`Teddy Wing11 years
empty_closable_objects_closable_objects as an empty list, not deletedTom Christie11 years
gh-pagesUpdate documentationTom Christie11 years
masterMerge pull request #2823 from jpadilla/masterKevin Brown11 years
model-serializer-apiFinal bits of docs for ModelSerializer fields APITom Christie11 years
model-serializer-cachingResolve merge conflictTom Christie11 years
version-2.4.xMerge pull request #2819 from xrmx/update-2.4-docs-urlXavier Ordoquy11 years
version-3.1Merge branch 'version-3.1' of https://github.com/tomchristie/django-rest-fram...Tom Christie11 years
 
TagDownloadAuthorAge
3.1.1django-rest-framework-3.1.1.tar.bz2  Tom Christie11 years
3.1.0django-rest-framework-3.1.0.tar.bz2  Tom Christie11 years
3.0.5django-rest-framework-3.0.5.tar.bz2  Xavier Ordoquy11 years
3.0.4django-rest-framework-3.0.4.tar.bz2  Xavier Ordoquy11 years
3.0.3django-rest-framework-3.0.3.tar.bz2  Xavier Ordoquy11 years
3.0.2django-rest-framework-3.0.2.tar.bz2  Tom Christie11 years
3.0.1django-rest-framework-3.0.1.tar.bz2  Xavier Ordoquy11 years
3.0.0django-rest-framework-3.0.0.tar.bz2  Tom Christie11 years
2.4.4django-rest-framework-2.4.4.tar.bz2  Tom Christie12 years
2.4.3django-rest-framework-2.4.3.tar.bz2  Tom Christie12 years
2.4.2django-rest-framework-2.4.2.tar.bz2  Tom Christie12 years
2.4.1django-rest-framework-2.4.1.tar.bz2  Tom Christie12 years
2.4.0django-rest-framework-2.4.0.tar.bz2  Tom Christie12 years
2.3.14django-rest-framework-2.3.14.tar.bz2  Tom Christie12 years
2.3.13django-rest-framework-2.3.13.tar.bz2  Tom Christie12 years
2.3.12django-rest-framework-2.3.12.tar.bz2  Tom Christie12 years
2.3.11django-rest-framework-2.3.11.tar.bz2  Tom Christie12 years
2.3.10django-rest-framework-2.3.10.tar.bz2  Tom Christie12 years
2.3.9django-rest-framework-2.3.9.tar.bz2  Tom Christie13 years
2.3.8django-rest-framework-2.3.8.tar.bz2  Tom Christie13 years
2.3.7django-rest-framework-2.3.7.tar.bz2  Tom Christie13 years
2.3.6django-rest-framework-2.3.6.tar.bz2  Tom Christie13 years
2.3.5django-rest-framework-2.3.5.tar.bz2  Tom Christie13 years
2.3.4django-rest-framework-2.3.4.tar.bz2  Tom Christie13 years
2.3.3django-rest-framework-2.3.3.tar.bz2  Tom Christie13 years
2.3.2django-rest-framework-2.3.2.tar.bz2  Tom Christie13 years
2.3.1django-rest-framework-2.3.1.tar.bz2  Tom Christie13 years
2.3.0django-rest-framework-2.3.0.tar.bz2  Tom Christie13 years
2.2.7django-rest-framework-2.2.7.tar.bz2  Tom Christie13 years
2.2.6django-rest-framework-2.2.6.tar.bz2  Tom Christie13 years
2.2.5django-rest-framework-2.2.5.tar.bz2  Tom Christie13 years
2.2.4django-rest-framework-2.2.4.tar.bz2  Tom Christie13 years
2.2.3django-rest-framework-2.2.3.tar.bz2  Tom Christie13 years
2.2.2django-rest-framework-2.2.2.tar.bz2  Tom Christie13 years
2.2.1django-rest-framework-2.2.1.tar.bz2  Tom Christie13 years
2.2.0django-rest-framework-2.2.0.tar.bz2  Tom Christie13 years
2.1.17django-rest-framework-2.1.17.tar.bz2  Tom Christie13 years
2.1.16django-rest-framework-2.1.16.tar.bz2  Tom Christie13 years
2.1.15django-rest-framework-2.1.15.tar.bz2  Tom Christie13 years
2.1.14django-rest-framework-2.1.14.tar.bz2  Tom Christie13 years
2.1.13django-rest-framework-2.1.13.tar.bz2  Tom Christie13 years
2.1.12django-rest-framework-2.1.12.tar.bz2  Tom Christie13 years
2.1.11django-rest-framework-2.1.11.tar.bz2  Tom Christie13 years
2.1.10django-rest-framework-2.1.10.tar.bz2  Tom Christie13 years
2.1.9django-rest-framework-2.1.9.tar.bz2  Tom Christie13 years
2.1.8django-rest-framework-2.1.8.tar.bz2  Tom Christie13 years
2.1.7django-rest-framework-2.1.7.tar.bz2  Tom Christie13 years
2.1.6django-rest-framework-2.1.6.tar.bz2  Tom Christie14 years
2.1.5django-rest-framework-2.1.5.tar.bz2  Tom Christie14 years
2.1.4django-rest-framework-2.1.4.tar.bz2  Tom Christie14 years
2.1.3django-rest-framework-2.1.3.tar.bz2  Tom Christie14 years
2.1.2django-rest-framework-2.1.2.tar.bz2  Tom Christie14 years
2.1.1django-rest-framework-2.1.1.tar.bz2  Tom Christie14 years
2.1.0django-rest-framework-2.1.0.tar.bz2  Tom Christie14 years
2.0.2django-rest-framework-2.0.2.tar.bz2  Tom Christie14 years
2.0.1django-rest-framework-2.0.1.tar.bz2  Tom Christie14 years
2.0.0django-rest-framework-2.0.0.tar.bz2  Tom Christie14 years
0.4.0django-rest-framework-0.4.0.tar.bz2  Tom Christie14 years
0.3.3django-rest-framework-0.3.3.tar.bz2  Tom Christie14 years
0.3.2django-rest-framework-0.3.2.tar.bz2  Marko Tibold14 years
0.3.1django-rest-framework-0.3.1.tar.bz2  Tom Christie14 years
0.3.0django-rest-framework-0.3.0.tar.bz2  Tom Christie14 years
0.2.4django-rest-framework-0.2.4.tar.bz2  Tom Christie14 years
0.1django-rest-framework-0.1.tar.bz2  tom christie tom@tomchristie.com15 years
">indexOf('#'); if (anchorIndex > -1) url = url.substring(0, anchorIndex); url += "#"; var sep = ''; for (var key in this.anchor) { var value = this.anchor[key]; if (typeof value === 'undefined' || value === null) { delete this.anchor[key]; } else { url += sep + encodeURIComponent(key); if (value !== true) url += "=" + encodeURIComponent(value); sep = '&'; } } this.location['set'](url); return url; }, updateView: function() { var start = new Date().getTime(); var scope = jQuery(this.doc).scope(); scope.clearInvalid(); scope.updateView(); var end = new Date().getTime(); this.updateAnchor(); foreach(this.updateListeners, function(fn) {fn();}); }, docFindWithSelf: function(exp){ var doc = jQuery(this.doc); var selection = doc.find(exp); if (doc.is(exp)){ selection = selection.andSelf(); } return selection; }, executeInit: function() { this.docFindWithSelf("[ng-init]").each(function() { var jThis = jQuery(this); var scope = jThis.scope(); try { scope.eval(jThis.attr('ng-init')); } catch (e) { alert("EVAL ERROR:\n" + jThis.attr('ng-init') + '\n' + toJson(e, true)); } }); }, entity: function (scope) { var self = this; this.docFindWithSelf("[ng-entity]").attr("ng-watch", function() { try { var jNode = jQuery(this); var decl = scope.entity(jNode.attr("ng-entity"), self.datastore); return decl + (jNode.attr('ng-watch') || ""); } catch (e) { log(e); alert(e); } }); }, compile: function() { var jNode = jQuery(this.doc); if (this.config['autoSubmit']) { var submits = this.docFindWithSelf(":submit").not("[ng-action]"); submits.attr("ng-action", "$save()"); submits.not(":disabled").not("ng-bind-attr").attr("ng-bind-attr", '{disabled:"{{$invalidWidgets}}"}'); } this.precompile(this.doc)(this.doc, jNode.scope(), ""); this.docFindWithSelf("a[ng-action]").live('click', function (event) { var jNode = jQuery(this); var scope = jNode.scope(); try { scope.eval(jNode.attr('ng-action')); jNode.removeAttr('ng-error'); jNode.removeClass("ng-exception"); } catch (e) { jNode.addClass("ng-exception"); jNode.attr('ng-error', toJson(e, true)); } scope.get('$updateView')(); return false; }); }, translateBinding: function(node, parentPath, factories) { var path = parentPath.concat(); var offset = path.pop(); var parts = Binder.parseBindings(node.nodeValue); if (parts.length > 1 || Binder.binding(parts[0])) { var parent = node.parentNode; if (isLeafNode(parent)) { parent.setAttribute('ng-bind-template', node.nodeValue); factories.push({path:path, fn:function(node, scope, prefix) { return new BindUpdater(node, node.getAttribute('ng-bind-template')); }}); } else { for (var i = 0; i < parts.length; i++) { var part = parts[i]; var binding = Binder.binding(part); var newNode; if (binding) { newNode = document.createElement("span"); var jNewNode = jQuery(newNode); jNewNode.attr("ng-bind", binding); if (i === 0) { factories.push({path:path.concat(offset + i), fn:this.ng_bind}); } } else if (msie && part.charAt(0) == ' ') { newNode = document.createElement("span"); newNode.innerHTML = '&nbsp;' + part.substring(1); } else { newNode = document.createTextNode(part); } parent.insertBefore(newNode, node); } } parent.removeChild(node); } }, precompile: function(root) { var factories = []; this.precompileNode(root, [], factories); return function (template, scope, prefix) { var len = factories.length; for (var i = 0; i < len; i++) { var factory = factories[i]; var node = template; var path = factory.path; for (var j = 0; j < path.length; j++) { node = node.childNodes[path[j]]; } try { scope.addWidget(factory.fn(node, scope, prefix)); } catch (e) { alert(e); } } }; }, precompileNode: function(node, path, factories) { var nodeType = node.nodeType; if (nodeType == Node.TEXT_NODE) { this.translateBinding(node, path, factories); return; } else if (nodeType != Node.ELEMENT_NODE && nodeType != Node.DOCUMENT_NODE) { return; } if (!node.getAttribute) return; var nonBindable = node.getAttribute('ng-non-bindable'); if (nonBindable || nonBindable === "") return; var attributes = node.attributes; if (attributes) { var bindings = node.getAttribute('ng-bind-attr'); node.removeAttribute('ng-bind-attr'); bindings = bindings ? fromJson(bindings) : {}; var attrLen = attributes.length; for (var i = 0; i < attrLen; i++) { var attr = attributes[i]; var attrName = attr.name; // http://www.glennjones.net/Post/809/getAttributehrefbug.htm var attrValue = msie && attrName == 'href' ? decodeURI(node.getAttribute(attrName, 2)) : attr.value; if (Binder.hasBinding(attrValue)) { bindings[attrName] = attrValue; } } var json = toJson(bindings); if (json.length > 2) { node.setAttribute("ng-bind-attr", json); } } if (!node.getAttribute) log(node); var repeaterExpression = node.getAttribute('ng-repeat'); if (repeaterExpression) { node.removeAttribute('ng-repeat'); var precompiled = this.precompile(node); var view = document.createComment("ng-repeat: " + repeaterExpression); var parentNode = node.parentNode; parentNode.insertBefore(view, node); parentNode.removeChild(node); function template(childScope, prefix, i) { var clone = jQuery(node).clone(); clone.css('display', ''); clone.attr('ng-repeat-index', "" + i); clone.data('scope', childScope); precompiled(clone[0], childScope, prefix + i + ":"); return clone; } factories.push({path:path, fn:function(node, scope, prefix) { return new RepeaterUpdater(jQuery(node), repeaterExpression, template, prefix); }}); return; } if (node.getAttribute('ng-eval')) factories.push({path:path, fn:this.ng_eval}); if (node.getAttribute('ng-bind')) factories.push({path:path, fn:this.ng_bind}); if (node.getAttribute('ng-bind-attr')) factories.push({path:path, fn:this.ng_bind_attr}); if (node.getAttribute('ng-hide')) factories.push({path:path, fn:this.ng_hide}); if (node.getAttribute('ng-show')) factories.push({path:path, fn:this.ng_show}); if (node.getAttribute('ng-class')) factories.push({path:path, fn:this.ng_class}); if (node.getAttribute('ng-class-odd')) factories.push({path:path, fn:this.ng_class_odd}); if (node.getAttribute('ng-class-even')) factories.push({path:path, fn:this.ng_class_even}); if (node.getAttribute('ng-style')) factories.push({path:path, fn:this.ng_style}); if (node.getAttribute('ng-watch')) factories.push({path:path, fn:this.ng_watch}); var nodeName = node.nodeName; if ((nodeName == 'INPUT' ) || nodeName == 'TEXTAREA' || nodeName == 'SELECT' || nodeName == 'BUTTON') { var self = this; factories.push({path:path, fn:function(node, scope, prefix) { node.name = prefix + node.name.split(":").pop(); return self.widgetFactory.createController(jQuery(node), scope); }}); } if (nodeName == 'OPTION') { var html = jQuery('<select/>').append(jQuery(node).clone()).html(); if (!html.match(/<option(\s.*\s|\s)value\s*=\s*.*>.*<\/\s*option\s*>/gi)) { if (Binder.hasBinding(node.text)) { jQuery(node).attr('ng-bind-attr', angular.toJson({'value':node.text})); } else { node.value = node.text; } } } var children = node.childNodes; for (var k = 0; k < children.length; k++) { this.precompileNode(children[k], path.concat(k), factories); } }, ng_eval: function(node) { return new EvalUpdater(node, node.getAttribute('ng-eval')); }, ng_bind: function(node) { return new BindUpdater(node, "{{" + node.getAttribute('ng-bind') + "}}"); }, ng_bind_attr: function(node) { return new BindAttrUpdater(node, fromJson(node.getAttribute('ng-bind-attr'))); }, ng_hide: function(node) { return new HideUpdater(node, node.getAttribute('ng-hide')); }, ng_show: function(node) { return new ShowUpdater(node, node.getAttribute('ng-show')); }, ng_class: function(node) { return new ClassUpdater(node, node.getAttribute('ng-class')); }, ng_class_even: function(node) { return new ClassEvenUpdater(node, node.getAttribute('ng-class-even')); }, ng_class_odd: function(node) { return new ClassOddUpdater(node, node.getAttribute('ng-class-odd')); }, ng_style: function(node) { return new StyleUpdater(node, node.getAttribute('ng-style')); }, ng_watch: function(node, scope) { scope.watch(node.getAttribute('ng-watch')); } };