srg/plan/views.py
2024-04-26 12:43:00 +03:00

197 lines
7.5 KiB
Python

from django.shortcuts import render
from django.http import HttpResponse
from datetime import date
from plan.models import Day, SessionBearLakes, SessionBearLakesForm, SessionUssuriysk, SessionUssuriyskForm, LoginUsernameForm, UserProfile, UploadForm, Upload
from plan.models import INPUT_DATA_DIR
from plan.models import LaunchDate
from django.http import HttpResponseRedirect
import datetime
from django.utils import timezone
import astropy
import pandas as pd
from django.utils import timezone
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.core.files.storage import FileSystemStorage
# Create your views here. Berkeley
def index(request):
if request.user.is_authenticated:
try:
user_profile=request.user.profile
except:
return HttpResponse("docker: no UserProfile.")
else:
return HttpResponse("docker: not authenticated.")
all_bearlakes = SessionBearLakes.objects.all()
return render(request,'plan/show_plan.html', {'bearlakes': all_bearlakes,'LaunchDate':LaunchDate})
def show_day(request, day_id):
if request.user.is_authenticated:
try:
user_profile=request.user.profile
except:
return HttpResponse("docker: no UserProfile.")
else:
return HttpResponse("docker: not authenticated.")
try:
myday=Day.objects.get(pk=day_id)
except:
return HttpResponse("This Day was not found")
uploads = myday.upload_set.all()
return render(request,'plan/show_day.html', {'uploads': uploads, 'day':myday,})
def show_SessionBearLakes(request,day):
try:
session=SessionBearLakes.objects.get(Day__DayNumber__exact=day)
except:
return HttpResponse("This Day was not found")
return render(request,'plan/show_session_bearlakes.html', {'session': session,})
def show_SessionUssuriysk(request,day):
try:
session=SessionUssuriysk.objects.get(Day__DayNumber__exact=day)
except:
return HttpResponse("This Day was not found")
session_lakes=session.Day.BearLakesDay
return render(request,'plan/show_session_bearlakes.html', {'session': session_lakes,})
def update_SessionBearLakes(request,day):
try:
session=SessionBearLakes.objects.get(Day__DayNumber__exact=day)
except:
return HttpResponse("This Day was not found")
if request.method == 'POST': # If the form has been submitted...
form = SessionBearLakesForm(request.POST,instance=session) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
new_form=form.save()
return HttpResponseRedirect(new_form.get_absolute_url())
else:
return render(request,'plan/update_session_bearlakes.html', {'form':form,'session': session})
else:
form = SessionBearLakesForm(instance=session)
return render(request,'plan/update_session_bearlakes.html', {'form':form,'session': session})
def update_SessionUssuriysk(request,day):
try:
session=SessionUssuriysk.objects.get(Day__DayNumber__exact=day)
except:
return HttpResponse("This Day was not found")
if request.method == 'POST': # If the form has been submitted...
form = SessionUssuriyskForm(request.POST,instance=session) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
new_form=form.save()
return HttpResponseRedirect(new_form.get_absolute_url())
else:
return render(request,'plan/update_session_ussuriysk.html', {'form':form,'session': session})
else:
form = SessionUssuriyskForm(instance=session)
return render(request,'plan/update_session_ussuriysk.html', {'form':form,'session': session})
def login_username(request):
if request.user.is_authenticated:
try:
user_profile=request.user.profile
except:
return HttpResponse("login: authenticated but no UserProfile.")
if request.method == 'POST': # If the form has been submitted...
form = LoginUsernameForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
username=form.clean_username()
password=form.cleaned_data["password"]
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
try:
user_profile=user.profile
except:
form = UserProfileForm() # An unbound form
return HttpResponse("login: authenticated but no UserProfile.")
else:
return HttpResponse("login: user account is not active.")
else:
form = LoginUsernameForm() # An unbound form
return render(request,'plan/login.html', {'form':form, 'invalid_login': True})
else:
return HttpResponse("login: form is not valid.")
else:
form = LoginUsernameForm() # An unbound form
return render(request,'plan/login.html', {'form':form})
all_bearlakes = SessionBearLakes.objects.all()
return render(request,'plan/show_plan.html', {'bearlakes': all_bearlakes,'LaunchDate':LaunchDate})
def logout_view(request):
if request.user.is_authenticated:
logout(request)
return HttpResponse('<a class="button orange big" href="/plan/login">Login</a>')
def delete_upload(request, day_id, upload_id):
if not request.user.is_authenticated:
html = "<html><body>You have no rights to upload/delete documents. Please <a href='/plan/login'>login<>.</body></html>"
return HttpResponseForbidden(html)
try:
user_profile=request.user.profile
except:
html = "<html><body>You have no user profile.</body></html>"
return HttpResponseForbidden(html)
try:
myday=Day.objects.get(pk=day_id)
except Day.DoesNotExist:
raise Http404
# if mytarget.owner != user_profile:
# html = "<html><body>You trying to delete presentation for someone else's target.</body></html>"
# return HttpResponseForbidden(html)
try:
upload=Upload.objects.get(pk=upload_id)
except Upload.DoesNotExist:
raise Http404
if upload.day != myday:
html = "<html><body>Sorry, wrong day/upload pair.</body></html>"
return HttpResponseForbidden(html)
upload.delete()
return HttpResponseRedirect(myday.get_absolute_url())
def upload(request, day_id):
if not request.user.is_authenticated:
html = "<html><body>You have no rights for this operation.</body></html>"
return HttpResponseForbidden(html)
try:
user_profile=request.user.profile
except:
html = "<html><body>You have no user profile.</body></html>"
return HttpResponseForbidden(html)
try:
myday=Day.objects.get(pk=day_id)
except Day.DoesNotExist:
raise Http404
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
upload = form.save(commit=False)
upload.day = myday
upload.owner = user_profile
upload.filename = request.FILES['filefield'].name.encode('utf-8')
upload.save()
return HttpResponseRedirect(myday.get_absolute_url())
else:
form = UploadForm()
return render(request,'plan/upload.html',
{'UserProfile':user_profile, 'form': form, 'day':myday}
)