diff --git a/.drone.yml b/.drone.yml index 55436c1..9c3cd1e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -20,4 +20,4 @@ steps: - flake8 --max-line-length=120 - name: run pylint commands: - - pylint --rcfile=.pylintrc -- **/*.py + - DJANGO_SETTINGS_MODULE=nmgfitness.settings pylint --rcfile=.pylintrc -- **/*.py diff --git a/.pylintrc b/.pylintrc index 63cf887..1cba4bf 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,12 +1,12 @@ [MASTER] load-plugins=pylint_django -django-settings-module=im.settings +django-settings-module=nmgfitness.settings +ignore-paths=.*/migrations [FORMAT] max-line-length=120 [MESSAGES CONTROL] -disable=missing-docstring,unnecessary-pass [DESIGN] max-parents=13 diff --git a/manage.py b/manage.py index b4c37f2..5bdda86 100755 --- a/manage.py +++ b/manage.py @@ -3,18 +3,12 @@ import os import sys +from django.core.management import execute_from_command_line + def main(): """Run administrative tasks.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nmgfitness.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc execute_from_command_line(sys.argv) diff --git a/nmgfitness/admin.py b/nmgfitness/admin.py index 31807c0..e11146e 100644 --- a/nmgfitness/admin.py +++ b/nmgfitness/admin.py @@ -1,3 +1,4 @@ +"""Admin module""" from django.apps import apps from django.contrib import admin diff --git a/nmgfitness/models.py b/nmgfitness/models.py index 10af8c1..2cc4580 100644 --- a/nmgfitness/models.py +++ b/nmgfitness/models.py @@ -1,12 +1,20 @@ +"""Nmgfitness Events model""" from django.db import models -from django.contrib.auth.models import User +from django.conf import settings class Events(models.Model): + """ + The events class + The main class used in this project + Events have an id (Autofield primary key) + Start and stop time + and are linked to a user + """ id = models.AutoField(primary_key=True) start = models.DateTimeField(null=True, blank=True) end = models.DateTimeField(null=True, blank=True) - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) def __str__(self): - return self.name + return self.user.username diff --git a/nmgfitness/views.py b/nmgfitness/views.py index 7983365..6a96bb2 100644 --- a/nmgfitness/views.py +++ b/nmgfitness/views.py @@ -1,26 +1,25 @@ - -from .models import Events - +"""NMGFitness views""" from django.shortcuts import render from django.http import JsonResponse from django.contrib.auth.decorators import login_required +from .models import Events + @login_required def calendar(request): - print(request.user) - all_events = Events.objects.all() - context = { - "events": all_events, - } - return render(request, 'calendar.html', context) + """The main calendar view""" + return render(request, 'calendar.html') @login_required def all_events(request): - all_events = Events.objects.all() + """ + Json api that returns all events + """ + events = Events.objects.all() out = [] - for event in all_events: + for event in events: out.append({ 'title': event.user.username, 'id': event.id, @@ -33,6 +32,11 @@ def all_events(request): @login_required def add_event(request): + """ + Json api to add an event + given a start and end time in the request get parameters + """ + start = request.GET.get("start", None) end = request.GET.get("end", None) event = Events(start=start, end=end, user=request.user) @@ -43,9 +47,14 @@ def add_event(request): @login_required def update(request): - id = request.GET.get("id", None) + """ + Json api to update an event + Given an event id, start and end time + Only events from the loged in user are accepted for updates + """ + updateid = request.GET.get("id", None) - event = Events.objects.get(id=id) + event = Events.objects.get(id=updateid) if request.user != event.user: return JsonResponse({'Unauthorized': 'wrong user'}, status=401) @@ -60,8 +69,14 @@ def update(request): @login_required def remove(request): - id = request.GET.get("id", None) - event = Events.objects.get(id=id) + """ + Json api to remove an event + Given an event id + Only events from the loged in user are accepted for removal + """ + + updateid = request.GET.get("id", None) + event = Events.objects.get(id=updateid) if request.user != event.user: return JsonResponse({'Unauthorized': 'wrong user'}, status=401) diff --git a/users/apps.py b/users/apps.py index 4ce1fab..340d2a5 100644 --- a/users/apps.py +++ b/users/apps.py @@ -1,5 +1,7 @@ +"""Django app config for the Users app""" from django.apps import AppConfig class UsersConfig(AppConfig): + """Users App AppConfig""" name = 'users' diff --git a/users/forms.py b/users/forms.py index 37ef39d..c236c41 100644 --- a/users/forms.py +++ b/users/forms.py @@ -1,6 +1,8 @@ +"""Users forms""" from django.contrib.auth.forms import UserCreationForm class CustomUserCreationForm(UserCreationForm): + """Custom user creation form that adds an email field""" class Meta(UserCreationForm.Meta): fields = UserCreationForm.Meta.fields + ("email",) diff --git a/users/views.py b/users/views.py index 4c68803..b164c5e 100644 --- a/users/views.py +++ b/users/views.py @@ -1,3 +1,4 @@ +"""Users views""" from django.shortcuts import redirect, render from django.urls import reverse @@ -6,6 +7,7 @@ from users.forms import CustomUserCreationForm def register(request): + """Register view, uses the CustomUserCreationForm to register a user""" if request.method == "POST": form = CustomUserCreationForm(request.POST) if form.is_valid():