Commit 664b7cd5 authored by Janadi's avatar Janadi

7/5

parent 745d5d36
Pipeline #1231 failed with stages
......@@ -112,6 +112,11 @@
<workItem from="1593489487637" duration="18291000" />
<workItem from="1593580025888" duration="15692000" />
<workItem from="1593604613208" duration="2398000" />
<workItem from="1593748789078" duration="3543000" />
<workItem from="1593772870303" duration="654000" />
<workItem from="1593847616271" duration="976000" />
<workItem from="1593848625328" duration="12035000" />
<workItem from="1593928712254" duration="8411000" />
</task>
<servers />
</component>
......@@ -151,11 +156,11 @@
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2383" y="166" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1592973231446" />
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog" timestamp="1593604614794">
<screen x="1920" y="0" width="1920" height="1040" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog" timestamp="1593928731113">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1593489490167" />
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593604614794" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1593449912236" />
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593772875660" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1593928731113" />
</component>
</project>
\ No newline at end of file
# Generated by Django 2.2.12 on 2020-07-05 07:44
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('mobileapp', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Activity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=10)),
('activity_id', models.IntegerField()),
],
),
migrations.CreateModel(
name='Dog',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('birthday', models.DateField()),
('breed', models.CharField(max_length=10)),
('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female'), ('U', 'Unknown')], max_length=1)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='MotionActivityPerDay',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(default=django.utils.timezone.now)),
('timePeriod', models.IntegerField()),
('week', models.IntegerField(null=True)),
('month', models.IntegerField(null=True)),
('year', models.IntegerField(null=True)),
('activity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Activity')),
('dog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Dog')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.DeleteModel(
name='user',
),
]
# Generated by Django 2.2.12 on 2020-07-05 07:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mobileapp', '0002_auto_20200705_1314'),
]
operations = [
migrations.AlterField(
model_name='motionactivityperday',
name='activity',
field=models.IntegerField(),
),
]
......@@ -32,8 +32,11 @@ class MotionActivityPerDay(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
dog = models.ForeignKey(Dog, on_delete=models.CASCADE)
date = models.DateField(default=django.utils.timezone.now)
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
activity = models.IntegerField()
timePeriod = models.IntegerField()
week = models.IntegerField(null=True)
month = models.IntegerField(null=True)
year = models.IntegerField(null=True)
def __str__(self):
"{} - {} - {} - {}".format(self.dog, self.date, self.activity, self.timePeriod)
......
......@@ -44,7 +44,7 @@ class MotionActivityPerDaySerializer(serializers.ModelSerializer):
class Meta:
model = MotionActivityPerDay
fields = ('user', 'dog', 'date', 'activity', 'timePeriod')
fields = ('user', 'dog', 'date', 'activity', 'timePeriod', 'week', 'month', 'year')
......
......@@ -20,11 +20,27 @@ urlpatterns = [
path('deleteMotionActivityPerDay/<int:motion_id>', views.delete_motionActivityPerDay),
path('addActivity', views.add_Activity),
path('getActivityData/<int:activity_id>', views.DataBasedOnActivity),
# Get The details as necessary
path('getActivityData/<int:activity_id>', views.DataBasedOnActivity)
# Walking Data
# Daily
path('getTotalMinutesPerDay', views.getTotalMinutesPerDay),
path('getTotalMinutesPerHour', views.getTotalMinutesPerHour),
path('highlightsPerDay', views.highlightsPerDay),
# Weekly
path('getTotalMinutesPerWeek', views.getTotalMinutesPerWeek),
path('getTotalMinutesPerDay', views.getTotalMinutesPerDay),
path('highlightsPerWeek', views.highlightsPerWeek)
# Monthly
# Annually
# Running Data
......
import json
from datetime import datetime, timedelta
from background_task import background
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
from django.http import JsonResponse, HttpResponse
from django.http import JsonResponse
from django.shortcuts import render, redirect
from django.views.decorators.csrf import csrf_exempt
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
import json
from background_task import background
from .models import Dog, MotionActivityPerDay,Activity
from .serializers import DogSerializer, MotionActivityPerDaySerializer, ActivitySerializer
from django.contrib.auth.decorators import login_required
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import Dog, MotionActivityPerDay, Activity
from .serializers import DogSerializer, MotionActivityPerDaySerializer, ActivitySerializer
from .serializers import UserSerializer
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from TrainingAndTestingData import Main
from django.db.models import Sum, Subquery
from datetime import datetime
@background(schedule=60)
def Method():
print("Hello World!")
Main.Main()
def index(request):
......@@ -178,15 +183,21 @@ def add_motionActivityPerDay(request):
payload = json.loads(request.body)
user = request.user
dog = Dog.objects.get(id=payload["dog"])
activity = Activity.objects.get(activity_id=payload["activity"])
# activity = Activity.objects.get(activity_id=payload["activity"])
ConvertedDate = datetime.strptime(payload['date'], "%Y-%m-%d").date()
week = ConvertedDate.isocalendar()[1]
month = ConvertedDate.month
year = ConvertedDate.year
try:
motion = MotionActivityPerDay.objects.create(
user=user,
dog=dog,
date=payload["date"],
activity=activity,
timePeriod=payload["timePeriod"]
activity=payload["activity"],
timePeriod=payload["timePeriod"],
week=week,
month=month,
year=year
)
serializer = MotionActivityPerDaySerializer(motion)
return JsonResponse({'motions': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
......@@ -204,6 +215,10 @@ def update_MotionActivityPerDay(request, id):
try:
item = MotionActivityPerDay.objects.filter(id=id)
# returns 1 or 0
ConvertedDate = datetime.strptime(payload['date'], "%Y-%m-%d").date()
item.week = ConvertedDate.isocalendar()[1]
item.month = ConvertedDate.month
item.year = ConvertedDate.year
item.update(**payload)
motion = MotionActivityPerDay.objects.get(id=id)
serializer = MotionActivityPerDaySerializer(motion)
......@@ -234,3 +249,78 @@ def delete_motionActivityPerDay(request, motion_id):
except Exception:
return JsonResponse({'error': 'Something went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# WALKING
# Daily
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def getTotalMinutesPerDay(request):
payload = json.loads(request.body)
minutes = MotionActivityPerDay.objects.filter(activity_id=payload['activity_id'], dog_id=payload['dog_id'],
date=payload['date'])
serializer = MotionActivityPerDaySerializer(minutes, many=True)
return JsonResponse({'minutes': len(serializer.data)}, safe=False, status=status.HTTP_200_OK)
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def getTotalMinutesPerHour(request):
payload = json.loads(request.body)
minutes = MotionActivityPerDay.objects.filter(activity_id=payload['activity_id'], dog_id=payload['dog_id'],
date=payload['date'],)
serializer = MotionActivityPerDaySerializer(minutes, many=True)
return JsonResponse({'minutes': len(serializer.data)}, safe=False, status=status.HTTP_200_OK)
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def highlightsPerDay(request):
payload = json.loads(request.body)
ConvertedDate = datetime.strptime(payload['date'], "%Y-%m-%d").date()
yesterday = ConvertedDate - timedelta(days=1)
todayActivity = MotionActivityPerDay.objects.filter(activity=payload['activity'], dog=payload['dog'],
date=payload['date'])
yesterdayActivity = MotionActivityPerDay.objects.filter(activity=payload['activity'], dog=payload['dog'],
date=yesterday)
serializer1 = MotionActivityPerDaySerializer(todayActivity, many=True)
serializer2 = MotionActivityPerDaySerializer(yesterdayActivity, many=True)
return JsonResponse({'TODAY': serializer1.data, 'YESTERDAY': serializer2.data}, safe=False, status=status.HTTP_200_OK)
# Weekly
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def getTotalMinutesPerWeek(request):
payload = json.loads(request.body)
ConvertedDate = datetime.strptime(payload['date'], "%Y-%m-%d").date()
week = ConvertedDate.isocalendar()[1]
entries = MotionActivityPerDay.objects.filter(activity=payload['activity'], dog=payload['dog'],
week=week)
serializer = MotionActivityPerDaySerializer(entries, many=True)
# Find the Sum
return JsonResponse({'minutes': serializer.data}, safe=False, status=status.HTTP_200_OK)
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def highlightsPerWeek(request):
payload = json.loads(request.body)
ConvertedDate = datetime.strptime(payload['date'], "%Y-%m-%d").date()
week = ConvertedDate.isocalendar()[1]
thisWeekEntries = MotionActivityPerDay.objects.filter(activity=payload['activity'], dog=payload['dog'],
week=week)
previousWeek = week-1
lastWeekEntries = MotionActivityPerDay.objects.filter(activity=payload['activity'], dog=payload['dog'],
week=previousWeek)
serializer1 = MotionActivityPerDaySerializer(thisWeekEntries, many=True)
serializer2 = MotionActivityPerDaySerializer(lastWeekEntries, many=True)
return JsonResponse({'this week': serializer1.data, 'last week': serializer2.data}, safe=False, status=status.HTTP_200_OK)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment