members: remove Memberlist and OldMemberOnList, remove associated permissions, rename permissions for klettertreffattendee etc.

object-level-permissions
Christian Merten 3 years ago
parent f2e0530291
commit bb0d3f1d07
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -33,7 +33,7 @@ import nested_admin
from .models import (Member, Group, Freizeit, MemberNoteList, NewMemberOnList, Klettertreff, from .models import (Member, Group, Freizeit, MemberNoteList, NewMemberOnList, Klettertreff,
MemberWaitingList, LJPProposal, Intervention, PermissionMember, MemberWaitingList, LJPProposal, Intervention, PermissionMember,
PermissionGroup, MemberTraining, TrainingCategory, PermissionGroup, MemberTraining, TrainingCategory,
KlettertreffAttendee, ActivityCategory, OldMemberOnList, MemberList, KlettertreffAttendee, ActivityCategory,
annotate_activity_score, RegistrationPassword, MemberUnconfirmedProxy) annotate_activity_score, RegistrationPassword, MemberUnconfirmedProxy)
from finance.models import Statement, Bill from finance.models import Statement, Bill
from mailer.mailutils import send as send_mail, get_echo_link from mailer.mailutils import send as send_mail, get_echo_link
@ -592,11 +592,6 @@ class MemberOnListInline(FilteredMemberFieldMixin, GenericTabularInline):
sortable_options = [] sortable_options = []
class OldMemberOnListInline(admin.TabularInline):
model = OldMemberOnList
extra = 0
class MemberNoteListAdmin(admin.ModelAdmin): class MemberNoteListAdmin(admin.ModelAdmin):
inlines = [MemberOnListInline] inlines = [MemberOnListInline]
list_display = ['__str__', 'date'] list_display = ['__str__', 'date']
@ -674,61 +669,6 @@ class MemberNoteListAdmin(admin.ModelAdmin):
generate_summary.short_description = "PDF Übersicht erstellen" generate_summary.short_description = "PDF Übersicht erstellen"
class MemberListAdmin(admin.ModelAdmin):
inlines = [OldMemberOnListInline]
form = FreizeitAdminForm
list_display = ['__str__', 'date']
search_fields = ('name',)
actions = ['migrate_to_freizeit', 'migrate_to_notelist']
#formfield_overrides = {
# ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
# ForeignKey: {'widget': apply_select2(forms.Select)}
#}
class Media:
css = {'all': ('admin/css/tabular_hide_original.css',)}
def __init__(self, *args, **kwargs):
super(MemberListAdmin, self).__init__(*args, **kwargs)
def migrate_to_freizeit(self, request, queryset):
"""Creates 'Freizeiten' from the given memberlists """
for memberlist in queryset:
freizeit = Freizeit(name=memberlist.name,
place=memberlist.place,
destination=memberlist.destination,
date=memberlist.date,
end=memberlist.end,
tour_type=memberlist.tour_type,
difficulty=memberlist.difficulty)
freizeit.save()
freizeit.jugendleiter = memberlist.jugendleiter.all()
freizeit.groups = memberlist.groups.all()
freizeit.activity = memberlist.activity.all()
for memberonlist in memberlist.oldmemberonlist_set.all():
newonlist = NewMemberOnList(member=memberonlist.member,
comments=memberonlist.comments,
memberlist=freizeit)
newonlist.save()
messages.info(request, "Freizeit(en) erfolgreich erstellt.")
migrate_to_freizeit.short_description = "Aus Teilnehmerliste(n) Freizeit(en) erstellen"
def migrate_to_notelist(self, request, queryset):
"""Creates 'MemberNoteList' from the given memberlists """
for memberlist in queryset:
notelist = MemberNoteList(title=memberlist.name,
date=memberlist.date)
notelist.save()
for memberonlist in memberlist.oldmemberonlist_set.all():
newonlist = NewMemberOnList(member=memberonlist.member,
comments=memberonlist.comments,
memberlist=notelist)
newonlist.save()
messages.info(request, "Teilnehmerlist(en) erfolgreich erstellt.")
migrate_to_notelist.short_description = "Aus Teilnehmerliste(n) Notizliste erstellen"
class FreizeitAdmin(FilteredMemberFieldMixin, nested_admin.NestedModelAdmin): class FreizeitAdmin(FilteredMemberFieldMixin, nested_admin.NestedModelAdmin):
inlines = [MemberOnListInline, LJPOnListInline, StatementOnListInline] inlines = [MemberOnListInline, LJPOnListInline, StatementOnListInline]
form = FreizeitAdminForm form = FreizeitAdminForm

