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