def add_role_type(request, journal_id): """ Handles only NEW editorial Role Types """ if request.is_ajax(): template_name = 'board/role_type_edit_form.html' else: template_name = 'board/role_type_edit.html' board_url = reverse('editorial.board', args=[journal_id, ]) post_url = reverse('editorial.role.add', args=[journal_id, ]) context = { 'post_url': post_url, 'board_url': board_url, } if request.method == "POST": form = forms.RoleTypeForm(request.POST) if form.is_valid(): new_role = form.save() audit_data = { 'user': request.user, 'obj': new_role, 'message': helpers.construct_create_message(form), 'old_values': None, 'new_values': helpers.collect_new_values(form), } # this view only handle NEW editorial board member, so always log create. helpers.log_create(**audit_data) messages.success(request, _('Role created successfully.')) return HttpResponseRedirect(board_url) else: messages.error(request, _('Check mandatory fields.')) context['form'] = form return render_to_response(template_name, context, context_instance=RequestContext(request)) else: form = forms.RoleTypeForm() context['form'] = form return render_to_response(template_name, context, context_instance=RequestContext(request))
def add_board_member(request, journal_id, issue_id): """ Handles only NEW editorial board member """ if request.is_ajax(): template_name = 'board/board_member_edit_form.html' else: template_name = 'board/board_member_edit.html' # check if user have correct access to view the journal: if not Journal.userobjects.active().filter(pk=journal_id).exists(): messages.error(request, _('The journal is not available for you.')) return HttpResponseRedirect(reverse('editorial.index')) # get the issue, then the board if exist issue = Issue.userobjects.active().filter(pk=issue_id) if len(issue) != 1: messages.error(request, _('The issue is not available for you.')) return HttpResponseRedirect(reverse('editorial.index')) issue = issue[0] # get the related issue::board, if none: create one if not hasattr(issue, 'editorialboard'): board = models.EditorialBoard(issue=issue) board.save() board = issue.editorialboard board_url = reverse('editorial.board', args=[journal_id, ]) post_url = reverse('editorial.board.add', args=[journal_id, issue_id, ]) context = { 'post_url': post_url, 'board_url': board_url, } if request.method == "POST": form = forms.EditorialMemberForm(request.POST) if form.is_valid(): new_member = form.save(commit=False) new_member.board = board new_member.save() new_member.order = _get_order_for_new_members(new_member.board, new_member.role.pk, new_member.pk) new_member.save() audit_data = { 'user': request.user, 'obj': new_member, 'message': helpers.construct_create_message(form), 'old_values': None, 'new_values': helpers.collect_new_values(form), } # this view only handle NEW editorial board member, so always log create. helpers.log_create(**audit_data) # notify librarians notifications.board_members_send_email_by_action(new_member, request.user, audit_data['message'], 'board_add_member') messages.success(request, _('Board Member created successfully.')) return HttpResponseRedirect(board_url) else: messages.error(request, _('Check mandatory fields.')) context['form'] = form return render_to_response(template_name, context, context_instance=RequestContext(request)) else: form = forms.EditorialMemberForm() context['form'] = form return render_to_response(template_name, context, context_instance=RequestContext(request))