Пример #1
0
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():
            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']
            extra_field_names = ['user','member_number','join_dt','renew_dt','expire_dt','status','status_detail']
            
            label_list.extend(extra_field_labels)
            label_list.append('\n')

            data_row_list = []
            memberships = Membership.objects.filter(ma=app)
            for memb in memberships:
                data_row = []
                field_entry_d = memb.entry_items
                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_entry_d.has_key(field_name):
                        value = field_entry_d[field_name]
                        
                    if value == None:
                        value = ''

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

                    value = value.replace(',', ' ')
                    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'
                    else:
                        value = getattr(memb, field, '')

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

                    data_row.append(value)

                data_row.append('\n')
                data_row_list.append(data_row)
                
            return render_excel(file_name, label_list, data_row_list, '.csv')
                    
    return render_to_response(template_name, {
            'form':form
            }, context_instance=RequestContext(request))