Skip to content

Commit

Permalink
last accessed, new migration needed!
Browse files Browse the repository at this point in the history
  • Loading branch information
jhhaanstra committed Jun 28, 2018
1 parent 4a7c79d commit 4dbe62b
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 7 deletions.
18 changes: 18 additions & 0 deletions api/migrations/0015_subscription_last_accessed.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.0.5 on 2018-06-28 10:32

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0014_course_created_at'),
]

operations = [
migrations.AddField(
model_name='subscription',
name='last_accessed',
field=models.DateTimeField(null=True),
),
]
4 changes: 3 additions & 1 deletion api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ def __repr__(self):
class Subscription(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
last_accessed = models.DateTimeField(null=True)

def __str__(self):
return '{} : {}'.format(self.user, self.course)
Expand All @@ -88,6 +89,7 @@ def __repr__(self):
return {
"user": self.user,
"course": self.course,
"last_accessed": self.last_accessed,
}


Expand Down Expand Up @@ -150,7 +152,7 @@ class LessonCompleted(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE)
grade = models.DecimalField(max_digits=3, decimal_places=1)


class WordListQuestion(models.Model):
native = models.CharField(max_length=100)
Expand Down
2 changes: 2 additions & 0 deletions api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
path('course/update/', views.update_course, name="update_course"),
path('course/popular/', views.get_popular_courses, name="popular_courses"),
path('course/newest/', views.get_newest_courses, name="newest_courses"),
path('update_activity/', views.update_activity, name="update_activity"),
path('last_accessed/', views.get_last_accessed, name="last_accessed"),

# Lessons
path('course/<int:course_id>/create-lesson', views.create_lesson, name='create_lesson'),
Expand Down
41 changes: 35 additions & 6 deletions api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse, HttpResponseForbidden
from django.contrib.auth import authenticate, login
from django.utils import timezone
import json
import string
import random
Expand All @@ -12,7 +13,6 @@
from django.core.exceptions import ObjectDoesNotExist
from api.models import *


def index(request):
return HttpResponse("Dit is een API")

Expand Down Expand Up @@ -114,7 +114,6 @@ def create_session(user):
}
return response


# Users
def get_users(request):
data = parse_params(request)
Expand Down Expand Up @@ -313,8 +312,6 @@ def edit_course_lang(request, course_id):
course.save()
return HttpResponse(request)



def search_courses(request):
data = parse_params(request)
if data is None:
Expand Down Expand Up @@ -343,6 +340,40 @@ def search_courses(request):
})
return JsonResponse(returnData, safe=False)

def update_activity(request):
data = parse_params(request)
if data is None:
return HttpResponseForbidden()

course = Course.objects.get(pk=data['course_id'])
user = User.objects.get(pk=data['user_id'])
try:
subscription = Subscription.objects.get(course=course, user=user)
subscription.last_accessed = timezone.now()
subscription.save()
except ObjectDoesNotExist:
pass
return HttpResponse("");

def get_last_accessed(request):
data = parse_params(request)
if data is None:
return HttpResponseForbidden()

courses = []
subscriptions = Subscription.objects.order_by('-last_accessed')[:4]
for subscription in subscriptions:
courses.append({
'id' : subscription.course.pk,
'name' : subscription.course.name,
'description' : subscription.course.description,
'image' : subscription.course.image,
'subscribers' : subscription.course.subscribers,
'author' : subscription.course.user.name,
'trans_lang' : subscription.course.trans_lang.pk,
'native_lang' : subscription.course.native_lang.pk
})
return JsonResponse(courses, safe=False);

# Lessons
def get_lesson_types(request):
Expand All @@ -362,8 +393,6 @@ def create_lesson(request, course_id):
except ObjectDoesNotExist:
return get_json_response(serializers.serialize('json', []))



created = False
if data['lesson_id'] != '':
created = True
Expand Down

0 comments on commit 4dbe62b

Please sign in to comment.