Example #1
0
def create(request, p_id):

    user = request.user
    project = get_object_or_404(Project, id = p_id)
    users_in_project = project.get_users()

    if not checkperm(PERMISSIONS_MILESTONE_CREATE, user, project ):
        return HttpResponseForbidden(_('Forbidden Access'))

    users_to_notify = utils.get_users_to_notify(project, PERMISSIONS_MILESTONE_VIEW)

    if request.method == 'POST':
        form = NewMilestoneForm(utils.format_users_for_dropdown(user, users_to_notify), request.POST)

        if form.is_valid():
            mstone = form.save(user, project)

            if mstone.send_notification_email:
                #TODO: make a view milestone url to use here
                link_url = u"http://%s%s" % ( unicode(Site.objects.get_current()), urlresolvers.reverse('rancho.milestone.views.list', args = [p_id]))
                #link_url = u"http://%s%s" % ( unicode(Site.objects.get_current()), urlresolvers.reverse('rancho.message.views.read_add_comment', kwargs={'p_id': project.id, 'm_id':msg.id}),)
                if mstone.responsible: #just notify one person
                    notification.send([mstone.responsible], "milestone_new", {'link_url': link_url, 'milestone': mstone })
                else: #notify all users with perm
                    notification.send(users_to_notify, "milestone_new", {'link_url': link_url, 'milestone': mstone })

            events_log(user, 'A', mstone.title, mstone)
            request.user.message_set.create(message=_('Milestone "%s" successfully created.') % mstone.title)
            return HttpResponseRedirect(urlresolvers.reverse('rancho.milestone.views.list', args = [p_id]))

    else:
        form = NewMilestoneForm(utils.format_users_for_dropdown(user, users_in_project))

    context = { 'project': project,
               'newMilestone': form,
               }

    return render_to_response("milestone/create_milestone.html", context,
                                  context_instance=RequestContext(request))