Skip to content
Snippets Groups Projects
views.py 3.87 KiB
# -*- coding: UTF-8 -*-
#
# Copyright (c) 2013-2023 NIBIO.
#
# This file is part of VIPSWeb 
# (see https://gitlab.nibio.no/VIPS/VIPSWeb).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#

from django.shortcuts import render
from django.utils import translation
from django.conf import settings
from observations.forms import ObservationTimeFilterForm
from organisms.models import CropCategory
from datetime import datetime
from dateutil.relativedelta import relativedelta

def index_old(request):
    form = ObservationTimeFilterForm(request.GET)
    if form == None:
        form = ObservationTimeFilterForm() 
    context = {
              "crop_categories": CropCategory.get_crop_categories(translation.get_language()),
              "form" : form
               }
    return render(request, 'observations/index_old.html', context)

def index(request):
    # organizationId (internally - either from logged in user or from web page
    if request.session.get("vips_logic_user", None) != None:
        organization_id = request.session["vips_logic_user"]["organization_id"]
    else:
        organization_id = settings.VIPS_ORGANIZATION_ID
    
    date_from = datetime.strptime(request.GET.get("from", "%s-01-01" % (datetime.now() + relativedelta(months = settings.SYSTEM_TIME_OFFSET_MONTHS)).year),"%Y-%m-%d")
    if request.GET.get("to", None) is not None and len(request.GET.get("to", None).strip()) > 0:
        date_to = datetime.strptime(request.GET["to"], "%Y-%m-%d")
    else:
        date_to = datetime.now() + relativedelta(months = settings.SYSTEM_TIME_OFFSET_MONTHS) + relativedelta(days=1)
    #date_to = datetime.strptime(request.GET.get("to", "%s-12-31" % (datetime.now() + relativedelta(months = settings.SYSTEM_TIME_OFFSET_MONTHS)).year),"%Y-%m-%d")
    period_days = date_to - date_from
    current_day_in_period = (datetime.now() + relativedelta(months = settings.SYSTEM_TIME_OFFSET_MONTHS)) - date_from
    # cropCategoryId
    context = {
            "from" : datetime.strftime(date_from,"%Y-%m-%d"),
            "to" : datetime.strftime(date_to,"%Y-%m-%d"),
            "period_days" : period_days.days + 1,
            "current_day_in_period" : current_day_in_period,
            "pest_id" : request.GET.get("pestId", None),
            "crop_id" : request.GET.get("cropId", None),
            "crop_category_id": request.GET.get("cropCategoryId", None),
            "crop_categories": CropCategory.get_crop_categories(translation.get_language()),
            "include_negative": True if request.GET.get("includeNegative", None) is not None else False,
            "organization_id": organization_id
            }
    return render(request, 'observations/index.html', context)

def detail(request, observation_id):
    context = {
              "observation_id" : observation_id,
               }
    return render(request, 'observations/detail.html', context)

def timeseries(request, observation_time_series_id):
    if request.session.get("vips_logic_user", None) != None:
        organization_id = request.session["vips_logic_user"]["organization_id"]
    else:
        organization_id = settings.VIPS_ORGANIZATION_ID
    context = {
        "organization_id": organization_id,
        "observation_time_series_id" : observation_time_series_id,
    }
    return render(request, 'observations/timeseries.html', context)