def update_login_fails(self, fails=1): updates = {'login_fails': self.login_fails} if self.login_fail_at is None or self.login_fail_lock_remain == 0: updates['login_fail_at'] = timezone.now() updates['login_fails'] = 0 updates['login_fails'] += fails update_instance(self, **updates)
def update_login_fails(self, fails=1): u""" 更新登录错误次数 :param fails: 需要增加的次数 """ updates = {'login_fails': self.login_fails} if self.login_fail_at is None or self.login_fail_lock_remain == 0: updates['login_fail_at'] = datetime.now() updates['login_fails'] = 0 updates['login_fails'] += fails update_instance(self, **updates)
def on_path_pre_save(instance, **kwargs): instance.path = instance.path.strip(' /') instance.depth = instance.path.count('/') if not instance.pk: try: parent_last = Path.objects.children(instance.parent_path).latest() instance.sort = parent_last.sort + 1 except Path.DoesNotExist: pass # 修改子栏目的父路径 if instance.pk: p = Path.objects.get(pk=instance.pk) if p.path != instance.path: for i in p.children(PATH_DEPTH_ALL): path = instance.path + i.path[len(p.path):] update_instance(i, path=path) i.update_content_path()
def on_column_pre_save(instance, **kwargs): instance.path = instance.path.strip(' /') instance.depth = instance.path.count('/') if not instance.pk: try: parent_last = Column.objects.children( instance.parent_path).latest('sort') instance.sort = parent_last.sort + 1 except Column.DoesNotExist: pass # 修改子栏目的父路径 if instance.pk: col = Column.objects.get(pk=instance.pk) if col.path != instance.path: for i in col.children(-1): path = instance.path + i.path[len(col.path):] update_instance(i, path=path) i.update_content_path()
def content_edit(request, response, column_select, content_id=None): user = get_request_user(request) is_content_edit = True column = column_select.selected Model = column.get_model_object('model') Form = column.get_model_object('form') if Model is None or Form is None: raise Alert(Alert.ERROR, '此栏目 %s 不可添加内容' % column) content = Model.objects.get(column=column, pk=content_id) if content_id else None model_log = ModelLogger(content) # 权限检查 if not content: has_perm(request, 'cms.content.create') elif content.create_user == user: has_perm(request, 'cms.content.update.self') else: has_perm(request, 'cms.content.update.other') # 删除操作 delete_id = request.GET.get('delete') if content and not content.is_deleted and content_id == delete_id: has_perm(request, 'cms.action.delete') update_instance(content, is_deleted=True) log.success(request, model_log.message(content), log.DELETE) messages.success(request, '删除内容: %s 成功' % str(content)) return redirect('admin:cms:content-path', column.path) # 删除恢复 recover_id = request.GET.get('recover') if content and content.is_deleted and content_id == recover_id: has_perm(request, 'cms.content.recover') update_instance(content, is_deleted=False) log.success(request, model_log.message(content), log.UPDATE) messages.success(request, '恢复删除内容: %s 成功' % str(content)) return redirect('admin:cms:content-path', column.path) if request.method == 'POST': form = Form(request.POST, request.FILES, instance=content) if form.is_valid(): form.instance.column = column form.instance.column_path = column.path form.instance.column_depth = column.depth if not form.instance.create_user: form.instance.create_user = user form.instance.update_user = user obj = form.save() log.success(request, model_log.message(obj), log.CREATE) messages.success(request, (content and '修改' or '创建') + '内容: ' + str(obj) + ' 成功') if request.GET.get('next'): return HttpResponseRedirect(request.GET.get('next')) return redirect('admin:cms:content-path', column.path) else: form = Form(instance=content) # 表单字段分离 main_fields = [] meta_fields = [] meta_fields_name = ['is_hidden'] _t = column.get_model_object('form_meta_fields') if _t: meta_fields_name.extend(_t) for i in form.visible_fields(): if i.name in meta_fields_name: meta_fields.append(i) else: main_fields.append(i) return 'content', locals()
def set_logout(user): update_instance(user, login_token=None)
def set_login(user): update_instance(user, login_at=timezone.now(), login_token=hashlib.md5(str(uuid4())).hexdigest(), login_fails=0)
def _content_edit(request, response, current_path=None, content_id=None): user = get_request_user(request) is_content_edit = True if content_id: content_base = ContentBase.objects.get(pk=content_id) Model = content_base.model_class Form = content_base.form_class path = content_base.path content = Model.objects.get(pk=content_id) current_path = get_current_path(path.path) elif current_path: path = current_path.selected Model = path.model_class Form = path.form_class content = None else: raise Alert(Alert.ERROR, u'缺少必要参数') if Form is None: raise Alert(Alert.ERROR, u'此栏目 %s 不可添加内容' % path) model_log = ModelLogger(content) # 权限检查 if not content: has_perm(request, 'cms.content.create') elif content.create_user == user: has_perm(request, 'cms.content.update.self') else: has_perm(request, 'cms.content.update.other') # 删除操作 delete_id = request.GET.get('delete') if content and not content.is_deleted and content_id == delete_id: has_perm(request, 'cms.action.delete') update_instance(content, is_deleted=True) log.success(request, model_log.message(content), log.DELETE) messages.success(request, u'删除内容: %s 成功' % unicode(content)) return redirect('admin:cms:content-path', path.path) # 删除恢复 recover_id = request.GET.get('recover') if content and content.is_deleted and content_id == recover_id: has_perm(request, 'cms.content.recover') update_instance(content, is_deleted=False) log.success(request, model_log.message(content), log.UPDATE) messages.success(request, u'恢复删除内容: %s 成功' % unicode(content)) return redirect('admin:cms:content-path', path.path) if request.method == 'POST': form = Form(request.POST, request.FILES, instance=content) if form.is_valid(): form.instance.path = path form.instance.path_value = path.path form.instance.path_depth = path.depth if not form.instance.model: form.instance.model = path.model if not form.instance.create_user: form.instance.create_user = user form.instance.update_user = user obj = form.save() log.success(request, model_log.message(obj), log.CREATE) messages.success(request, (content and u'修改' or u'创建') + u'内容: ' + unicode(obj) + u' 成功') if request.GET.get('next'): return HttpResponseRedirect(request.GET.get('next')) return redirect('admin:cms:content-path', path.path) else: form = Form(instance=content) # 表单字段分离 main_fields = [] meta_fields = [] meta_fields_name = ['flag', 'collections', 'is_hidden'] _t = path.model_config.get('form_meta_fields') if _t: meta_fields_name.extend(_t) for i in form.visible_fields(): if i.name in meta_fields_name: meta_fields.append(i) else: main_fields.append(i) return 'content_edit', locals()
def update_password(self, password_digest): update_instance(self, password_digest=password_digest)
def update_request_at(self, request_at=None): update_instance(self, request_at=(request_at or timezone.now()))
def logout(self, request=None): update_instance(self, logout_at=datetime.now()) user_logout_signal.send(None, user=self.user, login=self, request=request)
def do_request(self, request=None): update_instance(self, request_at=datetime.now())