def assignment_detail(request, slug, child_id=None, is_request=False):
    assignments = models.Assignment.objects.assignments()\
                                           .filter(parent__isnull=True)
    assignment = get_object_or_404(assignments, slug=slug)
    if child_id:
        children = assignment.children.all()
        assignment = get_object_or_404(children, pk=child_id)

    is_request = not assignment.confirmed

    c = {'assignment': assignment}

    form = forms.CommentForm(**form_kwargs(request))
    if form.is_valid():
        comment = form.save(commit=False)
        comment.assignment = assignment
        comment.created_by = request.user
        comment.save()
        return HttpResponseRedirect(assignment.get_absolute_url())
    c['comment_form'] = form

    c['status_form'] = forms.StatusForm()

    related_requests, related_assignments = _get_related(assignment)
    c['related_requests'] = related_requests
    c['related_assignments'] = related_assignments

    if not assignment.parent and not is_request:
        c['request_categories'] = models.Category.objects.filter(
            top_category=False
        )

    return direct_to_template(request, 'newsroom/assignment_detail.html', c)
Esempio n. 2
0
def edit(request, slug=None):
    """
    Add (if slug is not passed) or edit a page.
    """
    if slug:
        page = get_object_or_404(models.Page, slug=slug)
    else:
        page = None

    form = forms.PageForm(instance=page, **form_kwargs(request))
    if form.is_valid():
        page = form.save(commit=False)
        if slug:
            page.updated_by = request.user
        else:
            page.created_by = request.user
        page.save()
        url = reverse(detail, args=[page.slug])
        return HttpResponseRedirect(url)

    c = {
        'form': form,
        'add': not slug,
        'page': page,
    }
    return direct_to_template(request, 'newsroom/pages/edit.html', c)
Esempio n. 3
0
def edit(request, object_id):
    idea = get_object_or_404(models.Idea, pk=object_id)

    form = forms.IdeaForm(instance=idea, **form_kwargs(request))
    if form.is_valid():
        idea = form.save(commit=False)
        idea.updated_by = request.user
        idea.save()
        url = reverse(listing)
        return HttpResponseRedirect(url)

    c = {"form": form, "idea": idea}
    return direct_to_template(request, "newsroom/ideas/edit.html", c)
Esempio n. 4
0
def detail(request, object_id):
    idea = get_object_or_404(models.Idea, pk=object_id)

    form = forms.ReplyForm(**form_kwargs(request))
    if form.is_valid():
        reply = form.save(commit=False)
        reply.idea = idea
        reply.created_by = request.user
        reply.save()
        url = reverse(detail, args=[object_id])
        return HttpResponseRedirect(url)

    c = {"form": form, "idea": idea}
    return direct_to_template(request, "newsroom/ideas/detail.html", c)
Esempio n. 5
0
def accept(request, slug, child_id):
    assignments = models.Assignment.objects.assignments()\
                                           .filter(parent__isnull=True)
    assignment = get_object_or_404(assignments, slug=slug)
    if child_id:
        children = assignment.children.requests()
        assignment = get_object_or_404(children, pk=child_id)

    initial = {'pub_date': assignment.parent.pub_date}
    form = forms.AcceptRequestForm(initial=initial, **form_kwargs(request))
    if form.is_valid():
        assignment.confirmed = True
        assignment.pub_date = form.cleaned_data['pub_date']
        assignment.save()
        return HttpResponseRedirect(assignment.get_absolute_url())

    c = {'assignment': assignment, 'accept_form': form}
    return direct_to_template(request, 'newsroom/accept_request.html', c)
def edit_assignment(request, slug, child_id=None, is_request=False):
    if child_id or not is_request:
        assignments = models.Assignment.objects.assignments()
    else:
        assignments = models.Assignment.objects.requests()
    assignments = assignments.filter(parent__isnull=True)
    assignment = get_object_or_404(assignments, slug=slug)
    if child_id:
        if is_request:
            children = assignment.children.requests()
        else:
            children = assignment.children.assignments()
        assignment = get_object_or_404(children, pk=child_id)

    kwargs = form_kwargs(request)
    kwargs['instance'] = assignment
    kwargs['category'] = assignment.category
    form_class = is_request and forms.RequestForm or forms.AssignmentForm
    form = form_class(**kwargs)
    properties_form = forms.AssignmentPropertiesForm(**kwargs)
    details_form = forms.AssignmentDetailsForm(**kwargs)

    if (form.is_valid() and properties_form.is_valid() and
                                        details_form.is_valid()):
        obj = form.save(commit=False)
        obj.updated_by = request.user
        obj.save()
        form.save_m2m()
        properties_form.instance = obj
        details_form.instance = obj
        properties_form.save()
        details_form.save()
        return HttpResponseRedirect(obj.get_absolute_url())

    c = {
        'edit': True,
        'form': form,
        'properties_form': properties_form,
        'details_form': details_form,
        'category': assignment.category,
        'is_request': is_request,
    }

    return direct_to_template(request, 'newsroom/add_assignment.html', c)
