views.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:nrp 作者: django-rea 项目源码 文件源码
def change_pattern(request, pattern_id, use_case_id):
    pattern = get_object_or_404(ProcessPattern, id=pattern_id)
    use_case = get_object_or_404(UseCase, id=use_case_id)
    slots = use_case.allowed_event_types() 
    #import pdb; pdb.set_trace()
    for slot in slots:
        slot.resource_types = pattern.get_resource_types(slot)
        slot.facets = pattern.facets_for_event_type(slot)          
        FacetValueFormSet = modelformset_factory(
            PatternFacetValue,
            form=PatternFacetValueForm,
            can_delete=True,
            extra=2,
            )
        facet_value_formset = FacetValueFormSet(
            queryset=slot.facets,
            data=request.POST or None,
            prefix=slot.slug)
        slot.formset = facet_value_formset
        slot.rts = ResourceTypeSelectionForm(
            qs=slot.resource_types,
            prefix=slot.slug)
        #import pdb; pdb.set_trace()
    slot_ids = [slot.id for slot in slots]

    if request.method == "POST":
        #import pdb; pdb.set_trace()
        for slot in slots:
            for form in slot.formset:
                if form.is_valid():
                    data = form.cleaned_data
                    old_value = data.get("id")
                    new_value = data.get("facet_value")
                    if old_value:
                        if data["DELETE"]:
                            old_value.delete()
                        elif old_value.facet_value != new_value:
                            if new_value:
                                form.save()
                    elif new_value:
                        if not data["DELETE"]:
                            fv = PatternFacetValue(
                                pattern=pattern,
                                event_type=slot,
                                facet_value=new_value)
                            fv.save()

        return HttpResponseRedirect('/%s/%s/%s/'
            % ('accounting/change-pattern', pattern.id, use_case.id))

    return render_to_response("valueaccounting/change_pattern.html", {
        "pattern": pattern,
        "slots": slots,
        "use_case": use_case,
    }, context_instance=RequestContext(request))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号