一旦数据被清理和审查,就锁定一个时间点,使其不再进行进一步编辑。

edc-timepoint的Python项目详细描述


pypitraviscodecovdownloads

EDC时间点

一旦数据被清理和审查,锁定一个“时间点”以避免进一步编辑。

使用模块edc_timepoint,数据管理器或主管可以将表示时间点的模型实例标记为关闭以便进一步编辑。“时间点”模型的一个很好的候选对象是用于覆盖其他数据收集的模型,例如edc_appointment.appointment。当约会状态设置为“完成”时,时间点状态设置为closed,并且不允许对该约会所覆盖的数据进行进一步编辑。

配置时间点模型

选择表示时间点的模型。模型至少应该有一个日期时间字段和一个状态字段。例如,预约

classAppointment(TimepointModelMixin,BaseUuidModel):appt_datetime=models.DateTimeField(verbose_name='Appointment date and time')appt_status=models.CharField(verbose_name='Status',choices=APPT_STATUS,max_length=25,default='NEW')

TimepointModelMixin添加前缀为timepoint_<something>的字段和方法。还有一个加载在AppConfig.ready中的信号,它重置了时间点属性,应该Appointment.appt_statusDONE更改。

只有字段timepoint_status需要用户编辑。另一个timepoint_<something>是自动管理的。

在项目apps.py子类edc_timepoint.apps.AppConfig中,通过创建Timepoint实例并将其附加到AppConfig.timepoints

fromdjango.appsimportAppConfigasDjangoAppConfigfromedc_timepoint.appsimportAppConfigasEdcTimepointAppConfigParentfromedc_timepoint.timepointimportTimepointclassAppConfig(DjangoAppConfig):name='example'classEdcTimepointAppConfig(EdcTimepointAppConfigParent):timepoints=TimepointCollection(timepoints=[Timepoint(model='example.appointment',datetime_field='appt_datetime',status_field='appt_status',closed_status='DONE')])

用户更新Appointment,通常在约会完成时关闭它。然后,数据管理器或主管可以关闭Appointment,以便在审阅数据后进行进一步编辑。

要关闭Appointment以进一步编辑代码,需要调用timepoint_close_timepoint方法:

appointment=Appointment.objects.create(**options)appointment.appt_status='DONE'appointment.timepoint_close_timepoint()

如果在调用timepoint_close_timepointappointment.appt_status不是DONE,则会引发TimepointError

如果成功关闭约会以进行进一步编辑,则任何调用appointment.save()的尝试都将引发TimepointError

可以通过调用方法timepoint_open_timepoint重新打开Appointment进行编辑。

配置其他人使用时间点模型

继续上面的示例,其中Appointment是时间点模型。

要防止进一步编辑与Appointment相关的模型,请使用TimepointLookupModelMixinTimepointLookup类配置模型。这些模型将引用save上的时间点模型。

例如:

classVisitTimepointLookup(TimepointLookup):timepoint_related_model_lookup='appointment'classVisitModel(TimepointLookupModelMixin,BaseUuidModel):timepoint_lookup_cls=VisitTimepointLookupappointment=models.ForeignKey(Appointment)report_datetime=models.DateTimeField(default=timezone.now)

如果时间点模型的timepoint_statusclosed,则任何创建或修改VisitModel的尝试都将引发TimepointClosed异常。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen