コード例 #1
0
ファイル: views.py プロジェクト: repos-python/tendenci
def membership_export(request):
    template_name = 'memberships/export.html'
    form = ExportForm(request.POST or None, user=request.user)

    if request.method == 'POST':
        if form.is_valid():
            # reset the password_promt session
            request.session['password_promt'] = False
            app = form.cleaned_data['app']
            export_id = run_export_task('memberships', 'membership', [], app)
            return redirect('export.status', export_id)

    return render_to_response(template_name, {
            'form': form
            }, context_instance=RequestContext(request))
コード例 #2
0
ファイル: views.py プロジェクト: eloyz/tendenci
def membership_export(request):
    from django.template.defaultfilters import slugify

    template_name = 'memberships/export.html'
    form = ExportForm(request.POST or None, user=request.user)

    if request.method == 'POST':
        if form.is_valid():
            # reset the password_promt session
            request.session['password_promt'] = False
            app = form.cleaned_data['app']

            file_name = "%s.csv" % slugify(app.name)

            exclude_params = (
                'horizontal-rule',
                'header',
            )

            fields = AppField.objects.filter(app=app, exportable=True).exclude(field_type__in=exclude_params).order_by('position')

            label_list = [field.label for field in fields]
            extra_field_labels = ['User Name', 'Member Number', 'Join Date', 'Renew Date', 'Expiration Date', 'Status', 'Status Detail', 'Invoice Number', 'Invoice Amount', 'Invoice Balance']
            extra_field_names = ['user', 'member_number', 'join_dt', 'renew_dt', 'expire_dt', 'status', 'status_detail', 'invoice', 'invoice_total', 'invoice_balance']

            label_list.extend(extra_field_labels)

            data_row_list = []
            memberships = Membership.objects.filter(ma=app).exclude(status_detail='archive')
            for memb in memberships:
                data_row = []
                field_entry_d = memb.entry_items
                invoice = None
                if memb.get_entry():
                    invoice = memb.get_entry().invoice
                for field in fields:
                    field_name = slugify(field.label).replace('-', '_')
                    value = ''

                    if field.field_type in ['first-name', 'last-name', 'email', 'membership-type', 'payment-method', 'corporate_membership_id']:
                        if field.field_type == 'first-name':
                            value = memb.user.first_name
                        elif field.field_type == 'last-name':
                            value = memb.user.last_name
                        elif field.field_type == 'email':
                            value = memb.user.email
                        elif field.field_type == 'membership-type':
                            value = memb.membership_type.name
                        elif field.field_type == 'payment-method':
                            if memb.payment_method:
                                value = memb.payment_method.human_name
                        elif field.field_type == 'corporate_membership_id':
                            value = memb.corporate_membership_id

                    if field_name in field_entry_d:
                        value = field_entry_d[field_name]

                    value = value or u''
                    if type(value) in (bool, int, long, None):
                        value = unicode(value)

                    data_row.append(value)

                for field in extra_field_names:

                    if field == 'user':
                        value = memb.user.username
                    elif field == 'join_dt':
                        if memb.renewal:
                            value = ''
                        else:
                            value = memb.subscribe_dt
                    elif field == 'renew_dt':
                        if memb.renewal:
                            value = memb.subscribe_dt
                        else:
                            value = ''
                    elif field == 'expire_dt':
                        value = memb.expire_dt or 'never expire'
                    elif field == 'invoice':
                        if invoice:
                            value = unicode(invoice.id)
                        else:
                            value = ""
                    elif field == 'invoice_total':
                        if invoice:
                            value = unicode(invoice.total)
                        else:
                            value = ""
                    elif field == 'invoice_balance':
                        if invoice:
                            value = unicode(invoice.balance)
                        else:
                            value = ""
                    else:
                        value = getattr(memb, field, '')

                    if type(value) in (bool, int, long):
                        value = unicode(value)

                    data_row.append(value)

                data_row_list.append(data_row)

            EventLog.objects.log()

            return render_csv(file_name, label_list, data_row_list)

    return render_to_response(template_name, {
            'form': form
            }, context_instance=RequestContext(request))