From d4f577fdf905aa1cdef7fe2bce490197b68cbaa5 Mon Sep 17 00:00:00 2001 From: Brandon Taylor Date: Mon, 4 Dec 2017 22:05:37 -0500 Subject: [PATCH] Update csrf value to use value if present in context, then fall back to cookie. Updated database samples. Added migrations for sample project models. Updated Category model to make order not editable. --- .../csrf/jquery.django-csrf.html | 2 +- sample_project/database/test_project.sqlite | Bin 90112 -> 266240 bytes .../samples/migrations/0001_initial.py | 235 ++++++++++++++++++ sample_project/samples/migrations/__init__.py | 0 sample_project/samples/models.py | 2 +- 5 files changed, 237 insertions(+), 2 deletions(-) create mode 100644 sample_project/samples/migrations/0001_initial.py create mode 100644 sample_project/samples/migrations/__init__.py diff --git a/adminsortable/templates/adminsortable/csrf/jquery.django-csrf.html b/adminsortable/templates/adminsortable/csrf/jquery.django-csrf.html index 24fb6c3..b9488a8 100644 --- a/adminsortable/templates/adminsortable/csrf/jquery.django-csrf.html +++ b/adminsortable/templates/adminsortable/csrf/jquery.django-csrf.html @@ -16,7 +16,7 @@ return cookieValue; } - var csrftoken = getCookie('{{ csrf_cookie_name }}'); + var csrftoken = '{{ csrf_token }}' || getCookie('{{ csrf_cookie_name }}'); function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection diff --git a/sample_project/database/test_project.sqlite b/sample_project/database/test_project.sqlite index ebb7162f0cdfe2e10641aebe5985349b72901631..4efba758bf0d59a933fba9dd73468ca00d35622b 100644 GIT binary patch literal 266240 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 literal 90112 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 diff --git a/sample_project/samples/migrations/0001_initial.py b/sample_project/samples/migrations/0001_initial.py new file mode 100644 index 0000000..94ea157 --- /dev/null +++ b/sample_project/samples/migrations/0001_initial.py @@ -0,0 +1,235 @@ +# Generated by Django 2.0 on 2017-12-05 02:55 + +import adminsortable.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ] + + operations = [ + migrations.CreateModel( + name='BackwardCompatibleWidget', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order', models.PositiveIntegerField(db_index=True, default=0, editable=False)), + ('title', models.CharField(max_length=50)), + ], + options={ + 'verbose_name': 'Backward Compatible Widget', + 'verbose_name_plural': 'Backward Compatible Widgets', + 'ordering': ['order'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('order', models.PositiveIntegerField(default=0)), + ], + options={ + 'verbose_name_plural': 'Categories', + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='Component', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='Credit', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(help_text='Given name', max_length=30)), + ('last_name', models.CharField(help_text='Family name', max_length=30)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='CustomWidget', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('custom_order_field', models.PositiveIntegerField(db_index=True, default=0, editable=False)), + ], + options={ + 'verbose_name': 'Custom Widget', + 'verbose_name_plural': 'Custom Widgets', + 'ordering': ['custom_order_field'], + }, + ), + migrations.CreateModel( + name='CustomWidgetComponent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('widget_order', models.PositiveIntegerField(db_index=True, default=0, editable=False)), + ('custom_widget', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.CustomWidget')), + ], + options={ + 'verbose_name': 'Custom Widget Component', + 'verbose_name_plural': 'Custom Widget Components', + 'ordering': ['widget_order'], + }, + ), + migrations.CreateModel( + name='GenericNote', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('object_id', models.PositiveIntegerField(verbose_name='Content id')), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='generic_notes', to='contenttypes.ContentType', verbose_name='Content type')), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='NonSortableCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ], + options={ + 'verbose_name': 'Non-Sortable Category', + 'verbose_name_plural': 'Non-Sortable Categories', + 'abstract': False, + }, + ), + migrations.CreateModel( + name='NonSortableCredit', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(help_text='Given name', max_length=30)), + ('last_name', models.CharField(help_text='Family name', max_length=30)), + ], + ), + migrations.CreateModel( + name='NonSortableNote', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.CharField(max_length=100)), + ], + ), + migrations.CreateModel( + name='Note', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.CharField(max_length=100)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='Person', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=50)), + ('last_name', models.CharField(max_length=50)), + ('is_board_member', models.BooleanField(default=False, verbose_name='Board Member')), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ], + options={ + 'verbose_name_plural': 'People', + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='Project', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('description', models.TextField()), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ('category', adminsortable.fields.SortableForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Category')), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='SortableCategoryWidget', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ('non_sortable_category', adminsortable.fields.SortableForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.NonSortableCategory')), + ], + options={ + 'verbose_name': 'Sortable Category Widget', + 'verbose_name_plural': 'Sortable Category Widgets', + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='SortableNonInlineCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ('non_sortable_category', adminsortable.fields.SortableForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.NonSortableCategory')), + ], + options={ + 'verbose_name': 'Sortable Non-Inline Category', + 'verbose_name_plural': 'Sortable Non-Inline Categories', + 'ordering': ['order'], + }, + ), + migrations.CreateModel( + name='Widget', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('order', models.PositiveIntegerField(default=0, editable=False)), + ], + options={ + 'ordering': ['order'], + }, + ), + migrations.AddField( + model_name='note', + name='project', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Project'), + ), + migrations.AddField( + model_name='nonsortablenote', + name='project', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Project'), + ), + migrations.AddField( + model_name='nonsortablecredit', + name='project', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Project'), + ), + migrations.AddField( + model_name='credit', + name='project', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Project'), + ), + migrations.AddField( + model_name='component', + name='widget', + field=adminsortable.fields.SortableForeignKey(on_delete=django.db.models.deletion.CASCADE, to='samples.Widget'), + ), + ] diff --git a/sample_project/samples/migrations/__init__.py b/sample_project/samples/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sample_project/samples/models.py b/sample_project/samples/models.py index 4036064..81a56d4 100644 --- a/sample_project/samples/models.py +++ b/sample_project/samples/models.py @@ -24,7 +24,7 @@ class Category(SimpleModel, SortableMixin): verbose_name_plural = 'Categories' ordering = ['order'] - order = models.PositiveIntegerField(default=0) + order = models.PositiveIntegerField(default=0, editable=False) # A model with an override of its queryset for admin