Commit 745d5d36 authored by Janadi's avatar Janadi

7/2/2020

parent 68701cfd
Pipeline #1216 failed with stages
......@@ -13,6 +13,7 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="HTML File" />
<option value="Python Script" />
</list>
</option>
......@@ -29,6 +30,7 @@
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="DefaultHtmlFileTemplate" value="HTML File" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
......@@ -40,6 +42,11 @@
<property name="node.js.selected.package.tslint" value="(autodetect)" />
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\ASUS\Desktop\DogBehaviouralSystem\Django\WalkingPatternRecognition\WalkingPatternRecognition" />
</key>
</component>
<component name="RunManager">
<configuration name="WalkingPatternRecognition" type="Python.DjangoServer" factoryName="Django server">
<module name="WalkingPatternRecognition" />
......@@ -47,6 +54,7 @@
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="DJANGO_SETTINGS_MODULE" value="WalkingPatternRecognition.settings" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
......@@ -96,6 +104,14 @@
<workItem from="1592913871108" duration="42000" />
<workItem from="1592914317572" duration="2313000" />
<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>
<servers />
</component>
......@@ -103,18 +119,43 @@
<option name="version" value="1" />
</component>
<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">
<screen x="0" y="0" width="1536" height="824" />
</state>
<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">
<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="1593057263416">
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog" timestamp="1593604614794">
<screen x="1920" y="0" width="1920" height="1040" />
</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@0.0.1536.824" timestamp="1590081950861" />
<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" />
</component>
</project>
\ No newline at end of file
from csv import writer
import pandas as pd
class Data:
data = '';
Read = [];
data = ''
Read = []
def __init__(self,data):
self.data= data;
self.data = data
def ReadData(self):
self.Read= pd.read_csv(self.data);
return self.Read;
self.Read = pd.read_csv(self.data)
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
with open(file_name, 'a+', newline='') as write_obj:
# Create a writer object from csv module
csv_writer = writer(write_obj)
# Add contents of list as last row in the csv file
csv_writer.writerow(list_of_elem)
\ No newline at end of file
csv_writer.writerow(list_of_elem)
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
2016-02-22 14:59:44.561776,0.612916,-10.400413,0.095768
2016-02-22 14:59:44.561777,6.421249,29.022512,8.8777
2016-02-22 14:59:44.561778,5.214572,20.910957,8.30788
2016-02-22 14:59:44.561779,0.565032,-9.792285,-0.325611
2016-02-22 14:59:44.561780,-2.738967,4.458004,8.255207
2016-02-22 14:59:44.561781,-2.585738,7.244855,0.521936
2016-02-22 14:59:44.561782,-2.140416,-19.938911,-2.284068
2016-02-22 14:59:44.561783,30.119057,23.142353,-16.376339
2016-02-22 14:59:44.561784,-4.165911,7.268797,2.226608
2016-02-22 14:59:44.561785,-1.522712,-15.916653,1.92015
2016-02-22 14:59:44.561786,12.909535,28.543673,0.354342
2016-02-22 14:59:44.561787,-0.11971,16.591818,-0.071826
2016-02-22 14:59:44.561788,4.644751,-16.098612,-2.715025
2016-02-22 14:59:44.561789,5.736508,13.55597,7.354988
2016-02-22 14:59:44.561790,-8.00621,5.315128,2.284068
2016-02-22 14:59:44.561791,7.886501,-12.397177,1.120486
2016-02-22 14:59:44.561792,30.674513,24.890121,-4.079719
2016-02-22 14:59:44.561793,1.187524,13.072341,-1.953669
2016-02-22 14:59:44.561794,1.44131,-14.585477,3.610456
2016-02-22 14:59:44.561795,6.0286,17.889475,-0.732626
2016-02-22 14:59:44.561796,15.35641,25.665842,-2.499546
2016-02-22 14:59:44.561797,0.550666,-3.926491,0.895431
2016-02-22 14:59:44.561798,-3.246537,8.75799,-3.605668
2016-02-22 14:59:44.561799,-1.345541,5.391742,-1.359906
2016-02-22 14:59:44.561800,17.860744,-3.758896,-3.394978
2016-02-22 14:59:44.561801,18.689138,22.256498,-1.335964
2016-02-22 14:59:44.561802,-0.143652,8.240842,-0.703895
2016-02-22 14:59:44.561803,0.80924,-20.618866,-1.489193
2016-02-22 14:59:44.561804,15.629349,29.8126,2.30801
2016-02-22 14:59:44.561805,15.528792,30.004135,10.548853
1/1/2020 0:00,0.296881,5.621586,8.001422
1/2/2020 0:00,0.464475,5.262456,7.627927
1/3/2020 0:00,0.105345,5.324705,7.915231
1/4/2020 0:00,-0.019154,5.726931,8.279149
1/5/2020 0:00,-0.253785,5.616797,8.063671
1/6/2020 0:00,-0.248997,5.48751,7.886501
1/7/2020 0:00,-0.368707,5.396531,8.063671
1/8/2020 0:00,-0.167594,5.425261,8.288726
1/9/2020 0:00,-0.430956,5.621586,8.226477
1/10/2020 0:00,-0.272939,5.118803,8.408437
1/11/2020 0:00,0.263362,4.668694,8.317456
1/12/2020 0:00,-0.311246,4.989517,7.513005
1/13/2020 0:00,0.105345,4.730943,9.002198
1/14/2020 0:00,0.095768,4.797981,8.848969
1/15/2020 0:00,-0.153229,4.453215,9.097966
1/16/2020 0:00,0.09098,4.644751,8.585608
1/17/2020 0:00,0.038307,4.644751,8.719683
1/18/2020 0:00,0.205901,4.999093,8.643068
1/19/2020 0:00,-0.301669,4.367024,8.207323
1/20/2020 0:00,-0.129287,4.673482,8.06846
1/21/2020 0:00,-0.181959,4.458004,8.705317
1/22/2020 0:00,-0.019154,4.381389,8.853758
1/23/2020 0:00,0.100556,4.443639,8.705317
1/24/2020 0:00,-0.004788,4.390966,8.777143
1/25/2020 0:00,-0.172383,4.472369,8.858546
1/26/2020 0:00,-1.043872,3.979163,7.445967
1/27/2020 0:00,-0.679953,4.194642,8.446744
1/28/2020 0:00,-0.215478,3.888184,9.045294
1/29/2020 0:00,-0.134075,4.242526,8.743625
1/1/2020 0:01,-1.426944,5.109226,7.94875
import numpy as np
from sympy import fft
import GetData as gd
from TrainingAndTestingData import GetData as gd
class FeatureExtraction:
list=[]
......@@ -8,7 +9,6 @@ class FeatureExtraction:
def __init__(self,list):
self.list= list;
def MinimumPeak(self,list):
min_value = None
for value in list:
......@@ -65,104 +65,90 @@ class FeatureExtraction:
num = i
return num
def getFeatureSingle(self,list):
def getSmallFeatureSingle(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);
fe = FeatureExtraction(list)
feature=[];
feature=[]
feature.append(fe.MinimumPeak(X))
feature.append(fe.MinimumPeak(Y));
feature.append(fe.MinimumPeak(Z));
feature.append(fe.MaximumPeak(X));
feature.append(fe.MaximumPeak(Y));
feature.append(fe.MaximumPeak(Z));
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());
feature.append(fe.MinimumPeak(Y))
feature.append(fe.MinimumPeak(Z))
feature.append(fe.MaximumPeak(X))
feature.append(fe.MaximumPeak(Y))
feature.append(fe.MaximumPeak(Z))
feature.append(fe.Mean(X))
feature.append(fe.Mean(Y))
feature.append(fe.Mean(Z))
feature.append(np.bincount(Activities).argmax())
print("Feature Vector \n" ,feature , "\n\n");
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);
print("Feature Vector \n" ,feature , "\n\n")
return feature
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(Y));
feature.append(fe.MinimumPeak(Z));
feature.append(fe.MaximumPeak(X));
feature.append(fe.MaximumPeak(Y));
feature.append(fe.MaximumPeak(Z));
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(Times[0])
feature.append(Times[-1])
feature.append(fe.MinimumPeak(Y))
feature.append(fe.MinimumPeak(Z))
feature.append(fe.MaximumPeak(X))
feature.append(fe.MaximumPeak(Y))
feature.append(fe.MaximumPeak(Z))
feature.append(fe.Mean(X))
feature.append(fe.Mean(Y))
feature.append(fe.Mean(Z))
feature.append(times[0])
feature.append(times[1])
print("Feature Vector \n" ,feature , "\n\n");
return feature;
print("Feature Vector \n",feature, "\n\n");
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:
data =[];
data =[]
def __init__(self,data):
self.data=data;
def __init__(self, data):
self.data=data
def getX(self,data):
X=[]
......
# 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
import Data as Data
import GetData as getdata
import FeatureExtraction as fe
import Test as Test
import ReadData as ReadData
#import warnings
#warnings.filterwarnings("ignore")
d= Data.Data('Example.csv')
data= d.ReadData()
i,j=0,0;
length = len(data);
while(i<= length):
Index =[];
count = i+30;
while(j<= count):
Index.append(j);
j= j+1;
print(Index);
fIndex , lIndex= Index[0] , Index[-1]
dataset = data.iloc[fIndex: lIndex+1]
gd1=getdata.GetData(dataset)
f= fe.FeatureExtraction(gd1)
if('activity' in data.columns):
print("For Training ")
FeatureVector = f.getFeatureSingle(dataset)
d.append_list_as_row('FeatureVector.csv', FeatureVector);
else:
FeatureVector = f.getTestFeatureSingle(dataset)
d.append_list_as_row('Test.csv', FeatureVector);
r = Data.Data('Test.csv')
predictingActivity = r.ReadData()
predictedActivity = Test.Test(predictingActivity)
d1= Data.Data('DogData.csv')
data1= d1.ReadData()
activityCountData= ReadData.ReadData(data1)
i=i+30;
from TrainingAndTestingData import Data as Data
from TrainingAndTestingData import GetData as getdata
from TrainingAndTestingData import FeatureExtraction as fe
from TrainingAndTestingData import Test as Test
from TrainingAndTestingData import ReadData as ReadData
class Main:
def __init__(self):
d = Data.Data('TrainingAndTestingData/Example.csv')
data = d.ReadData()
i, j = 0, 0
length = len(data)
while i <= length:
Index = []
count = i + 30
if j < length:
while j <= count:
Index.append(j)
j = j + 1
print(Index)
fIndex, lIndex = Index[0], Index[-1]
dataset = data.iloc[fIndex: lIndex + 1]
gd1 = getdata.GetData(dataset)
f = fe.FeatureExtraction(gd1)
if 'activity' in data.columns:
print("For Training ")
FeatureVector = f.getSmallFeatureSingle(dataset)
d.append_list_as_row('FeatureVector.csv', FeatureVector)
else:
FeatureVector = f.getSmallTestFeatureSingle(dataset)
d.append_list_as_row('Test.csv', FeatureVector)
r = Data.Data('Test.csv')
predictingActivity = r.ReadData()
predictedActivity = Test.Test(predictingActivity)
else:
break
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.
class ReadData:
data = '';
data= ''
def __init__(self,data):
self.data= data
restData = data.apply(lambda x: True if x['Activity'] == 'rest' else False , axis=1)
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)
self.data = data
print(data)
i, Rest, Walk, Run = 0,0,0,0
print("Resting Minutes: ",numOfRestRows)
print("Walking Minutes: ",numOfWalkRows)
print("Running Minutes: ",numOfRunRows)
while i<len(data):
print(i)
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
\ No newline at end of file
print("Resting Minutes: ", Rest)
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
-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
Xmin,Ymin,Zmin,Xmax,Ymax,Zmax,Xmean,Ymean,Zmean,StartTime,EndTime
#This file reads the feature vector predicts the Activity and writes it to a file DogData.csv
import joblib
import Data as Data
from TrainingAndTestingData import Data as Data
class Test:
data = '';
def __init__(self,data):
self.data= data
data = ''
def __init__(self, data):
self.data = data
Times= data.loc[:,['StartTime','EndTime']]
data = data.drop(['StartTime','EndTime'],axis=1)
Times= data.loc[:,['StartTime', 'EndTime']]
data = data.drop(['StartTime', 'EndTime'], axis=1)
X_test = data[:]
StartTime=Times.xs(0)['StartTime']
EndTime=Times.xs(0)['EndTime']
Date=Times.xs(0)['EndTime']
ActivityArray=[];
ActivityArray=[]
# load the Gaussian Bayes Model from disk
filename= 'Gaussian_model.sav'
Gaussian_model = joblib.load(filename)
filename= 'SimplifiedFinalSVMModel.sav'
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'
if(prediction[0]== 1):
if(activityPrediction== 1):
activity ='walk'
if(prediction[0]== 2):
if(activityPrediction== 2):
activity ='run'
print("PREDICTION ---->",activity)
print("PREDICTION ---->",activity, "-",activityPrediction ,"\n\n")
ActivityArray.append(StartTime)
ActivityArray.append(EndTime)
......
......@@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
......@@ -27,10 +28,11 @@ DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'mobileapp',
'background_task',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
......@@ -38,13 +40,12 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'mobileapp',
'rest_framework.authtoken',
'rest_auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'rest_auth.registration',
'rest_auth.registration'
]
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
SITE_ID = 1
......@@ -64,9 +65,7 @@ ROOT_URLCONF = 'WalkingPatternRecognition.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'reactapp/build')
],
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
......@@ -109,7 +108,6 @@ REST_FRAMEWORK = {
}
# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
......@@ -147,9 +145,12 @@ USE_TZ = True
# https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_URL = '/static/'
LOGIN_REDIRECT_URL = '/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'reactapp/build/static')
]
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
\ No newline at end of file
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
......@@ -19,7 +19,9 @@ from rest_framework.authtoken import views
urlpatterns = [
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/', include('mobileapp.urls', namespace='api')),
]
default_app_config = 'mobileapp.apps.MobileappConfig'
from django.contrib import admin
from .models import Dog
from .models import MotionActivity
from .models import MotionActivityPerDay
# Register your models here.
admin.site.register(Dog)
admin.site.register(MotionActivity)
admin.site.register(MotionActivityPerDay)
from django.apps import AppConfig
def Hello():
print("Hellooo")
class MobileappConfig(AppConfig):
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
from django.db import models
from django.utils import timezone
from django.conf import settings
from django.contrib.auth.models import User
class Dog(models.Model):
GENDER_TYPES = (
('M', 'Male'),
('F', 'Female'),
('U', 'Unknown'),
)
name = models.CharField(max_length=50)
age = models.IntegerField()
birthday = models.DateField()
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):
return self.name
class MotionActivity(models.Model):
dog = models.ForeignKey(Dog, on_delete=models.CASCADE)
date = models.DateField(default=django.utils.timezone.now)
time = models.TimeField(default=django.utils.timezone.now)
activity = models.CharField(max_length=50)
class Activity(models.Model):
name = models.CharField(max_length=10)
activity_id = models.IntegerField()
def __str__(self):
return str(self.dog)
"{}".format(self.name)
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)
activity = models.CharField(max_length=10)
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
timePeriod = models.IntegerField()
def __str__(self):
return str(self.dog)
"{} - {} - {} - {}".format(self.dog, self.date, self.activity, self.timePeriod)
......
from rest_framework import serializers
from rest_framework.validators import UniqueTogetherValidator
from django.contrib.auth.models import User
from .models import Dog, MotionActivity, MotionActivityPerDay
from .models import Dog, MotionActivityPerDay,Activity
class UserSerializer(serializers.ModelSerializer):
......@@ -31,20 +31,21 @@ class DogSerializer(serializers.ModelSerializer):
class Meta:
model = Dog
fields = ('id', 'name', 'breed', 'age')
fields = ('name', 'birthday', 'breed', 'gender', 'user')
class MotionActivitySerializer(serializers.ModelSerializer):
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = MotionActivity
fields = ('dog', 'date', 'time', 'activity')
model = Activity
fields = ('name', 'activity_id')
class MotionActivityPerDaySerializer(serializers.ModelSerializer):
class Meta:
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 . import views
from .views import UserRecordView,add_motion
from .views import UserRecordView
app_name = 'api'
urlpatterns = [
path('welcome/', views.welcome),
path('', views.index, name='index'),
path('register', views.register, name='register'),
path('user/', UserRecordView.as_view(), name='users'),
path('addMotionActivity', views.add_motion),
path('addMotionActivityPerDay', views.add_motionActivityPerDay),
path('dogs/', views.DogList.as_view()),
path('motionActivity/', views.MotionActivityList.as_view()),
path('motionActivityPerDay/', views.MotionActivityPerDayList.as_view()),
path('addDogProfile', views.add_DogProfile),
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.shortcuts import render
from django.http import HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404
from django.http import JsonResponse, HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view
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 .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
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from django.contrib.auth.models import User
from .serializers import UserSerializer
def index(request):
Method()
return render(request, 'user_example/index.html')
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):
......@@ -44,13 +71,7 @@ class UserRecordView(APIView):
status=status.HTTP_400_BAD_REQUEST
)
@api_view(["GET"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def welcome(request):
content = {"message": "Welcome to the Doggy App!"}
return JsonResponse(content)
# DOGS
class DogList(APIView):
......@@ -63,63 +84,153 @@ class DogList(APIView):
pass
class MotionActivityList(APIView):
def get(self, request):
activities = MotionActivity.objects.all()
serializer = MotionActivitySerializer(activities, many=True)
return Response(serializer.data)
@api_view(["POST"])
@csrf_exempt
@permission_classes([IsAuthenticated])
def add_DogProfile(request):
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"])
@csrf_exempt
# @permission_classes([IsAuthenticated])
def add_motion(request):
@permission_classes([IsAuthenticated])
def add_Activity(request):
payload = json.loads(request.body)
try:
motion = MotionActivity.objects.create(
date=payload["date"],
time=payload["time"],
activity=payload["activity"],
dog=payload["dog"]
activity = Activity.objects.create(
name=payload["name"],
activity_id=payload["activity_id"],
)
serializer = MotionActivitySerializer(motion)
return JsonResponse({'motions': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
serializer = ActivitySerializer(activity)
return JsonResponse({'activity': 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"])
class MotionActivityPerDayList(APIView):
def get(self, request):
activities = MotionActivityPerDay.objects.all()
serializer = MotionActivityPerDaySerializer(activities, many=True)
return Response(serializer.data)
# MOTION ACTIVITY PER DAY
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"])
@csrf_exempt
# @permission_classes([IsAuthenticated])
@permission_classes([IsAuthenticated])
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"])
try:
motion = MotionActivity.objects.create(
motion = MotionActivityPerDay.objects.create(
user=user,
dog=dog,
date=payload["date"],
timePeriod=payload["timePeriod"],
activity=payload["activity"],
dog=payload["dog"]
activity=activity,
timePeriod=payload["timePeriod"]
)
serializer = MotionActivitySerializer(motion)
serializer = MotionActivityPerDaySerializer(motion)
return JsonResponse({'motions': 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"])
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