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 })
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, })
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})
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, })
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, })