Commit 745d5d36 authored by Janadi's avatar Janadi

7/2/2020

parent 68701cfd
Pipeline #1216 failed with stages
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES"> <option name="RECENT_TEMPLATES">
<list> <list>
<option value="HTML File" />
<option value="Python Script" /> <option value="Python Script" />
</list> </list>
</option> </option>
...@@ -29,6 +30,7 @@ ...@@ -29,6 +30,7 @@
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="DefaultHtmlFileTemplate" value="HTML File" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" /> <property name="last_opened_file_path" value="$PROJECT_DIR$" />
...@@ -40,6 +42,11 @@ ...@@ -40,6 +42,11 @@
<property name="node.js.selected.package.tslint" value="(autodetect)" /> <property name="node.js.selected.package.tslint" value="(autodetect)" />
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" /> <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
</component> </component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\ASUS\Desktop\DogBehaviouralSystem\Django\WalkingPatternRecognition\WalkingPatternRecognition" />
</key>
</component>
<component name="RunManager"> <component name="RunManager">
<configuration name="WalkingPatternRecognition" type="Python.DjangoServer" factoryName="Django server"> <configuration name="WalkingPatternRecognition" type="Python.DjangoServer" factoryName="Django server">
<module name="WalkingPatternRecognition" /> <module name="WalkingPatternRecognition" />
...@@ -47,6 +54,7 @@ ...@@ -47,6 +54,7 @@
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" /> <env name="PYTHONUNBUFFERED" value="1" />
<env name="DJANGO_SETTINGS_MODULE" value="WalkingPatternRecognition.settings" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" /> <option name="WORKING_DIRECTORY" value="" />
...@@ -96,6 +104,14 @@ ...@@ -96,6 +104,14 @@
<workItem from="1592913871108" duration="42000" /> <workItem from="1592913871108" duration="42000" />
<workItem from="1592914317572" duration="2313000" /> <workItem from="1592914317572" duration="2313000" />
<workItem from="1592973208713" duration="14819000" /> <workItem from="1592973208713" duration="14819000" />
<workItem from="1593057248715" duration="17546000" />
<workItem from="1593144512643" duration="606000" />
<workItem from="1593243572355" duration="4690000" />
<workItem from="1593429391223" duration="4689000" />
<workItem from="1593449715956" duration="6478000" />
<workItem from="1593489487637" duration="18291000" />
<workItem from="1593580025888" duration="15692000" />
<workItem from="1593604613208" duration="2398000" />
</task> </task>
<servers /> <servers />
</component> </component>
...@@ -103,18 +119,43 @@ ...@@ -103,18 +119,43 @@
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state x="2612" y="324" key="#com.intellij.fileTypes.FileTypeChooser" timestamp="1593071203993">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2612" y="324" key="#com.intellij.fileTypes.FileTypeChooser/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593071203993" />
<state x="2610" y="268" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1593580754525">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2610" y="268" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593580754525" />
<state x="549" y="171" key="FileChooserDialogImpl" timestamp="1590316992326"> <state x="549" y="171" key="FileChooserDialogImpl" timestamp="1590316992326">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="549" y="171" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1590316992326" /> <state x="549" y="171" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1590316992326" />
<state width="1877" height="282" key="GridCell.Tab.0.bottom" timestamp="1593500375859">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.bottom/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593500375859" />
<state width="1877" height="282" key="GridCell.Tab.0.center" timestamp="1593500375858">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.center/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593500375858" />
<state width="1877" height="282" key="GridCell.Tab.0.left" timestamp="1593500375858">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.left/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593500375858" />
<state width="1877" height="282" key="GridCell.Tab.0.right" timestamp="1593500375858">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.right/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593500375858" />
<state x="2383" y="166" key="SettingsEditor" timestamp="1592973231446"> <state x="2383" y="166" key="SettingsEditor" timestamp="1592973231446">
<screen x="1920" y="0" width="1920" height="1040" /> <screen x="1920" y="0" width="1920" height="1040" />
</state> </state>
<state x="2383" y="166" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1592973231446" /> <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="1593057263416"> <state x="2516" y="304" key="com.intellij.ide.util.TipDialog" timestamp="1593604614794">
<screen x="1920" y="0" width="1920" height="1040" /> <screen x="1920" y="0" width="1920" height="1040" />
</state> </state>
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593057263416" /> <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="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1590081950861" /> <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" />
</component> </component>
</project> </project>
\ No newline at end of file
from csv import writer from csv import writer
import pandas as pd import pandas as pd
class Data: class Data:
data = ''; data = ''
Read = []; Read = []
def __init__(self,data): def __init__(self,data):
self.data= data; self.data = data
def ReadData(self): def ReadData(self):
self.Read= pd.read_csv(self.data); self.Read = pd.read_csv(self.data)
return self.Read; return self.Read
def append_list_as_row(self,file_name, list_of_elem): def append_list_as_row(self, file_name, list_of_elem):
# Open file in append mode # Open file in append mode
with open(file_name, 'a+', newline='') as write_obj: with open(file_name, 'a+', newline='') as write_obj:
# Create a writer object from csv module # Create a writer object from csv module
csv_writer = writer(write_obj) csv_writer = writer(write_obj)
# Add contents of list as last row in the csv file # Add contents of list as last row in the csv file
csv_writer.writerow(list_of_elem) csv_writer.writerow(list_of_elem)
\ No newline at end of file
StartTime,EndTime,Date,Activity StartTime,EndTime,Date,Activity
2016-02-22 14:59:44.561776,2016-02-22 14:59:44.561805,2016-02-22 14:59:44.561805,run
timestamp,accelerometer_X,accelerometer_Y,accelerometer_Z timestamp,accelerometer_X,accelerometer_Y,accelerometer_Z
2016-02-22 14:59:44.561776,0.612916,-10.400413,0.095768 1/1/2020 0:00,0.296881,5.621586,8.001422
2016-02-22 14:59:44.561777,6.421249,29.022512,8.8777 1/2/2020 0:00,0.464475,5.262456,7.627927
2016-02-22 14:59:44.561778,5.214572,20.910957,8.30788 1/3/2020 0:00,0.105345,5.324705,7.915231
2016-02-22 14:59:44.561779,0.565032,-9.792285,-0.325611 1/4/2020 0:00,-0.019154,5.726931,8.279149
2016-02-22 14:59:44.561780,-2.738967,4.458004,8.255207 1/5/2020 0:00,-0.253785,5.616797,8.063671
2016-02-22 14:59:44.561781,-2.585738,7.244855,0.521936 1/6/2020 0:00,-0.248997,5.48751,7.886501
2016-02-22 14:59:44.561782,-2.140416,-19.938911,-2.284068 1/7/2020 0:00,-0.368707,5.396531,8.063671
2016-02-22 14:59:44.561783,30.119057,23.142353,-16.376339 1/8/2020 0:00,-0.167594,5.425261,8.288726
2016-02-22 14:59:44.561784,-4.165911,7.268797,2.226608 1/9/2020 0:00,-0.430956,5.621586,8.226477
2016-02-22 14:59:44.561785,-1.522712,-15.916653,1.92015 1/10/2020 0:00,-0.272939,5.118803,8.408437
2016-02-22 14:59:44.561786,12.909535,28.543673,0.354342 1/11/2020 0:00,0.263362,4.668694,8.317456
2016-02-22 14:59:44.561787,-0.11971,16.591818,-0.071826 1/12/2020 0:00,-0.311246,4.989517,7.513005
2016-02-22 14:59:44.561788,4.644751,-16.098612,-2.715025 1/13/2020 0:00,0.105345,4.730943,9.002198
2016-02-22 14:59:44.561789,5.736508,13.55597,7.354988 1/14/2020 0:00,0.095768,4.797981,8.848969
2016-02-22 14:59:44.561790,-8.00621,5.315128,2.284068 1/15/2020 0:00,-0.153229,4.453215,9.097966
2016-02-22 14:59:44.561791,7.886501,-12.397177,1.120486 1/16/2020 0:00,0.09098,4.644751,8.585608
2016-02-22 14:59:44.561792,30.674513,24.890121,-4.079719 1/17/2020 0:00,0.038307,4.644751,8.719683
2016-02-22 14:59:44.561793,1.187524,13.072341,-1.953669 1/18/2020 0:00,0.205901,4.999093,8.643068
2016-02-22 14:59:44.561794,1.44131,-14.585477,3.610456 1/19/2020 0:00,-0.301669,4.367024,8.207323
2016-02-22 14:59:44.561795,6.0286,17.889475,-0.732626 1/20/2020 0:00,-0.129287,4.673482,8.06846
2016-02-22 14:59:44.561796,15.35641,25.665842,-2.499546 1/21/2020 0:00,-0.181959,4.458004,8.705317
2016-02-22 14:59:44.561797,0.550666,-3.926491,0.895431 1/22/2020 0:00,-0.019154,4.381389,8.853758
2016-02-22 14:59:44.561798,-3.246537,8.75799,-3.605668 1/23/2020 0:00,0.100556,4.443639,8.705317
2016-02-22 14:59:44.561799,-1.345541,5.391742,-1.359906 1/24/2020 0:00,-0.004788,4.390966,8.777143
2016-02-22 14:59:44.561800,17.860744,-3.758896,-3.394978 1/25/2020 0:00,-0.172383,4.472369,8.858546
2016-02-22 14:59:44.561801,18.689138,22.256498,-1.335964 1/26/2020 0:00,-1.043872,3.979163,7.445967
2016-02-22 14:59:44.561802,-0.143652,8.240842,-0.703895 1/27/2020 0:00,-0.679953,4.194642,8.446744
2016-02-22 14:59:44.561803,0.80924,-20.618866,-1.489193 1/28/2020 0:00,-0.215478,3.888184,9.045294
2016-02-22 14:59:44.561804,15.629349,29.8126,2.30801 1/29/2020 0:00,-0.134075,4.242526,8.743625
2016-02-22 14:59:44.561805,15.528792,30.004135,10.548853 1/1/2020 0:01,-1.426944,5.109226,7.94875
import numpy as np import numpy as np
from sympy import fft from sympy import fft
import GetData as gd from TrainingAndTestingData import GetData as gd
class FeatureExtraction: class FeatureExtraction:
list=[] list=[]
...@@ -8,7 +9,6 @@ class FeatureExtraction: ...@@ -8,7 +9,6 @@ class FeatureExtraction:
def __init__(self,list): def __init__(self,list):
self.list= list; self.list= list;
def MinimumPeak(self,list): def MinimumPeak(self,list):
min_value = None min_value = None
for value in list: for value in list:
...@@ -65,104 +65,90 @@ class FeatureExtraction: ...@@ -65,104 +65,90 @@ class FeatureExtraction:
num = i num = i
return num return num
def getSmallFeatureSingle(self,list):
def getFeatureSingle(self,list):
d= gd.GetData(list) d= gd.GetData(list)
X= d.getX(list) X= d.getX(list)
Y= d.getY(list) Y= d.getY(list)
Z=d.getZ(list) Z=d.getZ(list)
Magnitudes=d.getMagnitude(list)
Activities= d.getActivities(list) Activities= d.getActivities(list)
fe = FeatureExtraction(list); fe = FeatureExtraction(list)
feature=[]; feature=[]
feature.append(fe.MinimumPeak(X)) feature.append(fe.MinimumPeak(X))
feature.append(fe.MinimumPeak(Y)); feature.append(fe.MinimumPeak(Y))
feature.append(fe.MinimumPeak(Z)); feature.append(fe.MinimumPeak(Z))
feature.append(fe.MaximumPeak(X)); feature.append(fe.MaximumPeak(X))
feature.append(fe.MaximumPeak(Y)); feature.append(fe.MaximumPeak(Y))
feature.append(fe.MaximumPeak(Z)); feature.append(fe.MaximumPeak(Z))
feature.append(fe.Mean(X)); feature.append(fe.Mean(X))
feature.append(fe.Mean(Y)); feature.append(fe.Mean(Y))
feature.append(fe.Mean(Z)); feature.append(fe.Mean(Z))
feature.append(fe.median(X)); feature.append(np.bincount(Activities).argmax())
feature.append(fe.median(Y));
feature.append(fe.median(Z));
feature.append(fe.Variance(X));
feature.append(fe.Variance(Y));
feature.append(fe.Variance(Z));
feature.append(fe.StandardDeviation(X));
feature.append(fe.StandardDeviation(Y));
feature.append(fe.StandardDeviation(Z));
feature.append(fe.RMS(X));
feature.append(fe.RMS(Y));
feature.append(fe.RMS(Z));
feature.append(fe.Energy(X));
feature.append(fe.Energy(Y));
feature.append(fe.Energy(Z));
feature.append(fe.Mean(Magnitudes));
feature.append(np.bincount(Activities).argmax());
print("Feature Vector \n" ,feature , "\n\n"); print("Feature Vector \n" ,feature , "\n\n")
return feature; return feature
def getTestFeatureSingle(self,list):
d= gd.GetData(list)
X= d.getX(list)
Y= d.getY(list)
Z=d.getZ(list)
Magnitudes=d.getMagnitude(list)
Times= d.getStartAndEndTime(list)
fe = FeatureExtraction(list);
feature=[]; def getSmallTestFeatureSingle(self,list):
d = gd.GetData(list)
X = d.getX(list)
Y = d.getY(list)
Z = d.getZ(list)
times = d.getStartAndEndTime(list)
fe = FeatureExtraction(list)
feature = []
feature.append(fe.MinimumPeak(X)) feature.append(fe.MinimumPeak(X))
feature.append(fe.MinimumPeak(Y)); feature.append(fe.MinimumPeak(Y))
feature.append(fe.MinimumPeak(Z)); feature.append(fe.MinimumPeak(Z))
feature.append(fe.MaximumPeak(X)); feature.append(fe.MaximumPeak(X))
feature.append(fe.MaximumPeak(Y)); feature.append(fe.MaximumPeak(Y))
feature.append(fe.MaximumPeak(Z)); feature.append(fe.MaximumPeak(Z))
feature.append(fe.Mean(X)); feature.append(fe.Mean(X))
feature.append(fe.Mean(Y)); feature.append(fe.Mean(Y))
feature.append(fe.Mean(Z)); feature.append(fe.Mean(Z))
feature.append(fe.median(X)); feature.append(times[0])
feature.append(fe.median(Y)); feature.append(times[1])
feature.append(fe.median(Z));
feature.append(fe.Variance(X));
feature.append(fe.Variance(Y));
feature.append(fe.Variance(Z));
feature.append(fe.StandardDeviation(X));
feature.append(fe.StandardDeviation(Y));
feature.append(fe.StandardDeviation(Z));
feature.append(fe.RMS(X));
feature.append(fe.RMS(Y));
feature.append(fe.RMS(Z));
feature.append(fe.Energy(X));
feature.append(fe.Energy(Y));
feature.append(fe.Energy(Z));
feature.append(fe.Mean(Magnitudes));
feature.append(Times[0])
feature.append(Times[-1])
print("Feature Vector \n" ,feature , "\n\n"); print("Feature Vector \n",feature, "\n\n");
return feature; return feature
def getFeatureSingle(self,list):
d= gd.GetData(list)
X= d.getX(list)
Y= d.getY(list)
Z=d.getZ(list)
Magnitudes = d.getMagnitude(list)
Activities = d.getActivities(list)
fe = FeatureExtraction(list)
feature=[]
feature.append(fe.Mean(X))
feature.append(fe.Mean(Y))
feature.append(fe.Mean(Z))
feature.append(fe.median(X))
feature.append(fe.median(Y))
feature.append(fe.median(Z))
feature.append(fe.Variance(X))
feature.append(fe.Variance(Y))
feature.append(fe.Variance(Z))
feature.append(fe.StandardDeviation(X))
feature.append(fe.StandardDeviation(Y))
feature.append(fe.StandardDeviation(Z))
feature.append(fe.RMS(X))
feature.append(fe.RMS(Y))
feature.append(fe.RMS(Z))
feature.append(fe.Energy(X))
feature.append(fe.Energy(Y))
feature.append(fe.Energy(Z))
feature.append(fe.Mean(Magnitudes))
feature.append(np.bincount(Activities).argmax())
print("Feature Vector \n",feature, "\n\n")
return feature
class GetData: class GetData:
data =[]; data =[]
def __init__(self,data): def __init__(self, data):
self.data=data; self.data=data
def getX(self,data): def getX(self,data):
X=[] X=[]
......
# In this file , the data is obtained from a csv to create the feature vector, send that to a trained model, # In this file , the data is obtained from a csv to create the feature vector, send that to a trained model,
# predict the activity and then transfer the dog details to a csv to be sent to the database # predict the activity and then transfer the dog details to a csv to be sent to the database
import Data as Data from TrainingAndTestingData import Data as Data
import GetData as getdata from TrainingAndTestingData import GetData as getdata
import FeatureExtraction as fe from TrainingAndTestingData import FeatureExtraction as fe
import Test as Test from TrainingAndTestingData import Test as Test
import ReadData as ReadData from TrainingAndTestingData import ReadData as ReadData
#import warnings
#warnings.filterwarnings("ignore") class Main:
def __init__(self):
d= Data.Data('Example.csv') d = Data.Data('TrainingAndTestingData/Example.csv')
data= d.ReadData() data = d.ReadData()
i,j=0,0; i, j = 0, 0
length = len(data); length = len(data)
while(i<= length): while i <= length:
Index =[]; Index = []
count = i+30; count = i + 30
while(j<= count): if j < length:
Index.append(j); while j <= count:
j= j+1; Index.append(j)
print(Index); j = j + 1
fIndex , lIndex= Index[0] , Index[-1] print(Index)
dataset = data.iloc[fIndex: lIndex+1] fIndex, lIndex = Index[0], Index[-1]
gd1=getdata.GetData(dataset) dataset = data.iloc[fIndex: lIndex + 1]
f= fe.FeatureExtraction(gd1) gd1 = getdata.GetData(dataset)
f = fe.FeatureExtraction(gd1)
if('activity' in data.columns):
print("For Training ") if 'activity' in data.columns:
FeatureVector = f.getFeatureSingle(dataset) print("For Training ")
d.append_list_as_row('FeatureVector.csv', FeatureVector); FeatureVector = f.getSmallFeatureSingle(dataset)
else: d.append_list_as_row('FeatureVector.csv', FeatureVector)
FeatureVector = f.getTestFeatureSingle(dataset) else:
d.append_list_as_row('Test.csv', FeatureVector); FeatureVector = f.getSmallTestFeatureSingle(dataset)
r = Data.Data('Test.csv') d.append_list_as_row('Test.csv', FeatureVector)
predictingActivity = r.ReadData() r = Data.Data('Test.csv')
predictedActivity = Test.Test(predictingActivity) predictingActivity = r.ReadData()
d1= Data.Data('DogData.csv') predictedActivity = Test.Test(predictingActivity)
data1= d1.ReadData()
activityCountData= ReadData.ReadData(data1) else:
break
i=i+30; i = i + 30
d1 = Data.Data('DogData.csv')
data1 = d1.ReadData()
activityCountData = ReadData.ReadData(data1)
# Once the feature vector is created data from the Example.csv should be cleared.
# Once the activity is recognized adn inserted to DogData,csv , the Feature vector should be deleted from the Test.csv.
# Once the activity count is taken and the DB is updated the DogData.csv should be cleared.
#This class reads the data for rest , run and walk respectively and calculates the number of minutes of each. #This class reads the data for rest , run and walk respectively and calculates the number of minutes of each.
class ReadData: class ReadData:
data = ''; data= ''
def __init__(self,data): def __init__(self,data):
self.data= data self.data = data
print(data)
restData = data.apply(lambda x: True if x['Activity'] == 'rest' else False , axis=1) i, Rest, Walk, Run = 0,0,0,0
numOfRestRows = len(restData[restData == True].index)
walkData = data.apply(lambda x: True if x['Activity'] == 'walk' else False , axis=1)
numOfWalkRows = len(walkData[walkData == True].index)
runData = data.apply(lambda x: True if x['Activity'] == 'run' else False , axis=1)
numOfRunRows = len(runData[runData == True].index)
print("Resting Minutes: ",numOfRestRows) while i<len(data):
print("Walking Minutes: ",numOfWalkRows) print(i)
print("Running Minutes: ",numOfRunRows) if(data.xs(i)['Activity'] == 'rest'):
Rest += 1
if(data.xs(i)['Activity'] == 'walk'):
Walk += 1
if(data.xs(i)['Activity'] == 'run'):
Run += 1
i += 1
print("Resting Minutes: ", Rest)
\ No newline at end of file print("Walking Minutes: ", Walk)
print("Running Minutes: ", Run)
Xmin,Ymin,Zmin,Xmax,Ymax,Zmax,Xmean,Ymean,Zmean,Xmedian,Ymedian,Zmedian,Xvariance,Yvariance,Zvariance,Xstd,Ystd,Zstd,Xrms,Yrms,Zrms,Xenergy,Yenergy,Zenergy,MaxMagnitude,StartTime,EndTime Xmin,Ymin,Zmin,Xmax,Ymax,Zmax,Xmean,Ymean,Zmean,StartTime,EndTime
-8.006210000000001,-20.618866,-16.376339,30.674513,30.004134999999998,10.548853,5.7283671,7.1533957333333325,0.5251283333333334,1.3144170000000002,7.7548195,0.011970999999999996,92.04525690845622,262.324475973493,24.892536674532625,9.594021936000367,16.196434051157464,4.9892420941995415,61.20280546040809,96.97869041565232,27.47815301707999,171.851013000000,241.763736102284,46.7146199111146,18.88841309892816,2016-02-22 14:59:44.561776,2016-02-22 14:59:44.561805
#This file reads the feature vector predicts the Activity and writes it to a file DogData.csv #This file reads the feature vector predicts the Activity and writes it to a file DogData.csv
import joblib import joblib
import Data as Data from TrainingAndTestingData import Data as Data
class Test: class Test:
data = ''; data = ''
def __init__(self,data): def __init__(self, data):
self.data= data self.data = data
Times= data.loc[:,['StartTime','EndTime']] Times= data.loc[:,['StartTime', 'EndTime']]
data = data.drop(['StartTime','EndTime'],axis=1) data = data.drop(['StartTime', 'EndTime'], axis=1)
X_test = data[:] X_test = data[:]
StartTime=Times.xs(0)['StartTime'] StartTime=Times.xs(0)['StartTime']
EndTime=Times.xs(0)['EndTime'] EndTime=Times.xs(0)['EndTime']
Date=Times.xs(0)['EndTime'] Date=Times.xs(0)['EndTime']
ActivityArray=[]; ActivityArray=[]
# load the Gaussian Bayes Model from disk # load the Gaussian Bayes Model from disk
filename= 'Gaussian_model.sav' filename= 'SimplifiedFinalSVMModel.sav'
Gaussian_model = joblib.load(filename) model = joblib.load(filename)
prediction = Gaussian_model.predict(X_test) prediction = model.predict(X_test)
activityPrediction = prediction.tolist().pop()
if(prediction[0]== 0): if(activityPrediction == 0):
activity ='rest' activity ='rest'
if(prediction[0]== 1): if(activityPrediction== 1):
activity ='walk' activity ='walk'
if(prediction[0]== 2): if(activityPrediction== 2):
activity ='run' activity ='run'
print("PREDICTION ---->",activity) print("PREDICTION ---->",activity, "-",activityPrediction ,"\n\n")
ActivityArray.append(StartTime) ActivityArray.append(StartTime)
ActivityArray.append(EndTime) ActivityArray.append(EndTime)
......
...@@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/3.0/ref/settings/ ...@@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
import os import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...@@ -27,10 +28,11 @@ DEBUG = True ...@@ -27,10 +28,11 @@ DEBUG = True
ALLOWED_HOSTS = [] ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'mobileapp',
'background_task',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
...@@ -38,13 +40,12 @@ INSTALLED_APPS = [ ...@@ -38,13 +40,12 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'rest_framework', 'rest_framework',
'mobileapp',
'rest_framework.authtoken', 'rest_framework.authtoken',
'rest_auth', 'rest_auth',
'django.contrib.sites', 'django.contrib.sites',
'allauth', 'allauth',
'allauth.account', 'allauth.account',
'rest_auth.registration', 'rest_auth.registration'
] ]
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
SITE_ID = 1 SITE_ID = 1
...@@ -64,9 +65,7 @@ ROOT_URLCONF = 'WalkingPatternRecognition.urls' ...@@ -64,9 +65,7 @@ ROOT_URLCONF = 'WalkingPatternRecognition.urls'
TEMPLATES = [ TEMPLATES = [
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [ 'DIRS': [os.path.join(BASE_DIR, 'templates')],
os.path.join(BASE_DIR, 'reactapp/build')
],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
...@@ -109,7 +108,6 @@ REST_FRAMEWORK = { ...@@ -109,7 +108,6 @@ REST_FRAMEWORK = {
} }
# Password validation # Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
...@@ -147,9 +145,12 @@ USE_TZ = True ...@@ -147,9 +145,12 @@ USE_TZ = True
# https://docs.djangoproject.com/en/3.0/howto/static-files/ # https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_URL = '/static/' STATIC_URL = '/static/'
LOGIN_REDIRECT_URL = '/'
STATICFILES_DIRS = [ STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'reactapp/build/static')
] ]
# 'ENGINE': 'django.db.backends.sqlite3', # 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
\ No newline at end of file
...@@ -19,7 +19,9 @@ from rest_framework.authtoken import views ...@@ -19,7 +19,9 @@ from rest_framework.authtoken import views
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('', include('mobileapp.urls', namespace='api')),
path('api-token-auth/', views.obtain_auth_token, name='api-token-auth'), path('api-token-auth/', views.obtain_auth_token, name='api-token-auth'),
path('api/', include('mobileapp.urls', namespace='api')),
] ]
default_app_config = 'mobileapp.apps.MobileappConfig'
from django.contrib import admin from django.contrib import admin
from .models import Dog from .models import Dog
from .models import MotionActivity
from .models import MotionActivityPerDay from .models import MotionActivityPerDay
# Register your models here. # Register your models here.
admin.site.register(Dog) admin.site.register(Dog)
admin.site.register(MotionActivity)
admin.site.register(MotionActivityPerDay) admin.site.register(MotionActivityPerDay)
from django.apps import AppConfig from django.apps import AppConfig
def Hello():
print("Hellooo")
class MobileappConfig(AppConfig): class MobileappConfig(AppConfig):
name = 'mobileapp' name = 'mobileapp'
def ready(self):
print("Starting Up Code...")
# Generated by Django 2.2.12 on 2020-07-01 11:57
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)),
],
),
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()),
('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',
),
]
import django import django
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from django.conf import settings from django.contrib.auth.models import User
class Dog(models.Model): class Dog(models.Model):
GENDER_TYPES = (
('M', 'Male'),
('F', 'Female'),
('U', 'Unknown'),
)
name = models.CharField(max_length=50) name = models.CharField(max_length=50)
age = models.IntegerField() birthday = models.DateField()
breed = models.CharField(max_length=10) breed = models.CharField(max_length=10)
created_date = models.DateTimeField(default=timezone.now) gender = models.CharField(max_length=1, choices=GENDER_TYPES)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self): def __str__(self):
return self.name return self.name
class MotionActivity(models.Model): class Activity(models.Model):
dog = models.ForeignKey(Dog, on_delete=models.CASCADE) name = models.CharField(max_length=10)
date = models.DateField(default=django.utils.timezone.now) activity_id = models.IntegerField()
time = models.TimeField(default=django.utils.timezone.now)
activity = models.CharField(max_length=50)
def __str__(self): def __str__(self):
return str(self.dog) "{}".format(self.name)
class MotionActivityPerDay(models.Model): class MotionActivityPerDay(models.Model):
dog = models.IntegerField() user = models.ForeignKey(User, on_delete=models.CASCADE)
dog = models.ForeignKey(Dog, on_delete=models.CASCADE)
date = models.DateField(default=django.utils.timezone.now) date = models.DateField(default=django.utils.timezone.now)
activity = models.CharField(max_length=10) activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
timePeriod = models.IntegerField() timePeriod = models.IntegerField()
def __str__(self): def __str__(self):
return str(self.dog) "{} - {} - {} - {}".format(self.dog, self.date, self.activity, self.timePeriod)
......
from rest_framework import serializers from rest_framework import serializers
from rest_framework.validators import UniqueTogetherValidator from rest_framework.validators import UniqueTogetherValidator
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .models import Dog, MotionActivity, MotionActivityPerDay from .models import Dog, MotionActivityPerDay,Activity
class UserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer):
...@@ -31,20 +31,21 @@ class DogSerializer(serializers.ModelSerializer): ...@@ -31,20 +31,21 @@ class DogSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Dog model = Dog
fields = ('id', 'name', 'breed', 'age') fields = ('name', 'birthday', 'breed', 'gender', 'user')
class MotionActivitySerializer(serializers.ModelSerializer): class ActivitySerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = MotionActivity model = Activity
fields = ('dog', 'date', 'time', 'activity') fields = ('name', 'activity_id')
class MotionActivityPerDaySerializer(serializers.ModelSerializer): class MotionActivityPerDaySerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = MotionActivityPerDay model = MotionActivityPerDay
fields = ('dog', 'date', 'activity', 'timePeriod') fields = ('user', 'dog', 'date', 'activity', 'timePeriod')
{% block content %}
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
{% if next %}
{% if user.is_authenticated %}
<p>Your account doesn't have access to this page. To proceed,
please login with an account that has access.</p>
{% else %}
<p>Please login to see this page.</p>
{% endif %}
{% endif %}
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
{# Assumes you setup the password_reset view in your URLconf #}
<p><a href="{% url 'password_reset' %}">Lost password?</a></p>
{% endblock %}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<h1>Registration Page!</h1>
<form method="post" action="{% url 'api:register' %}">
{% csrf_token %}
{% if form.errors %}
<p>There are errors in the form!</p>
{% endif %}
{{ form }}
<input type="submit" value="Register">
</form>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
<h1>This is the index Page</h1>
{% if user.is_authenticated %}
<h2>You name is: {{ user.username }}</h2>
{% else %}
<h2>You are not logged in.</h2>
{% endif %}
</body>
</html>
\ No newline at end of file
from django.urls import include, path from django.urls import include, path
from . import views from . import views
from .views import UserRecordView,add_motion from .views import UserRecordView
app_name = 'api' app_name = 'api'
urlpatterns = [ urlpatterns = [
path('welcome/', views.welcome),
path('', views.index, name='index'),
path('register', views.register, name='register'),
path('user/', UserRecordView.as_view(), name='users'), path('user/', UserRecordView.as_view(), name='users'),
path('addMotionActivity', views.add_motion),
path('addMotionActivityPerDay', views.add_motionActivityPerDay),
path('dogs/', views.DogList.as_view()), path('dogs/', views.DogList.as_view()),
path('motionActivity/', views.MotionActivityList.as_view()), path('addDogProfile', views.add_DogProfile),
path('motionActivityPerDay/', views.MotionActivityPerDayList.as_view()), path('updateDogProfile/<int:dog_id>', views.update_DogProfile),
path('deleteDogProfile/<int:dog_id>', views.delete_DogProfile),
path('addMotionActivityPerDay', views.add_motionActivityPerDay),
path('updateMotionActivityPerDay/<int:id>', views.update_MotionActivityPerDay),
path('motionActivityPerDay', views.MotionActivityPerDayList.as_view()),
path('deleteMotionActivityPerDay/<int:motion_id>', views.delete_motionActivityPerDay),
path('addActivity', views.add_Activity),
# Get The details as necessary
path('getActivityData/<int:activity_id>', views.DataBasedOnActivity)
# Walking Data
# Running Data
] ]
\ No newline at end of file
from django.contrib.auth import authenticate, login
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render from django.http import JsonResponse, HttpResponse
from django.http import HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework import status from rest_framework import status
import json 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 .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 .models import Dog, MotionActivity, MotionActivityPerDay @background(schedule=60)
def Method():
print("Hello World!")
Main.Main()
from .serializers import DogSerializer, MotionActivitySerializer, MotionActivityPerDaySerializer
from rest_framework.decorators import api_view, permission_classes def index(request):
from rest_framework.permissions import IsAuthenticated, IsAdminUser Method()
from django.contrib.auth.models import User return render(request, 'user_example/index.html')
from .serializers import UserSerializer
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
login(request, user)
return redirect('user_example/index.html')
else:
form = UserCreationForm()
context = {'form': form}
return render(request, 'registration/register.html', context)
class UserRecordView(APIView): class UserRecordView(APIView):
...@@ -44,13 +71,7 @@ class UserRecordView(APIView): ...@@ -44,13 +71,7 @@ class UserRecordView(APIView):
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_400_BAD_REQUEST
) )
# DOGS
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def welcome(request):
content = {"message": "Welcome to the Doggy App!"}
return JsonResponse(content)
class DogList(APIView): class DogList(APIView):
...@@ -63,63 +84,153 @@ class DogList(APIView): ...@@ -63,63 +84,153 @@ class DogList(APIView):
pass pass
class MotionActivityList(APIView): @api_view(["POST"])
def get(self, request): @csrf_exempt
activities = MotionActivity.objects.all() @permission_classes([IsAuthenticated])
serializer = MotionActivitySerializer(activities, many=True) def add_DogProfile(request):
return Response(serializer.data) payload = json.loads(request.body)
user = request.user
try:
dog = Dog.objects.create(
name=payload["name"],
birthday=payload["birthday"],
breed=payload["breed"],
gender=payload["gender"],
user=user
)
serializer = DogSerializer(dog)
return JsonResponse({'dog': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception:
return JsonResponse({'error': 'Something terrible went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)@api_view(["POST"])
def post(self):
pass @api_view(["PUT"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def update_DogProfile(request, dog_id):
payload = json.loads(request.body)
try:
item = Dog.objects.filter(id=dog_id)
# returns 1 or 0
item.update(**payload)
dog = Dog.objects.get(id=dog_id)
serializer = DogSerializer(dog)
return JsonResponse({'dog': serializer.data}, safe=False, status=status.HTTP_200_OK)
except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception:
return JsonResponse({'error': Exception}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@api_view(["DELETE"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def delete_DogProfile(request, dog_id):
try:
dog = Dog.objects.get(id=dog_id)
dog.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception:
return JsonResponse({'error': 'Something went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# ACTIVITY
@api_view(["POST"]) @api_view(["POST"])
@csrf_exempt @csrf_exempt
# @permission_classes([IsAuthenticated]) @permission_classes([IsAuthenticated])
def add_motion(request): def add_Activity(request):
payload = json.loads(request.body) payload = json.loads(request.body)
try: try:
motion = MotionActivity.objects.create( activity = Activity.objects.create(
date=payload["date"], name=payload["name"],
time=payload["time"], activity_id=payload["activity_id"],
activity=payload["activity"],
dog=payload["dog"]
) )
serializer = MotionActivitySerializer(motion) serializer = ActivitySerializer(activity)
return JsonResponse({'motions': serializer.data}, safe=False, status=status.HTTP_201_CREATED) return JsonResponse({'activity': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
except ObjectDoesNotExist as e: except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception: except Exception:
return JsonResponse({'error': 'Something terrible went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)@api_view(["POST"]) return JsonResponse({'error': 'Something terrible went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)@api_view(["POST"])
class MotionActivityPerDayList(APIView): # MOTION ACTIVITY PER DAY
def get(self, request):
activities = MotionActivityPerDay.objects.all()
serializer = MotionActivityPerDaySerializer(activities, many=True)
return Response(serializer.data)
def post(self):
pass @api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def DataBasedOnActivity(request, activity_id):
activities = MotionActivityPerDay.objects.filter(activity_id=activity_id)
serializer = MotionActivityPerDaySerializer(activities, many=True)
return JsonResponse({'activities': serializer.data}, safe=False, status=status.HTTP_200_OK)
@api_view(["POST"]) @api_view(["POST"])
@csrf_exempt @csrf_exempt
# @permission_classes([IsAuthenticated]) @permission_classes([IsAuthenticated])
def add_motionActivityPerDay(request): def add_motionActivityPerDay(request):
payload = json.loads(request.body) payload = json.loads(request.body)
user = request.user
dog = Dog.objects.get(id=payload["dog"])
activity = Activity.objects.get(activity_id=payload["activity"])
try: try:
motion = MotionActivity.objects.create( motion = MotionActivityPerDay.objects.create(
user=user,
dog=dog,
date=payload["date"], date=payload["date"],
timePeriod=payload["timePeriod"], activity=activity,
activity=payload["activity"], timePeriod=payload["timePeriod"]
dog=payload["dog"]
) )
serializer = MotionActivitySerializer(motion) serializer = MotionActivityPerDaySerializer(motion)
return JsonResponse({'motions': serializer.data}, safe=False, status=status.HTTP_201_CREATED) return JsonResponse({'motions': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
except ObjectDoesNotExist as e: except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND) return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception: except Exception:
return JsonResponse({'error': 'Something terrible went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)@api_view(["POST"]) return JsonResponse({Exception}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)@api_view(["POST"])
@api_view(["PUT"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def update_MotionActivityPerDay(request, id):
payload = json.loads(request.body)
try:
item = MotionActivityPerDay.objects.filter(id=id)
# returns 1 or 0
item.update(**payload)
motion = MotionActivityPerDay.objects.get(id=id)
serializer = MotionActivityPerDaySerializer(motion)
return JsonResponse({'motion': serializer.data}, safe=False, status=status.HTTP_200_OK)
except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception:
return JsonResponse({'error': 'Something terrible went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class MotionActivityPerDayList(APIView):
def get(self, request):
activities = MotionActivityPerDay.objects.all()
serializer = MotionActivityPerDaySerializer(activities, many=True)
return Response(serializer.data)
@api_view(["DELETE"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def delete_motionActivityPerDay(request, motion_id):
try:
motion = MotionActivityPerDay.objects.get(id=motion_id)
motion.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except ObjectDoesNotExist as e:
return JsonResponse({'error': str(e)}, safe=False, status=status.HTTP_404_NOT_FOUND)
except Exception:
return JsonResponse({'error': 'Something went wrong'}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
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