def download_activity_register_list(request, activity_id): response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="register_%s.csv"' % datetime.date.today( ).strftime("%Y_%m_%d") # print 'attachment; filename="%s_%s.csv"' % (at.name, datetime.date.today().strftime("%Y_%m_%d")) response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"志愿者", u"状态", u"创建者", u"小组", u"注册时间", u"更新时间"] writer.writerow([unicode(s).encode("utf-8") for s in header]) register_list = admin.get_all_register(request.user, activity_id) for r in register_list: items = [ r.volunteer.name, r.get_status_display(), r.creator.first_name, r.volunteer.group.name if r.volunteer.group and r.volunteer.group.name else '-', format_datetime_str(r.create_time), format_datetime_str(r.update_time) ] writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def get_volunteer_profile(openid): activities = ActivityRegister.objects.filter(volunteer__openid=openid).order_by('-create_time') activity_payload = [] for at in activities: activity_payload.append({ "name": at.activity.name, "link": "/activity/register_list/%s/" % at.activity.id, "time": format_datetime_str(at.activity.start_time) + " - " + format_datetime_str(at.activity.end_time), "address": at.activity.address, "status_value": at.status, "status": at.get_status_display() }) trainings = TrainingRegister.objects.filter(volunteer__openid=openid).order_by('-create_time') training_payload = [] if len(trainings) > 0: for t in trainings: item = { "training_name": t.training.name, "link": "/training/register_list/%s/" % t.training.id } tmp_status = get_training_registers_status([t])[0] item.update(tmp_status) item['status'] = 0 start_at_cnt = 0 for at in item['activity_list']: if at['status_value'] > 0: start_at_cnt += 1 if start_at_cnt < len(item['activity_list']): item['status'] = 1 else: item['status'] = 2 training_payload.append(item) data = { "volunteer": Volunteer.objects.get(openid=openid), "score": get_volunteer_score(openid), "activity_list": activity_payload, "training_list": training_payload } return data
def load_group_list(request): group_data = [] for i, g in enumerate(get_all_groups()): item = [{ "value": g.id, "text": str(i + 1) }, { "value": g.name, "text": g.name }, { "value": g.admin.username, "text": g.admin.first_name }, { "text": Volunteer.objects.filter(group__id=g.id).count() }, { "text": format_datetime_str(g.create_time) }] group_data.append(item) data = { "table": { "id": "groupTable", "name": u"小组列表", "label": "group", "header": ["ID", u"小组名称", u"组长", u"人数", u"创建时间"], "labels": ["id", "name", "admin_username", "cnt", "create_time"], "edit": { "link": "/group/update_group_info", "items": [{ "index": 0, "enable": False, "type": "text" }, { "index": 1, "enable": True, "type": "text" }, { "index": 2, "enable": True, "type": "select", "options": get_all_admin_as_options() }] }, "remove": { "link": "/group/remove_group/", "label": "name", "param": "id" }, "body": group_data } } return render(request, 'table.html', data)
def download_admin_list(request): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="admin_list_%s.csv"' % datetime.date.today().strftime("%Y_%m_%d") response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"用户名", u"姓名", 'email', u"电话", u"创建时间", u"最后登入"] writer.writerow([unicode(s).encode("utf-8") for s in header]) users = User.objects.all() for u in users: items = [u.username, u.first_name, u.email, u.last_name, format_datetime_str(u.date_joined), format_datetime_str(u.last_login)] writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def download_activity_list(request): response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="activity_list_%s.csv"' % datetime.date.today( ).strftime("%Y_%m_%d") writer = csv.writer(response) header = [ u"活动名称", u"活动类型", u"起始时间", u"结束时间", u"地址", u"状态", u"创建者", u"创建时间" ] writer.writerow([unicode(s).encode("utf-8") for s in header]) at_list = admin.get_privileged_activities(request.user) for at in at_list: items = [ at.name, at.type.name, format_datetime_str(at.start_time), format_datetime_str(at.end_time), at.address, at.get_status(), at.creator.first_name, format_datetime_str(at.create_time) ] writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def download_group_list(request): response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="group_list_%s.csv"' % datetime.date.today( ).strftime("%Y_%m_%d") response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"小组名称", u"组长", u"人数", u"创建时间"] writer.writerow([unicode(s).encode("utf-8") for s in header]) groups = Group.objects.all() for g in groups: items = [ g.name, g.admin.first_name, Volunteer.objects.filter(group__id=g.id).count(), format_datetime_str(g.create_time) ] writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def download_training_list(request): response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="training_list_%s.csv"' % datetime.date.today( ).strftime("%Y_%m_%d") response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"培训名称", u"小组", u"创建人", u"创建时间", u"权限", u"活动设置"] writer.writerow([unicode(s).encode("utf-8") for s in header]) trainings = admin.get_all_training(request.user) for t in trainings: items = [ t["name"], t['group_name'], t['creator'], format_datetime_str(t['create_time']), t['is_private'] ] types = [ str(x['order']) + "-" + unicode(x['at_name']) for x in t['types'] ] items.append(",".join(types)) writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def download_activity_type_list(request): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="activity_type_list_%s.csv"' % datetime.date.today().strftime("%Y_%m_%d") response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"类型名称", u"积分", u"所属小组", u"创建者", u"创建人", u"创建时间"] if request.user.is_superuser: header.append(u"权限") writer.writerow([unicode(s).encode("utf-8") for s in header]) at_list = admin.get_privileged_types(request.user) for at in at_list: items = [at.name, at.score, at.group.name if at.group else u"未分组", at.creator.first_name, format_datetime_str(at.create_time)] if request.user.is_superuser: items.append(u"私密" if at.is_private else u"公开") writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def load_activity_type_list(request): at_data = [] for i, at in enumerate(admin.get_privileged_types(request.user)): item = [{ "value": at.id, "text": str(i+1) }, { "value": at.name, "text": at.name }, { "value": at.score, "text": at.score }, { "value": at.group.id if at.group else "-", "text": at.group.name if at.group else u"未分组" }, { "text": at.creator.first_name }, { "text": format_datetime_str(at.create_time) } ] if request.user.is_superuser: item.append({ "text": u"私密" if at.is_private else u"公开", "value": at.is_private }) at_data.append(item) data = { "table": { "id": "activityTypeTable", "name": u"活动类型列表", "label": "activity-type", "header": ["ID", u"类型名称", u"积分", u"所属小组", u"创建者", u"创建时间"], "labels": ["id", "name", "score", "group_id", "creator", "create_time"], "edit": { "link": "/activity_type/update_activity_type", "items": [ { "index": 0, "enable": False, "type": "text" }, { "index": 1, "enable": True, "type": "text" }, { "index": 2, "enable": True, "type": "number" }, { "index": 3, "enable": True, "type": "select", "options": get_all_group_as_options(request.user) } ] }, "remove": { "link": "/activity_type/remove_activity_type/", "label": "name", "param": "id" }, "body": at_data } } if request.user.is_superuser: data['table']['header'].append(u"权限") data['table']['labels'].append(u"is_private") data['table']['edit']['items'].append({ "index": 6, "enable": True, "type": "select", "options": [{ "text": u"私密", "value": True }, { "text": u"公开", "value": False }] }) return render(request, 'table.html', data)
def get_start_time(self): return format_datetime_str(self.start_time)
def get_end_time(self): return format_datetime_str(self.end_time)
def download_volunteer_list(request): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="volunteer_list_%s.csv"' % datetime.date.today().strftime("%Y_%m_%d") response.write(codecs.BOM_UTF8) writer = csv.writer(response) header = [u"姓名", u"小组", u"电话", u"Email", u"工作证号", u"工作年限", u"积分", u"创建人", u"创建时间"] writer.writerow([unicode(s).encode("utf-8") for s in header]) if request.user.is_superuser: volun_list = Volunteer.objects.all() else: volun_list = Volunteer.objects.filter(group__admin__username=request.user.username) for v in volun_list: items = [v.name, v.group.name if v.group else u"未分组", v.phone, v.email, v.cert_number, v.year, get_volunteer_score(v.openid), v.creator.first_name, format_datetime_str(v.create_time)] writer.writerow([unicode(s).encode("utf-8") for s in items]) return response
def load_volunteer_list(request): volun_data = [] if request.user.is_superuser: volun_list = Volunteer.objects.all().order_by('-create_time') else: volun_list = Volunteer.objects.filter(group__admin__username=request.user.username).order_by('-create_time') for i, v in enumerate(volun_list): item = [{ "value": v.openid, "text": str(i+1) }, { "value": v.name, "text": v.name, "link": "/volunteer/volunteer_profile/%s/" % str(v.openid) }, { "value": v.group.id if v.group else "-", "text": v.group.name if v.group else u"未分组" }, { "value": v.phone, "text": v.phone }, { "value": v.email, "text": v.email }, { "value": v.cert_number, "text": v.cert_number }, { "value": v.year, "text": v.year }, { "text": get_volunteer_score(v.openid) }, { "text": v.creator.first_name }, { "text": format_datetime_str(v.create_time) } ] volun_data.append(item) data = { "table": { "id": "groupTable", "name": u"志愿者列表", "label": "group", "header": ["ID", u"姓名", u"小组", u"电话", u"Email", u"工作证号", u"工作年限", u"积分", u"创建人", u"创建时间"], "labels": ["openid", "name", "group_id", "phone", "email", "cert_number", "year", "score", "creator_username", "create_time"], "edit": { "link": "/volunteer/update_volunteer_info", "items": [ { "index": 0, "enable": False, "type": "text" }, { "index": 1, "enable": True, "type": "text" }, { "index": 2, "enable": True, "type": "select", "options": get_all_group_as_options(request.user) }, { "index": 3, "enable": True, "type": "text" }, { "index": 4, "enable": True, "type": "text" }, { "index": 5, "enable": True, "type": "text" }, { "index": 6, "enable": True, "type": "number" } ] }, "remove": { "link": "/volunteer/remove_volunteer/", "label": "name", "param": "openid" }, "body": volun_data } } return render(request, 'table.html', data)
def load_admin_list(request): users = User.objects.all() user_data = [] for u in users: item = [{ "value": u.username, "text": u.username }, { "value": u.first_name, "text": u.first_name }, { "value": u.email, "text": u.email }, { "value": u.last_name, "text": u.last_name }, { "value": format_datetime_str(u.date_joined), "text": format_datetime_str(u.date_joined) }, { "value": format_datetime_str(u.last_login), "text": format_datetime_str(u.last_login) }] user_data.append(item) data = { "table": { "id": "adminTable", "name": u"小组管理员列表", "label": "admin", "header": [u"用户名", u"姓名", u"Email", u"手机", u"创建时间", u"最后登入"], "labels": ["username", "name", "email", "phone", "create_time", "last_login"], "key": 0, "edit": { "link": "/backend/update_admin_info", "items": [ { "index": 0, "enable": False, "type": "text" }, { "index": 1, "enable": True, "type": "text" }, { "index": 2, "enable": True, "type": "email" }, { "index": 3, "enable": True, "type": "text" } ] }, "remove": { "link": "/backend/remove_admin/", "param": "username", "label": "name" }, "body": user_data } } return render(request, 'table.html', data)
def load_activity_register_list(request, activity_id): register_data = [] for i, r in enumerate(admin.get_all_register(request.user, activity_id)): item = [{ "text": str(i + 1), "value": r.id }, { "text": r.volunteer.name, "value": r.volunteer.name }, { "text": r.get_status_display(), "value": r.status }, { "text": r.creator.first_name }, { "text": format_datetime_str(r.create_time) }, { "text": "%s-%d-%s" % (r.training_activity_mapping.training.name, r.training_activity_mapping.order, r.training_activity_mapping.activity_type.name) if r.training_activity_mapping else u"单独活动" }] if request.user.is_superuser: item.append( {"text": r.volunteer.group.name if r.volunteer.group else "-"}) register_data.append(item) data = { "table": { "id": "activityRegisterTable", "name": u"活动注册列表", "label": "activity", "header": ["ID", u"志愿者", u"状态", u"创建者", u"注册时间", u"关联培训"], "labels": ["id", "name", "status", "creator", "create_time", "training"], "edit": { "link": "/activity/update_activity_register", "items": [{ "index": 0, "enable": False, "type": "text" }, { "index": 2, "enable": True, "type": "select", "options": admin.get_activity_register_status_as_options() }] }, "remove": { "link": "/activity/remove_activity_register/", "label": "name", "param": "id" }, "body": register_data } } if request.user.is_superuser: data["table"]["header"].append(u"小组") data["table"]["labels"].append("group_id") return render(request, 'table.html', data)
def load_activity_list(request): at_data = [] for i, at in enumerate(admin.get_privileged_activities(request.user)): item = [{ "value": at.id, "text": str(i + 1) }, { "value": at.name, "text": at.name, "link": "/activity/register_list/%s/" % at.id }, { "value": at.type.id, "text": at.type.name }, { "value": format_datetime_str(at.start_time), "text": format_datetime_str(at.start_time) }, { "value": format_datetime_str(at.end_time), "text": format_datetime_str(at.end_time) }, { "value": at.address, "text": at.address }, { "text": at.get_status() }, { "text": admin.get_activity_register_count(at.id) }] at_data.append(item) data = { "table": { "id": "activityTable", "name": u"活动列表", "label": "activity", "header": ["ID", u"活动名称", u"活动类型", u"起始时间", u"结束时间", u"地址", u"状态", u"注册人数"], "labels": [ "id", "name", "type_id", "start_time", "end_time", "address", "status", "register_cnt" ], "edit": { "link": "/activity/update_activity", "items": [{ "index": 0, "enable": False, "type": "text" }, { "index": 1, "enable": True, "type": "text" }, { "index": 2, "enable": True, "type": "select", "options": get_all_types_as_options(request.user) }, { "index": 3, "enable": True, "type": "datetime" }, { "index": 4, "enable": True, "type": "datetime" }, { "index": 5, "enable": True, "type": "text" }] }, "remove": { "link": "/activity/remove_activity/", "label": "name", "param": "id" }, "view": { "link": "/activity/register_list/", "index": 0 }, "body": at_data } } return render(request, 'table.html', data)
def get_create_time(self): return format_datetime_str(self.create_time)