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

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第三方库


热门话题
swing Java按钮/网格布局   java列出Google日历中的所有事件   java无效:单击API publisher test按钮后连接到后端时出错   带有内部赋值的java While循环导致checkstyle错误   java为什么trimToSize/ensureCapacity方法提供“公共”级访问?   文件输出流的java问题   ListIterator和并发修改异常的java问题   java如何使用两个URL映射   无法识别使用“./../”构造的字符串java相对路径,为什么?   首次写入remotelyclosedsocket不会触发异常,对吗?JAVA   java OneDrive REST API为文件上载提供了400个无效谓词   Java泛型、集合接口和对象类的问题   OpenSSL Java安全提供程序   jmeter java运行jmx禁用操作