diff --git a/back/.env b/back/.env index c75a73f..3b79ce5 100644 --- a/back/.env +++ b/back/.env @@ -1,4 +1,4 @@ -EMAIL_HOST_USER=reimbursinator@gmail.com -EMAIL_HOST_PASSWORD=Frank12345 -SUBMIT_REPORT_DESTINATION_EMAIL=kououken@gmail.com -SUBMIT_REPORT_FROM_EMAIL=admin@reimbursinator.com +EMAIL_HOST_USER=accountemail@youremail.com +EMAIL_HOST_PASSWORD=yourpassword +SUBMIT_REPORT_DESTINATION_EMAIL=administratoremail@yourmail.com +SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com diff --git a/back/backend/migrations/0001_initial.py b/back/backend/migrations/0001_initial.py index 2f2b805..5e6b88e 100644 --- a/back/backend/migrations/0001_initial.py +++ b/back/backend/migrations/0001_initial.py @@ -1,5 +1,6 @@ -# Generated by Django 2.1.5 on 2019-02-01 00:21 +# Generated by Django 2.1.7 on 2019-03-03 08:55 +import datetime from django.db import migrations, models import django.db.models.deletion @@ -16,16 +17,17 @@ class Migration(migrations.Migration): name='Field', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('field_name', models.CharField(default='field', max_length=512)), ('label', models.CharField(max_length=512)), - ('number', models.IntegerField()), - ('type', models.CharField(max_length=128)), + ('number', models.IntegerField(default=0)), + ('field_type', models.CharField(max_length=128)), ('completed', models.BooleanField(default=False)), ('data_bool', models.BooleanField(default=False)), - ('data_decimal', models.DecimalField(blank=True, decimal_places=2, max_digits=9, null=True)), + ('data_decimal', models.DecimalField(decimal_places=2, default=0, max_digits=9)), ('data_date', models.DateField(blank=True, null=True)), ('data_file', models.FileField(blank=True, max_length=512, null=True, upload_to='uploads/%Y/%m/%d/')), - ('data_string', models.TextField(default='')), - ('data_integer', models.IntegerField(blank=True, null=True)), + ('data_string', models.TextField(blank=True, default='')), + ('data_integer', models.IntegerField(blank=True, default=0)), ], ), migrations.CreateModel( @@ -33,21 +35,23 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=128)), - ('date_created', models.DateTimeField(verbose_name='date created')), - ('date_submitted', models.DateTimeField(blank=True, null=True, verbose_name='date submitted')), + ('date_created', models.DateTimeField(default=datetime.date.today, verbose_name='date created')), + ('date_submitted', models.DateTimeField(default=datetime.date.today, verbose_name='date submitted')), ('submitted', models.BooleanField(default=False)), + ('reference_number', models.CharField(default='', max_length=32)), ], ), migrations.CreateModel( name='Section', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('auto_submit', models.BooleanField()), - ('required', models.BooleanField()), - ('completed', models.BooleanField()), + ('auto_submit', models.BooleanField(default=False)), + ('required', models.BooleanField(default=False)), + ('completed', models.BooleanField(default=False)), ('title', models.CharField(max_length=256)), ('html_description', models.TextField()), ('number', models.IntegerField()), + ('approved', models.BooleanField(default=False)), ('report_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.Report')), ], ), diff --git a/back/backend/migrations/0002_auto_20190131_1621.py b/back/backend/migrations/0002_auto_20190303_0055.py similarity index 93% rename from back/backend/migrations/0002_auto_20190131_1621.py rename to back/backend/migrations/0002_auto_20190303_0055.py index 1eca0d4..33bc0b0 100644 --- a/back/backend/migrations/0002_auto_20190131_1621.py +++ b/back/backend/migrations/0002_auto_20190303_0055.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.5 on 2019-02-01 00:21 +# Generated by Django 2.1.7 on 2019-03-03 08:55 from django.conf import settings from django.db import migrations, models @@ -10,8 +10,8 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('backend', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ diff --git a/back/backend/migrations/0003_auto_20190131_1637.py b/back/backend/migrations/0003_auto_20190131_1637.py deleted file mode 100644 index f01f12b..0000000 --- a/back/backend/migrations/0003_auto_20190131_1637.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-01 00:37 - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0002_auto_20190131_1621'), - ] - - operations = [ - migrations.AlterField( - model_name='field', - name='data_date', - field=models.DateField(default=datetime.date.today, verbose_name='date'), - ), - migrations.AlterField( - model_name='field', - name='data_integer', - field=models.IntegerField(blank=True, default=0), - ), - migrations.AlterField( - model_name='field', - name='data_string', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterField( - model_name='report', - name='date_created', - field=models.DateTimeField(default=datetime.date.today, verbose_name='date created'), - ), - migrations.AlterField( - model_name='report', - name='date_submitted', - field=models.DateTimeField(default=datetime.date.today, verbose_name='date submitted'), - ), - ] diff --git a/back/backend/migrations/0004_auto_20190131_1645.py b/back/backend/migrations/0004_auto_20190131_1645.py deleted file mode 100644 index e04e02e..0000000 --- a/back/backend/migrations/0004_auto_20190131_1645.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-01 00:45 - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0003_auto_20190131_1637'), - ] - - operations = [ - migrations.AlterField( - model_name='field', - name='data_date', - field=models.DateField(default=datetime.date.today), - ), - ] diff --git a/back/backend/migrations/0005_field_field_name.py b/back/backend/migrations/0005_field_field_name.py deleted file mode 100644 index caf25f5..0000000 --- a/back/backend/migrations/0005_field_field_name.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-07 22:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0004_auto_20190131_1645'), - ] - - operations = [ - migrations.AddField( - model_name='field', - name='field_name', - field=models.CharField(default='field', max_length=512), - ), - ] diff --git a/back/backend/migrations/0006_auto_20190213_1719.py b/back/backend/migrations/0006_auto_20190213_1719.py deleted file mode 100644 index a7780de..0000000 --- a/back/backend/migrations/0006_auto_20190213_1719.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-14 01:19 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0005_field_field_name'), - ] - - operations = [ - migrations.RenameField( - model_name='field', - old_name='type', - new_name='field_type', - ), - ] diff --git a/back/backend/migrations/0006_auto_20190213_2113.py b/back/backend/migrations/0006_auto_20190213_2113.py deleted file mode 100644 index f472fa1..0000000 --- a/back/backend/migrations/0006_auto_20190213_2113.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-14 05:13 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0005_field_field_name'), - ] - - operations = [ - migrations.AlterField( - model_name='field', - name='data_date', - field=models.DateField(blank=True, null=True), - ), - ] diff --git a/back/backend/migrations/0007_merge_20190213_2318.py b/back/backend/migrations/0007_merge_20190213_2318.py deleted file mode 100644 index aa0cb2c..0000000 --- a/back/backend/migrations/0007_merge_20190213_2318.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-14 07:18 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0006_auto_20190213_1719'), - ('backend', '0006_auto_20190213_2113'), - ] - - operations = [ - ] diff --git a/back/backend/migrations/0008_auto_20190214_1421.py b/back/backend/migrations/0008_auto_20190214_1421.py deleted file mode 100644 index 0aff026..0000000 --- a/back/backend/migrations/0008_auto_20190214_1421.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-14 22:21 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0007_merge_20190213_2318'), - ] - - operations = [ - migrations.AlterField( - model_name='field', - name='data_decimal', - field=models.DecimalField(decimal_places=2, default=0, max_digits=9), - ), - migrations.AlterField( - model_name='field', - name='number', - field=models.IntegerField(default=0), - ), - migrations.AlterField( - model_name='section', - name='auto_submit', - field=models.BooleanField(default=False), - ), - migrations.AlterField( - model_name='section', - name='completed', - field=models.BooleanField(default=False), - ), - migrations.AlterField( - model_name='section', - name='required', - field=models.BooleanField(default=False), - ), - ] diff --git a/back/backend/migrations/0009_section_approved.py b/back/backend/migrations/0009_section_approved.py deleted file mode 100644 index 2621ee0..0000000 --- a/back/backend/migrations/0009_section_approved.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.7 on 2019-03-01 19:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('backend', '0008_auto_20190214_1421'), - ] - - operations = [ - migrations.AddField( - model_name='section', - name='approved', - field=models.BooleanField(default=False), - ), - ] diff --git a/back/backend/models.py b/back/backend/models.py index cc12b3a..dd47555 100644 --- a/back/backend/models.py +++ b/back/backend/models.py @@ -13,6 +13,7 @@ class Report(models.Model): date_created = models.DateTimeField('date created', default=datetime.date.today) date_submitted = models.DateTimeField('date submitted', default=datetime.date.today) submitted = models.BooleanField(default=False) + reference_number = models.CharField(max_length=32, default='') def __str__(self): """ diff --git a/back/backend/templates/backend/email.html b/back/backend/templates/backend/email.html index 7137071..4bfb5f3 100644 --- a/back/backend/templates/backend/email.html +++ b/back/backend/templates/backend/email.html @@ -4,6 +4,7 @@

