197 lines
7.5 KiB
Python
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}
|
|
)
|