示例#1
0
 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)
示例#2
0
 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)
示例#3
0
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()
示例#4
0
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()
示例#5
0
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()
示例#6
0
def set_logout(user):
    update_instance(user, login_token=None)
示例#7
0
def set_login(user):
    update_instance(user,
                    login_at=timezone.now(),
                    login_token=hashlib.md5(str(uuid4())).hexdigest(),
                    login_fails=0)
示例#8
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()
示例#9
0
 def update_password(self, password_digest):
     update_instance(self, password_digest=password_digest)
示例#10
0
 def update_request_at(self, request_at=None):
     update_instance(self, request_at=(request_at or timezone.now()))
示例#11
0
 def logout(self, request=None):
     update_instance(self, logout_at=datetime.now())
     user_logout_signal.send(None,
                             user=self.user,
                             login=self,
                             request=request)
示例#12
0
 def do_request(self, request=None):
     update_instance(self, request_at=datetime.now())