Newer
Older
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.shortcuts import get_current_site
from django.shortcuts import get_object_or_404, render, redirect
from django.utils.translation import gettext_lazy as _
from django.views.decorators.http import require_http_methods
from common.decorators import ajax
from users.forms import UserForm, UserProfileForm, NoteForm
from users.models import Note
from users.utils import send_new_user_email
@permission_required('users.view_user')
def user_list(request):
return render(request, 'user_list.html', {'users': User.objects.order_by('username')})
@login_required
def user_profile(request):
if request.method == 'POST':
form = UserProfileForm(instance=request.user, data=request.POST)
if form.is_valid():
form.save()
return redirect('dash')
else:
form = UserProfileForm(instance=request.user)
return render(request, 'user_profile.html', {'form': form})
@permission_required('users.add_user')
def user_add(request):
if request.method == 'POST':
form = UserForm(instance=User(), data=request.POST)
if form.is_valid():
user = form.save()
send_new_user_email(site=get_current_site(request), user=user, use_https=request.is_secure())
return redirect('users:user_list')
else:
form = UserForm(instance=User())
return render(request, 'user_form.html', {'form': form, 'title': _('Dodaj użytkownika')})
@permission_required('users.change_user')
def user_edit(request, pk):
user = get_object_or_404(User, pk=pk)
if request.method == 'POST':
form = UserForm(instance=user, data=request.POST)
if form.is_valid():
form.save()
return redirect('users:user_list')
else:
form = UserForm(instance=user)
return render(request, 'user_form.html', {'form': form, 'title': _('Edytuj użytkownika')})
@login_required
def get_notes(request, model, pk):
model = apps.get_model(*model.split('.'))
subject = get_object_or_404(model, pk=pk)
ct = ContentType.objects.get_for_model(model)
notes = Note.objects.filter(subject_ct=ct, subject_id=subject.pk).for_user(request.user).order_by('created_at')
return JsonResponse({
"notes": [{
"pk": note.pk,
"owner_label": note.owner_label,
"created_at": note.created_at,
"note": note.note,
} for note in notes],
})
@require_http_methods(["POST"])
@login_required
def add_note(request, model, pk):
model = apps.get_model(*model.split('.'))
subject = get_object_or_404(model, pk=pk)
note = Note(author=request.user, subject=subject)
form = NoteForm(instance=note, data=request.POST)
if form.is_valid():
form.save()
return JsonResponse({})
return JsonResponse(form.errors.get_json_data(), status=400)