Пример #1
0
class AddRegisterView(View):
    '''
        管理员添加人员
    '''
    @method_decorator(check_perms('dreamer.manager'))
    def get(self, request):
        return render(
            request, "dreamer/form.html", {
                "form": Register_Form(),
                "post_url": reverse("dreamer:add"),
                "title": u"添加报名者资料"
            })

    @method_decorator(check_perms('dreamer.manager'))
    def post(self, request):

        form = Register_Form(request.POST)
        if not form.is_valid():
            return render(
                request, "dreamer/form.html", {
                    "form": form,
                    "post_url": reverse("dreamer:add"),
                    "title": u"添加报名者资料"
                })
        register = form.save()
        return HttpResponseRedirect(
            reverse("dreamer:detail") + "?id=" + str(register.id))
Пример #2
0
class addSlide(View):
    @method_decorator(check_perms('carousels.slide_add'))
    def get(self, request):
        article_id = request.GET.get('id')
        fast = request.GET.get('fast')
        if fast == 'True':
            article = Article.objects.get(id=article_id)
            slide = Slide()
            slide.title = article.title
            slide.describe = article.summary
            slide.cover = article.cover
            slide.jumpUrl = '/articles/' + article_id + '/'
            slide.author = request.user
            slide.modifier = request.user
            slide.save()
            return HttpResponseRedirect(reverse('carousels:manage'))
        form = SlideForm()
        return render(request, 'carousels/carousel-form.html', {
            'form': form,
            'post_url': reverse('carousels:add')
        })

    @method_decorator(check_perms('carousels.slide_add'))
    def post(self, request):
        form = SlideForm(request.POST, request.FILES)
        if not form.is_valid():
            return render(request, 'carousels/carousel-form.html', {
                'form': form,
                'post_url': reverse('carousels:add')
            })
        slide = form.save(commit=False)
        slide.author = request.user
        slide.modifier = request.user
        slide.save()
        return HttpResponseRedirect(reverse('carousels:manage'))
Пример #3
0
class ModifyRegisterView(View):
    @method_decorator(check_perms('dreamer.manager'))
    def get(self, request):
        id = request.GET.get("id")
        register = get_object_or_404(Register, pk=id)
        form = Register_Form(instance=register)
        return render(
            request, "dreamer/form.html", {
                "form": form,
                "post_url": reverse("dreamer:modify") + "?id=" + id,
                "title": u"修改报名者资料"
            })

    @method_decorator(check_perms('dreamer.manager'))
    def post(self, request):
        id = request.GET.get("id")
        register = get_object_or_404(Register, pk=id)
        form = Register_Form(request.POST, instance=register)
        if not form.is_valid():
            return render(
                request, "dreamer/form.html", {
                    "form": form,
                    "post_url": reverse("dreamer:modify") + "?id=" + id,
                    "title": u"修改报名者资料"
                })
        register = form.save()
        return HttpResponseRedirect(
            reverse("dreamer:detail") + "?id=" + str(register.id))
Пример #4
0
class ModifySlide(View):
    @method_decorator(check_perms('carousels.slide_add'))
    def get(self, request):
        slide_id = request.GET.get('id')
        slide = get_object_or_404(Slide, pk=slide_id)
        form = SlideForm(instance=slide)
        page = request.GET.get('page')
        return render(
            request, 'carousels/carousel-form.html', {
                'form': form,
                'slide_id': slide_id,
                'page': page,
                'slide': slide,
                'post_url': reverse('carousels:modify')
            })

    @method_decorator(check_perms('carousels.slide_add'))
    def post(self, request):
        slide_id = request.GET.get('id')
        slide = get_object_or_404(Slide, pk=slide_id)
        form = SlideForm(request.POST, request.FILES, instance=slide)
        page = request.GET.get('page')
        if not form.is_valid():
            return render(
                request, 'carousels/carousel-form.html', {
                    'form': form,
                    'slide_id': slide_id,
                    'post_url': reverse('carousels:modify')
                })
        slide = form.save(commit=False)
        slide.modifier = request.user
        slide.save()
        return HttpResponseRedirect(
            reverse('carousels:manage') + '?page=' + page)
