Installation and Getting Started
================================
**Supported Python Versions**: 3.8+
**Supported Platforms**: Linux, Windows, MacOS
This page explains how to install django-overcomingbias-api and run some basic commands.
Installation
------------
Install ``django-overcomingbias-api`` and its dependencies from
`PyPI `_
.. code-block:: console
$ pip install django-overcomingbias-api
Add the project requirements ``django-ordered-models`` and ``obapi`` to your installed
apps:
.. code-block:: python
# settings.py
INSTALLED_APPS = [
...
# Optional (admin integration)
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
# Required
"ordered_model",
"obapi",
...
]
# Optional setting - controls number of overcomingbias posts to hold in memory while
# downloading
# OBAPI_DOWNLOAD_BATCH_SIZE = 1000
If you would like to use the REST API, add the ``obapi`` URLs to your ``urlpatterns``:
.. code-block:: python
# urls.py
from django.urls import include, path
urlpatterns = [
path("", include("obapi.urls")),
]
Last, run the migrations
.. code-block:: console
$ python manage.py migrate
All done!
Basic usage
-----------
The easiest way to use the app is through the
`Django admin site `_.
Setup
*****
To initialise a database of all overcomingbias posts, use the "pull" button:
.. image:: _static/pull-and-sync.png
:align: center
:alt: Create and update overcomingbias posts from the admin site
The "pull" button adds all new posts to the database, and the "sync" button updates any
posts which were modified since the last update.
To add YouTube and Spotify content, use the identifiers found in their URLs.
For example:
.. image:: _static/add-spotify.png
:align: center
:alt: Add Spotify content using the admin site
You can also overcomingbias posts individually, but this is not recommended, as it will
interfere with "pull" and "sync" functionality.
Managing Data
*************
``ContentItem`` is the base class for all content.
Overcomingbias posts are represented by the subclass ``OBContentItem``.
Similarly, YouTube and Spotify content is represented by the ``YoutubeContentItem`` and
``SpotifyContentItem`` subclasses.
To provide rich but flexible classification (groupings) of content, three types of
"classifiers" are used: ``Tag``\ s, ``Idea``\ s and ``Topic``\ s.
``Idea`` classifiers represent specific ideas (e.g. "prediction-markets"), ``Topic``
classifiers represent general topics (e.g. "institutions"), and ``Tag`` objects represent
anything else (i.e. arbitrary metadata about the content).
When adding content:
- Initially, posts and other content are categorised using only ``Tag``\ s.
- To merge a set of ``Tag``\ s / ``Idea``\ s / ``Topic``\ s, use the ``Merge Objects``
admin action.
- To convert a classifier to another type (e.g. convert a ``Tag`` to a ``Topic``),
use the ``Convert selected items to ...`` admin action.
Posts often contain hyperlinks to other posts (or other content):
- These links are initially represented as ``ExternalLink`` objects (basically just a
URL).
- To convert these links into ManyToMany relations on the content objects,
use the ``Internalize Links`` admin action.
- To remove any ``ExternalLink``\ s which are no longer referenced,
use the ``Delete Unreferenced Links`` admin action.
.. Sequences
Using Data
**********
To use the data, you can
- Provide your own Django views on top of the database
- Use the REST API and build a frontend in whatever framework you like
Automatically generated API documentation can be found at the URL ``/api/docs`` by
default.
Getting Help
------------
If you want to try out the package and / or are curious to learn more, feel free to
`reach out `_.