Skip to content
Snippets Groups Projects
Commit d6fdc0e7 authored by Barnabás Czémán's avatar Barnabás Czémán
Browse files

Modify homework models & fix some settings

parent 5aac9233
No related branches found
No related tags found
No related merge requests found
Showing
with 29 additions and 401 deletions
setx SECRET_KEY <CHANGE_TO_SECRET> setx SECRET_KEY <CHANGE_TO_SECRET>
setx AUTHSCH_KEY <CHANGE_TO_CLIENT_ID> setx AUTHSCH_KEY <CHANGE_TO_CLIENT_ID>
setx AUTHSCH_SECRET <CHANGE_TO_AUTHSCH_SECRET> setx AUTHSCH_SECRET <CHANGE_TO_AUTHSCH_SECRET>
setx MEDIA_ROOT <DIRECTORY_OF_MEDIA>
$env:SECRET_KEY=<CHANGE_TO_SECRET> $env:SECRET_KEY=<CHANGE_TO_SECRET>
$env:AUTHSCH_KEY=<CHANGE_TO_CLIENT_ID> $env:AUTHSCH_KEY=<CHANGE_TO_CLIENT_ID>
$env:AUTHSCH_SECRET=<CHANGE_TO_AUTHSCH_SECRET> $env:AUTHSCH_SECRET=<CHANGE_TO_AUTHSCH_SECRET>
$env:MEDIA_ROOT=<DIRECTORY_OF_MEDIA>
export SECRET_KEY=<CHANGE_TO_SECRET> export SECRET_KEY=<CHANGE_TO_SECRET>
export AUTHSCH_KEY=<CHANGE_TO_CLIENT_ID> export AUTHSCH_KEY=<CHANGE_TO_CLIENT_ID>
export AUTHSCH_SECRET=<CHANGE_TO_AUTHSCH_SECRET> export AUTHSCH_SECRET=<CHANGE_TO_AUTHSCH_SECRET>
export MEDIA_ROOT=<DIRECTORY_OF_MEDIA>
# -*- coding: utf-8 -*- # Generated by Django 2.0.1 on 2018-04-05 08:33
# Generated by Django 1.11.5 on 2018-01-24 12:09
from __future__ import unicode_literals
from django.conf import settings import common.validators
import django.core.validators import django.core.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import homework.models
class Migration(migrations.Migration): class Migration(migrations.Migration):
...@@ -14,7 +11,7 @@ class Migration(migrations.Migration): ...@@ -14,7 +11,7 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('account', '0017_auto_20180205_2004'),
] ]
operations = [ operations = [
...@@ -22,35 +19,29 @@ class Migration(migrations.Migration): ...@@ -22,35 +19,29 @@ class Migration(migrations.Migration):
name='Solution', name='Solution',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateTimeField(auto_now_add=True)), ('created_at', models.DateTimeField(auto_now_add=True)),
('ready', models.BooleanField()), ('updated_at', models.DateTimeField(auto_now=True)),
('files', models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator('image/png', 'image/jpeg', 'application/zip')])), ('ready', models.BooleanField(default=False)),
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('accepted', models.BooleanField(default=False)),
], ('files', models.FileField(upload_to='', validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)])),
), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_solution', to='account.Profile')),
migrations.CreateModel(
name='Student',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('homework', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homework.Solution')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
name='Task', name='Task',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('title', models.CharField(max_length=150)), ('title', models.CharField(max_length=150)),
('date', models.DateTimeField(auto_now_add=True)),
('deadline', models.DateTimeField()),
('text', models.TextField()), ('text', models.TextField()),
('files', models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator('image/png', 'image/jpeg', 'application/zip')])), ('deadline', models.DateTimeField()),
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='account.Profile')),
], ],
), ),
migrations.AddField( migrations.AddField(
model_name='solution', model_name='solution',
name='task', name='task',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homework.Task'), field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='task_solution', to='homework.Task'),
), ),
] ]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-01-24 13:53
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 = [
('homework', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='student',
name='homework',
),
migrations.RemoveField(
model_name='student',
name='user',
),
migrations.AddField(
model_name='solution',
name='accepted',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='solution',
name='created_by',
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='solution',
name='ready',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='solution',
name='task',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='task_solution', to='homework.Task'),
),
migrations.AlterField(
model_name='task',
name='created_by',
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.DeleteModel(
name='Student',
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-01-24 17:18
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 = [
('homework', '0002_auto_20180124_1453'),
]
operations = [
migrations.AlterField(
model_name='task',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-01-25 17:17
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 = [
('homework', '0003_auto_20180124_1818'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-02-04 11:09
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 = [
('homework', '0003_auto_20180124_1818'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]
# Generated by Django 2.0.1 on 2018-01-26 00:35
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('homework', '0004_auto_20180125_1817'),
]
operations = [
migrations.AlterField(
model_name='task',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-02-04 14:25
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('homework', '0004_auto_20180204_1209'),
]
operations = [
migrations.RenameField(
model_name='solution',
old_name='date',
new_name='alma',
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-02-04 15:01
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('homework', '0005_auto_20180204_1525'),
]
operations = [
migrations.RenameField(
model_name='solution',
old_name='alma',
new_name='date',
),
]
# Generated by Django 2.0.1 on 2018-02-05 19:21
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('homework', '0005_auto_20180126_0135'),
('homework', '0006_auto_20180204_1601'),
]
operations = [
]
# Generated by Django 2.0.1 on 2018-02-09 16:34
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('homework', '0006_auto_20180204_1601'),
('homework', '0005_auto_20180126_0135'),
]
operations = [
]
# Generated by Django 2.0.1 on 2018-02-21 10:35
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('homework', '0007_merge_20180209_1734'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_solution', to='account.Profile'),
),
migrations.AlterField(
model_name='task',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='account.Profile'),
),
]
# Generated by Django 2.0.1 on 2018-04-04 06:25
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('homework', '0008_auto_20180221_1135'),
('homework', '0007_merge_20180205_2021'),
]
operations = [
]
# Generated by Django 2.0.1 on 2018-04-04 06:28
import common.validators
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('homework', '0009_merge_20180404_0825'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='files',
field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator('image/png', 'image/jpeg', 'application/zip'), common.validators.FileSizeValidator(size_limit=52428800)]),
),
migrations.AlterField(
model_name='task',
name='deadline',
field=models.DateTimeField(),
),
migrations.AlterField(
model_name='task',
name='files',
field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator('image/png', 'image/jpeg', 'application/zip'), common.validators.FileSizeValidator(size_limit=52428800)]),
),
]
# Generated by Django 2.0.1 on 2018-04-04 06:53
import common.validators
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('homework', '0010_auto_20180404_0828'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='files',
field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator(['image/png', 'image/jpeg', 'application/zip']), common.validators.FileSizeValidator(size_limit=52428800)]),
),
migrations.AlterField(
model_name='task',
name='files',
field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator(['image/png', 'image/jpeg', 'application/zip']), common.validators.FileSizeValidator(size_limit=52428800)]),
),
]
# Generated by Django 2.0.1 on 2018-04-04 10:53
import common.validators
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('homework', '0011_auto_20180404_0853'),
]
operations = [
migrations.AlterField(
model_name='solution',
name='files',
field=models.FileField(upload_to='', validators=[django.core.validators.FileExtensionValidator(['image/png', 'image/jpeg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]),
),
]
...@@ -6,22 +6,12 @@ from account.models import Profile ...@@ -6,22 +6,12 @@ from account.models import Profile
class Task(models.Model): class Task(models.Model):
created_by = models.ForeignKey(Profile, on_delete=models.DO_NOTHING)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
title = models.CharField(max_length=150) title = models.CharField(max_length=150)
date = models.DateTimeField(auto_now_add=True, editable=False)
deadline = models.DateTimeField()
text = models.TextField() text = models.TextField()
created_by = models.ForeignKey(Profile, on_delete=models.DO_NOTHING) deadline = models.DateTimeField()
files = models.FileField(
validators=[
validators.FileExtensionValidator([
'image/png',
'image/jpeg',
'application/zip',
]),
FileSizeValidator(size_limit=52428800), # 52428800 - 50MiB
],
blank=True,
)
def __str__(self): def __str__(self):
return self.title return self.title
...@@ -30,16 +20,21 @@ class Task(models.Model): ...@@ -30,16 +20,21 @@ class Task(models.Model):
class Solution(models.Model): class Solution(models.Model):
task = models.ForeignKey(Task, related_name='task_solution', on_delete=models.CASCADE) task = models.ForeignKey(Task, related_name='task_solution', on_delete=models.CASCADE)
created_by = models.ForeignKey(Profile, related_name='student_solution', on_delete=models.CASCADE) created_by = models.ForeignKey(Profile, related_name='student_solution', on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True, editable=False) created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
ready = models.BooleanField(default=False) ready = models.BooleanField(default=False)
accepted = models.BooleanField(default=False) accepted = models.BooleanField(default=False)
files = models.FileField( files = models.FileField(
validators=[ validators=[
validators.FileExtensionValidator([ validators.FileExtensionValidator([
'image/png', 'png',
'image/jpeg', 'jpeg',
'jpg',
'zip', 'zip',
]), ]),
FileSizeValidator(size_limit=52428800), # 52428800 - 50MiB FileSizeValidator(size_limit=52428800), # 52428800 - 50MiB
], ],
) )
def __str__(self):
return "[{}] {}".format(self.created_at, self.created_by.full_name)
from django import forms
from django.template.defaultfilters import filesizeformat
from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ValidationError
class RestrictedFileField(forms.FileField):
"""
Same as FileField, but you can specify:
* content_types - list containing allowed content_types. Example: ['application/pdf', 'image/jpeg']
* max_upload_size - a number indicating the maximum file size allowed for upload.
2.5MB - 2621440
5MB - 5242880
10MB - 10485760
20MB - 20971520
50MB - 5242880
100MB - 104857600
250MB - 214958080
500MB - 429916160
"""
def __init__(self, *args, **kwargs):
self.content_types = kwargs.pop("content_types")
self.max_upload_size = kwargs.pop("max_upload_size")
super().__init__(*args, **kwargs)
def clean(self, data, initial=None):
file = super().clean(data, initial)
try:
content_type = file.content_type
if content_type in self.content_types:
if file._size > self.max_upload_size:
raise ValidationError(_('Please keep filesize under %s. Current filesize %s') % (
filesizeformat(self.max_upload_size), filesizeformat(file._size)))
else:
raise ValidationError(_('Filetype not supported.'))
except AttributeError:
pass
return data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment