Пример #1
0
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})
Пример #2
0
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})
Пример #3
0
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})
Пример #4
0
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})