Пример #5
0
class AddMember(View):
    @method_decorator(check_perms('member_infor.member_add'))
    def get(self, request):
        form = MemberForm()
        title = u"添加通讯录成员信息"
        return render(request, 'member_infor/member_form.html', {
            'form': form,
            'post_url': reverse('member_infor:add'),
            'title': title
        })

    @method_decorator(check_perms('member_infor.member_add'))
    def post(self, request):
        form = MemberForm(request.POST)
        title = u"添加通讯录成员信息"
        if not form.is_valid():
            return render(
                request, 'member_infor/member_form.html', {
                    'form': form,
                    'post_url': reverse('member_infor:add'),
                    'title': title
                })
        member = form.save(commit=False)
        member.approved = True
        member.save()
        return HttpResponseRedirect(reverse('member_infor:manage'))
Пример #6
0
class ShowAccount(View):
    """Show a specific account class-base view"""
    @method_decorator(check_perms('account.student_manager'))
    def get(self, request, id):
        student = get_object_or_404(Student, id=id)
        return render(request, 'master/account-view.html',
                      {'student': student})

    @method_decorator(check_perms('account.student_manager'))
    def put(self, request, id):
        student = get_object_or_404(Student, id=id)

        if student.user.has_perm('website_admin'):
            return spec_json(status='user_is_admin')

        student.user.is_active = not student.user.is_active
        student.user.save()
        return spec_json(status='success')

    @method_decorator(check_perms('account.student_manager'))
    def delete(self, request, id):
        student = get_object_or_404(Student, id=id)
        if student.user.has_perm('website_admin'):
            return spec_json(status='user_is_admin')

        student.user.delete()
        student.delete()
        return spec_json(status='success')
Пример #7
0
class CategoryView(View):
    @staticmethod
    def create_category_list():
        category_list = Category.objects.all()
        category_list = {category.name: \
                len(Article.objects.filter(category=category, deleted=False)) \
                for category in Category.objects.all()}
        category_list[NO_CATEGORY] = \
                len(Article.objects.filter(category=None, deleted=False))
        return category_list

    @method_decorator(check_perms('articles.article_manage'))
    def get(self, request):
        category_list = CategoryView.create_category_list()
        formset = CategoryFormset()
        return render(request, 'articles/category-form.html', {
            'formset': formset,
            'category_list': category_list
        })

    @method_decorator(check_perms('articles.article_manage'))
    def post(self, request):
        formset = CategoryFormset(request.POST)
        if not formset.is_valid():
            category_list = CategoryView.create_category_list()
            return render(request, 'articles/category-form.html', {
                'formset': formset,
                'category_list': category_list
            })
        formset.save()
        return HttpResponseRedirect(reverse('articles:category'))
Пример #8
0
class ModifyView(View):
    @method_decorator(check_perms('articles.article_add'))
    def get(self, request):
        article_id = request.GET.get('id')
        article = get_object_or_404(Article, pk=article_id)
        form = ArticleForm(instance=article)
        page = request.GET.get('page')
        return render(
            request, 'articles/article-form.html', {
                'form': form,
                'article_id': article_id,
                'page': page,
                'post_url': reverse('articles:modify')
            })

    @method_decorator(check_perms('articles.article_add'))
    def post(self, request):
        article_id = request.GET.get('id')
        article = get_object_or_404(Article, pk=article_id)
        form = ArticleForm(request.POST, request.FILES, instance=article)
        page = request.GET.get('page')
        if not form.is_valid():
            return render(
                request, 'articles/article-form.html', {
                    'form': form,
                    'article_id': article_id,
                    'post_url': reverse('articles:modify')
                })
        form.save()
        return HttpResponseRedirect(
            reverse('articles:manage') + '?page=' + page)
