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))
评论列表
文章目录