2014-08-26 13:36:38 -06:00
|
|
|
from django.core.urlresolvers import reverse
|
2018-03-07 08:45:59 -07:00
|
|
|
from django.shortcuts import get_object_or_404, render
|
2014-08-26 13:36:38 -06:00
|
|
|
from django.views.generic import RedirectView
|
|
|
|
from django.views.generic import UpdateView
|
2018-08-27 05:41:16 -06:00
|
|
|
from django.db.models import Count
|
2014-08-26 13:36:38 -06:00
|
|
|
|
|
|
|
from braces.views import LoginRequiredMixin
|
|
|
|
|
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.users.forms import UserForm
|
|
|
|
from network.users.models import User
|
|
|
|
from network.base.forms import StationForm
|
2018-12-06 11:39:37 -07:00
|
|
|
from network.base.models import Station, Observation, Antenna
|
2018-03-16 06:33:24 -06:00
|
|
|
from network.base.perms import schedule_perms
|
2014-10-24 09:04:25 -06:00
|
|
|
|
2014-08-26 13:36:38 -06:00
|
|
|
|
|
|
|
class UserRedirectView(LoginRequiredMixin, RedirectView):
|
|
|
|
permanent = False
|
|
|
|
|
|
|
|
def get_redirect_url(self):
|
2014-10-24 09:04:25 -06:00
|
|
|
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):
|
2014-10-24 09:04:25 -06:00
|
|
|
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)
|
|
|
|
|
|
|
|
|
2014-10-24 09:04:25 -06:00
|
|
|
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)
|
2014-10-24 09:04:25 -06:00
|
|
|
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'))
|
2018-08-29 15:05:04 -06:00
|
|
|
token = ''
|
2018-03-16 06:33:24 -06:00
|
|
|
|
|
|
|
can_schedule = False
|
|
|
|
if request.user.is_authenticated():
|
|
|
|
can_schedule = schedule_perms(request.user)
|
|
|
|
|
2018-08-29 15:05:04 -06:00
|
|
|
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()
|
2014-10-24 09:04:25 -06:00
|
|
|
|
|
|
|
return render(request, 'users/user_detail.html',
|
2018-03-16 06:33:24 -06:00
|
|
|
{'user': user, 'observations': observations, 'stations': stations,
|
|
|
|
'token': token, 'form': form, 'antennas': antennas,
|
2018-12-06 11:39:37 -07:00
|
|
|
'can_schedule': can_schedule})
|