def password_reset(request, key=None): """ 重置用户密码 """ try: register = Register.objects.get(activation_key=key) except Register.DoesNotExist: return HttpResponseForbidden(u'<h1>错误的 Key : %s </h1>' % key) try: user = User.objects.get(email=register.email) except User.DoesNotExist: return HttpResponseForbidden(u'<h2>无此 email 注册的用户 : %s </h2>' % register.email) form = build_form(SetPasswordForm, request, user=user) if form.is_valid(): form.clean_new_password2() form.save() return { 'PASSWORD_RESET_DONE': True, } return {'NEW_REQUEST': True, 'form': form}
def password_reset_request(request): ''' 用户请求重置密码密码 ''' form = build_form(PasswordResetRequestForm, request) if form.is_valid(): email = form.cleaned_data['email'] try: user = User.objects.get(email=email) except User.DoesNotExist: return { 'NOT_EXIST_EMAIL': True, 'email': email, 'REASON': '该 Email 还未注册用户 !' } try: register = Register.objects.get(email=email) register.reset_activation_key() register.save() except Register.DoesNotExist: register = Register.objects.create_profile(email) # 发送邮件 subject = u'YLinux.org 重置密码邮件' message = u"尊敬的 %s ,应您的要求,重置密码 URL 是, http://ylinux.org/account/password/reset/%s" % ( email, register.activation_key) user.email_user(subject=subject, message=message, from_email=settings.DEFAULT_FROM_EMAIL) return {'EMAIL_SENT': True, 'email': email} return {'NEW_REQUEST': True, 'form': form}
def request_register(request): ''' 使用 email 申请一个注册 URL ''' form = build_form (RequestRegisterForm, request) if form.is_valid(): email = form.cleaned_data['email'] try: register = Register.objects.get(email=email) return {'ALREADY_USED_EMAIL':True, 'email':email, 'REASON':'不要使用同一个 Email 重复申请注册!'} except Register.DoesNotExist: pass try: user = User.objects.get(email=email) return {'ALREADY_USED_EMAIL':True, 'email':email, 'REASON':'该用户已经成功加入 YLinux !'} except User.DoesNotExist: pass register=Register.objects.create_profile(email) if register: register.send_activation_email() #url= "http://ylinux.org/account/register/%s" % register.activation_key #return {'EMAIL_SENT':True, 'email':email, 'register_url':url} return {'EMAIL_SENT':True, 'email':email} return {'NEW_REQUEST':True, 'form':form}
def password_reset_request (request): ''' 用户请求重置密码密码 ''' form = build_form (PasswordResetRequestForm, request) if form.is_valid(): email = form.cleaned_data['email'] try: user = User.objects.get(email=email) except User.DoesNotExist: return {'NOT_EXIST_EMAIL':True, 'email':email, 'REASON':'该 Email 还未注册用户 !'} try: register = Register.objects.get(email=email) register.reset_activation_key() register.save() except Register.DoesNotExist: register=Register.objects.create_profile(email) # 发送邮件 subject = u'YLinux.org 重置密码邮件' message = u"尊敬的 %s ,应您的要求,重置密码 URL 是, http://ylinux.org/account/password/reset/%s" % (email, register.activation_key) user.email_user (subject = subject, message = message, from_email=settings.DEFAULT_FROM_EMAIL) return {'EMAIL_SENT':True, 'email':email} return {'NEW_REQUEST':True, 'form':form}
def add_post(request, id): """添加一个Post(wiki 形式)""" if not request.user.is_authenticated(): return HttpResponseForbidden('<h1>您没有这个权限!请 <a href="/account/login">登录</a></h1>') topic = get_object_or_404(Topic, pk=id) if not topic.catalog.has_access(request.user): return HttpResponseForbidden("<h1>您没有权限回复此帖!</h1>") # 如果 topic 已锁,则重定向到显示 topic if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = ylinux_get_ip(request) form = build_form(AddPostForm, request, topic=topic, user=request.user, ip=ip) if form.is_valid(): post = form.save() # set last post topic.last_post = Post.objects.filter(topic=topic).latest("updated") topic.save() url = reverse("wiki:show_topic", args=[post.topic.id]) return HttpResponseRedirect(url) posts = topic.posts.all().select_related() return {"form": form, "posts": posts, "topic": topic}
def edit_topic(request, id): topic = get_object_or_404(Topic, pk=id) if topic.user != request.user: return HttpResponseForbidden('<h1>您没有这个权限!</h1>') parents = get_parents(Catalog, topic.catalog.id) ip = ylinux_get_ip(request) form = build_form(EditTopicForm, request, text=topic.body, user_ip=ip, instance=topic) if form.is_valid(): topic = form.save() url = reverse('wiki:show_topic', args=[id]) return HttpResponseRedirect(url) attachments = Attachment.objects.filter(topic=topic) return { 'form': form, 'parents': parents, 'topic': topic, 'attachments': attachments }
def add_topic(request, id): ''' id 是 Catalog ''' if not id: return {'errors': '没有指定 Catalog'} catalog = get_object_or_404(Catalog, pk=id) if not catalog.has_access(request.user): return HttpResponseForbidden(u'<h2>你没有权限在此组中发贴!</h2>') parents = get_parents(Catalog, id) ip = ylinux_get_ip(request) form = build_form(AddTopicForm, request, catalog=catalog, user=request.user, user_ip=ip) if form.is_valid(): topic = form.save() # set last topic catalog.last_topic = topic catalog.save() url = reverse('wiki:show_topic', args=[topic.id]) return HttpResponseRedirect(url) return {'parents': parents, 'form': form}
def add_post(request, id): """添加一个Post(wiki 形式)""" if not request.user.is_authenticated(): return HttpResponseForbidden( '<h1>您没有这个权限!请 <a href="/account/login">登录</a></h1>') topic = get_object_or_404(Topic, pk=id) if not topic.catalog.has_access(request.user): return HttpResponseForbidden('<h1>您没有权限回复此帖!</h1>') # 如果 topic 已锁,则重定向到显示 topic if topic and topic.closed: return HttpResponseRedirect(topic.get_absolute_url()) ip = ylinux_get_ip(request) form = build_form(AddPostForm, request, topic=topic, user=request.user, ip=ip) if form.is_valid(): post = form.save() # set last post topic.last_post = Post.objects.filter(topic=topic).latest('updated') topic.save() url = reverse('wiki:show_topic', args=[post.topic.id]) return HttpResponseRedirect(url) posts = topic.posts.all().select_related() return {'form': form, 'posts': posts, 'topic': topic}
def add_group(request): form = build_form(AddGroupForm, request) if form.is_valid(): group = form.save() url = reverse('admin:show_group', args=[group.id]) return HttpResponseRedirect(url) return {'form': form}
def add_permission(request): form = build_form(AddPermissionForm, request) if form.is_valid(): permission = form.save() url = reverse("admin:show_permission", args=[permission.id]) return HttpResponseRedirect(url) return {"form": form}
def add_user(request): form = build_form(AddUserForm, request) if form.is_valid(): user = form.save() url = reverse('admin:show_user', args=[user.id]) return HttpResponseRedirect(url) return {'form': form}
def add_permission(request): form = build_form(AddPermissionForm, request) if form.is_valid(): permission = form.save() url = reverse('admin:show_permission', args=[permission.id]) return HttpResponseRedirect(url) return {'form': form}
def add_group(request): form = build_form(AddGroupForm, request) if form.is_valid(): group = form.save() url = reverse("admin:show_group", args=[group.id]) return HttpResponseRedirect(url) return {"form": form}
def add_user(request): form = build_form(AddUserForm, request) if form.is_valid(): user = form.save() url = reverse("admin:show_user", args=[user.id]) return HttpResponseRedirect(url) return {"form": form}
def edit_user(request, id): user = get_object_or_404(User, pk=id) form = build_form(EditUserForm, request, instance=user) if form.is_valid(): form.save() url = reverse("admin:show_user", args=[id]) return HttpResponseRedirect(url) return {"form": form, "user": user}
def add_catalog(request, parent_id=None): if parent_id: catalog = get_object_or_404(Catalog, pk=parent_id) parents = get_parents(Catalog, catalog.id) form = build_form(AddCatalogForm, request, parent=catalog) else: form = build_form(AddCatalogForm, request) if form.is_valid(): catalog = form.save() url = reverse("admin:show_catalog", args=[catalog.id]) return HttpResponseRedirect(url) if parent_id: return {"catalog": catalog, "form": form, "parents": parents} else: return {"form": form}
def edit_user(request, id): user = get_object_or_404(User, pk=id) form = build_form(EditUserForm, request, instance=user) if form.is_valid(): form.save() url = reverse('admin:show_user', args=[id]) return HttpResponseRedirect(url) return {'form': form, 'user': user}
def edit_group(request, id): group = get_object_or_404(Group, pk=id) form = build_form(EditGroupForm, request, instance=group) if form.is_valid(): form.save() url = reverse("admin:show_group", args=[id]) return HttpResponseRedirect(url) return {"form": form, "group": group}
def edit_permission(request, id): permission = get_object_or_404(Permission, pk=id) form = build_form(EditPermissionForm, request, instance=permission) if form.is_valid(): form.save() url = reverse('admin:show_permission', args=[id]) return HttpResponseRedirect(url) return {'form': form, 'permission': permission}
def edit_permission(request, id): permission = get_object_or_404(Permission, pk=id) form = build_form(EditPermissionForm, request, instance=permission) if form.is_valid(): form.save() url = reverse("admin:show_permission", args=[id]) return HttpResponseRedirect(url) return {"form": form, "permission": permission}
def edit_group(request, id): group = get_object_or_404(Group, pk=id) form = build_form(EditGroupForm, request, instance=group) if form.is_valid(): form.save() url = reverse('admin:show_group', args=[id]) return HttpResponseRedirect(url) return {'form': form, 'group': group}
def ajax_add_topic(request, id): if not id: return {"errors": "没有指定 Catalog"} catalog = get_object_or_404(Catalog, pk=id) if not catalog.has_access(request.user): return HttpResponseForbidden(u"<h2>你没有权限在此组中发贴!</h2>") parents = get_parents(Catalog, id) ip = ylinux_get_ip(request) form = build_form(AddTopicForm, request, catalog=catalog, user=request.user, user_ip=ip) return {"parents": parents, "form": form, "id": id}
def edit_catalog(request, id): catalog = get_object_or_404(Catalog, pk=id) parents = get_parents(Catalog, id) form = build_form(EditCatalogForm, request, parent=catalog.parent, instance=catalog) if form.is_valid(): catalog = form.save() url = reverse("admin:show_catalog", args=[catalog.id]) return HttpResponseRedirect(url) return {"form": form, "parents": parents, "catalog": catalog}
def register(request, key=None): """用户注册视图,根据用户名和Email信息注册新用户。 """ try: register = Register.objects.get(activation_key=key) except Register.DoesNotExist: return HttpResponseForbidden(u'<h1>错误的 Key : %s </h1>' % key) form = build_form(RegisterForm, request) if form.is_valid(): # 从 POST 取得用户名,判断是否已存在 username = form.cleaned_data['username'] try: user = User.objects.get(username=username) return render_to_response("account/register_failed.html", { "title": "注册失败", "username": username, "error_type": "username", }, context_instance=RequestContext(request)) except User.DoesNotExist: pass # 从 POST 取得 password password_first = form.cleaned_data['password_first'] password_second = form.cleaned_data['password_second'] if not password_first == password_second: return render_to_response("account/register_failed.html", { "title": "注册失败", "username": username, "error_type": "密码不匹配", }, context_instance=RequestContext(request)) user = Register.objects.create_activate_user(username=username, email=register.email, password=password_first, activation_key=key) #User.objects.create_user(username=username, email=register.email, password=password_first) # 注册成功 return render_to_response("account/register_successful.html", { "title": "注册成功", "username": username }, context_instance=RequestContext(request)) # 打开注册页面 return render_to_response("account/register.html", {'form': form}, context_instance=RequestContext(request))
def add_catalog(request, parent_id=None): if parent_id: catalog = get_object_or_404(Catalog, pk=parent_id) parents = get_parents(Catalog, catalog.id) form = build_form(AddCatalogForm, request, parent=catalog) else: form = build_form(AddCatalogForm, request) if form.is_valid(): catalog = form.save() url = reverse('admin:show_catalog', args=[catalog.id]) return HttpResponseRedirect(url) if parent_id: return { 'catalog': catalog, 'form': form, 'parents': parents, } else: return {'form': form}
def edit_catalog(request, id): catalog = get_object_or_404(Catalog, pk=id) parents = get_parents(Catalog, id) form = build_form(EditCatalogForm, request, parent=catalog.parent, instance=catalog) if form.is_valid(): catalog = form.save() url = reverse('admin:show_catalog', args=[catalog.id]) return HttpResponseRedirect(url) return {'form': form, 'parents': parents, 'catalog': catalog}
def ajax_add_topic(request, id): if not id: return {'errors': '没有指定 Catalog'} catalog = get_object_or_404(Catalog, pk=id) if not catalog.has_access(request.user): return HttpResponseForbidden(u'<h2>你没有权限在此组中发贴!</h2>') parents = get_parents(Catalog, id) ip = ylinux_get_ip(request) form = build_form(AddTopicForm, request, catalog=catalog, user=request.user, user_ip=ip) return {'parents': parents, 'form': form, 'id': id}
def register(request, key=None): """用户注册视图,根据用户名和Email信息注册新用户。 """ try: register = Register.objects.get(activation_key=key) except Register.DoesNotExist: return HttpResponseForbidden(u'<h1>错误的 Key : %s </h1>' % key) form = build_form (RegisterForm, request) if form.is_valid(): # 从 POST 取得用户名,判断是否已存在 username = form.cleaned_data['username'] try: user = User.objects.get(username=username) return render_to_response("account/register_failed.html", {"title":"注册失败","username":username, "error_type":"username",}, context_instance=RequestContext(request)) except User.DoesNotExist: pass # 从 POST 取得 password password_first = form.cleaned_data['password_first'] password_second = form.cleaned_data['password_second'] if not password_first == password_second: return render_to_response("account/register_failed.html", {"title":"注册失败","username":username, "error_type":"密码不匹配",}, context_instance=RequestContext(request)) user = Register.objects.create_activate_user ( username=username, email=register.email, password=password_first, activation_key=key ) #User.objects.create_user(username=username, email=register.email, password=password_first) # 注册成功 return render_to_response("account/register_successful.html", {"title":"注册成功","username":username}, context_instance=RequestContext(request)) # 打开注册页面 return render_to_response("account/register.html", { 'form': form }, context_instance=RequestContext(request))
def edit_topic(request, id): topic = get_object_or_404(Topic, pk=id) if topic.user != request.user: return HttpResponseForbidden("<h1>您没有这个权限!</h1>") parents = get_parents(Catalog, topic.catalog.id) ip = ylinux_get_ip(request) form = build_form(EditTopicForm, request, text=topic.body, user_ip=ip, instance=topic) if form.is_valid(): topic = form.save() url = reverse("wiki:show_topic", args=[id]) return HttpResponseRedirect(url) attachments = Attachment.objects.filter(topic=topic) return {"form": form, "parents": parents, "topic": topic, "attachments": attachments}
def password_reset (request, key=None): """ 重置用户密码 """ try: register = Register.objects.get(activation_key=key) except Register.DoesNotExist: return HttpResponseForbidden(u'<h1>错误的 Key : %s </h1>' % key) try: user = User.objects.get(email=register.email) except User.DoesNotExist: return HttpResponseForbidden(u'<h2>无此 email 注册的用户 : %s </h2>' % register.email) form = build_form (SetPasswordForm, request, user=user) if form.is_valid(): form.clean_new_password2() form.save() return {'PASSWORD_RESET_DONE':True,} return {'NEW_REQUEST':True, 'form':form}
def add_topic(request, id): """ id 是 Catalog """ if not id: return {"errors": "没有指定 Catalog"} catalog = get_object_or_404(Catalog, pk=id) if not catalog.has_access(request.user): return HttpResponseForbidden(u"<h2>你没有权限在此组中发贴!</h2>") parents = get_parents(Catalog, id) ip = ylinux_get_ip(request) form = build_form(AddTopicForm, request, catalog=catalog, user=request.user, user_ip=ip) if form.is_valid(): topic = form.save() # set last topic catalog.last_topic = topic catalog.save() url = reverse("wiki:show_topic", args=[topic.id]) return HttpResponseRedirect(url) return {"parents": parents, "form": form}
def request_register(request): ''' 使用 email 申请一个注册 URL ''' form = build_form(RequestRegisterForm, request) if form.is_valid(): email = form.cleaned_data['email'] try: register = Register.objects.get(email=email) return { 'ALREADY_USED_EMAIL': True, 'email': email, 'REASON': '不要使用同一个 Email 重复申请注册!' } except Register.DoesNotExist: pass try: user = User.objects.get(email=email) return { 'ALREADY_USED_EMAIL': True, 'email': email, 'REASON': '该用户已经成功加入 YLinux !' } except User.DoesNotExist: pass register = Register.objects.create_profile(email) if register: register.send_activation_email() #url= "http://ylinux.org/account/register/%s" % register.activation_key #return {'EMAIL_SENT':True, 'email':email, 'register_url':url} return {'EMAIL_SENT': True, 'email': email} return {'NEW_REQUEST': True, 'form': form}