Пример #9
0
class ListOrganization(View):
    @method_decorator(check_perms('organization.organization_manager'))
    def get(self, request):
        orgs = Organization.objects.all()
        normal_orgs = Organization.objects.filter(is_banned=False,
                                                  is_deleted=False)
        baned_orgs = Organization.objects.filter(is_banned=True)
        deleted_orgs = Organization.objects.filter(is_deleted=True)
        param = {
            'orgs': orgs,
            'normal_orgs': normal_orgs,
            'baned_orgs': baned_orgs,
            'deleted_orgs': deleted_orgs
        }
        return render(request, 'master/organization-list.html', param)

    @method_decorator(check_perms('organization.organization_manager'))
    def post(self, request):
        form = AddOrganizationForm(request.POST)
        if not form.is_valid():
            messages = form.errors.values()
            return spec_json(status='errors', messages=messages)

        name = form.cleaned_data['name']
        phone = form.cleaned_data['phone']
        Organization.objects.create(name=name, phone=phone)
        return spec_json(status='success')
Пример #10
0
class ManageView(generic.View):
    @classmethod
    def __create_page(cls, request):
        paginator = FormsetPaginator(ActivityMessage,
                                     ActivityMessage.objects.all(),
                                     5,
                                     formset=ActivityMessageFormSet)
        try:
            page = paginator.page(request.GET.get('page'))
        except InvalidPage:
            page = paginator.page(1)
        return page

    @method_decorator(check_perms('account.website_admin'))
    def get(self, request):
        return render(request, 'activity/manage.html',
                      {'page': ManageView.__create_page(request)})

    @method_decorator(check_perms('account.website_admin'))
    def post(self, request):
        formset = ActivityMessageFormSet(request.POST)
        if not formset.is_valid():
            page = ManageView.__create_page(request)
            page.formset = formset
            return render(request, 'activity/manage.html', {'page': page})
        # 当extra>0的时候,不能循环form来save()
        formset.save()
        return HttpResponseRedirect(reverse('activity:index'))
Пример #11
0
class ShowOrganization(View):
    @method_decorator(check_perms('organization.organization_manager'))
    def get(self, request, id):
        org = get_object_or_404(Organization, id=id)
        return render(request, 'master/organization-view.html', {'org': org})

    @method_decorator(check_perms('organization.organization_manager'))
    def delete(self, request, id):
        org = get_object_or_404(Organization, id=id)
        org.is_deleted = True
        org.save()
        return spec_json(status='success')
Пример #12
0
class AddResourceView(View):
    @method_decorator(check_perms('szuspeech.manager'))
    def post(self, request):
        form = ResourceForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("szuspeech:manage_list"))
        return render(request, 'szuspeech/manage-form.html', {'form': form})

    @method_decorator(check_perms('szuspeech.manager'))
    def get(self, request):
        form = ResourceForm()
        return render(request, 'szuspeech/manage-form.html', {'form': form})
Пример #13
0
class AddView(View):
    @method_decorator(check_perms('magazine.magazine_add'))
    def get(self, request):
        form = MagazineForm()
        return render(request, 'magazine/magazine-form.html',
                {'form': form, 'post_url': reverse('magazine:add')})

    @method_decorator(check_perms('magazine.magazine_add'))
    def post(self, request):
        form = MagazineForm(request.POST, request.FILES)
        if not form.is_valid():
            return render(request, 'magazine/magazine-form.html',
                    {'form': form, 'post_url': reverse('magazine:add')})
        form.save()
        return HttpResponseRedirect(reverse('magazine:manage'))
Пример #14
0
class manageUser(View):
    @method_decorator(check_perms('christmas.manager'))
    def get(self, request):
        uid = request.GET['id']
        user = get_object_or_404(GiftSystem_user, pk=uid)
        user = UserForm(instance=user)
        return render(request, "christmas/user.html", locals())

    @method_decorator(check_perms('christmas.manager'))
    def post(self, request):
        uid = request.GET['id']
        user = get_object_or_404(GiftSystem_user, pk=uid)
        user = UserForm(request.POST, instance=user)
        user.save()
        return HttpResponseRedirect("/christmas/manage/")
