Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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)
Пример #10
0
 def get_start_time(self):
     return format_datetime_str(self.start_time)
Пример #11
0
 def get_end_time(self):
     return format_datetime_str(self.end_time)
Пример #12
0
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
Пример #13
0
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)
Пример #14
0
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)
Пример #15
0
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)
Пример #16
0
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)
Пример #17
0
 def get_create_time(self):
     return format_datetime_str(self.create_time)