From 0ed41c60de9d9f5d56c6a172af810e589a646702 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 12 Aug 2014 14:49:18 +0100 Subject: [PATCH] Latest sponsor updates --- api-guide/fields.html | 3 +++ api-guide/serializers.html | 3 +++ api-guide/throttling.html | 2 +- img/sponsors/3-openeye.png | Bin 0 -> 14155 bytes img/sponsors/3-teonite.png | Bin 0 -> 7882 bytes topics/browsable-api.html | 6 +++--- topics/kickstarter-announcement.html | 6 +++--- .../5-relationships-and-hyperlinked-apis.html | 2 +- 8 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 img/sponsors/3-openeye.png create mode 100644 img/sponsors/3-teonite.png diff --git a/api-guide/fields.html b/api-guide/fields.html index fc1e8ac5c..ad29a6cb7 100644 --- a/api-guide/fields.html +++ b/api-guide/fields.html @@ -212,6 +212,7 @@ a.fusion-poweredby {
  • Third party packages
  • DRF Compound Fields
  • DRF Extra Fields
  • +
  • django-rest-framework-gis
  • @@ -458,6 +459,8 @@ class ColourField(serializers.WritableField):

    The drf-compound-fields package provides "compound" serializer fields, such as lists of simple values, which can be described by other fields rather than serializers with the many=True option. Also provided are fields for typed dictionaries and values that can be either a specific type or a list of items of that type.

    DRF Extra Fields

    The drf-extra-fields package provides extra serializer fields for REST framework, including Base64ImageField and PointField classes.

    +

    django-rest-framework-gis

    +

    The django-rest-framework-gis package provides geographic addons for django rest framework like a GeometryField field and a GeoJSON serializer.

    diff --git a/api-guide/serializers.html b/api-guide/serializers.html index 084767038..850b6dc59 100644 --- a/api-guide/serializers.html +++ b/api-guide/serializers.html @@ -208,6 +208,7 @@ a.fusion-poweredby {
  • Customising the default fields
  • Third party packages
  • MongoengineModelSerializer
  • +
  • GeoFeatureModelSerializer
  • @@ -669,6 +670,8 @@ The ModelSerializer class lets you automatically create a Serialize

    The following third party packages are also available.

    MongoengineModelSerializer

    The django-rest-framework-mongoengine package provides a MongoEngineModelSerializer serializer class that supports using MongoDB as the storage layer for Django REST framework.

    +

    GeoFeatureModelSerializer

    +

    The django-rest-framework-gis package provides a GeoFeatureModelSerializer serializer class that supports GeoJSON both for read and write operations.

    diff --git a/api-guide/throttling.html b/api-guide/throttling.html index 5739aa217..e0bb189c3 100644 --- a/api-guide/throttling.html +++ b/api-guide/throttling.html @@ -249,7 +249,7 @@ class ExampleView(APIView): return Response(content)

    Or, if you're using the @api_view decorator with function based views.

    -
    @api_view('GET')
    +
    @api_view(['GET'])
     @throttle_classes([UserRateThrottle])
     def example_view(request, format=None):
         content = {
    diff --git a/img/sponsors/3-openeye.png b/img/sponsors/3-openeye.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..573140ed6b6bf34c78718b8d07e4c359c902a54c
    GIT binary patch
    literal 14155
    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

    h*$d3((gICI>AV!|tP8~1&?mtj6 zeDCL1Q<70J2P;weK=&8JZ%Ml!0Q2Za_;;92FgmFdRhh!@cDEipm?RN1soYb4g2rW5PqP|BMxf$0%nJON!&S3b(ZLeHK zVD`rmd~hmltM-&Nn<_zFSC>sP&eR7QBOw`DDY-p&EhI1*7vb1#efz_aBioxmouKXN zc*l7EoDGew2`N!)M@&y0-^649n@c0~Mwz!=^Jo3WwiNAF!1q`8U)%`+gM(dfzJQr? z?V!Htjr*ds$+WERVQqFlO+Kod9?qI)F2^Y2i(-AJpv8%NE=$tzXeNi^<+v;@fCRTU zSk<+$kl`!1kFM!WhPoB?ciO?`OqTCs6)aJpppg>70RF+62=rMAWD$gk} z+{}`|v9a=X{WyTfXEv9pB?8RaY|wsIv^PMgiFad|^zLS9N?DlVPDNGcgtjbR;5s57 z511c%aw#>wfMo)Gcb;&-_dR5JO9C!i?P3U{?I67uhbK1Q zt9{u6ymaEZqTa%AGk1R>jbx9-()IuvHl?^KClVl4utZH*l>Q z6c;s{Go47+*d0jm#*;!ELoSLBFTS zC1Z&rgM)o*^fIdy(=4jg4Jnd8ak7DW6rW5YA;@tEIzRG)zTcKT+P#IcW;UQ&9yl$; z&3So!xyZJinsWtUhg4AoHv8Z6H6~;`^)2ZtwWxPshNQ1A}Z}b-K20H(l-p~ z$?3|Z)bDFNWJNNhAl(HSUDM|8j1W28rq{k|apPd1kUPFe9fnIiQy4J%J+^Q7HbX%R z8c<5cDBB-nkpz6-C4TvREm~1=S+J^Krrp6ZW;fIMoLNEm8))LG1=*J%eQR@}d>3z! zuk*+Ckl{KeA_bRewn&4agu{WETw1jgS(kgYIJ}y+=d}&#{?y9CVK#Bqs4D&{7>!mz z_0K^(yREF(q*!EelL$@i<(_cn3nG{8YQ;bsnS4%!O?~%yC^H|+c4^$rm&`Vjn}D^L zmRfifU6s!;lj;u5wZ%WLg^m*?7ZI5SCzVqhhYau$6U|-i>_O$&7aZ!T*0+txFE`;g@a4@Vvf*BJ>vLira3rjO_ph|Ryt;G zQr10~d(7N9>fFKr3QJ=(B#M0YNl?;Kf6Fs;ht-_1vFYsn^^e1Ywt6sXaQMNm(ywXO zv_w1><*5^9(;y}bp+y*I>gm`=@&@&LVr$y(Sut67jfZfz<%MYHJIe5Wv-ah^eb&6LnBVyB zRfMb8$YKuo2vNS%FDU0CSBAHIKB>IPtPqDt!2kItZXXI_^iUz&u{mRVBE8xhyFGA+ zr35jyaElNSViGqj&M)t{nQpHFI2VS8tc*iC_MeLbfLDQ`xDq5d52L`tk>%=IL&)REO0f1 z<+&3CAIE@^w#5^^Rzq9mtudk!f1Y?e-xzk1B6hye>yua|Jw3_PA9RLk_A4E!^Cp5G zSfCGJC|dn9N!uF|9>kY2be(@Y5T@ZSsK8ge+kmyfsbp5VhfPnZTQ?X0QQkb;u6A6XlsoK6qFApc9^CaCVvua}<{6D5M zRnIT14=>!bnFF$ScIJHZkm8p`r>#|}PbWoCkyqkiQ6->GmYKe!aFn<%ingk9e+ocN zLEM=)KXf2^A{ZA1GU?BeWlwI466>E>Xw)I?3{{b1b4Wv?3T%r++Mt2w|BZMZu} z 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

    -

    A suitable replacement theme can be generated using Bootstrap's Customize Tool. There are also pre-made themes available at Bootswatch. To use any of the Bootswatch themes, simply download the theme's bootstrap.min.css file, add it to your project, and replace the default one as described above.

    +

    A suitable replacement theme can be generated using Bootstrap's Customize Tool. There are also pre-made themes available at Bootswatch. To use any of the Bootswatch themes, simply download the theme's bootstrap.min.css file, add it to your project, and replace the default one as described above.

    You can also change the navbar variant, which by default is navbar-inverse, using the bootstrap_navbar_variant block. The empty {% block bootstrap_navbar_variant %}{% endblock %} will use the original Bootstrap navbar style.

    Full example:

    {% extends "rest_framework/base.html" %}
    @@ -247,7 +247,7 @@ a.fusion-poweredby {
     
  • bodyclass - Class attribute for the <body> tag, empty by default.
  • bootstrap_theme - CSS for the Bootstrap theme.
  • bootstrap_navbar_variant - CSS class for the navbar.
  • -
  • branding - Branding section of the navbar, see Bootstrap components.
  • +
  • branding - Branding section of the navbar, see Bootstrap components.
  • breadcrumbs - Links showing resource nesting, allowing the user to go back up the resources. It's recommended to preserve these, but they can be overridden using the breadcrumbs block.
  • footer - Any copyright notices or similar footer materials can go here (by default right-aligned).
  • script - JavaScript files for the page.
  • @@ -256,7 +256,7 @@ a.fusion-poweredby {
  • userlinks - This is a list of links on the right of the header, by default containing login/logout links. To add links instead of replace, use {{ block.super }} to preserve the authentication links.
  • Components

    -

    All of the standard Bootstrap components are available.

    +

    All of the standard Bootstrap components are available.

    Tooltips

    The browsable API makes use of the Bootstrap tooltips component. Any element with the js-tooltip class and a title attribute has that title content will display a tooltip on hover events.

    Login Template

    diff --git a/topics/kickstarter-announcement.html b/topics/kickstarter-announcement.html index 757043f5c..547b1d7ed 100644 --- a/topics/kickstarter-announcement.html +++ b/topics/kickstarter-announcement.html @@ -298,7 +298,6 @@ a.fusion-poweredby {
  • ABA Systems
  • beefarm.ru
  • Vzzual.com
  • -
  • Infinite Code
  • @@ -307,16 +306,17 @@ a.fusion-poweredby {
  • Blimp
  • Pathwright
  • Fluxility
  • +
  • Teonite
  • TrackMaven
  • Nephila
  • Aditium
  • - +
  • OpenEye Scientific Software
  • -

    Individual contributions: Paul Hallet, Paul Whipp, Jannis Leidel, Johannes Spielmann, Chris Heisel, Marwan Alsabbagh.

    +

    Individual contributions: Paul Hallet, Paul Whipp, Jannis Leidel, Johannes Spielmann, Rob Spectre, Chris Heisel, Marwan Alsabbagh.

    diff --git a/tutorial/5-relationships-and-hyperlinked-apis.html b/tutorial/5-relationships-and-hyperlinked-apis.html index 72a2319b3..ae1f9bd28 100644 --- a/tutorial/5-relationships-and-hyperlinked-apis.html +++ b/tutorial/5-relationships-and-hyperlinked-apis.html @@ -223,7 +223,7 @@ def api_root(request, format=None):

    The other obvious thing that's still missing from our pastebin API is the code highlighting endpoints.

    Unlike all our other API endpoints, we don't want to use JSON, but instead just present an HTML representation. There are two styles of HTML renderer provided by REST framework, one for dealing with HTML rendered using templates, the other for dealing with pre-rendered HTML. The second renderer is the one we'd like to use for this endpoint.

    The other thing we need to consider when creating the code highlight view is that there's no existing concrete generic view that we can use. We're not returning an object instance, but instead a property of an object instance.

    -

    Instead of using a concrete generic view, we'll use the base class for representing instances, and create our own .get() method. In your snippets.views add:

    +

    Instead of using a concrete generic view, we'll use the base class for representing instances, and create our own .get() method. In your snippets.views add:

    from rest_framework import renderers
     from rest_framework.response import Response