@ -0,0 +1,27 @@
# Generated by Django 4.0.1 on 2023-04-01 20:46
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('members', '0004_add_training_data_alter_required_flags'),
]
operations = [
migrations.RemoveField(
model_name='oldmemberonlist',
name='member',
),
migrations.RemoveField(
model_name='oldmemberonlist',
name='memberlist',
),
migrations.DeleteModel(
name='MemberList',
),
migrations.DeleteModel(
name='OldMemberOnList',
),
]

@ -0,0 +1,32 @@
# Stub Generated by Django 4.0.1 on 2023-04-02 08:29 and edited manually
from django.db import migrations
def rename_permissions(apps, schema_editor):
Permission = apps.get_model("auth", "Permission")
for modelcodename in ["klettertreffattendee", "member", "newmemberonlist"]:
for action in ["view", "add", "change", "delete"]:
Permission.objects \
.filter(codename="{action}_{modelcodename}".format(action=action, modelcodename=modelcodename)) \
.update(name='Can {action} {modelcodename}'.format(action=action, modelcodename=modelcodename))
def remove_old_memberlist_permissions(apps, schema_editor):
Permission = apps.get_model("auth", "Permission")
for action in ["view", "add", "change", "delete"]:
Permission.objects.filter(codename="{action}_oldmemberonlist".format(action=action)).delete()
Permission.objects.filter(codename="{action}_memberlist".format(action=action)).delete()
class Migration(migrations.Migration):
dependencies = [
('members', '0005_remove_oldmemberonlist_member_and_more'),
]
operations = [
migrations.RunPython(rename_permissions, migrations.RunPython.noop),
migrations.RunPython(remove_old_memberlist_permissions, migrations.RunPython.noop),
]

@ -565,69 +565,6 @@ class MemberWaitingList(Person):
else self.email) else self.email)
class MemberList(models.Model):
"""Lets the user create a list of members in pdf format.
DEPRECATED: Replaced by Freizeit and Notizliste
"""
name = models.CharField(verbose_name=_('Activity'), default='',
max_length=50)
place = models.CharField(verbose_name=_('Place'), default='', max_length=50)
destination = models.CharField(verbose_name=_('Destination (optional)'),
default='', max_length=50, blank=True)
date = models.DateField(default=datetime.today, verbose_name=_('Date'))
end = models.DateField(verbose_name=_('End (optional)'), blank=True, default=datetime.today)
# comment = models.TextField(_('Comments'), default='', blank=True)
groups = models.ManyToManyField(Group, verbose_name=_('Groups'))
jugendleiter = models.ManyToManyField(Member)
tour_type_choices = ((GEMEINSCHAFTS_TOUR, 'Gemeinschaftstour'),
(FUEHRUNGS_TOUR, 'Führungstour'),
(AUSBILDUNGS_TOUR, 'Ausbildung'))
# verbose_name is overriden by form, label is set in admin.py
tour_type = models.IntegerField(choices=tour_type_choices)
activity = models.ManyToManyField(ActivityCategory, default=None,
verbose_name=_('Categories'))
difficulty_choices = [(1, _('easy')), (2, _('medium')), (3, _('hard'))]
# verbose_name is overriden by form, label is set in admin.py
difficulty = models.IntegerField(choices=difficulty_choices)
def __str__(self):
"""String represenation"""
return self.name
class Meta:
verbose_name = _('Memberlist')
verbose_name_plural = _('Memberlists')
def get_tour_type(self):
if self.tour_type == FUEHRUNGS_TOUR:
return "Führungstour"
elif self.tour_type == AUSBILDUNGS_TOUR:
return "Ausbildung"
else:
return "Gemeinschaftstour"
def get_absolute_url(self):
return reverse('admin:members_memberlist_change', args=[str(self.id)])
class OldMemberOnList(models.Model):
"""
Connects members to a list of members.
"""
member = models.ForeignKey(Member, verbose_name=_('Member'), on_delete=models.CASCADE)
memberlist = models.ForeignKey(MemberList, on_delete=models.CASCADE)
comments = models.TextField(_('Comment'), default='', blank=True)
def __str__(self):
return str(self.member)
class Meta:
verbose_name = _('Member')
verbose_name_plural = _('Members')
class NewMemberOnList(models.Model): class NewMemberOnList(models.Model):
""" """
Connects members to a list of members. Connects members to a list of members.

Loading…
Cancel
Save