Browse Source

Vyrábění orgů z řešitelů

pull/50/head
Pavel "LEdoian" Turinsky 6 months ago
parent
commit
e431e23ad4
  1. 46
      personalni/admin.py

46
personalni/admin.py

@ -5,32 +5,19 @@ from django.contrib.messages import WARNING, ERROR, SUCCESS
import seminar.models as m import seminar.models as m
from datetime import datetime from datetime import datetime
# Tohle chceme umět použít i z ResitelAdmin
@admin.register(m.Osoba) @admin.action(description="Udělej z vybraných osob organizátory")
class OsobaAdmin(admin.ModelAdmin): def udelej_orgem(admin, request, queryset):
actions = ['synchronizuj_maily', 'udelej_orgem']
search_fields = ['jmeno', 'prijmeni', 'prezdivka']
def synchronizuj_maily(self, request, queryset):
for o in queryset:
if o.user is not None:
u = o.user
u.email = o.email
u.save()
self.message_user(request, "E-maily synchronizovány.")
synchronizuj_maily.short_description = "Synchronizuj vybraným osobám e-maily do uživatelů"
def udelej_orgem(self,request,queryset):
org_group = Group.objects.get(name='org') org_group = Group.objects.get(name='org')
uspesne_vytvoreni_orgove = 0 uspesne_vytvoreni_orgove = 0
for o in queryset: for o in queryset:
if m.Organizator.objects.filter(osoba=o).exists(): if m.Organizator.objects.filter(osoba=o).exists():
# Ref: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user # Ref: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user
self.message_user(request, f"Osoba {o} už je org, přeskakuji.", level=WARNING) admin.message_user(request, f"Osoba {o} už je org, přeskakuji.", level=WARNING)
continue continue
user = o.user user = o.user
if user is None: if user is None:
self.message_user(request, f"Osoba {o} nemá uživatele! Přeskakuji.", level=ERROR) admin.message_user(request, f"Osoba {o} nemá uživatele! Přeskakuji.", level=ERROR)
continue continue
user.groups.add(org_group) user.groups.add(org_group)
user.is_staff = True user.is_staff = True
@ -38,8 +25,21 @@ class OsobaAdmin(admin.ModelAdmin):
org = m.Organizator.objects.create(osoba=o, organizuje_od=datetime.now()) org = m.Organizator.objects.create(osoba=o, organizuje_od=datetime.now())
org.save() org.save()
uspesne_vytvoreni_orgove += 1 uspesne_vytvoreni_orgove += 1
self.message_user(request, f'Úspěšně vytvořeno {uspesne_vytvoreni_orgove} orgů.', level=SUCCESS) admin.message_user(request, f'Úspěšně vytvořeno {uspesne_vytvoreni_orgove} orgů.', level=SUCCESS)
udelej_orgem.short_description = "Udělej z vybraných osob organizátory"
@admin.register(m.Osoba)
class OsobaAdmin(admin.ModelAdmin):
actions = ['synchronizuj_maily', udelej_orgem]
search_fields = ['jmeno', 'prijmeni', 'prezdivka']
def synchronizuj_maily(self, request, queryset):
for o in queryset:
if o.user is not None:
u = o.user
u.email = o.email
u.save()
self.message_user(request, "E-maily synchronizovány.")
synchronizuj_maily.short_description = "Synchronizuj vybraným osobám e-maily do uživatelů"
class OsobaInline(admin.TabularInline): class OsobaInline(admin.TabularInline):
model = m.Osoba model = m.Osoba
@ -58,5 +58,11 @@ class ResitelAdmin(ReverseModelAdmin):
inline_type = 'stacked' inline_type = 'stacked'
inline_reverse = ['osoba'] inline_reverse = ['osoba']
actions = ['udelej_resitele_orgem']
@admin.action(description="Udělej z řešitelů organizátory")
def udelej_resitele_orgem(self, req, qs):
osoby = m.Osoba.objects.filter(resitel__in=qs)
udelej_orgem(self, req, osoby)
admin.site.register(m.Skola) admin.site.register(m.Skola)
admin.site.register(m.Prijemce) admin.site.register(m.Prijemce)

Loading…
Cancel
Save