Skip to content

Commit

Permalink
Added more admin code
Browse files Browse the repository at this point in the history
  • Loading branch information
palewire committed Feb 6, 2015
1 parent 4c3a328 commit e56f586
Show file tree
Hide file tree
Showing 7 changed files with 197 additions and 40 deletions.
Binary file modified docs/_build/doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/_build/doctrees/index.doctree
Binary file not shown.
93 changes: 81 additions & 12 deletions docs/_build/html/_sources/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -537,33 +537,102 @@ Import our model into the command and use it to save the CSV records to the data
csv_file = open(csv_path, 'rb')
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
obj = Invite.objects.create(name=row['name'], branch=row['branch'])
obj = Invite.objects.create(name=row['Name'], branch=row['Branch'])
print obj

You've done it. The CSV is loaded into the database.

Act 4: Hello admin
------------------

- Configure the admin vanilla.
- Create a superuser
- Check out how the vanilla admin looks
- Configure an admin for our model
- Tweak our admin so it's nicer
- Create users for the reporters

Then create a new superuser with permission to edit all records.
One of Django's unique features is that it comes with a custom administration that allows users to view, edit and create records. To see it in action, create a new superuser with permission to edit all records.

.. code-block:: bash

$ python manage.py createsuperuser

- Create an admin to access and edit the new model
- Gradually refine it so it's better
Then fire up the Django test server.

.. code-block:: bash

$ python manage.py runserver

And visit `localhost:8000/admin/ <http://localhost:8000/admin/>`_ and log in using the credentials you just created.

SCREENSHOT HERE

Without any additional configuration you will see administration panels for the apps installed with Django by default.

SCREENSHOT HERE

Adding panels for your own models is done in the ``admin.py`` file included with each app. Open ``academy/admin.py`` to start in.

Act 5: Hello Internet
.. code-block:: python

from django.contrib import admin
from academy.models import Invite

admin.site.register(Invite)

Now reload `localhost:8000/admin/ <http://localhost:8000/admin/>`_ and you'll see it in action.

SCREENSHOT

Configure the columns that appear in the list.

.. code-block:: python
:emphasize-lines: 3-7

from django.contrib import admin
from academy.models import Invite

class InviteAdmin(admin.ModelAdmin):
list_display = ("name", "branch", "gender", "date_of_birth", "race")

admin.site.register(Invite, InviteAdmin)

SCREENSHOT

Add a filter.

.. code-block:: python
:emphasize-lines: 6

from django.contrib import admin
from academy.models import Invite

class InviteAdmin(admin.ModelAdmin):
list_display = ("name", "branch", "gender", "date_of_birth", "race")
list_filter = ("branch", "gender", "race")

admin.site.register(Invite, InviteAdmin)

SCREENSHOT

And now a search.

.. code-block:: python
:emphasize-lines: 8

from django.contrib import admin
from academy.models import Invite

class InviteAdmin(admin.ModelAdmin):
list_display = ("name", "branch", "gender", "date_of_birth", "race")
list_filter = ("branch", "gender", "race")
search_fields = ("name",)

admin.site.register(Invite, InviteAdmin)

SCREENSHOT

Act 5: Hello newsroom
---------------------

Instructions for after you get home about how to host it on Amazon or something like that.

- Show how the 0.0.0.0 trick works
- Explain alternatives, like under your desk, in the cloud, etc.
- Show how to do it with Heroku maybe?
- Create users for the reporters
- Randomly assign records to staff
78 changes: 61 additions & 17 deletions docs/_build/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -464,37 +464,81 @@ <h2>Act 3: Hello loader<a class="headerlink" href="#act-3-hello-loader" title="P
<span class="n">csv_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">csv_path</span><span class="p">,</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
<span class="n">csv_reader</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">DictReader</span><span class="p">(</span><span class="n">csv_file</span><span class="p">)</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">csv_reader</span><span class="p">:</span>
<span class="hll"> <span class="n">obj</span> <span class="o">=</span> <span class="n">Invite</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s">&#39;name&#39;</span><span class="p">],</span> <span class="n">branch</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s">&#39;branch&#39;</span><span class="p">])</span>
<span class="hll"> <span class="n">obj</span> <span class="o">=</span> <span class="n">Invite</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s">&#39;Name&#39;</span><span class="p">],</span> <span class="n">branch</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s">&#39;Branch&#39;</span><span class="p">])</span>
</span><span class="hll"> <span class="k">print</span> <span class="n">obj</span>
</span></pre></div>
</div>
<p>You&#8217;ve done it. The CSV is loaded into the database.</p>
</div>
<div class="section" id="act-4-hello-admin">
<h2>Act 4: Hello admin<a class="headerlink" href="#act-4-hello-admin" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Configure the admin vanilla.</li>
<li>Create a superuser</li>
<li>Check out how the vanilla admin looks</li>
<li>Configure an admin for our model</li>
<li>Tweak our admin so it&#8217;s nicer</li>
<li>Create users for the reporters</li>
</ul>
<p>Then create a new superuser with permission to edit all records.</p>
<p>One of Django&#8217;s unique features is that it comes with a custom administration that allows users to view, edit and create records. To see it in action, create a new superuser with permission to edit all records.</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python manage.py createsuperuser
</pre></div>
</div>
<ul class="simple">
<li>Create an admin to access and edit the new model</li>
<li>Gradually refine it so it&#8217;s better</li>
</ul>
<p>Then fire up the Django test server.</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python manage.py runserver
</pre></div>
</div>
<p>And visit <a class="reference external" href="http://localhost:8000/admin/">localhost:8000/admin/</a> and log in using the credentials you just created.</p>
<p>SCREENSHOT HERE</p>
<p>Without any additional configuration you will see administration panels for the apps installed with Django by default.</p>
<p>SCREENSHOT HERE</p>
<p>Adding panels for your own models is done in the <tt class="docutils literal"><span class="pre">admin.py</span></tt> file included with each app. Open <tt class="docutils literal"><span class="pre">academy/admin.py</span></tt> to start in.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
<span class="kn">from</span> <span class="nn">academy.models</span> <span class="kn">import</span> <span class="n">Invite</span>