Title: {{ title }}

+

Reference #: {{ reference_number }}

{% for section in sections %} {% if section.completed %}

{{section.title}} (SID: {{section.id}})

diff --git a/back/backend/templates/backend/email.txt b/back/backend/templates/backend/email.txt index 2411e0e..698f576 100644 --- a/back/backend/templates/backend/email.txt +++ b/back/backend/templates/backend/email.txt @@ -4,6 +4,7 @@ *** Title: {{title}} +Reference #: {{reference_number}} {% for section in sections %} {{section.title}}(SID: {{section.id}}) {% for field in section.fields %} diff --git a/back/backend/views.py b/back/backend/views.py index a99d999..2ff885f 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -23,6 +23,7 @@ def get_report(report_pk): "date_created": i.date_created, "submitted": i.submitted, "date_submitted": i.date_submitted, + "reference_number": i.reference_number, } # append the sections for each report data.update(get_sections(i.id)) @@ -121,8 +122,12 @@ def report(request): } """ # Create the report - report = Report.objects.create(user_id=request.user, title=request.data['title'], - date_created=datetime.date.today()) + report = Report.objects.create( + user_id=request.user, + title=request.data['title'], + date_created=datetime.date.today(), + reference_number=request.data['reference'] + ) report.save() # Create the sections @@ -161,6 +166,7 @@ def reports(request): "date_created": i.date_created, "submitted": i.submitted, "date_submitted": i.date_submitted, + "reference_number": i.reference_number, } # append the sections for each report report_set["reports"].append(data.copy()) @@ -385,13 +391,23 @@ def send_report_to_admin(request, report_pk): cc = request.user.email msg_html = render_to_string('backend/email.html', params) msg_plain = render_to_string('backend/email.txt', params) - message = EmailMultiAlternatives( - "Reimbursinator - {}".format(params['title']), - msg_plain, - from_email, - [to_email], - cc=[request.user.email], - ) + message = None + if params['reference_number'] == '': + message = EmailMultiAlternatives( + "{}".format(params['title']), + msg_plain, + from_email, + [to_email], + cc=[request.user.email], + ) + else: + message = EmailMultiAlternatives( + "[RT - Request Tracker #{}] {}".format(params['reference_number'], params['title']), + msg_plain, + from_email, + [to_email], + cc=[request.user.email], + ) message.attach_alternative(msg_html, "text/html") for f in get_files(report_pk): message.attach_file(f) diff --git a/back/db.sqlite3 b/back/db.sqlite3 index d5c6c8b..8020c54 100644 Binary files a/back/db.sqlite3 and b/back/db.sqlite3 differ diff --git a/back/users/migrations/0001_initial.py b/back/users/migrations/0001_initial.py index 5992e07..eed660c 100644 --- a/back/users/migrations/0001_initial.py +++ b/back/users/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.5 on 2019-02-01 00:21 +# Generated by Django 2.1.7 on 2019-03-03 08:55 import django.contrib.auth.models import django.contrib.auth.validators @@ -34,9 +34,9 @@ class Migration(migrations.Migration): ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ + 'verbose_name_plural': 'users', 'verbose_name': 'user', 'abstract': False, - 'verbose_name_plural': 'users', }, managers=[ ('objects', django.contrib.auth.models.UserManager()), diff --git a/front/static/js/viewHistory.js b/front/static/js/viewHistory.js index 99d182e..97b4884 100644 --- a/front/static/js/viewHistory.js +++ b/front/static/js/viewHistory.js @@ -560,7 +560,7 @@ if (newReportForm) { newReportForm.addEventListener("submit", function(event) { event.preventDefault(); const url = getEndpointDomain() + "api/v1/report"; - const payload = JSON.stringify({ "title": event.target.elements.title.value }); + const payload = JSON.stringify({ "title": event.target.elements.title.value, "reference": event.target.elements.reference.value }); console.log("Payload:\n" + payload); const type = reportType.NEW; makeAjaxRequest("POST", url, createReportForm, type, payload); diff --git a/front/static/new_report.html b/front/static/new_report.html index 7caf52b..cda82ca 100644 --- a/front/static/new_report.html +++ b/front/static/new_report.html @@ -51,6 +51,10 @@ +
+ + +