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.
master
Brandon Taylor 2017-12-04 22:05:37 -05:00
parent f4daaeb232
commit d4f577fdf9
5 changed files with 237 additions and 2 deletions

View File

@ -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

View File

@ -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'),
),
]

View File

@ -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