from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render, redirect
from django.utils.encoding import force_str
from django.utils.http import urlquote_plus
from django.views.decorators.http import require_POST
from catalogue import forms
from django.shortcuts import get_object_or_404, render, redirect
from django.utils.encoding import force_str
from django.utils.http import urlquote_plus
from django.views.decorators.http import require_POST
from catalogue import forms
from .constants import STAGES
from .models import Document, Plan
from dvcs.models import Revision
from .constants import STAGES
from .models import Document, Plan
from dvcs.models import Revision
@never_cache
def user(request, username):
user = get_object_or_404(User, username=username)
@never_cache
def user(request, username):
user = get_object_or_404(User, username=username)
def create_missing(request):
if request.method == "POST":
form = forms.DocumentCreateForm(request.POST, request.FILES)
def create_missing(request):
if request.method == "POST":
form = forms.DocumentCreateForm(request.POST, request.FILES)
+ # tag_forms = [
+ # (TagMultipleForm if category.multiple else TagSingleForm)(
+ # category=category, data=request.POST, prefix=category.dc_tag)
+ # for category in Category.objects.all()]
+ if form.is_valid(): # and all(tag_form.is_valid() for tag_form in tag_forms):
@login_required
def book_schedule(request, pk):
book = get_object_or_404(Document, pk=pk, deleted=False)
@login_required
def book_schedule(request, pk):
book = get_object_or_404(Document, pk=pk, deleted=False)
user_id = request.POST.get('s%d-user' % i)
deadline = request.POST.get('s%d-deadline' % i) or None
Plan.objects.create(document=book, stage=s, user_id=user_id, deadline=deadline)
user_id = request.POST.get('s%d-user' % i)
deadline = request.POST.get('s%d-deadline' % i) or None
Plan.objects.create(document=book, stage=s, user_id=user_id, deadline=deadline)
for p in Plan.objects.filter(document=book):
current[p.stage] = (getattr(p.user, 'pk', None), (p.deadline.isoformat() if p.deadline else None))
for p in Plan.objects.filter(document=book):
current[p.stage] = (getattr(p.user, 'pk', None), (p.deadline.isoformat() if p.deadline else None))
- schedule = [(i, s, current.get(s, ())) for (i, s) in enumerate(STAGES)]
+ schedule = [(i, s, current.get(s, ())) for i, (s, name) in enumerate(STAGES)]
if book.owner_organization:
people = [m.user for m in book.owner_organization.membership_set.exclude(status='pending')]
if book.owner_organization:
people = [m.user for m in book.owner_organization.membership_set.exclude(status='pending')]
@login_required
def book_owner(request, pk):
doc = get_object_or_404(Document, pk=pk, deleted=False)
@login_required
def book_owner(request, pk):
doc = get_object_or_404(Document, pk=pk, deleted=False)
user_is_owner = doc.owner_organization and doc.owner_organization.is_member(request.user)
if not (doc.owner_user == request.user or user_is_owner):
raise Http404
user_is_owner = doc.owner_organization and doc.owner_organization.is_member(request.user)
if not (doc.owner_user == request.user or user_is_owner):
raise Http404
@login_required
def book_delete(request, pk):
doc = get_object_or_404(Document, pk=pk, deleted=False)
@login_required
def book_delete(request, pk):
doc = get_object_or_404(Document, pk=pk, deleted=False)
form = forms.DocumentTextPublishForm(request.POST, prefix="textpublish")
if form.is_valid():
rev = Revision.objects.get(pk=form.cleaned_data['revision'])
# FIXME: check if in tree
# if PublishRecord.objects.filter(revision=rev, document=doc).exists():
# return http.HttpResponse('exists')
form = forms.DocumentTextPublishForm(request.POST, prefix="textpublish")
if form.is_valid():
rev = Revision.objects.get(pk=form.cleaned_data['revision'])
# FIXME: check if in tree
# if PublishRecord.objects.filter(revision=rev, document=doc).exists():
# return http.HttpResponse('exists')
+ if not doc.published:
+ site = Site.objects.get_current()
+ send_notify_email(
+ 'New published document in MIL/PEER',
+ '''New published document in MIL/PEER: %s. View it in browser: https://%s%s.
+
+--
+MIL/PEER team.''' % (doc.meta()['title'], site.domain, reverse('catalogue_html', args=[doc.pk])))