Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • AlekSIS/official/AlekSIS-App-Chronos
  • sunweaver/AlekSIS-App-Chronos
  • sggua/AlekSIS-App-Chronos
  • tincmeKdenka/AlekSIS-App-Chronos
  • ligquamacti/AlekSIS-App-Chronos
  • 1crotatilhe/AlekSIS-App-Chronos
  • 1compluningi/AlekSIS-App-Chronos
  • starwardcarfi/AlekSIS-App-Chronos
  • ceohecholeg/AlekSIS-App-Chronos
  • 7quecontranchi/AlekSIS-App-Chronos
  • 8evsubcesza/AlekSIS-App-Chronos
  • unscinKibdzu/AlekSIS-App-Chronos
  • delucPchondmu/AlekSIS-App-Chronos
13 results
Show changes
Commits on Source (3)
......@@ -12,12 +12,15 @@ class SelectForm(forms.Form):
queryset=Group.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
label=_('Group'), required=False)
teacher = forms.ModelChoiceField(
queryset=Person.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
queryset=Person.objects.annotate(lessons_count=Count(
'lessons')).filter(lessons_count__gt=0),
label=_('Teacher'), required=False)
room = forms.ModelChoiceField(
queryset=Room.objects.annotate(lessons_count=Count('lesson_periods')).filter(lessons_count__gt=0),
queryset=Room.objects.annotate(lessons_count=Count(
'lesson_periods')).filter(lessons_count__gt=0),
label=_('Room'), required=False)
class LessonSubstitutionForm(forms.ModelForm):
class Meta:
model = LessonSubstitution
......
......@@ -8,14 +8,16 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-02 13:14+0000\n"
"PO-Revision-Date: 2019-08-24 13:55+0200\n"
"Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n"
"Language-Team: \n"
"PO-Revision-Date: 2019-09-02 14:11+0000\n"
"Last-Translator: Dominik George <dominik.george@teckids.org>\n"
"Language-Team: German <https://translate.edugit.org/projects/biscuit-sis/"
"biscuit-app-chronos/de/>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.8\n"
#: apps.py:7
msgid "BiscuIT - Chronos (Timetables)"
......@@ -43,7 +45,7 @@ msgstr "Stundenplan"
#: menus.py:17
msgid "Daily lessons"
msgstr ""
msgstr "Tages-Stunden"
#: models.py:15
msgid "Sunday"
......@@ -123,31 +125,27 @@ msgstr "Effektives Enddatum des Unterrichts"
#: models.py:105
msgid "Week"
msgstr "Kalenderwoche"
msgstr "Woche"
#: tables.py:25
#, fuzzy
#| msgid "Group"
msgid "Groups"
msgstr "Gruppe"
msgstr "Gruppen"
#: tables.py:26
#, fuzzy
#| msgid "Teacher"
msgid "Teachers"
msgstr "Lehrer"
msgstr "Lehrkräfte"
#: tables.py:29
msgid "Substitution"
msgstr ""
msgstr "Vertretung"
#: templates/chronos/edit_substitution.html:4
msgid "Edit substitution"
msgstr ""
msgstr "Vertretung bearbeiten"
#: templates/chronos/lessons_day.html:5
msgid "Lessons"
msgstr ""
msgstr "Unterrichtsstunden"
#: templates/chronos/tt_week.html:28
msgid "Times"
......@@ -155,4 +153,4 @@ msgstr "Zeiten"
#: views.py:135
msgid "The substitution has been saved."
msgstr ""
msgstr "Die Vertretung wurde gespeichert."
......@@ -17,7 +17,8 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Lesson',
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_start', models.DateField(null=True, verbose_name='Effective start date of lesson')),
('date_end', models.DateField(null=True, verbose_name='Effective end date of lesson')),
('groups', models.ManyToManyField(related_name='lessons', to='core.Group')),
......@@ -26,26 +27,34 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Subject',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('abbrev', models.CharField(max_length=10, verbose_name='Abbreviation of subject in timetable')),
('id', models.AutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),
('abbrev', models.CharField(max_length=10,
verbose_name='Abbreviation of subject in timetable')),
('name', models.CharField(max_length=30, verbose_name='Long name of subject')),
('colour_fg', models.CharField(blank=True, max_length=7, validators=[django.core.validators.RegexValidator('#[0-9A-F]{6}')], verbose_name='Foreground colour in timetable')),
('colour_bg', models.CharField(blank=True, max_length=7, validators=[django.core.validators.RegexValidator('#[0-9A-F]{6}')], verbose_name='Background colour in timetable')),
('colour_fg', models.CharField(blank=True, max_length=7, validators=[
django.core.validators.RegexValidator('#[0-9A-F]{6}')], verbose_name='Foreground colour in timetable')),
('colour_bg', models.CharField(blank=True, max_length=7, validators=[
django.core.validators.RegexValidator('#[0-9A-F]{6}')], verbose_name='Background colour in timetable')),
],
),
migrations.CreateModel(
name='Room',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('short_name', models.CharField(max_length=10, unique=True, verbose_name='Short name, e.g. room number')),
('id', models.AutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),
('short_name', models.CharField(max_length=10, unique=True,
verbose_name='Short name, e.g. room number')),
('name', models.CharField(max_length=30, unique=True, verbose_name='Long name')),
],
),
migrations.CreateModel(
name='TimePeriod',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('weekday', models.PositiveSmallIntegerField(choices=[(0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday')], verbose_name='Week day')),
('id', models.AutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),
('weekday', models.PositiveSmallIntegerField(choices=[(0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (
3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday')], verbose_name='Week day')),
('period', models.PositiveSmallIntegerField(verbose_name='Number of period')),
('time_start', models.TimeField(verbose_name='Time the period starts')),
('time_end', models.TimeField(verbose_name='Time the period ends')),
......@@ -54,21 +63,26 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='LessonPeriod',
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')),
('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='chronos.Lesson')),
('period', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='chronos.TimePeriod')),
('room', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='chronos.Room')),
('period', models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to='chronos.TimePeriod')),
('room', models.ForeignKey(null=True,
on_delete=django.db.models.deletion.CASCADE, to='chronos.Room')),
],
),
migrations.AddField(
model_name='lesson',
name='periods',
field=models.ManyToManyField(related_name='lessons', through='chronos.LessonPeriod', to='chronos.TimePeriod'),
field=models.ManyToManyField(related_name='lessons',
through='chronos.LessonPeriod', to='chronos.TimePeriod'),
),
migrations.AddField(
model_name='lesson',
name='subject',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lessons', to='chronos.Subject'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='lessons', to='chronos.Subject'),
),
migrations.AddField(
model_name='lesson',
......
......@@ -13,7 +13,8 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='subject',
name='abbrev',
field=models.CharField(max_length=10, unique=True, verbose_name='Abbreviation of subject in timetable'),
field=models.CharField(max_length=10, unique=True,
verbose_name='Abbreviation of subject in timetable'),
),
migrations.AlterField(
model_name='subject',
......@@ -32,6 +33,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='room',
name='short_name',
field=models.CharField(max_length=10, unique=True, verbose_name='Short name, e.g. room number'),
field=models.CharField(max_length=10, unique=True,
verbose_name='Short name, e.g. room number'),
),
]
......@@ -15,15 +15,19 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='LessonSubstitution',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('room', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='chronos.Room')),
('subject', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='lesson_substitutions', to='chronos.Subject')),
('id', models.AutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),
('room', models.ForeignKey(null=True,
on_delete=django.db.models.deletion.CASCADE, to='chronos.Room')),
('subject', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE,
related_name='lesson_substitutions', to='chronos.Subject')),
('teachers', models.ManyToManyField(related_name='lesson_substitutions', to='core.Person')),
],
),
migrations.AddField(
model_name='lessonperiod',
name='substitution',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='lesson_period', to='chronos.LessonSubstitution'),
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE,
related_name='lesson_period', to='chronos.LessonSubstitution'),
),
]
......@@ -19,12 +19,14 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='lessonsubstitution',
name='lesson_period',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='substitutions', to='chronos.LessonPeriod'),
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE,
related_name='substitutions', to='chronos.LessonPeriod'),
preserve_default=False,
),
migrations.AddField(
model_name='lessonsubstitution',
name='week',
field=models.IntegerField(default=biscuit.apps.chronos.util.current_week, verbose_name='Kalenderwoche'),
field=models.IntegerField(
default=biscuit.apps.chronos.util.current_week, verbose_name='Kalenderwoche'),
),
]
from datetime import datetime
from typing import Dict, Optional, List, Tuple
from typing import Dict, Optional, Tuple
from django.core import validators
from django.db import models
......@@ -7,8 +7,6 @@ from django.utils.translation import ugettext_lazy as _
from .util import current_week
from biscuit.core.models import Person
class TimePeriod(models.Model):
WEEKDAY_CHOICES = [
......@@ -60,7 +58,7 @@ class Subject(models.Model):
return '%s - %s' % (self.abbrev, self.name)
class Meta:
ordering = ['name', 'abbrev']
ordering = ['name', 'abbrev']
class Room(models.Model):
......@@ -116,7 +114,8 @@ class LessonSubstitution(models.Model):
room = models.ForeignKey('Room', models.CASCADE, null=True)
class Meta:
ordering = ['lesson_period__lesson__date_start', 'week', 'lesson_period__period__weekday', 'lesson_period__period__period']
ordering = ['lesson_period__lesson__date_start', 'week',
'lesson_period__period__weekday', 'lesson_period__period__period']
class LessonPeriod(models.Model):
......
......@@ -26,4 +26,5 @@ class LessonsTable(tables.Table):
lesson__teachers = tables.Column(accessor='lesson.teacher_names', verbose_name=_('Teachers'))
lesson__subject = tables.Column(accessor='lesson.subject')
room = tables.Column(accessor='room')
edit_substitution = tables.LinkColumn('edit_substitution', args=[A('id'), A('_week')], text=_('Substitution'))
edit_substitution = tables.LinkColumn(
'edit_substitution', args=[A('id'), A('_week')], text=_('Substitution'))
......@@ -11,10 +11,10 @@ from django.utils.translation import ugettext as _
from django_tables2 import RequestConfig
from biscuit.core.decorators import admin_required
from biscuit.core.models import Group, Person
from biscuit.core.util import messages
from .forms import SelectForm, LessonSubstitutionForm
from .models import LessonPeriod, TimePeriod, Room, LessonSubstitution
from .models import LessonPeriod, TimePeriod, LessonSubstitution
from .util import current_week, week_weekday_from_date, week_days
from .tables import LessonsTable
......@@ -102,7 +102,7 @@ def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpRespons
)
# Build table
lessons_table = LessonsTable(lesson_periods.extra(select = {'_week': week}).all())
lessons_table = LessonsTable(lesson_periods.extra(select={'_week': week}).all())
RequestConfig(request).configure(lessons_table)
context['lessons_table'] = lessons_table
......@@ -114,17 +114,21 @@ def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpRespons
return render(request, 'chronos/lessons_day.html', context)
@admin_required
def edit_substitution(request: HttpRequest, id_: int, week: int) -> HttpResponse:
context = {}
lesson_period = get_object_or_404(LessonPeriod, pk=id_)
lesson_substitution = LessonSubstitution.objects.filter(week=week, lesson_period=lesson_period).first()
lesson_substitution = LessonSubstitution.objects.filter(
week=week, lesson_period=lesson_period).first()
if lesson_substitution:
edit_substitution_form = LessonSubstitutionForm(request.POST or None, instance=lesson_substitution)
edit_substitution_form = LessonSubstitutionForm(
request.POST or None, instance=lesson_substitution)
else:
edit_substitution_form = LessonSubstitutionForm(request.POST or None, initial={'week': week, 'lesson_period': lesson_period})
edit_substitution_form = LessonSubstitutionForm(
request.POST or None, initial={'week': week, 'lesson_period': lesson_period})
context['substitution'] = lesson_substitution
......