Пример #15
0
class ModifyResorceView(View):
    @method_decorator(check_perms('szuspeech.manager'))
    def post(self, request):
        resource_id = request.GET.get('id')
        resource = get_object_or_404(Resource, pk=resource_id)
        form = ResourceForm(request.POST, request.FILES, instance=resource)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("szuspeech:manage_list"))
        return render(request, 'szuspeech/manage-form.html', {'form': form})

    @method_decorator(check_perms('szuspeech.manager'))
    def get(self, request):
        resouce_id = request.GET.get('id')
        resource = get_object_or_404(Resource, id=resouce_id)
        form = ResourceForm(instance=resource)
        return render(request, 'szuspeech/manage-form.html', {'form': form})
Пример #16
0
class AddView(View):

    @method_decorator(check_perms('articles.article_add'))
    def get(self, request):
        form = ArticleForm()
        return render(request, 'articles/article-form.html',
                {'form': form, 'post_url': reverse('articles:add')})

    @method_decorator(check_perms('articles.article_add'))
    def post(self, request):
        form = ArticleForm(request.POST,request.FILES )
        if not form.is_valid():
            return render(request, 'articles/article-form.html',
                    {'form': form, 'post_url': reverse('articles:add')})
        article = form.save(commit=False)
        article.editor = request.user
        article.create_ip = get_client_ip(request)
        article.save()
        return HttpResponseRedirect(reverse('articles:manage'))
Пример #17
0
class ListAccount(View):
    """List all accounts class-base view"""
    @method_decorator(check_perms('account.student_manager'))
    def get(self, request):
        paginator = Paginator(Student.objects.all().order_by('-pk'), 4)
        try:
            page = paginator.page(request.GET.get('page'))
        except InvalidPage:
            page = paginator.page(1)
        return render(request, 'master/account-list.html', {'page': page})
Пример #18
0
class ModifyMember(View):
    '''
        管理员修改信息
    '''
    @method_decorator(check_perms('member_infor.member_add'))
    def get(self, request):
        member_id = request.GET.get('id')
        member = get_object_or_404(Member, pk=member_id)
        form = MemberForm(instance=member)
        page = request.GET.get('page')
        title = u"修改通讯录信息"
        return render(
            request, 'member_infor/member_form.html', {
                'form': form,
                'member_id': member_id,
                'page': page,
                'post_url': reverse('member_infor:modify'),
                'title': title
            })

    @method_decorator(check_perms('member_infor.member_add'))
    def post(self, request):
        member_id = request.GET.get('id')
        member = get_object_or_404(Member, pk=member_id)
        form = MemberForm(request.POST, instance=member)
        page = request.GET.get('page')
        title = u"修改通讯录信息"
        if not form.is_valid():
            return render(
                request, 'member_infor/member_form.html', {
                    'form': form,
                    'member_id': member_id,
                    'post_url': reverse('member_infor:modify'),
                    'title': title
                })
        form.save()
        return HttpResponseRedirect(
            reverse('member_infor:manage') + '?page=' + page)
Пример #19
0
class ModifyView(View):
    @method_decorator(check_perms('magazine.magazine_modify'))
    def get(self, request):
        maga_id = request.GET.get('id')
        magazine = get_object_or_404(Magazine, id=maga_id)
        form = MagazineForm(instance=magazine)
        return render(request, 'magazine/magazine-form.html',
                {'form': form,
                 'post_url': reverse('magazine:modify') + '?id=' + maga_id})

    @method_decorator(check_perms('magazine.magazine_modify'))
    def post(self, request):
        maga_id = request.GET.get('id')
        magazine = get_object_or_404(Magazine, id=maga_id)
        form = MagazineForm(request.POST, request.FILES, instance=magazine)
        # 用于检查期数是否有重复,但要排除自身与自身重复
        form.model_id = maga_id
        if not form.is_valid():
            return render(request, 'magazine/magazine-form.html',
                    {'form': form,
                     'post_url': reverse('magazine:modify') + '?id=' + maga_id})
        form.save()
        return HttpResponseRedirect(reverse('magazine:manage'))
