From 1a57273db2fb2701ef8f97b56cd3b30d4af45d63 Mon Sep 17 00:00:00 2001 From: Krocodial Date: Fri, 14 Jun 2019 16:32:06 -0700 Subject: [PATCH] eod, search mod, download mod, more app int --- classy/forms.py | 51 +-- classy/migrations/0014_auto_20190612_1353.py | 54 +++ classy/migrations/0015_auto_20190612_1354.py | 24 ++ classy/migrations/0016_auto_20190614_1116.py | 24 ++ classy/migrations/0017_auto_20190614_1116.py | 24 ++ classy/migrations/0018_auto_20190614_1116.py | 24 ++ classy/migrations/0019_auto_20190614_1116.py | 24 ++ classy/migrations/0020_auto_20190614_1116.py | 24 ++ classy/migrations/0021_auto_20190614_1116.py | 24 ++ classy/migrations/0022_auto_20190614_1116.py | 24 ++ classy/migrations/0023_auto_20190614_1116.py | 24 ++ classy/migrations/0024_auto_20190614_1116.py | 24 ++ classy/migrations/0025_auto_20190614_1116.py | 24 ++ classy/migrations/0026_auto_20190614_1117.py | 24 ++ classy/models.py | 14 +- classy/scripts.py | 1 - classy/templates/classy/data_tables.html | 50 +-- classy/views.py | 362 +++++++++++-------- 18 files changed, 601 insertions(+), 219 deletions(-) create mode 100644 classy/migrations/0014_auto_20190612_1353.py create mode 100644 classy/migrations/0015_auto_20190612_1354.py create mode 100644 classy/migrations/0016_auto_20190614_1116.py create mode 100644 classy/migrations/0017_auto_20190614_1116.py create mode 100644 classy/migrations/0018_auto_20190614_1116.py create mode 100644 classy/migrations/0019_auto_20190614_1116.py create mode 100644 classy/migrations/0020_auto_20190614_1116.py create mode 100644 classy/migrations/0021_auto_20190614_1116.py create mode 100644 classy/migrations/0022_auto_20190614_1116.py create mode 100644 classy/migrations/0023_auto_20190614_1116.py create mode 100644 classy/migrations/0024_auto_20190614_1116.py create mode 100644 classy/migrations/0025_auto_20190614_1116.py create mode 100644 classy/migrations/0026_auto_20190614_1117.py diff --git a/classy/forms.py b/classy/forms.py index b670a36..6b2c2be 100644 --- a/classy/forms.py +++ b/classy/forms.py @@ -4,8 +4,13 @@ from django.utils.translation import gettext_lazy as _ from .models import * -from .models import classification_choices +from .models import classification_choices, state_choices, protected_series +size_choices = ( + (10, '10'), + (25, '25'), + (50, '50'), + (100, '100'),) class UploadFileForm(forms.ModelForm): class Meta: @@ -21,38 +26,20 @@ def __init__(self, running): class BasicSearch(forms.Form): #query = forms.CharField(required=False, max_length=150, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter your query'})) query = forms.CharField(required=False, max_length=150, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'What would you like to search for?', 'aria-describedby': 'descript'})) + size = forms.ChoiceField(initial=10, required=False, choices=size_choices, widget=forms.Select(attrs={'class': 'custom-select custom-select-sm', 'onchange': 'this.form.submit();'})) -class AdvancedSearch(ModelForm): - - datasource = forms.CharField(required=False, label='Datasource', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) - schema = forms.CharField(required=False, label='Schema', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) - table = forms.CharField(required=False, label='Table', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) - column = forms.CharField(required=False, label='Column', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) - - class Meta: - model = Classification - exclude = ['created', 'creator', 'masking', 'notes'] - help_texts = { - 'classification': _('Help text'), - } - labels = { - 'owner': _('Application') - } - widgets = { - 'classification': forms.SelectMultiple(attrs={ - 'class': 'form-control', - }), - 'protected_type': forms.SelectMultiple(attrs={ - 'class': 'form-control', - }), - 'owner': forms.SelectMultiple(attrs={ - 'class': 'form-control', - }), - 'state': forms.SelectMultiple(attrs={ - 'class': 'form-control', - }), - } - +class AdvancedSearch(forms.Form): + + datasource = forms.CharField(initial='', required=False, label='Datasource', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) + schema = forms.CharField(initial='', required=False, label='Schema', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) + table = forms.CharField(initial='', required=False, label='Table', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) + column = forms.CharField(initial='', required=False, label='Column', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'})) + + classification = forms.MultipleChoiceField(initial=[i[0] for i in Classification._meta.get_field('classification').flatchoices], required=False, choices=classification_choices, widget=forms.SelectMultiple(attrs={'class': 'form-control'})) + protected_type = forms.MultipleChoiceField(required=False, choices=protected_series, widget=forms.SelectMultiple(attrs={'class': 'form-control'})) + state = forms.MultipleChoiceField(initial=['A', 'P'], required=False, choices=state_choices, widget=forms.SelectMultiple(attrs={'class': 'form-control'})) + #size for pagination + owner = forms.ModelMultipleChoiceField(queryset=Application.objects.all(), required=False, widget=forms.SelectMultiple(attrs={'class': 'form-control'})) ''' diff --git a/classy/migrations/0014_auto_20190612_1353.py b/classy/migrations/0014_auto_20190612_1353.py new file mode 100644 index 0000000..d18e555 --- /dev/null +++ b/classy/migrations/0014_auto_20190612_1353.py @@ -0,0 +1,54 @@ +# Generated by Django 2.1.8 on 2019-06-12 20:53 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0013_auto_20190611_1330'), + ] + + operations = [ + migrations.AlterField( + model_name='classification', + name='classification', + field=models.CharField(choices=[('UN', 'Unclassified'), ('PU', 'Public'), ('PE', 'Personal'), ('CO', 'Confidential')], default='UN', max_length=2), + ), + migrations.AlterField( + model_name='classification', + name='protected_type', + field=models.CharField(blank=True, choices=[('PA', 'Protected A'), ('PB', 'Protected B'), ('PC', 'Protected C')], max_length=2), + ), + migrations.AlterField( + model_name='classificationcount', + name='classification', + field=models.CharField(choices=[('UN', 'Unclassified'), ('PU', 'Public'), ('PE', 'Personal'), ('CO', 'Confidential')], max_length=2), + ), + migrations.AlterField( + model_name='classificationlogs', + name='classification', + field=models.CharField(blank=True, choices=[('UN', 'Unclassified'), ('PU', 'Public'), ('PE', 'Personal'), ('CO', 'Confidential')], max_length=2), + ), + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationlogs', + name='protected_type', + field=models.CharField(blank=True, choices=[('PA', 'Protected A'), ('PB', 'Protected B'), ('PC', 'Protected C')], max_length=2), + ), + migrations.AlterField( + model_name='classificationreview', + name='classification', + field=models.CharField(choices=[('UN', 'Unclassified'), ('PU', 'Public'), ('PE', 'Personal'), ('CO', 'Confidential')], max_length=2), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0015_auto_20190612_1354.py b/classy/migrations/0015_auto_20190612_1354.py new file mode 100644 index 0000000..911b858 --- /dev/null +++ b/classy/migrations/0015_auto_20190612_1354.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-12 20:54 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0014_auto_20190612_1353'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0016_auto_20190614_1116.py b/classy/migrations/0016_auto_20190614_1116.py new file mode 100644 index 0000000..353e37d --- /dev/null +++ b/classy/migrations/0016_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0015_auto_20190612_1354'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0017_auto_20190614_1116.py b/classy/migrations/0017_auto_20190614_1116.py new file mode 100644 index 0000000..6f494bf --- /dev/null +++ b/classy/migrations/0017_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0016_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0018_auto_20190614_1116.py b/classy/migrations/0018_auto_20190614_1116.py new file mode 100644 index 0000000..fbc4a01 --- /dev/null +++ b/classy/migrations/0018_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0017_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0019_auto_20190614_1116.py b/classy/migrations/0019_auto_20190614_1116.py new file mode 100644 index 0000000..52d886a --- /dev/null +++ b/classy/migrations/0019_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0018_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0020_auto_20190614_1116.py b/classy/migrations/0020_auto_20190614_1116.py new file mode 100644 index 0000000..75abbea --- /dev/null +++ b/classy/migrations/0020_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0019_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0021_auto_20190614_1116.py b/classy/migrations/0021_auto_20190614_1116.py new file mode 100644 index 0000000..18086b4 --- /dev/null +++ b/classy/migrations/0021_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0020_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0022_auto_20190614_1116.py b/classy/migrations/0022_auto_20190614_1116.py new file mode 100644 index 0000000..958de87 --- /dev/null +++ b/classy/migrations/0022_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0021_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0023_auto_20190614_1116.py b/classy/migrations/0023_auto_20190614_1116.py new file mode 100644 index 0000000..40a771a --- /dev/null +++ b/classy/migrations/0023_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0022_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0024_auto_20190614_1116.py b/classy/migrations/0024_auto_20190614_1116.py new file mode 100644 index 0000000..aafcb32 --- /dev/null +++ b/classy/migrations/0024_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0023_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0025_auto_20190614_1116.py b/classy/migrations/0025_auto_20190614_1116.py new file mode 100644 index 0000000..ba47c9d --- /dev/null +++ b/classy/migrations/0025_auto_20190614_1116.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0024_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/migrations/0026_auto_20190614_1117.py b/classy/migrations/0026_auto_20190614_1117.py new file mode 100644 index 0000000..c55ccde --- /dev/null +++ b/classy/migrations/0026_auto_20190614_1117.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.8 on 2019-06-14 18:17 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('classy', '0025_auto_20190614_1116'), + ] + + operations = [ + migrations.AlterField( + model_name='classificationlogs', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='classy.Classification'), + ), + migrations.AlterField( + model_name='classificationreview', + name='classy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='classy.Classification'), + ), + ] diff --git a/classy/models.py b/classy/models.py index d88bb77..3214313 100644 --- a/classy/models.py +++ b/classy/models.py @@ -6,10 +6,10 @@ from django.dispatch import receiver classification_choices = ( - ('UN', 'Unclassified'), - ('PU', 'Public'), - ('PE', 'Personal'), - ('CO', 'Confidential') + ("UN", "Unclassified"), + ("PU", "Public"), + ("PE", "Personal"), + ("CO", "Confidential") ) protected_series = ( @@ -19,9 +19,9 @@ ) state_choices = ( - ('A', 'Active'), - ('I', 'Inactive'), - ('P', 'Pending') + ("A", "Active"), + ("I", "Inactive"), + ("P", "Pending") ) #Defined during development and now heavily integrated in JS Ajax calls diff --git a/classy/scripts.py b/classy/scripts.py index c669e90..3fd4c24 100644 --- a/classy/scripts.py +++ b/classy/scripts.py @@ -22,7 +22,6 @@ def calculate_count(user): #Get all pks, grab logs individually. error = '' tmp = query_constructor(Classification.objects.all(), user).values_list('pk', flat=True) - print(tmp) diff --git a/classy/templates/classy/data_tables.html b/classy/templates/classy/data_tables.html index a844c0a..9fbe6c1 100644 --- a/classy/templates/classy/data_tables.html +++ b/classy/templates/classy/data_tables.html @@ -53,19 +53,18 @@ @@ -78,18 +77,13 @@
- {{form.size}} - - - - - - {% for i in classi %} - - {% endfor %} - {% for st in stati %} - + {{basic.size}} + + {% for field in advanced %} + {{ field.as_hidden }} {% endfor %} + +
@@ -97,14 +91,14 @@
- {{form.query}} + {{basic.query}} - +
By default all fields are searched, to customize use the advanced search
- +