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,
MemberWaitingList, LJPProposal, Intervention, PermissionMember,
PermissionGroup, MemberTraining, TrainingCategory,
KlettertreffAttendee, ActivityCategory, OldMemberOnList, MemberList,
KlettertreffAttendee, ActivityCategory,
annotate_activity_score, RegistrationPassword, MemberUnconfirmedProxy)
from finance.models import Statement, Bill
from mailer.mailutils import send as send_mail, get_echo_link
@ -592,11 +592,6 @@ class MemberOnListInline(FilteredMemberFieldMixin, GenericTabularInline):
sortable_options = []
class OldMemberOnListInline(admin.TabularInline):
model = OldMemberOnList
extra = 0
class MemberNoteListAdmin(admin.ModelAdmin):
inlines = [MemberOnListInline]
list_display = ['__str__', 'date']
@ -674,61 +669,6 @@ class MemberNoteListAdmin(admin.ModelAdmin):
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):
inlines = [MemberOnListInline, LJPOnListInline, StatementOnListInline]
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)
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):
"""
Connects members to a list of members.

Loading…
Cancel
Save