コード例 #1
0
def subscription(request, subscription_id=None):
    '''
    Details for an subscription of a member
    '''
    member = request.user.member
    future_subscription = member.future_subscription is not None
    can_order = member.future_subscription is None and (
        member.subscription is None or member.subscription.canceled)
    renderdict = get_menu_dict(request)
    if subscription_id is None:
        subscription = member.subscription
    else:
        subscription = get_object_or_404(Subscription, id=subscription_id)
        future_subscription = future_subscription and not (
            subscription == member.future_subscription)
    end_date = end_of_next_business_year()

    if subscription is not None:
        cancelation_date = subscription.cancelation_date
        if cancelation_date is not None and cancelation_date <= next_cancelation_date(
        ):
            end_date = end_of_business_year()
        renderdict.update({
            'subscription':
            subscription,
            'co_members':
            subscription.recipients.exclude(email=request.user.member.email),
            'primary':
            subscription.primary_member.email == request.user.member.email,
            'next_extra_subscription_date':
            Subscription.next_extra_change_date(),
            'next_size_date':
            Subscription.next_size_change_date(),
            'has_extra_subscriptions':
            ExtraSubscriptionCategoryDao.all_categories_ordered().count() > 0,
            'sub_overview_addons':
            addons.config.get_sub_overviews(),
        })
    renderdict.update({
        'no_subscription':
        subscription is None,
        'end_date':
        end_date,
        'can_order':
        can_order,
        'future_subscription':
        future_subscription,
        'member':
        request.user.member,
        'shares':
        request.user.member.active_shares.count(),
        'shares_unpaid':
        request.user.member.share_set.filter(paid_date=None).count(),
        'menu': {
            'subscription': 'active'
        },
    })
    return render(request, 'subscription.html', renderdict)
コード例 #2
0
def subscription_change(request, subscription_id):
    '''
    change an subscription
    '''
    subscription = get_object_or_404(Subscription, id=subscription_id)
    now = timezone.now().date()
    can_change = not (temporal.cancelation_date() <= now <
                      temporal.start_of_next_business_year())
    renderdict = get_menu_dict(request)
    renderdict.update({
        'subscription':
        subscription,
        'member':
        request.user.member,
        'change_size':
        can_change,
        'next_cancel_date':
        temporal.next_cancelation_date(),
        'next_extra_subscription_date':
        Subscription.next_extra_change_date(),
        'next_business_year':
        temporal.start_of_next_business_year(),
        'sub_change_addons':
        addons.config.get_sub_changes(),
    })
    return render(request, 'subscription_change.html', renderdict)
コード例 #3
0
def subscription(request, subscription_id=None):
    '''
    Details for an subscription of a member
    '''
    member = request.user.member
    future_subscription = member.subscription_future is not None
    can_order = member.subscription_future is None and (
        member.subscription_current is None
        or member.subscription_current.cancellation_date is not None)
    renderdict = get_menu_dict(request, 'subscription')
    if subscription_id is None:
        subscription = member.subscription_current
    else:
        subscription = get_object_or_404(Subscription, id=subscription_id)
        future_subscription = future_subscription and not (
            subscription == member.subscription_future)
    end_date = end_of_next_business_year()

    if subscription is not None:
        cancellation_date = subscription.cancellation_date
        if cancellation_date is not None and cancellation_date <= next_cancelation_date(
        ):
            end_date = end_of_business_year()
        asc = member.usable_shares_count
        share_error = subscription.share_overflow - asc < 0
        primary = subscription.primary_member.id == member.id
        can_leave = member.is_cooperation_member and not share_error and not primary
        renderdict.update({
            'subscription':
            subscription,
            'co_members':
            subscription.co_members(member),
            'primary':
            subscription.primary_member.email == member.email,
            'next_extra_subscription_date':
            Subscription.next_extra_change_date(),
            'next_size_date':
            Subscription.next_size_change_date(),
            'has_extra_subscriptions':
            ExtraSubscriptionCategoryDao.all_categories_ordered().count() > 0,
            'sub_overview_addons':
            addons.config.get_sub_overviews(),
            'can_leave':
            can_leave,
        })
    renderdict.update({
        'no_subscription':
        subscription is None,
        'end_date':
        end_date,
        'can_order':
        can_order,
        'future_subscription':
        future_subscription,
        'member':
        request.user.member,
        'shares':
        request.user.member.active_shares.count(),
        'shares_unpaid':
        request.user.member.share_set.filter(paid_date=None).count(),
    })
    return render(request, 'subscription.html', renderdict)
コード例 #4
0
    def import_abo(self, data):
        fields = data['fields']

        abo = Subscription(pk=data['pk'])
        abo.depot = Depot.objects.get(pk=fields['depot'])
        abo.future_depot = None
        abo.primary_member = None  # filled in later in second pass
        abo.nickname = 'Abo ' + fields['number']
        abo.start_date = ACTIVATION_DATE
        if fields['active']:
            abo.end_date = None
        else:
            abo.end_date = DEACTIVATION_DATE
        abo.notes = ""
        abo.save()

        if fields['active']:
            abo.activate(datetime.date.fromisoformat(ACTIVATION_DATE))
        else:
            abo.activate(datetime.date.fromisoformat(ACTIVATION_DATE))
            abo.deactivate(datetime.date.fromisoformat(DEACTIVATION_DATE))