Пример #20
0
class OrganzationManager(View):
    @method_decorator(check_perms('organization.organization_manager'))
    def post(self, request, id):
        organization = get_object_or_404(Organization, id=id)
        form = AddOrganizationManagerForm(request.POST)
        if not form.is_valid():
            messages = form.errors.values()
            return spec_json(status='errors', messages=messages)

        email = form.cleaned_data['email']
        user = get_object_or_404(User, username=email)
        student = user.student
        organization_manager_update(student, organization)

        return spec_json(status='success')
Пример #21
0
class manageGift(View):
    @method_decorator(check_perms('christmas.manager'))
    def get(self, request):
        gid = request.GET['id']
        gift = get_object_or_404(Gift, pk=gid)
        if gift.isExchange:
            more = ExchangeForm(instance=gift.exchangegift)
        else:
            more = GivenForm(instance=gift.givengift)
        form = GiftForm(instance=gift)
        return render(request, "christmas/form.html", locals())

    @method_decorator(check_perms('christmas.manager'))
    def post(self, request):
        gid = request.GET['id']
        gift = get_object_or_404(Gift, pk=gid)
        form = GiftForm(request.POST, instance=gift)
        form.save()
        if gift.isExchange:
            more = ExchangeForm(request.POST, instance=gift.exchangegift)
        else:
            more = GivenForm(request.POST, instance=gift.givengift)
        more.save()
        return HttpResponseRedirect("/christmas/manage/")
Пример #22
0
class makeResultExcel(View):
    def __init__(self):
        self.exchange_data = [[u'礼物交换表'],
                              [
                                  u'姓名', u'性别', u'礼物名字', u'礼物编号', u'获得礼物名字',
                                  u'礼物ID'
                              ]]

    @method_decorator(check_perms('christmas.manager'))
    def get(self, request):
        self.make_array()
        self.make_excel()

        def file_iterator(file_name, chunk_size=512):
            with open(file_name, "rb") as f:
                while True:
                    c = f.read(chunk_size)
                    if c:
                        yield c
                    else:
                        break

        the_file_name = "stucampus/christmas/info/2.xlsx"
        response = StreamingHttpResponse(file_iterator(the_file_name))
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="{0}"'.format(
            the_file_name)
        return response

    def make_array(self):
        exchange_data_extend = [[
            i.own.name, i.own.gender, i.name, i.giftId,
            Gift.objects.get(
                giftId=i.exchangegift.changeresult.getGiftId).name,
            i.exchangegift.changeresult.getGiftId
        ] for i in Gift.objects.filter(isDelete=False).filter(
            isExchange=True).filter(isGet=True)]
        self.exchange_data = self.exchange_data + exchange_data_extend

    def make_excel(self):
        wb = Workbook()
        ws = wb.new_sheet(u'交换表', data=self.exchange_data)
        wb.save('stucampus/christmas/info/2.xlsx')
Пример #23
0
class ListAccount(View):
    """List all accounts class-base view"""
    @method_decorator(check_perms('account.student_manager'))
    def get(self, request):
        keyword = request.GET.get('keyword')
        objects = Student.objects
        if keyword:
            objects = objects.filter(
                Q(true_name__contains=keyword)
                | Q(screen_name__contains=keyword)
                | Q(user__email__contains=keyword)
                | Q(user__username__contains=keyword))
        else:
            objects = objects.all()
        paginator = Paginator(objects.order_by('-pk'), 10)
        try:
            page = paginator.page(request.GET.get('page'))
        except InvalidPage:
            page = paginator.page(1)
        return render(request, 'master/account-list.html', {
            'page': page,
            'keyword': 'keyword'
        })
