1
0
Fork 0
satnogs-network/network/users/views.py

60 lines
2.0 KiB
Python

from braces.views import LoginRequiredMixin
from django.core.urlresolvers import reverse
from django.db.models import Count
from django.shortcuts import get_object_or_404, render
from django.views.generic import RedirectView, UpdateView
from rest_framework.authtoken.models import Token
from network.base.forms import StationForm
from network.base.models import Antenna, Observation, Station
from network.base.perms import schedule_perms
from network.users.forms import UserForm
from network.users.models import User
class UserRedirectView(LoginRequiredMixin, RedirectView):
permanent = False
def get_redirect_url(self):
return reverse("users:view_user",
kwargs={"username": self.request.user.username})
class UserUpdateView(LoginRequiredMixin, UpdateView):
form_class = UserForm
model = User
def get_success_url(self):
return reverse("users:view_user",
kwargs={"username": self.request.user.username})
def get_object(self):
return User.objects.get(username=self.request.user.username)
def view_user(request, username):
"""View for user page."""
user = get_object_or_404(User, username=username)
observations = Observation.objects.filter(author=user)[0:10]
stations = Station.objects.filter(owner=user).annotate(total_obs=Count('observations'))
token = ''
can_schedule = False
if request.user.is_authenticated():
can_schedule = schedule_perms(request.user)
if request.user == user:
try:
token = Token.objects.get(user=user)
except Token.DoesNotExist:
token = Token.objects.create(user=user)
form = StationForm()
antennas = Antenna.objects.all()
return render(request, 'users/user_detail.html',
{'user': user, 'observations': observations, 'stations': stations,
'token': token, 'form': form, 'antennas': antennas,
'can_schedule': can_schedule})