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)
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)
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)
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)
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)
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)
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)
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)
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)