def get_settings(request): """Returns session fishery simulation settings as JSONResponse. """ session_obj = views_support.create_settings(request) settings = views_support.get_settings_session(session_obj) return JsonResponse({"settings" : settings})
def edit_settings(request): """View for editing session fishery simulation settings. """ #if new session (visitor) session_obj = views_support.create_settings(request) #setup forms #formsets in two parts - nonlist settings and list settings (which can be added / deleted) SettingValueFormSet = modelformset_factory( models.SettingValueSession, form=forms.SettingValueForm, formset=forms.SettingValueFormset, extra=0) SettingValueListFormSet = modelformset_factory( models.SettingValueSession, form=forms.SettingValueForm, formset=forms.SettingValueFormset, extra=2, can_delete=True) #update session settings based on form if request.method == 'POST': formset_nodelete = SettingValueFormSet(request.POST, request.FILES, prefix="nodelete") if formset_nodelete.is_valid(): formset_nodelete.save() formset_nodelete = SettingValueFormSet( queryset=models.SettingValueSession.objects.exclude(setting_id__name__contains = "consumption") .filter(session_id=session_obj), prefix='nodelete') formset_delete = SettingValueListFormSet(request.POST, request.FILES, prefix="delete") if formset_delete.is_valid(): #make sure the first index of the setting lists aren't deleted for form in formset_delete: if "index" in form.cleaned_data and int(form.cleaned_data["index"]) == 0: form.cleaned_data["DELETE"] = False formset_delete.save() formset_delete = SettingValueListFormSet( queryset=models.SettingValueSession.objects.filter(setting_id__name__contains = "consumption") .filter(session_id=session_obj), prefix='delete') #populate forms with session data else: formset_nodelete = SettingValueFormSet( queryset=models.SettingValueSession.objects.exclude(setting_id__name__contains = "consumption") .filter(session_id=session_obj), prefix='nodelete') formset_delete = SettingValueListFormSet( queryset=models.SettingValueSession.objects.filter(setting_id__name__contains = "consumption") .filter(session_id=session_obj), prefix='delete') return render(request, './fisheryui/edit_settings.html', {'formset_nodelete' : formset_nodelete, 'formset_delete' : formset_delete})
def batch_study(request): """View for editing batch study settings. """ session_obj = views_support.create_settings(request) #get settings sess_settings = views_support.get_settings_session(session_obj) list_sess_settings = [] #convert to list of [settingname, index, value] for sett in fishery.MPyGetFisherySettingOrder(): if not isinstance(sess_settings[sett], list): list_sess_settings.append([sett, 0, sess_settings[sett]]) for sett in views_support.SETTINGS_LIST: for i in range(0, len(sess_settings[sett])): list_sess_settings.append([sett, i, sess_settings[sett][i]]) return render(request, './fisheryui/batch_study.html', {"sess_settings": list_sess_settings})
def create_simulation(request): """Creates fishery simulation using session settings. Returns :class:`JsonResponse`. Returns ---------- fishery_id : int Unique id for the fishery simulation. """ session_obj = views_support.create_settings(request) settings = views_support.get_settings_session(session_obj) try: fishery.MPySetRNGSeed(-1) fishery_id = fishery.MPyCreateFishery(settings) print("Created fishery %d." % fishery_id) except Exception as e: print(e) fishery_id = -1 print("Failed to create fishery. Check settings.") return JsonResponse({"fishery_id" : fishery_id})