@ -1,9 +1,14 @@
|
||||
from django import forms
|
||||
|
||||
from .models import File
|
||||
from .models import File, ImageFile
|
||||
|
||||
|
||||
class FileForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = File
|
||||
exclude = ['user',]
|
||||
|
||||
class ImageFileForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ImageFile
|
||||
exclude = ['user',]
|
||||
|
36
apps/files/migrations/0003_auto_20180526_1547.py
Normal file
36
apps/files/migrations/0003_auto_20180526_1547.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.6 on 2018-05-26 15:47
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('files', '0002_file_user'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ImageFile',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('file', models.FileField(upload_to='.')),
|
||||
('caption', models.CharField(default=None, max_length=240, null=True, verbose_name='Image caption')),
|
||||
('credit', models.CharField(default=None, max_length=240, null=True, verbose_name='Image credit')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='imagefile', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='file',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='file', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
25
apps/files/migrations/0004_auto_20180530_0308.py
Normal file
25
apps/files/migrations/0004_auto_20180530_0308.py
Normal file
@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.6 on 2018-05-30 03:08
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('files', '0003_auto_20180526_1547'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='imagefile',
|
||||
name='caption',
|
||||
field=models.CharField(blank=True, default=None, max_length=240, null=True, verbose_name='Image caption'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='imagefile',
|
||||
name='credit',
|
||||
field=models.CharField(blank=True, default=None, max_length=240, null=True, verbose_name='Image credit'),
|
||||
),
|
||||
]
|
@ -1,5 +1,6 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from apps.map.models import CaseStudy, CaseStudyDraft
|
||||
|
||||
@ -9,7 +10,7 @@ class BaseFile(models.Model):
|
||||
upload_to='.',
|
||||
)
|
||||
user = models.ForeignKey(
|
||||
User, related_name='files'
|
||||
User, related_name='%(class)s'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
@ -21,3 +22,21 @@ class BaseFile(models.Model):
|
||||
|
||||
class File(BaseFile):
|
||||
pass
|
||||
|
||||
|
||||
class ImageFile(BaseFile):
|
||||
caption = models.CharField(
|
||||
verbose_name=_("Image caption"),
|
||||
max_length=240,
|
||||
default=None,
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
|
||||
credit = models.CharField(
|
||||
verbose_name=_("Image credit"),
|
||||
max_length=240,
|
||||
default=None,
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
|
@ -213,6 +213,9 @@ class MultipleFilesWidget {
|
||||
}
|
||||
|
||||
$(function() {
|
||||
window.images = new MultipleFilesWidget(
|
||||
document.querySelector('[data-field=images_files]')
|
||||
)
|
||||
window.official_project_documents = new MultipleFilesWidget(
|
||||
document.querySelector('[data-field=official_project_documents_files]')
|
||||
)
|
||||
|
@ -1,10 +1,11 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from .views import FileUploadView, FileDeleteView
|
||||
from .views import FileUploadView, FileDeleteView, ImageFileUploadView
|
||||
|
||||
app_name = 'files'
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^upload/$', FileUploadView.as_view(), name='upload'),
|
||||
url(r'^upload/image/$', ImageFileUploadView.as_view(), name='upload'),
|
||||
url(r'^delete/(?P<pk>\d+)/$', FileDeleteView.as_view(), name='delete'),
|
||||
]
|
||||
|
@ -4,8 +4,9 @@ from django.http import JsonResponse
|
||||
from django.shortcuts import render
|
||||
from django.views.generic import FormView, DetailView
|
||||
|
||||
from .forms import FileForm
|
||||
from .models import File
|
||||
from .forms import ImageFileForm, FileForm
|
||||
from .models import ImageFile, File
|
||||
|
||||
|
||||
class FileUploadView(LoginRequiredMixin, FormView):
|
||||
model = File
|
||||
@ -26,6 +27,11 @@ class FileUploadView(LoginRequiredMixin, FormView):
|
||||
return JsonResponse({'is_valid': False, 'errors': form.errors})
|
||||
|
||||
|
||||
class ImageFileUploadView(FileUploadView):
|
||||
model = ImageFile
|
||||
form_class = ImageFileForm
|
||||
|
||||
|
||||
class FileDeleteView(LoginRequiredMixin, DetailView):
|
||||
model = File
|
||||
|
||||
|
Reference in New Issue
Block a user