Esempio n. 7
0
def add_request_to_assignment(request, category_slug, assignment_slug):
    top_assignments = models.Assignment.objects.assignments()\
                        .filter(parent__isnull=True)
    sub_categories = models.Category.objects.exclude(top_category=True)
    category = get_object_or_404(sub_categories, slug=category_slug)
    parent = get_object_or_404(top_assignments, slug=assignment_slug)

    initial = {
        'pub_date': datetime.date.today().strftime('%Y-%m-%d'),
        'responsible': request.user.pk,
        'involved': [request.user.pk],
    }
    kwargs = form_kwargs(request)
    form = forms.RequestForm(initial=initial, category=category,
                             parent=parent, **kwargs)
    properties_form = forms.AssignmentPropertiesForm(category=category,
                                                     **kwargs)
    details_form = forms.AssignmentDetailsForm(category=category, **kwargs)

    if (form.is_valid() and properties_form.is_valid() and
                                        details_form.is_valid()):
        obj = form.save(commit=False)
        obj.parent = parent
        obj.created_by = request.user
        obj.save()
        form.save_m2m()
        properties_form.instance = obj
        details_form.instance = obj
        properties_form.save()
        details_form.save()
        return HttpResponseRedirect(obj.get_absolute_url())

    c = {
        'parent': parent,
        'form': form,
        'properties_form': properties_form,
        'details_form': details_form,
        'category': category,
    }
    return direct_to_template(request,
                              'newsroom/add_request_to_assignment.html', c)
Esempio n. 8
0
def listing(request):
    # Check to see if we're filtering by section.
    section_slug = request.GET.get("section")
    section = None
    if section_slug:
        try:
            section = core_models.Section.objects.get(slug=section_slug)
        except core_models.Section.DoesNotExist:
            pass

    # Build form
    initial = {}
    if section:
        initial["section"] = section.pk
    form = forms.IdeaForm(initial=initial, **form_kwargs(request))
    if form.is_valid():
        idea = form.save(commit=False)
        idea.created_by = request.user
        idea.save()
        url = reverse(listing)
        return HttpResponseRedirect(url)

    ideas = models.Idea.objects.all()

    c = {"form": form, "ideas_count": ideas.count()}

    if section:
        c["current_section"] = section
        ideas = ideas.filter(section=section)

    c["sections"] = core_models.Section.objects.annotate(Count("idea"))

    return list_detail.object_list(
        request,
        queryset=ideas,
        paginate_by=10,
        template_name="newsroom/ideas/list.html",
        template_object_name="idea",
        extra_context=c,
    )
def add_assignment(request, slug):
    top_categories = models.Category.objects.filter(top_category=True)
    category = get_object_or_404(top_categories, slug=slug)

    initial = {
        'pub_date': datetime.date.today().strftime('%Y-%m-%d'),
        'responsible': request.user.pk,
        'involved': [request.user.pk],
    }
    kwargs = form_kwargs(request)
    kwargs['category'] = category
    form = forms.AssignmentForm(initial=initial, **kwargs)
    properties_form = forms.AssignmentPropertiesForm(**kwargs)
    details_form = forms.AssignmentDetailsForm(**kwargs)

    if (form.is_valid() and properties_form.is_valid() and
                                        details_form.is_valid()):
        obj = form.save(commit=False)
        obj.created_by = request.user
        obj.save()
        form.save_m2m()
        properties_form.instance = obj
        details_form.instance = obj
        properties_form.save()
        details_form.save()
        # Send emails
        for user in obj.involved.exclude(pk=request.user.pk):
            c = {'assignment': obj, 'user': user}
            send_mail_from_template(user.email, 'new_assignment', c)
        return HttpResponseRedirect(obj.get_absolute_url())

    c = {
        'form': form,
        'properties_form': properties_form,
        'details_form': details_form,
        'category': category,
    }

    return direct_to_template(request, 'newsroom/add_assignment.html', c)
Esempio n. 10
0
def upload(request, object_id=None):
    """
    Upload a file. Also handles the uploading a new version of an existing file.
    """
    if object_id:
        instance = get_object_or_404(models.File, pk=object_id)
    else:
        instance = None

    form = forms.FileForm(instance=instance, **form_kwargs(request))
    if form.is_valid():
        file = form.save(commit=False)
        if instance:
            file.updated_by = request.user
            file.superceeds = unicode(instance)
            file.superceeds_date = instance.updated_on
        else:
            file.created_by = request.user
        file.save()
        url = reverse(listing)
        return HttpResponseRedirect(url)

    c = {'form': form}
    return direct_to_template(request, 'newsroom/files/upload.html', c)
Esempio n. 11
0
def edit_profile(request, username=None):
    c = {}
    if not username:
        url = reverse(edit_profile, args=[request.user.username])
        return HttpResponseRedirect(url)
    user = get_object_or_404(User, username=username)
    profile = get_profile(user)
    kwargs = form_kwargs(request)
    user_form = forms.UserForm(instance=user, **kwargs)
    form = forms.ProfileForm(instance=profile, **kwargs)
    if not request.user.is_staff:
        del form.fields['is_editor']
    if username != request.user.username:
        del form.fields['email_notifications']
        del form.fields['my_assignments_default']
        del form.fields['my_section_default']
        valid = form.is_valid() and user_form.is_valid()
    else:
        password_form = forms.PasswordForm(user=user, **kwargs)
        c['password_form'] = password_form
        valid = form.is_valid() and user_form.is_valid() and \
                password_form.is_valid()
        if valid:
            password_form.save()
    if valid:
        user = user_form.save()
        if profile:
            profile = form.save()
        else:
            profile = form.save(commit=False)
            profile.user = user
        url = reverse(detail, args=[profile.user.username])
        return HttpResponseRedirect(url)
    c['form'] = form
    c['user_form'] = user_form
    return direct_to_template(request, 'newsroom/person_edit.html', c)