Exemple #1
0
def password_reset(request,app_name,table_name,obj_id):
	admin_class = kind_admin.enabled_admins[app_name][table_name]
	model_form_class = create_model_form(request,admin_class)
	obj = admin_class.model.objects.get(id=obj_id)
	errors = {}
	if request.method == 'POST':
		_password1 = request.POST.get("password1")
		_password2 = request.POST.get("password2")
		if _password1 == _password2:
			if len(_password2) >5:
				print('obj reset',obj,type(obj))
				obj.set_password(_password1)         #
				obj.save()
				return redirect(request.path.rstrip('password/'))
			else:
				errors['password_too_short'] = "muset not less than 6 letters"
		else:
			errors['invalid_password'] = "******"
	return render(request,'kind_admin/password_reset.html',{'obj':obj,
	                                                        'errors':errors,
	                                                        'app_name':app_name,
	                                                        'table_name':table_name,
	                                                        'table_name_detail': admin_class.model._meta.verbose_name_plural,
	                                                        'obj_id':obj_id
	                                                        })
Exemple #2
0
def table_add(request, app_name, table_name):
    """
    添加表信息
    :param request:
    :param app_name: APP名称
    :param table_name: 表名称
    :return:
    """
    model_form_obj = None  # 要返回的model_form对象
    admin_class = kind_admin.enabled_admins[app_name][table_name]  # 获取admin_class
    if admin_class.new_add_url:  # 如果有新的添加对象的地址则跳转至新的添加地址
        return redirect(admin_class.new_add_url)
    admin_class.need_readonly = False  # 对对象进行添加时,不需要有readonly的需求
    model_form_class = create_model_form(admin_class)  # 获取ModelForm
    if request.method == "GET":
        model_form_obj = model_form_class()
    elif request.method == "POST":
        model_form_obj = model_form_class(request.POST)
        if model_form_obj.is_valid():
            if not admin_class.table_readonly:  # 不是只读的表才会进行增加操作
                model_form_obj.save()  # 增加对象
            if request.POST.get("_save"):
                return redirect("/kind_admin/%s/%s/" % (app_name, table_name))
            elif request.POST.get("_addanother"):
                return redirect("/kind_admin/%s/%s/add/" % (app_name, table_name))
            elif request.POST.get("_continue"):
                return redirect("/kind_admin/%s/%s/%s/change/" % (app_name, table_name, model_form_obj.instance.id))
    return render(request, "kind_admin/table_add.html", {
        "admin_class": admin_class,
        "model_form_obj": model_form_obj,
        "app_name": app_name,
        "table_name": table_name,
    })
Exemple #3
0
def table_obj_change(request,app_name,table_name,obj_id):
	admin_class = kind_admin.enabled_admins[app_name][table_name]
	model_form_class = create_model_form(request,admin_class)
	obj = admin_class.model.objects.get(id=obj_id)
	form_obj = model_form_class(instance=obj)
	if request.method == 'POST':
		form_obj = model_form_class(request.POST,instance=obj)
		if form_obj.is_valid():
			form_obj.save()
		else:
			print('errors',form_obj.errors)
	return render(request,'kind_admin/table_obj_change.html',
	              {'form_obj':form_obj,
	               'app_name':app_name,
	               'table_name':table_name,
	               'table_name_detail': admin_class.model._meta.verbose_name_plural,
	               'admin_class':admin_class,
	               'obj_id':obj_id})
Exemple #4
0
def table_change(request, app_name, table_name, obj_id):
    """
    对表进行修改操作
    :param request:
    :param app_name: APP名称
    :param table_name: 表名称
    :param obj_id: 一条记录的主键ID
    :return:
    """
    model_form_obj = None  # 要返回的model_form对象
    admin_class = kind_admin.enabled_admins[app_name][
        table_name]  # 获取admin_class
    admin_class.need_readonly = True  # 对对象进行修改时,需要有readonly的需求
    model_form_class = create_model_form(admin_class)  # 获取ModelForm
    obj = admin_class.model.objects.filter(id=obj_id).first()  # 获取要修改的对象
    admin_class.request = request  # 在admin_class封装request对象
    for field in admin_class.dynamic_default_fields:
        if hasattr(admin_class, "dynamic_default_%s" % field):
            dynamic_default_func = getattr(admin_class,
                                           "dynamic_default_%s" % field)
            setattr(obj, field, dynamic_default_func(admin_class))
    if request.method == "GET":
        model_form_obj = model_form_class(instance=obj)
    elif request.method == "POST":
        model_form_obj = model_form_class(request.POST, instance=obj)
        if model_form_obj.is_valid():
            if not admin_class.table_readonly:  # 不是只读的表才会进行更新操作
                model_form_obj.save()  # 更新对象
            if request.POST.get("_save"):
                return redirect("/kind_admin/%s/%s/" % (app_name, table_name))
            elif request.POST.get("_addanother"):
                return redirect("/kind_admin/%s/%s/add/" %
                                (app_name, table_name))
            elif request.POST.get("_continue"):
                return redirect(
                    "/kind_admin/%s/%s/%s/change/" %
                    (app_name, table_name, model_form_obj.instance.id))
    return render(
        request, "kind_admin/table_change.html", {
            "admin_class": admin_class,
            "model_form_obj": model_form_obj,
            "app_name": app_name,
            "table_name": table_name,
        })
Exemple #5
0
def table_obj_add(request,app_name,table_name):
	admin_class = kind_admin.enabled_admins[app_name][table_name]
	admin_class.is_add_form = True
	model_form_class = create_model_form(request,admin_class)
	if not admin_class.using_add_func:
		rewrite_add_page = admin_class.rewrite_add_page(admin_class,request,app_name,table_name,model_form_class)
		return rewrite_add_page
	if request.method == 'POST':
		form_obj = model_form_class(request.POST)
		if form_obj.is_valid():
			form_obj.save()
			return redirect(request.path.replace("/add/",'/'))
	form_obj = model_form_class()
	return render(request,'kind_admin/table_obj_add.html',
	              {'form_obj':form_obj,
	               'app_name':app_name,
	               'table_name':table_name,
	               'table_name_detail': admin_class.model._meta.verbose_name_plural,
	               'admin_class': admin_class,
	               })