Flask Testing – Unittest and Coverage I have been experimenting with Flask recently. I am interested in learning about test driven development. This looked like a good opportunity to merge the two together. Test driven development is based around writing tests before you write the code. That way you write the code to pass the test, not the test based on the code. There are a few modules I use to test my flask apps.
Traefik with Seafile – My problems with labels and variables All the relevant labels required to pot forward and then the environment variables to set the SITE_URL and FILE_ROOT I recently moved from Nextcloud as my file syncing software to Seafile and so far have not looked back. Seafile is so much faster and the desktop clients are far more polished than Nextclouds solutions. I have setup Seafile pro with docker, however, I ran into several problems to do with Traefik labels.
NAS + Pi Plex Server I recently bought a NAS for my home network due to my old external HDD eventually failing. In the NAS sits 2 3TB hard drives in a RAID setup so I have 3TB of overall storage, more than enough. I wanted to be able to access all of my media anywhere in the house and on any device. To save on some money I bought myself a NAS that only had the basics that I would need, file storage.
Raspberry Pi – PiHole DNS Server NOTE: I had to disable the systemd-resolve service so that DNS requests where resolved by PiHole and not the default system service. $ sudo systemctl disable systemd-resolved.service $ sudo service systemd-resolved stop Running your own network wide DNS server can have its benefits. The reason for me setting this up is that I finally got fed up seeing large, in your face, adverts on my phone at home.
Docker-Compose - Traefik + More I run a small VPS (Virtual Private Server) for several services that I use e.g. a Git server, web servers etc.. As I began to add more and more services, I felt the need to separate these into self-contained blocks. Doing this meant that I could develop the applications on whichever platform I like and not worry about dependency mismatches. I made the decision to move my services to Docker.
API Access to the Notes To give our web application an API we are going to be using the REST framework. For our API to work correctly we need to provide ways for the application to serialize data, that is, convert the database objects into JSON. We will need to create a serializer object for each of the data objects we want to be able to access. Firstly, we need to create the directory structure so go ahead and create the following directories/files inside our notes/ folder:
Securing the Application Now that we can view our notes on the website, we are going to want a login system. Currently anyone can navigate to our website and see all of our notes. Not ideal. To secure our site we will be using a combination of Djangos built-in auth module and crispy forms. First off we will add the auth modules URLs to the project so open up the URLs file in the project directory and add the following.
Creating the Application To start, we will create a virtual environment for our project and install the required libraries mkdir DjangoNotes cd DjangoNotes python3 -m venv venv source venv/bin/activate pip install -r requirements.txt Now that we have our environment setup we can create out Django application. django-admin startproject DjangoNotes python manage.py startapp notes Whilst we are still doing some admin setup, we need to initialise our database and create ourselves a superuser.
Flask API Template I often use Flask when I am writing a small web interface for an application. Flask proved to be a very simple easy to use framework and so I decided I would write an API. The end goal is to have a database back-end and a simple interface for retrieving and storing notes. However, this post is just about setting up a template and authentication for the API.
Me and My Uni Notes This post is just a small description of the process that occurs in the background after I finish writing some notes. In future I will give more in-depth descriptions of the code and how everything happens. Markdown I write all of my university notes using Markdown syntax. As a cool side project to my uni work I decided that I would write a piece of software (in Java) that would help me in writing these notes.