小编Jon*_*son的帖子

如何在Django Rest Framework中更新用户密码?

我想问下面的代码提供更新密码,但我想在当前密码确认过程后更新密码.那么我应该为它添加什么呢?谢谢.

class UserPasswordSerializer(ModelSerializer):

    class Meta:
        model = User
        fields = [
            'password'
        ]

        extra_kwargs = {
            "password": {"write_only": True},
        }

    def update(self, instance, validated_data):
        for attr, value in validated_data.items():
            if attr == 'password':
                instance.set_password(value)
            else:
                setattr(instance, attr, value)
        instance.save()
        return instance
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

25
推荐指数
5
解决办法
2万
查看次数

读取控制台调色板的 RGB 值

\n\n

在C或C++中,有没有办法直接读取调色板RGB值?特别有趣的是 xterm(和其他)使用的扩展颜色空间来定义多达 256 种终端颜色。

\n\n

土豆

\n\n

恰当的例子是我想定义自己的颜色(使用 ANSI 转义序列,例如\\e]4;3;rgb:cc/78/33\\e\\\\或 直接在 c 中),但我需要在重新定义用户颜色之前保存它们(万一他们已经重新定义了颜色) )以便我可以在程序完成时恢复它们。破坏用户设置并不好。

\n\n

现在我的目标是使用 ANSI 转义序列以客户端方式执行此操作。但由于我找不到如何获取颜色,我开始考虑用 c 或 c++ 来实现这一点。

\n\n

该解决方案将被编写为具有本机扩展(基本上嵌入 c 或 c++ 代码)的 ruby​​ gem,我的目标是获得跨平台解决方案,即使主要目标是 OS X,其次是 Linux 环境......

\n\n

索斯

\n\n

从最初的实验开始,我已经可以为调色板中的代码点定义任何我想要的颜色。我还可以轻松恢复默认系统颜色(因为它们是 ANSI 标准)。我四处寻找在 ANSI 转义码中执行此操作的方法,但没有找到。我认为这是保存在内存中的某个地方,如果有任何方法可以找到位置,那么读取颜色应该很容易......

\n\n

甜点

\n\n

总结一下目前评论中的信息:

\n\n

看起来一致地执行此操作的唯一方法是用不同颜色打印 \xe2\x96\x88 字符的屏幕并从中获取颜色。由于这个项目应该是跨三个主要操作系统的平台,而且 Linux 目前在用户使用时有 3 个显示管理器,而 Windows 有两个(7 和 8),我只能想象时间和时间那会很有趣:)

\n\n

所以我的“解决方案”\xe2\x84\xa2 就是破坏用户的颜色(如果他们有除系统默认值之外的任何颜色......让我们面对它是相当不常见的)。我将提供一个设置文件,用户可以在其中告诉插件,如果他们对系统默认值不满意,应该恢复哪些颜色。务实又无聊,但这让我再次继续下去:)

\n

c c++ xterm console-application ansi-colors

5
推荐指数
1
解决办法
2159
查看次数

从字符串生成嵌套哈希并在ruby中深度合并

我在JSON格式的数据库中有一个哈希.例如

{
  "one" => {
    "two" => {
      "three" => {}
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

我需要从字符串生成这个.上面的例子将从字符串"one.two.three"生成.

首先,我该怎么做?

第二部分问题.我将收到多个字符串 - 每个字符串构建在最后一个字符串上.所以,如果我得到"one.two.three",然后是"one.two.four",我就是这样:

{
  "one" => {
    "two" => {
      "three" => {},
      "four" => {}
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

如果我两次获得"one.two.three",我希望最新的"三"值覆盖那里的内容.字符串也可以是任何长度(例如"one.two.three.four.five"或只是"one").希望这有道理吗?

ruby hash merge

3
推荐指数
1
解决办法
2828
查看次数

使用rspec测试rails STI子类

给定一个继承自ActiveRecord :: Base的类,让我们将其称为Task,我有两个子类,它们使用标准的Rails单表继承来专门化任务的某些方面,Activity和Training.

在查看其他可用之后我对该选择充满信心,因为模型的实际数据是相同的,只是行为不同.非常适合STI.

可以创建,启动,进行和完成任务.这是这些转换中涉及的一些逻辑,尤其start()是要求基类的特化.

因为我正在做这个TDD,并开始使用完整测试覆盖的工作任务调用,我现在想知道如何继续.我有几个我想过的情景:

  1. 复制Task的测试并通过一些小的修改来端到端地测试Activity和Training,以测试它们的专业化.亲:这很快捷.Con:它复制代码,虽然这可能不是一个大问题,但是当专业化数量增加时.

  2. 拆分测试并保留大部分测试代码,task_spec.rb同时将专业化测试移动到相应子类的新规范中.Pro:保持测试干燥.Con:我在基础测试中实例化哪个类?

最后一个问题是什么在唠叨我.现在我已经设置了基类测试来从一个音乐会子类中随机创建一个类,但这是一个好的形式吗?它几乎让我想要采用方法1只是为了保持测试运行一致或者我必须找到一种方法来为测试套件选择随机种子的类随机性,这样我至少可以重复随机选择.

我猜这一定是人们遇到的常见问题,但我找不到关于这个问题的任何好消息.你对这件事有什么资源或想法吗?

testing tdd unit-testing rspec ruby-on-rails

3
推荐指数
2
解决办法
4567
查看次数

是否有宝石规格。name 必须等于 gem 常量名称吗?

tl;博士

我试图将更大的应用程序的一部分作为可安装的引擎。引擎将以不同的形式存在,每一种都包含在自己的宝石中。我无法让 gem 名称与引擎常量名称不同。

细节

提取的部分包含用于注册、身份验证和会话处理的逻辑。该应用程序被世界不同地区的客户使用,对使用该产品的最终客户有不同的要求和规定。这促使我们为每个监管区域的这些需求创建单独的模块。它们当前位于 lib 目录中,并且根据配置加载不同的实现。

引擎的目标是安装适当的引擎,路由文件将所有相关调用路由到引擎。

由于我们有几个这样的注册模块,而且还有更多,我们需要为这些变体维护几个 gem。我正在尝试使 gems 具有不同的名称(auth_A、auth_B 等),但包含的引擎具有相同的内容名称 Auth::Engine。

这样我们就可以在 Gemfile 中包含正确的 gem,其余的就可以正常工作,因为无论运行什么版本,它应该路由到的端点总是相同的。

问题

我遇到的问题是我无法让 gem 具有一个名称而引擎具有另一个名称...

如果我生成一个新的引擎名称 auth,则可以将其安装在主应用程序中。如果我然后将 gem 名称和包含文件夹更改为 auth_a 并更新主机应用程序 Gemfile 它停止工作,我可以很好地捆绑,但是当我尝试启动主机应用程序时,它在连接到安装引擎时失败,抱怨 Auth::引擎是一个未定义的常量。

我的,稍微编辑了一下,gemspec 看起来像这样:

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "auth/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "auth_a"
  s.version     = Auth::VERSION
  s.authors     = ["Jonas Schubert Erlandsson"]
  s.email       = ["jonas.schubert.erlandsson@xxxxxx.com"]
  s.homepage    = "http://some.page.on/the/internet.html"
  s.summary     = "Authentication module for A"
  s.description = …
Run Code Online (Sandbox Code Playgroud)

gem rubygems ruby-on-rails gemspecs ruby-on-rails-3.2

3
推荐指数
1
解决办法
705
查看次数