Пример #24
0
class AddMemberList(View):
    '''
        批量添加通讯录成员,添加的成员默认通过
    '''
    @method_decorator(check_perms('member_infor.member_add'))
    def get(self, request):
        form = MemberListForm()
        title = u"通过xlsx批量添加通讯录信息"
        tips = u'''只支持上传xlsx文件,第一列为姓名,第二列为学号,第三列为电话号码,这三列为必须,后三列生日,邮箱,昵称,为非必须,你可以按顺序添写,无信息的那列放空白即可,
                    文件第一行为标签栏,填写姓名,学号,电话号码,生日,邮箱,昵称
                    第二列开始才是具体个人信息,
                    如陈泽集,2014150122,15889674306,1994-08-10,[email protected],阿集
                    如果学号已经存在,则会更新原来的信息
                    如果文件的某一处格式不符合规范,则会跳转单独更改,错误信息后面的信息需要再次添加
                '''
        return render(
            request, 'member_infor/member_form.html', {
                'form': form,
                'post_url': reverse('member_infor:add_list'),
                "title": title,
                "tips": tips
            })

    @method_decorator(check_perms('member_infor.member_add'))
    def post(self, request):
        form = MemberListForm(request.POST, request.FILES)

        if not form.is_valid():
            title = u"通过xlsx批量添加通讯录信息"
            tips = u'''只支持上传xlsx文件,第一列为姓名,第二列为学号,第三列为电话号码,这三列为必须,后三列生日,邮箱,昵称,为非必须,你可以按顺序添写,无信息的那列放空白即可,
                    文件第一行为标签栏,填写姓名,学号,电话号码,生日,邮箱,昵称
                    第二列开始才是具体个人信息,
                    如陈泽集,2014150122,15889674306,1994-08-10,[email protected],阿集
                    如果学号已经存在,则会更新原来的信息
                    如果文件的某一处格式不符合规范,则会跳转单独更改,错误信息后面的信息需要再次添加
                '''
            return render(
                request, 'member_infor/member_form.html', {
                    'form': form,
                    'post_url': reverse('member_infor:add_list'),
                    "title": title,
                    "tips": tips
                })
        file = form.cleaned_data.get('file')
        data = xlrd.open_workbook(file_contents=file.read(),
                                  encoding_override="utf-8")
        table = data.sheets()[0]
        nrows = table.nrows
        ncols = table.ncols
        title = u"修改批量上传中的错误信息"
        tips = u'''
                    该错误信息后面的信息将不会被添加,你可以修正完xlsx后,重新批量上传
                '''
        for rownum in range(1, nrows):
            row = table.row_values(rownum)
            szu_no = int(row[1])
            if Member.objects.filter(szu_no=szu_no).exists():
                member = get_object_or_404(Member, szu_no=szu_no)
                form = MemberForm(
                    {
                        'name': row[0],
                        'szu_no': int(row[1]),
                        'mobile_phone_number': int(row[2]),
                        'birthday': getdate(row[3]),
                        'e_mail': row[4],
                        'nick_name': row[5]
                    },
                    instance=member)
                if not form.is_valid():
                    return render(
                        request, 'member_infor/member_form.html', {
                            'form': form,
                            'post_url': reverse('member_infor:add'),
                            "title": title,
                            "tips": tips
                        })
                member = form.save(commit=False)
                member.approved = True
                member.save()
            else:
                form = MemberForm({
                    'name': row[0],
                    'szu_no': int(row[1]),
                    'mobile_phone_number': int(row[2]),
                    'birthday': getdate(row[3]),
                    'e_mail': row[4],
                    'nick_name': row[5]
                })
                if not form.is_valid():
                    return render(
                        request, 'member_infor/member_form.html', {
                            'form': form,
                            'post_url': reverse('member_infor:add'),
                            "title": title,
                            "tips": tips
                        })
                member = form.save(commit=False)
                member.approved = True
                member.save()
        file.close()
        return HttpResponseRedirect(reverse('member_infor:manage'))