<span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Invite</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="act-5-hello-internet">
<h2>Act 5: Hello Internet<a class="headerlink" href="#act-5-hello-internet" title="Permalink to this headline"></a></h2>
<p>Now reload <a class="reference external" href="http://localhost:8000/admin/">localhost:8000/admin/</a> and you&#8217;ll see it in action.</p>
<p>SCREENSHOT</p>
<p>Configure the columns that appear in the list.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
<span class="kn">from</span> <span class="nn">academy.models</span> <span class="kn">import</span> <span class="n">Invite</span>
<span class="hll">
</span><span class="hll"><span class="k">class</span> <span class="nc">InviteAdmin</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span>
</span><span class="hll"> <span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="s">&quot;branch&quot;</span><span class="p">,</span> <span class="s">&quot;gender&quot;</span><span class="p">,</span> <span class="s">&quot;date_of_birth&quot;</span><span class="p">,</span> <span class="s">&quot;race&quot;</span><span class="p">)</span>
</span><span class="hll">
</span><span class="hll"><span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Invite</span><span class="p">,</span> <span class="n">InviteAdmin</span><span class="p">)</span>
</span></pre></div>
</div>
<p>SCREENSHOT</p>
<p>Add a filter.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
<span class="kn">from</span> <span class="nn">academy.models</span> <span class="kn">import</span> <span class="n">Invite</span>

<span class="k">class</span> <span class="nc">InviteAdmin</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span>
<span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="s">&quot;branch&quot;</span><span class="p">,</span> <span class="s">&quot;gender&quot;</span><span class="p">,</span> <span class="s">&quot;date_of_birth&quot;</span><span class="p">,</span> <span class="s">&quot;race&quot;</span><span class="p">)</span>
<span class="hll"> <span class="n">list_filter</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;branch&quot;</span><span class="p">,</span> <span class="s">&quot;gender&quot;</span><span class="p">,</span> <span class="s">&quot;race&quot;</span><span class="p">)</span>
</span>
<span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Invite</span><span class="p">,</span> <span class="n">InviteAdmin</span><span class="p">)</span>
</pre></div>
</div>
<p>SCREENSHOT</p>
<p>And now a search.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
<span class="kn">from</span> <span class="nn">academy.models</span> <span class="kn">import</span> <span class="n">Invite</span>

<span class="k">class</span> <span class="nc">InviteAdmin</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span>
<span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="s">&quot;branch&quot;</span><span class="p">,</span> <span class="s">&quot;gender&quot;</span><span class="p">,</span> <span class="s">&quot;date_of_birth&quot;</span><span class="p">,</span> <span class="s">&quot;race&quot;</span><span class="p">)</span>
<span class="n">list_filter</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;branch&quot;</span><span class="p">,</span> <span class="s">&quot;gender&quot;</span><span class="p">,</span> <span class="s">&quot;race&quot;</span><span class="p">)</span>
<span class="n">search_fields</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,)</span>
<span class="hll">
</span><span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Invite</span><span class="p">,</span> <span class="n">InviteAdmin</span><span class="p">)</span>
</pre></div>
</div>
<p>SCREENSHOT</p>
</div>
<div class="section" id="act-5-hello-newsroom">
<h2>Act 5: Hello newsroom<a class="headerlink" href="#act-5-hello-newsroom" title="Permalink to this headline"></a></h2>
<p>Instructions for after you get home about how to host it on Amazon or something like that.</p>
<ul class="simple">
<li>Show how the 0.0.0.0 trick works</li>
<li>Explain alternatives, like under your desk, in the cloud, etc.</li>
<li>Show how to do it with Heroku maybe?</li>
<li>Create users for the reporters</li>
<li>Randomly assign records to staff</li>
</ul>
</div>
</div>
Expand All @@ -514,7 +558,7 @@ <h3><a href="#">Table Of Contents</a></h3>
<li><a class="reference internal" href="#act-2-hello-models">Act 2: Hello models</a></li>
<li><a class="reference internal" href="#act-3-hello-loader">Act 3: Hello loader</a></li>
<li><a class="reference internal" href="#act-4-hello-admin">Act 4: Hello admin</a></li>
<li><a class="reference internal" href="#act-5-hello-internet">Act 5: Hello Internet</a></li>
<li><a class="reference internal" href="#act-5-hello-newsroom">Act 5: Hello newsroom</a></li>
</ul>
</li>
</ul>
Expand Down

0 comments on commit e56f586

Please sign in to comment.