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

60 lines
2.0 KiB
Python
Raw Normal View History

from braces.views import LoginRequiredMixin
2014-08-26 13:36:38 -06:00
from django.core.urlresolvers import reverse
2018-08-27 05:41:16 -06:00
from django.db.models import Count
from django.shortcuts import get_object_or_404, render
from django.views.generic import RedirectView, UpdateView
2014-12-03 19:22:59 -07:00
from rest_framework.authtoken.models import Token
2014-12-19 06:06:58 -07:00
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
2014-08-26 13:36:38 -06:00
class UserRedirectView(LoginRequiredMixin, RedirectView):
permanent = False
def get_redirect_url(self):
return reverse("users:view_user",
2014-08-26 13:36:38 -06:00
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",
2014-08-26 13:36:38 -06:00
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."""
2018-03-07 08:45:59 -07:00
user = get_object_or_404(User, username=username)
observations = Observation.objects.filter(author=user)[0:10]
2018-08-27 05:41:16 -06:00
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)
2014-12-03 10:58:23 -07:00
form = StationForm()
2014-12-14 05:47:50 -07:00
antennas = Antenna.objects.all()
return render(request, 'users/user_detail.html',
{'user': user, 'observations': observations, 'stations': stations,
'token': token, 'form': form, 'antennas': antennas,
2018-12-06 11:39:37 -07:00
'can_schedule': can_schedule})