Пример #25
0
class makeFinalExcel(View):
    def __init__(self):
        self.exchange_data = [[u'交换礼物结果表'],
                              [
                                  u'礼物编号', u'礼物名', u'拥有者姓名', u'拥有者学号',
                                  u'获得者学号', u'获得者姓名'
                              ]]
        self.given_data = [[u'交换礼物结果表'],
                           [
                               u'礼物编号', u'礼物名', u'被赠予者姓名', u'被赠予者电话', u'住址',
                               u'送礼人姓名', u'送礼人学号', u'是否匿名'
                           ]]

    @method_decorator(check_perms('christmas.manager'))
    def get(self, request):
        self.make_array()
        self.make_excel()

        def file_iterator(file_name, chunk_size=512):
            with open(file_name, "rb") as f:
                while True:
                    c = f.read(chunk_size)
                    if c:
                        yield c
                    else:
                        break

        the_file_name = "stucampus/christmas/info/3.xlsx"
        response = StreamingHttpResponse(file_iterator(the_file_name))
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="{0}"'.format(
            the_file_name)
        return response

    def make_array(self):
        exchange_data_extend = [[
            i.giftId, i.name, i.own.name, i.own.phone,
            ChangeResult.objects.get(
                getGiftId=i.giftId).exchangegift.gift.own.stu_no,
            ChangeResult.objects.get(
                getGiftId=i.giftId).exchangegift.gift.own.name
        ] for i in Gift.objects.filter(isDelete=False).filter(
            isExchange=True).filter(isGet=True)]
        given_data_extend = [[
            i.giftId, i.name, i.givengift.givenPerson, i.givengift.givenPhone,
            i.givengift.givenAdress, i.own.name, i.own.stu_no, i.isAnonymous
        ] for i in Gift.objects.filter(isDelete=False).filter(
            isExchange=False).filter(isGet=True)]
        self.exchange_data = self.exchange_data + exchange_data_extend
        self.given_data = self.given_data + given_data_extend

    def make_excel(self):
        def set_style(the_ws):
            ws_style = Style(size=15,
                             alignment=Alignment(horizontal="center",
                                                 vertical="center"))
            the_ws.range("A1", "D1").merge()
            for i in range(1, 5):
                the_ws.set_col_style(i, ws_style)

        wb = Workbook()
        ws = wb.new_sheet(u'交换表', data=self.exchange_data)
        set_style(ws)
        ws = wb.new_sheet(u'赠与表', data=self.given_data)
        set_style(ws)
        wb.save('stucampus/christmas/info/3.xlsx')
