diff --git a/.gitignore b/.gitignore index adb7f0d..216368c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,12 @@ var/ .installed.cfg *.egg neuroEnv/ +.DS_Store +bin/ +pip-selfcheck.json +pyvenv.cfg +share/ +man/ # PyInstaller # Usually these files are written by a python script from a template diff --git a/neuropy/medication/__init__.py b/neuropy/medication/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/neuropy/medication/admin.py b/neuropy/medication/admin.py new file mode 100644 index 0000000..1f27b4a --- /dev/null +++ b/neuropy/medication/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from medication.models import Medication +# Register your models here. + +admin.site.register(Medication) diff --git a/neuropy/medication/apps.py b/neuropy/medication/apps.py new file mode 100644 index 0000000..e095071 --- /dev/null +++ b/neuropy/medication/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class MedicationConfig(AppConfig): + name = 'medication' diff --git a/neuropy/medication/fixtures/medication.json b/neuropy/medication/fixtures/medication.json new file mode 100644 index 0000000..0a4b8b9 --- /dev/null +++ b/neuropy/medication/fixtures/medication.json @@ -0,0 +1,62 @@ +[ + { + "model":"medication.medication", + "pk":1, + "fields":{ + "name":"CONCERTA", + "med_type":"stimulant", + "treating_dis":"ADD/ADHD", + "half_life":"03:30:00", + "ramp_up":"03:30:00", + "peak_period":"07:00:00" + } + }, + { + "model":"medication.medication", + "pk":2, + "fields":{ + "name":"ADDERALL", + "med_type":"stimulant", + "treating_dis":"ADD/ADHD", + "half_life":"10:00:00", + "ramp_up":"07:00:00", + "peak_period":"04:00:00" + } + }, + { + "model":"medication.medication", + "pk":3, + "fields":{ + "name":"Focalin", + "med_type":"stimulant", + "treating_dis":"ADD/ADHD", + "half_life":"07:00:00", + "ramp_up":"06:30:00", + "peak_period":"06:00:00" + } + }, + { + "model":"medication.medication", + "pk":5, + "fields":{ + "name":"Ritalin LA", + "med_type":"stimulant", + "treating_dis":"ADD/ADHD", + "half_life":"03:30:00", + "ramp_up":"07:00:00", + "peak_period":"06:00:00" + } + }, + { + "model":"medication.medication", + "pk":6, + "fields":{ + "name":"Vyvanse", + "med_type":"stimulant", + "treating_dis":"ADD/ADHD", + "half_life":"11:00:00", + "ramp_up":"02:00:00", + "peak_period":"04:00:00" + } + } +] \ No newline at end of file diff --git a/neuropy/medication/migrations/0001_initial.py b/neuropy/medication/migrations/0001_initial.py new file mode 100644 index 0000000..f2004c1 --- /dev/null +++ b/neuropy/medication/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-02-14 00:05 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Medication', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='CONCERTA', max_length=20)), + ('med_type', models.CharField(default='stimulant', max_length=20)), + ('treating_dis', models.CharField(default='ADD/ADHD', max_length=25)), + ('half_life', models.TimeField()), + ('ramp_up', models.DurationField()), + ('peak_period', models.DurationField()), + ], + ), + ] diff --git a/neuropy/medication/migrations/0002_auto_20170213_1612.py b/neuropy/medication/migrations/0002_auto_20170213_1612.py new file mode 100644 index 0000000..5af5f74 --- /dev/null +++ b/neuropy/medication/migrations/0002_auto_20170213_1612.py @@ -0,0 +1,25 @@ +""".""" + +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-02-14 00:12 +from __future__ import unicode_literals + +from django.db import migrations + + +def load_medications_from_fixture(apps, schema_editor): + """.""" + from django.core.management import call_command + call_command("loaddata", "medication") + + +class Migration(migrations.Migration): + """.""" + + dependencies = [ + ('medication', '0001_initial'), + ] + + operations = [ + migrations.RunPython(load_medications_from_fixture), + ] diff --git a/neuropy/medication/migrations/__init__.py b/neuropy/medication/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/neuropy/medication/models.py b/neuropy/medication/models.py new file mode 100644 index 0000000..ab06773 --- /dev/null +++ b/neuropy/medication/models.py @@ -0,0 +1,32 @@ +"""Medication model- no user relation.""" + +from __future__ import unicode_literals + +from django.db import models +from django.utils.encoding import python_2_unicode_compatible + + +@python_2_unicode_compatible +class Medication(models.Model): + """Medication instace class.""" + + name = models.CharField( + max_length=20, + default='CONCERTA') + med_type = models.CharField(max_length=20, default='stimulant') + treating_dis = models.CharField(max_length=25, default='ADD/ADHD') + half_life = models.DurationField() + ramp_up = models.DurationField() + peak_period = models.DurationField() + # Ease_priority_matrix=models.CharField + + def __str__(self): + """String representation of Medication.""" + return "name: {},med_type: {}, treating_dis: {}, half_life: {}, ramp_up: {}, peak_period: {}".format( + self.name, + self.med_type, + self.treating_dis, + self.half_life, + self.ramp_up, + self.peak_period + ) diff --git a/neuropy/medication/tests.py b/neuropy/medication/tests.py new file mode 100644 index 0000000..11f1bd7 --- /dev/null +++ b/neuropy/medication/tests.py @@ -0,0 +1,65 @@ +"""Tests for medication app.""" + +from django.test import TestCase +from medication.models import Medication +import factory +import datetime + + +class MedicationFactory(factory.django.DjangoModelFactory): + """Create test instance of todos.""" + + class Meta: + """Invoke Todo instance using Todo model class.""" + + model = Medication + + name = 'CONCERTA' + med_type = 'stimulant' + treating_dis = 'ADD/ADHD' + half_life = datetime.timedelta(hours=3, minutes=30) # 03:30:00 + ramp_up = datetime.timedelta(hours=4, minutes=30) # 04:30:00 + peak_period = datetime.timedelta(hours=7) # 07:00:00 + + +class MedicationTestCase(TestCase): + """Test the Medication model.""" + + def setUp(self): + """Setup for medications.""" + self.medications = [MedicationFactory.create() for i in range(10)] + + def test_name(self): + """Test that a medication instance has a name.""" + medication = self.medications[1] + medication = Medication.objects.get(id=medication.id) + self.assertTrue(medication.name == "CONCERTA") + + def test_treating_disorder(self): + """Test that a medication instance has a name.""" + medication = self.medications[1] + medication = Medication.objects.get(id=medication.id) + self.assertTrue(medication.treating_dis == "ADD/ADHD") + + def test_med_type(self): + """Test medication instance type.""" + medication = self.medications[1] + medications = Medication.objects.get(id=medication.id) + self.assertTrue(medication.med_type == "stimulant") + + def test_change_data(self): + """Test Editing medication data.""" + medication = self.medications[1] + medication = Medication.objects.get(id=medication.id) + medication.peak_period = datetime.timedelta(hours=10) + medication.save() + medication = Medication.objects.get(id=medication.id) + self.assertTrue(medication.peak_period == datetime.timedelta(hours=10)) + + def test_delete_med(self): + """Test fetching medication after delete throws an exception.""" + medication = self.medications[1] + medication = Medication.objects.get(id=medication.id) + medication.delete() + with self.assertRaises(Medication.DoesNotExist): + Medication.objects.get(id=medication.id) diff --git a/neuropy/medication/views.py b/neuropy/medication/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/neuropy/medication/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/neuropy/neuropy/settings.py b/neuropy/neuropy/settings.py index 708f9c7..a26a197 100644 --- a/neuropy/neuropy/settings.py +++ b/neuropy/neuropy/settings.py @@ -37,6 +37,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'medication', 'neuropy', 'userprofile', 'todo',