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('Login') def delete_upload(request, day_id, upload_id): if not request.user.is_authenticated: html = "You have no rights to upload/delete documents. Please login<>." return HttpResponseForbidden(html) try: user_profile=request.user.profile except: html = "You have no user profile." return HttpResponseForbidden(html) try: myday=Day.objects.get(pk=day_id) except Day.DoesNotExist: raise Http404 # if mytarget.owner != user_profile: # html = "You trying to delete presentation for someone else's target." # return HttpResponseForbidden(html) try: upload=Upload.objects.get(pk=upload_id) except Upload.DoesNotExist: raise Http404 if upload.day != myday: html = "Sorry, wrong day/upload pair." return HttpResponseForbidden(html) upload.delete() return HttpResponseRedirect(myday.get_absolute_url()) def upload(request, day_id): if not request.user.is_authenticated: html = "You have no rights for this operation." return HttpResponseForbidden(html) try: user_profile=request.user.profile except: html = "You have no user profile." 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} )