Пример #26
0
class makeExcel(View):
    def __init__(self):
        #        self.exchange_south_data = [[u'交换礼物登记表--南区'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        #        self.exchange_wsouth_data = [[u'交换礼物登记表--西南'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        #        self.exchange_vege_data = [[u'交换礼物登记表--斋区'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        #        self.given_south_data = [[u'赠与礼物登记表--南区'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        #        self.given_wsouth_data = [[u'赠与礼物登记表--西南'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        #        self.given_vege_data = [[u'赠与礼物登记表--斋区'], [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        self.exchange_data = [[u'交换礼物登记表'],
                              [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        self.given_data = [[u'交换礼物登记表'],
                           [u'学号', u'姓名', u'礼物编号', u'礼物类别', u'礼物描述']]
        self.gift_type = {
            "01": u'食物',
            "02": u'服装配饰',
            "03": u'钟表首饰',
            "04": u'化妆品',
            "05": u'运动户外',
            "06": u'电器数码',
            "07": u'小玩意',
            "08": u'手工物件',
            "09": u'二次元',
            "10": u'图书音像',
            "11": u'学习资源',
            "12": u'其他'
        }


#GIFT_TYPE = (
#    ('01', u'食物'),
#    ('02', u'服装配饰'),
#    ('03', u'钟表首饰'),
#    ('04', u'化妆品'),
#    ('05', u'运动户外'),
#    ('06', u'电器数码'),
#    ('07', u'小玩意'),
#    ('08', u'手工物件'),
#    ('09', u'二次元'),
#    ('10', u'图书音像'),
#    ('11', u'学习资源'),
#    ('12', u'其它'),
#)

    @method_decorator(check_perms('christmas.manager'))
    def get(self, request):
        self.make_array()
        self.make_excel()

        def file_iterator(file_name, chunk_size=512):
            with open(file_name, "rb") as f:
                while True:
                    c = f.read(chunk_size)
                    if c:
                        yield c
                    else:
                        break

        the_file_name = "stucampus/christmas/info/1.xlsx"
        response = StreamingHttpResponse(file_iterator(the_file_name))
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="{0}"'.format(
            the_file_name)
        return response

    def make_array(self):
        '''exchange_south_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                      Gift.objects.filter(isDelete=False).filter(own__area="C").filter(isExchange=True)]
        exchange_wsouth_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                      Gift.objects.filter(isDelete=False).filter(own__area="A").filter(isExchange=True)]
        exchange_vege_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                       Gift.objects.filter(isDelete=False).filter(own__area="B").filter(isExchange=True)]
        given_south_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                      Gift.objects.filter(isDelete=False).filter(own__area="C").filter(isExchange=False)]
        given_wsouth_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                       Gift.objects.filter(isDelete=False).filter(own__area="A").filter(isExchange=False)]
        given_vege_data_extend = [[i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type], i.description] for i in
                                     Gift.objects.filter(isDelete=False).filter(own__area="B").filter(isExchange=False)]
        self.exchange_south_data = self.exchange_south_data + exchange_south_data_extend
        self.exchange_wsouth_data = self.exchange_wsouth_data + exchange_wsouth_data_extend
        self.exchange_vege_data = self.exchange_vege_data + exchange_vege_data_extend
        self.given_south_data = self.given_south_data + given_south_data_extend
        self.given_wsouth_data = self.given_wsouth_data + given_wsouth_data_extend
        self.given_vege_data = self.given_vege_data + given_vege_data_extend'''
        exchange_data_extend = [[
            i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type],
            i.description
        ] for i in Gift.objects.filter(isDelete=False).filter(isExchange=True)]
        given_data_extend = [[
            i.own.stu_no, i.own.name, i.giftId, self.gift_type[i.type],
            i.description
        ] for i in Gift.objects.filter(isDelete=False).filter(isExchange=False)
                             ]
        self.exchange_data = self.exchange_data + exchange_data_extend
        self.given_data = self.given_data + given_data_extend

    def make_excel(self):
        def set_style(the_ws):
            ws_style = Style(size=15,
                             alignment=Alignment(horizontal="center",
                                                 vertical="center"))
            the_ws.range("A1", "E1").merge()
            for i in range(1, 5):
                the_ws.set_col_style(i, ws_style)
            the_ws.set_col_style(
                5,
                Style(size=30,
                      alignment=Alignment(horizontal="center",
                                          vertical="center")))

        wb = Workbook()
        # ws = wb.new_sheet(u"南区交换", data=self.exchange_south_data)
        # set_style(ws)
        # ws = wb.new_sheet(u"西南交换", data=self.exchange_wsouth_data)
        # set_style(ws)
        # ws = wb.new_sheet(u"斋区交换", data=self.exchange_vege_data)
        # set_style(ws)
        # ws = wb.new_sheet(u"南区赠与", data=self.given_south_data)
        # set_style(ws)
        # ws = wb.new_sheet(u"西南赠与", data=self.given_wsouth_data)
        # set_style(ws)
        # ws = wb.new_sheet(u"斋区赠与", data=self.given_vege_data)
        # set_style(ws)
        ws = wb.new_sheet(u'交换表', data=self.exchange_data)
        set_style(ws)
        ws = wb.new_sheet(u'赠与表', data=self.given_data)
        set_style(ws)
        wb.save('stucampus/christmas/info/1.xlsx')