Merge branch 'master' of mowoe.com:reverend/lostplaces-backend into master

This commit is contained in:
reverend 2020-08-18 14:22:35 +02:00
commit fa1274c595
21 changed files with 214 additions and 449 deletions

4
.gitignore vendored
View File

@ -66,6 +66,10 @@ coverage.xml
*.mo
# Django stuff:
# exclude migrations from repository. These should be created locally, matching local DB requirements.
# lostplaces/manage.py makemigrations && lostplaces/manage.py migrate
lostplaces/lostplaces_app/migrations/
# pyenv
.python-version

View File

@ -1,67 +0,0 @@
# Generated by Django 3.0.8 on 2020-07-28 19:00
import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import django_thumbs.fields
import lostplaces_app.models
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0011_update_proxy_permissions'),
]
operations = [
migrations.CreateModel(
name='Place',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('location', models.CharField(max_length=50)),
('latitude', models.FloatField()),
('longitude', models.FloatField()),
('description', models.TextField()),
],
),
migrations.CreateModel(
name='PlaceImage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('filename', django_thumbs.fields.ImageThumbsField(max_length=50, sizes=({'code': 'thumbnail', 'wxh': '390x390'}, {'code': 'hero', 'wxh': '700x700'}, {'code': 'large', 'wxh': '1920x1920'}), upload_to=lostplaces_app.models.generate_image_upload_path)),
('description', models.TextField(blank=True)),
('place', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='lostplaces_app.Place')),
],
),
migrations.CreateModel(
name='Explorer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('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': 'user',
'verbose_name_plural': 'users',
'abstract': False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
]

View File

@ -1,20 +0,0 @@
# Generated by Django 3.0.8 on 2020-07-29 16:29
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='place',
name='submitted_by',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
),
]

View File

@ -1,20 +0,0 @@
# Generated by Django 3.0.8 on 2020-07-29 18:22
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0002_place_submitted_by'),
]
operations = [
migrations.AlterField(
model_name='place',
name='submitted_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='places', to=settings.AUTH_USER_MODEL),
),
]

View File

@ -1,20 +0,0 @@
# Generated by Django 3.0.8 on 2020-07-30 09:18
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0003_auto_20200729_1822'),
]
operations = [
migrations.AddField(
model_name='placeimage',
name='submitted_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to=settings.AUTH_USER_MODEL),
),
]

View File

@ -1,22 +0,0 @@
# Generated by Django 3.0.8 on 2020-08-01 10:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0004_placeimage_submitted_by'),
]
operations = [
migrations.CreateModel(
name='Voucher',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=10)),
('created', models.DateField(auto_now_add=True)),
('expires', models.DateField()),
],
),
]

View File

@ -1,22 +0,0 @@
# Generated by Django 3.0.8 on 2020-08-01 10:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0005_voucher'),
]
operations = [
migrations.RemoveField(
model_name='voucher',
name='id',
),
migrations.AlterField(
model_name='voucher',
name='code',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.0.8 on 2020-08-01 10:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0006_auto_20200801_1037'),
]
operations = [
migrations.AlterField(
model_name='voucher',
name='created',
field=models.DateTimeField(auto_now_add=True),
),
]

View File

@ -1,24 +0,0 @@
# Generated by Django 3.0.8 on 2020-08-01 10:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0007_auto_20200801_1039'),
]
operations = [
migrations.AddField(
model_name='voucher',
name='id',
field=models.AutoField(auto_created=True, default=0, primary_key=True, serialize=False, verbose_name='ID'),
preserve_default=False,
),
migrations.AlterField(
model_name='voucher',
name='code',
field=models.CharField(max_length=10, unique=True),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.0.9 on 2020-08-03 16:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0008_auto_20200801_1044'),
]
operations = [
migrations.AddField(
model_name='place',
name='submitted_when',
field=models.DateTimeField(auto_now_add=True, null=True),
),
]

View File

@ -1,20 +0,0 @@
# Generated by Django 3.0.9 on 2020-08-03 17:07
from django.db import migrations
import easy_thumbnails.fields
import lostplaces_app.models
class Migration(migrations.Migration):
dependencies = [
('lostplaces_app', '0009_place_submitted_when'),
]
operations = [
migrations.AlterField(
model_name='placeimage',
name='filename',
field=easy_thumbnails.fields.ThumbnailerImageField(upload_to=lostplaces_app.models.generate_image_upload_path),
),
]

View File

@ -3,13 +3,13 @@
{% if is_paginated %}
<div class="LP-Pagination">
<ul class="LP-Pagination__List">
{% if page_obj.has_previous %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--first">
<a href="?page=1" class="LP-Link">
<span class="LP-Icon"></span>
<span class="LP-Text">First</span>
</a>
</li>
{% if page_obj.has_previous %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--previous">
<a href="?page={{ page_obj.previous_page_number }}" class="LP-Link">
<span class="LP-Icon"></span>
@ -17,8 +17,17 @@
</a>
</li>
{% else %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--first LP-Pagination__Item--disabled">
<a href="#" class="LP-Link">
<span class="LP-Icon"></span>
<span class="LP-Text">First</span>
</a>
</li>
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--previous LP-Pagination__Item--disabled">
<span class="LP-Pagination__Previous">previous</span>
<a href="#" class="LP-Link">
<span class="LP-Icon"></span>
<span class="LP-Text">Previous</span>
</a>
</li>
{% endif %}
@ -34,26 +43,29 @@
</li>
{% endfor %}
{% if page_obj.has_next %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--next">
<a href="?page={{ page_obj.next_page_number }}" class="LP-Link">
<span class="LP-Text">Next</span>
<span class="LP-Icon"></span>
</a>
</li>
{% if page_obj.has_next %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--last">
<a href="?page={{ page_obj.paginator.num_pages }}" class="LP-Link">
<span class="LP-Text">Last</span>
<span class="LP-Icon"></span>
</a>
</li>
{% else %}
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--next LP-Pagination__Item--disabled">
<a href="#" class="LP-Link">
<span class="LP-Text">Next</span>
<span class="LP-Icon"></span>
</a>
<li class="LP-Pagination__Item LP-Pagination__Item--other LP-Pagination__Item--last LP-Pagination__Item--disabled">
<a href="#" class="LP-Link">
<span class="LP-Text">Last</span>
<span class="LP-Icon"></span>
</a>
</li>
{% endif %}