Beispiel #1
0
def filters(request):
    members = MemberDao.all_members()
    renderdict = get_menu_dict(request)
    renderdict.update({
        'members': members,
        'title': _('Alle {}').format(Config.vocabulary('member_pl'))
    })
    return render(request, 'members.html', renderdict)
Beispiel #2
0
def members_with_assignments_no_filter(start_date,
                                       end_date,
                                       activty_area=None,
                                       members=None):
    members = members or MemberDao.all_members().filter(inactive=False)
    return members.annotate(assignments=Sum(
        'assignment__amount',
        filter=Q(assignment__job__time__range=(start_date, end_date))
        & Q(assignment__job__in=jobs_in_activity_area(activty_area))))
class SubscriptionAdminForm(forms.ModelForm):
    class Meta:
        model = Subscription
        fields = '__all__'

    subscription_members = forms.ModelMultipleChoiceField(queryset=MemberDao.all_members(), required=False,
                                                          widget=admin.widgets.FilteredSelectMultiple('Member', False))

    def __init__(self, *a, **k):
        forms.ModelForm.__init__(self, *a, **k)
        self.fields['primary_member'].queryset = self.instance.recipients
        if self.instance.pk is None:
            self.fields['subscription_members'].queryset = MemberDao.members_for_create_subscription()
        elif self.instance.state == 'waiting':
            self.fields['subscription_members'].queryset = MemberDao.members_for_future_subscription(
                self.instance)
        elif self.instance.state == 'inactive':
            self.fields['subscription_members'].queryset = MemberDao.all_members()
        else:
            self.fields['subscription_members'].queryset = MemberDao.members_for_subscription(
                self.instance)
        self.fields['subscription_members'].initial = self.instance.recipients_all

    def clean(self):
        # enforce integrity constraint on primary_member
        members = self.cleaned_data['subscription_members']
        primary = self.cleaned_data['primary_member']
        if primary not in members:
            self.cleaned_data['primary_member'] = members[0] if members else None

        return forms.ModelForm.clean(self)

    def save(self, commit=True):
        # HACK: set commit=True, ignoring what the admin tells us.
        # This causes save_m2m to be called.
        return forms.ModelForm.save(self, commit=True)

    def save_m2m(self):
        # update Subscription-Member many-to-one through foreign keys on Members
        old_members = set(self.instance.members.all())
        new_members = set(self.cleaned_data['subscription_members'])
        for obj in old_members - new_members:
            if self.instance.state == 'waiting':
                obj.future_subscription = None
            elif self.instance.state == 'inactive':
                obj.old_subscriptions.remove(self.instance)
            else:
                obj.subscription = None
            obj.save()
        for obj in new_members - old_members:
            if self.instance.state == 'waiting':
                obj.future_subscription = self.instance
            elif self.instance.state == 'inactive':
                obj.old_subscriptions.add(self.instance)
            else:
                obj.subscription = self.instance
            obj.save()
Beispiel #4
0
def confirm(request, member_hash):
    """
    Confirm from a user that has been added as a co_subscription member
    """

    for member in MemberDao.all_members().filter(confirmed=False):
        if member_hash == member.get_hash():
            member.confirmed = True
            member.save()

    return redirect('home')
Beispiel #5
0
def confirm(request, hash):
    '''
    Confirm from a user that has been added as a co_subscription member
    '''

    for member in MemberDao.all_members():
        if hash == hashlib.sha1((member.email + str(member.id)).encode('utf8')).hexdigest():
            member.confirmed = True
            member.save()

    return redirect('/my/home')
Beispiel #6
0
 def formfield_for_foreignkey(self, db_field, request, **kwargs):
     if db_field.name == 'member':
         if self.parent_obj is None:
             kwargs['queryset'] = MemberDao.members_for_create_subscription()
         elif self.parent_obj.state == 'waiting':
             kwargs['queryset'] = MemberDao.members_for_future_subscription(self.parent_obj)
         elif self.parent_obj.state == 'inactive':
             kwargs['queryset'] = MemberDao.all_members()
         else:
             kwargs['queryset'] = MemberDao.members_for_subscription(self.parent_obj)
     return super().formfield_for_foreignkey(db_field, request, **kwargs)
 def __init__(self, *a, **k):
     forms.ModelForm.__init__(self, *a, **k)
     self.fields['primary_member'].queryset = self.instance.recipients
     if self.instance.pk is None:
         self.fields['subscription_members'].queryset = MemberDao.members_for_create_subscription()
     elif self.instance.state == 'waiting':
         self.fields['subscription_members'].queryset = MemberDao.members_for_future_subscription(
             self.instance)
     elif self.instance.state == 'inactive':
         self.fields['subscription_members'].queryset = MemberDao.all_members()
     else:
         self.fields['subscription_members'].queryset = MemberDao.members_for_subscription(
             self.instance)
     self.fields['subscription_members'].initial = self.instance.recipients_all
Beispiel #8
0
class SubscriptionAdminForm(forms.ModelForm):
    class Meta:
        model = Subscription
        fields = '__all__'

    subscription_members = forms.ModelMultipleChoiceField(
        queryset=MemberDao.all_members(),
        required=False,
        widget=admin.widgets.FilteredSelectMultiple("Member", False))

    def __init__(self, *a, **k):
        forms.ModelForm.__init__(self, *a, **k)
        self.fields["primary_member"].queryset = self.instance.members.all()
        self.fields[
            "subscription_members"].queryset = MemberDao.members_for_subscription(
                self.instance)
        self.fields[
            "subscription_members"].initial = self.instance.members.all()

    def clean(self):
        # enforce integrity constraint on primary_member
        members = self.cleaned_data["subscription_members"]
        primary = self.cleaned_data["primary_member"]
        if primary not in members:
            self.cleaned_data[
                "primary_member"] = members[0] if members else None

        return forms.ModelForm.clean(self)

    def save(self, commit=True):
        # HACK: set commit=True, ignoring what the admin tells us.
        # This causes save_m2m to be called.
        return forms.ModelForm.save(self, commit=True)

    def save_m2m(self):
        # update Subscription-Member many-to-one through foreign keys on Members
        old_members = set(self.instance.members.all())
        new_members = set(self.cleaned_data["subscription_members"])
        for obj in old_members - new_members:
            obj.subscription = None
            obj.save()
        for obj in new_members - old_members:
            obj.subscription = self.instance
            obj.save()