Exemple #1
0
def delete(request,p_id,m_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    message = get_object_or_404(Message, pk=m_id)
    project.check_user_in_project_or_404(user)

    if not checkperm(PERMISSIONS_MESSAGE_EDITDELETE, user, project, message ) or message.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))


    kw = {'m_id': message.initial_message.id, 'p_id': project.id}

    events_log(user, 'D', message.title, message)

    if message.initial_message == message: #delete main thread
        Message.objects.filter(initial_message=message.initial_message).delete()
    else:
        message.delete()

    request.user.message_set.create(message=_("Message Deleted."))

    page = request.GET.get('page')
    if page == 'msg':
        return HttpResponseRedirect(urlresolvers.reverse('rancho.message.views.read_add_comment', kwargs=kw))
    else:
        return HttpResponseRedirect(urlresolvers.reverse('rancho.message.views.list', args=[project.id]))
Exemple #2
0
def switch_todo_status(request, p_id):

    user = request.user
    project = get_object_or_404(Project, id = p_id)
    if request.method=='GET':
        todo = get_object_or_404(ToDo, id=int(request.GET.get('todo')))

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

        if todo.completion_date != None:
            todo.completion_date = None

            events_log(user, 'ICOMP', todo.description, todo)
        else:
            todo.completion_date = datetime.datetime.now()
            todo.responsible = user

            events_log(user, 'COMP', todo.description, todo)

        todo.save()
        milestone = todo.todo_list.milestone
        if milestone:
            if todo.todo_list.is_complete():
                todo.todo_list.milestone.completion_date = todo.completion_date
                todo.todo_list.milestone.responsible = user
            else:
                todo.todo_list.milestone.completion_date = None
            todo.todo_list.milestone.save()
        result = loader.get_template('todo/display_todo.html').render(Context({'todo':todo}))
        return HttpResponse(result, mimetype='text/xml')
    else:
        return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
Exemple #3
0
def save_changes(request, p_id):
    user = request.user
    project = get_object_or_404(Project, id = p_id)

    if request.method == 'POST':
        todo = get_object_or_404(ToDo, id = int(request.POST.get('todo')))
        todo_list = todo.todo_list

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project, todo) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        responsible_id = int(request.POST.get('responsible'))
        if responsible_id:
            responsible = get_object_or_404(User, id = responsible_id)
        else:
            responsible = None
        description = request.POST.get('description')
        todo.responsible = responsible
        if description:
            todo.description = description
        todo.save()

        events_log(user, 'U', todo.description, todo)

        result = loader.get_template('todo/display_todo.html').render(Context({'todo': todo}))
        return HttpResponse(result, mimetype='text/xml')
    return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
Exemple #4
0
def edit_todo_list(request, p_id, todo_list_id):

    user = request.user
    project = get_object_or_404(Project, id = p_id)
    edit_todo_list = get_object_or_404(ToDoList, id = todo_list_id)

    if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project, edit_todo_list)  or edit_todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

    context = {'todo_list': edit_todo_list, 'project': project}
    milestones = [(milestone.id, milestone.title) for milestone \
                  in edit_todo_list.get_free_milestones()]
    milestones = [(0, _("None"))] + milestones
    if request.method == 'POST':
        data = request.POST.copy()
        edit_todo_list_form = EditToDoListForm(milestones, data)
        context['edit_todo_list_form'] = edit_todo_list_form
        if edit_todo_list_form.is_valid():
            edit_todo_list_form.save_with_form_data(edit_todo_list)
            events_log(user, 'U', edit_todo_list.title, edit_todo_list)
            request.user.message_set.create(message=_('ToDo list successfully updated.'))

        return render_to_response('todo/edit_todo_list.html',
                                  context,
                                  context_instance=RequestContext(request))
    milestone_id = 0
    if edit_todo_list.milestone:
        milestone_id = edit_todo_list.milestone.id
    data = {'todolist_name': edit_todo_list.title,
            'todolist_description': edit_todo_list.description,
            'milestone': milestone_id}
    edit_todo_list_form = EditToDoListForm(milestones, data)
    context['edit_todo_list_form'] = edit_todo_list_form
    return render_to_response('todo/edit_todo_list.html', context,
                              context_instance=RequestContext(request))
Exemple #5
0
def save_changes(request, p_id):
    user = request.user
    project = get_object_or_404(Project, id=p_id)

    if request.method == 'POST':
        todo = get_object_or_404(ToDo, id=int(request.POST.get('todo')))
        todo_list = todo.todo_list

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project,
                         todo) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        responsible_id = int(request.POST.get('responsible'))
        if responsible_id:
            responsible = get_object_or_404(User, id=responsible_id)
        else:
            responsible = None
        description = request.POST.get('description')
        todo.responsible = responsible
        if description:
            todo.description = description
        todo.save()

        events_log(user, 'U', todo.description, todo)

        result = loader.get_template('todo/display_todo.html').render(
            Context({'todo': todo}))
        return HttpResponse(result, mimetype='text/xml')
    return HttpResponseRedirect(
        urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
Exemple #6
0
def create(request, p_id):

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

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

    users_in_project = project.get_users()
    context = {}
    context['users_in_project'] = users_in_project
    context['project'] = project
    project.check_user_in_project_or_404(user)
    milestones = Milestone.objects.filter(project = project)
    milestones = [(milestone.id, milestone.title) for milestone \
                  in milestones if milestone.todolist == None]
    milestones = [(0, _("None"))] + milestones
    newTDLform = NewToDoListForm(milestones)
    if request.method=='POST':
        newTDLform = NewToDoListForm(milestones, request.POST)
        if newTDLform.is_valid():
            context['project'] = project
            todo_list = newTDLform.save(user, project)
            events_log(user, 'A', todo_list.title, todo_list)
            request.user.message_set.create(message=_('ToDo list "%(todo_list_name)s" successfully created.') % {'todo_list_name': todo_list.title})
            return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
    context['newTDLform'] = newTDLform
    return render_to_response('todo/new_todo_list.html', context,
                              context_instance=RequestContext(request))
Exemple #7
0
def switch_todo_status(request, p_id):

    user = request.user
    project = get_object_or_404(Project, id=p_id)
    if request.method == 'GET':
        todo = get_object_or_404(ToDo, id=int(request.GET.get('todo')))

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

        if todo.completion_date != None:
            todo.completion_date = None

            events_log(user, 'ICOMP', todo.description, todo)
        else:
            todo.completion_date = datetime.datetime.now()
            todo.responsible = user

            events_log(user, 'COMP', todo.description, todo)

        todo.save()
        milestone = todo.todo_list.milestone
        if milestone:
            if todo.todo_list.is_complete():
                todo.todo_list.milestone.completion_date = todo.completion_date
                todo.todo_list.milestone.responsible = user
            else:
                todo.todo_list.milestone.completion_date = None
            todo.todo_list.milestone.save()
        result = loader.get_template('todo/display_todo.html').render(
            Context({'todo': todo}))
        return HttpResponse(result, mimetype='text/xml')
    else:
        return HttpResponseRedirect(
            urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
Exemple #8
0
def create(request, p_id):

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

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

    users_in_project = project.get_users()
    context = {}
    context['users_in_project'] = users_in_project
    context['project'] = project
    project.check_user_in_project_or_404(user)
    milestones = Milestone.objects.filter(project=project)
    milestones = [(milestone.id, milestone.title) for milestone \
                  in milestones if milestone.todolist == None]
    milestones = [(0, _("None"))] + milestones
    newTDLform = NewToDoListForm(milestones)
    if request.method == 'POST':
        newTDLform = NewToDoListForm(milestones, request.POST)
        if newTDLform.is_valid():
            context['project'] = project
            todo_list = newTDLform.save(user, project)
            events_log(user, 'A', todo_list.title, todo_list)
            request.user.message_set.create(
                message=_(
                    'ToDo list "%(todo_list_name)s" successfully created.') %
                {'todo_list_name': todo_list.title})
            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
    context['newTDLform'] = newTDLform
    return render_to_response('todo/new_todo_list.html',
                              context,
                              context_instance=RequestContext(request))
Exemple #9
0
def delete(request, p_id, m_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    message = get_object_or_404(Message, pk=m_id)
    project.check_user_in_project_or_404(user)

    if not checkperm(PERMISSIONS_MESSAGE_EDITDELETE, user, project,
                     message) or message.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    kw = {'m_id': message.initial_message.id, 'p_id': project.id}

    events_log(user, 'D', message.title, message)

    if message.initial_message == message:  #delete main thread
        Message.objects.filter(
            initial_message=message.initial_message).delete()
    else:
        message.delete()

    request.user.message_set.create(message=_("Message Deleted."))

    page = request.GET.get('page')
    if page == 'msg':
        return HttpResponseRedirect(
            urlresolvers.reverse('rancho.message.views.read_add_comment',
                                 kwargs=kw))
    else:
        return HttpResponseRedirect(
            urlresolvers.reverse('rancho.message.views.list',
                                 args=[project.id]))
Exemple #10
0
def new_upload(request, p_id, f_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    project.check_user_in_project_or_404(user)
    file = get_object_or_404(File, pk=f_id)

    users_in_project = project.get_users()

    if not checkperm(PERMISSIONS_FILE_CREATE, user,
                     project) or file.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    tags = utils.get_site_tags(project)

    if request.method == 'POST':
        form = UploadFileForm(tags, request.POST, request.FILES)
        if form.is_valid():
            form.save(user, file)

            link_url = u"http://%s%s" % (
                unicode(Site.objects.get_current()),
                urlresolvers.reverse('rancho.file.views.view_file',
                                     kwargs={
                                         'p_id': project.id,
                                         'file_id': file.id
                                     }),
            )
            notification.send(
                file.notify_to.all(), "fileversion_new", {
                    'link_url':
                    link_url,
                    'file':
                    file,
                    'file_name':
                    os.path.basename(
                        file.last_file_version.file_location.path).split(
                            '_', 2)[-1]
                })

            events_log(user, 'U', file.title, file)
            request.user.message_set.create(
                message=_("New file revision created"))

            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.file.views.list',
                                     args=[project.id]))
    else:
        form = UploadFileForm(tags)

    context = {
        'project': project,
        'users_in_project': users_in_project,
        'file': file,
        'form': form,
    }

    return render_to_response('file/new_upload.html',
                              context,
                              context_instance=RequestContext(request))
Exemple #11
0
def delete_project(request, p_id):
    user = request.user

    project = get_object_or_404(Project, id = p_id)
    events_log(user, 'D', project.name, project)
    request.user.message_set.create(message=_("Project %s Deleted."%project.name))
    project.delete()


    return HttpResponseRedirect(urlresolvers.reverse('rancho.user.views.dashboard'))
Exemple #12
0
def edit(request, p_id, milestone_id):

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

    if not checkperm(PERMISSIONS_MILESTONE_EDITDELETE, user, project, milestone) or milestone.project != 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():

            user_id = int(form.cleaned_data['responsible'])
            if user_id != 0:
                milestone.responsible = get_object_or_404(User, id = user_id)
            else:
                milestone.responsible = None
                milestone.completion_date = None
            old_milestone_title = milestone.title
            milestone.title = form.cleaned_data['title']
            milestone.due_date = form.cleaned_data['due_date']
            milestone.send_notification_email = form.cleaned_data['send_notification_email']
            milestone.save()

            if milestone.send_notification_email:
                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 milestone.responsible: #just notify one person
                    notification.send([milestone.responsible], "milestone_updated", {'link_url': link_url, 'milestone': milestone, 'old_milestone_title': old_milestone_title})
                else: #notify entire project
                    notification.send(users_to_notify, "milestone_updated", {'link_url': link_url, 'milestone': milestone, 'old_milestone_title': old_milestone_title })

            events_log(user, 'U', milestone.title, milestone)
            request.user.message_set.create(message=_('Milestone successfully edited.'))
    else:
        responsible_index = 0
        if milestone.responsible:
            responsible_index = milestone.responsible.id
        data = {'title': milestone.title,
                'due_date': milestone.due_date.date(),
                'responsible': responsible_index,
                'send_notification_email': milestone.send_notification_email}
        form = NewMilestoneForm(utils.format_users_for_dropdown(user, users_in_project), data)

    context = {'project': project,
               'milestone': milestone,
               'newMilestone': form,
               }
    return render_to_response("milestone/edit_milestone.html", context, context_instance = RequestContext(request))
Exemple #13
0
def delete_project(request, p_id):
    user = request.user

    project = get_object_or_404(Project, id=p_id)
    events_log(user, 'D', project.name, project)
    request.user.message_set.create(message=_("Project %s Deleted." %
                                              project.name))
    project.delete()

    return HttpResponseRedirect(
        urlresolvers.reverse('rancho.user.views.dashboard'))
Exemple #14
0
def edit(request, p_id, m_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    message = get_object_or_404(Message, pk=m_id)
    project.check_user_in_project_or_404(user)
    users_in_project = project.get_users()

    if not checkperm(PERMISSIONS_MESSAGE_EDITDELETE, user, project,
                     message) or message.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    tags = utils.get_site_tags(project)

    if request.method == 'POST':
        if message.initial_message == message:
            form = MessageForm(project.get_users(), tags, request.POST)
        else:
            form = CommentForm(request.POST)

        if form.is_valid():
            form.save(user, project, message)
            events_log(user, 'U', message.title, message)

            if message.initial_message == message:
                return HttpResponseRedirect(
                    urlresolvers.reverse('rancho.message.views.list',
                                         args=[project.id]))
            else:
                return HttpResponseRedirect(
                    urlresolvers.reverse(
                        'rancho.message.views.read_add_comment',
                        kwargs={
                            'p_id': project.id,
                            'm_id': message.initial_message.id
                        }))
    else:
        data = {'title': message.title, 'message': message.body}
        if message.initial_message == message:
            data['tags'] = message.tags
            form = MessageForm(project.get_users(), tags, data)
        else:
            form = CommentForm(data)

    context = {
        'project': project,
        'users_in_project': users_in_project,
        'form': form,
        'edit_initial': isinstance(form, MessageForm),
        'message': message
    }
    return render_to_response("message/edit_message.html",
                              context,
                              context_instance=RequestContext(request))
Exemple #15
0
def delete(request, p_id, milestone_id):
    user = request.user
    project = get_object_or_404(Project, id = p_id)
    milestone = get_object_or_404(Milestone, id = milestone_id)

    if not checkperm(PERMISSIONS_MILESTONE_EDITDELETE, user, project, milestone) or milestone.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    request.user.message_set.create(message=_('Milestone "%s" successfully deleted.') % milestone.title)
    events_log(user, 'D', milestone.title, milestone)
    milestone.delete()
    return HttpResponseRedirect(urlresolvers.reverse('rancho.milestone.views.list', args = [p_id]))
Exemple #16
0
def create(request, p_id):

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

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

    if request.method == 'POST':
        form = NewWikiEntryForm(project, request.POST)
        if form.is_valid():

            #TODO: put in form save
            wiki = Wiki()
            wiki.project = project
            wiki.creator = user
            wiki.name = form.cleaned_data['wiki_name']
            wiki.save()

            wikientry = WikiEntry()
            wikientry.content = form.cleaned_data['content']
            wikientry.author = user
            wikientry.wiki = wiki
            wikientry.save()
            wiki.last_version = wikientry
            wiki.save()

            events_log(user, 'A', wiki.name, wikientry)
            request.user.message_set.create(
                message=_('Wikiboard "%s" was successfully created.') %
                wiki.name)

            kw = {
                'p_id': project.id,
                'entry_id': wiki.id,
                'entry_version': wikientry.id
            }
            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.wikiboard.views.view_page',
                                     kwargs=kw))
    else:
        form = NewWikiEntryForm(project)

    context = {
        'project': project,
        'users_in_project': users_in_project,
        'form': form
    }
    return render_to_response("wikiboard/create_entry.html",
                              context,
                              context_instance=RequestContext(request))
Exemple #17
0
def create(request, p_id):
    '''
    Creates a new message
    '''
    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    project.check_user_in_project_or_404(user)
    users_in_project = project.get_users()

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

    tags = utils.get_site_tags(project)

    users_to_notify = utils.get_users_to_notify(project,
                                                PERMISSIONS_MESSAGE_VIEW)

    if request.method == 'POST':
        form = MessageForm(users_to_notify, tags, request.POST)
        if form.is_valid():
            msg = form.save(user, project)

            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
                                     }),
            )
            notification.send(msg.notify_to.all(), "message_new", {
                'link_url': link_url,
                'message': msg
            })

            request.user.message_set.create(message=_("Message Created"))
            events_log(user, 'A', msg.title, msg)
            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.message.views.list',
                                     args=[project.id]))
    else:
        form = MessageForm(users_to_notify, tags)

    context = {
        'project': project,
        'users_in_project': users_in_project,
        'form': form
    }
    return render_to_response("message/new_message.html",
                              context,
                              context_instance=RequestContext(request))
Exemple #18
0
def edit(request, p_id,entry_id=None,entry_version=None):

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

    if entry_id and entry_version:
        wiki = get_object_or_404(Wiki, pk=entry_id)
        wikicurentry = get_object_or_404(WikiEntry, id=entry_version)

        if not checkperm(PERMISSIONS_WIKIBOARD_CREATE, user, project, wiki ) or wiki.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))


    if request.method=='POST':
        tinyMceForm = TinyMceForm(request.POST)
        if tinyMceForm.is_valid():

            wikientry = WikiEntry()
            wikientry.content = tinyMceForm.cleaned_data['content']
            wikientry.author = user
            wikientry.wiki = wiki
            wikientry.save()
            wiki.last_version = wikientry
            wiki.save()

            events_log(user, 'U', wiki.name, wikientry)

            request.user.message_set.create(message=_('Wikiboard "%s" was successfully updated.') % wiki.name)
            kw = {'p_id': project.id, 'entry_id': wiki.id, 'entry_version': wikientry.id}
            return HttpResponseRedirect(urlresolvers.reverse('rancho.wikiboard.views.view_page', kwargs=kw))

    else:
        if wiki:
            data = {'content': wikicurentry.content}
        else:
            data = {}

        tinyMceForm = TinyMceForm(data)

    context = {'project': project,
               'users_in_project': users_in_project,
               'wiki': wiki,
               'wikicurentry': wikicurentry,
               'wiki_entrys': WikiEntry.objects.filter(wiki=wiki).order_by('-creation_date'),
               'form': tinyMceForm }
    return render_to_response("wikiboard/edit_entry.html", context,
                              context_instance=RequestContext(request))
Exemple #19
0
def delete(request,p_id,entry_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    wiki = get_object_or_404(Wiki, pk=entry_id)
    project.check_user_in_project_or_404(user)

    if not checkperm(PERMISSIONS_WIKIBOARD_EDITDELETE, user, project, wiki ) or wiki.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    events_log(user, 'D', wiki.name, wiki)
    user.message_set.create(message = _('The Wikiboard "%s" has been successfully deleted.') % wiki.name)
    wiki.delete()

    return HttpResponseRedirect(urlresolvers.reverse('rancho.wikiboard.views.list', args=[p_id]))
Exemple #20
0
def add_todo(request, p_id, todo_list):
    user = request.user
    project = get_object_or_404(Project, id = p_id)
    todo_list = get_object_or_404(ToDoList, id = todo_list)

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

    if request.method == 'GET':
        try:
            todo_desc = request.GET.get('todo_desc')
            todo_responsible = int(request.GET.get('todo_responsible'))
        except:
            return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
        if not todo_desc:
            result = """<taconite>
                            <show select="#empty_todo_error{{ todo_list }}"/>
                        </taconite>"""
            result = loader.get_template_from_string(result).render(Context({'todo_list': todo_list.id}))
            return HttpResponse(result, mimetype='text/xml')
        if todo_responsible:
            todo_responsible = get_object_or_404(User, pk = todo_responsible)
        todo = ToDo()
        todo.creator = user
        if todo_responsible != 0:
            todo.responsible = todo_responsible
        todo.description = todo_desc
        todo.todo_list = todo_list
        todo.save()
        todo_list.number_of_todos+=1
        todo_list.save()
        todo.position = todo_list.number_of_todos + 1
        todo.save()

        events_log(user, 'A', todo.description, todo)

        #notify all users with perm
        link_url = u"http://%s%s" % ( unicode(Site.objects.get_current()), urlresolvers.reverse('rancho.todo.views.view_todo_list', kwargs={'p_id': project.id, 'todo_list_id': todo_list.id}),)
        if todo.responsible: #just notify one person
            notification.send([todo.responsible], "todo_new", {'link_url': link_url, 'todo': todo, 'project': project, 'todo_list': todo_list})
        else: #notify all users with perm
            users_to_notify = utils.get_users_to_notify(project, PERMISSIONS_TODO_VIEW)
            notification.send(users_to_notify, "todo_new", {'link_url': link_url, 'todo': todo, 'project': project, 'todo_list': todo_list})

        context = Context({'todo_list': todo_list.id, 'user': user,
                           'todo': todo, 'project': project})
        result = loader.get_template('todo/add_todo.html').render(context)
        return HttpResponse(result, mimetype='text/xml')
Exemple #21
0
def delete_todo_list(request, p_id):

    #TODOS: Need to delete todo in todo list
    user = request.user
    project = get_object_or_404(Project, id = p_id)
    if request.method == 'GET':
        todo_list = get_object_or_404(ToDoList, id = int(request.GET.get('todo_list')))

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project, todo_list) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        request.user.message_set.create(message=_('ToDo list "%(todo_list_name)s" deleted.') % {'todo_list_name': todo_list.title})
        todo_list.delete()

        events_log(user, 'D', todo_list.title, todo_list)
    return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
Exemple #22
0
def new_project(request):
    user = request.user

    if request.method=='POST':
        form = NewProjectForm(request.POST, request.FILES)
        if form.is_valid():
            project = form.save( user )

            events_log(user, 'A', project.name, project)

            return HttpResponseRedirect(urlresolvers.reverse('rancho.project.views.overview', args=[project.id]))
    else:
        form = NewProjectForm()

    return render_to_response('project/new_project.html',
                            {'newProjectForm' : form},
                            context_instance=RequestContext(request))
Exemple #23
0
def incomplete(request, p_id, milestone_id):
    user = request.user
    project = get_object_or_404(Project, id = p_id)
    milestone = get_object_or_404(Milestone, id = milestone_id)
    if not checkperm(PERMISSIONS_MILESTONE_VIEW, user, project ):
        return HttpResponseForbidden(_('Forbidden Access'))
    if milestone.completion_date:
        milestone.completion_date = None
        # PERMISSIONS
        if milestone.todolist:
            for todo in milestone.todolist.get_todos():
                todo.responsible = user
                todo.completion_date = None
                todo.save()
        milestone.save()
        events_log(user, 'ICOMP', milestone.title, milestone)
    return HttpResponseRedirect(urlresolvers.reverse('rancho.milestone.views.list', args = [p_id]))
Exemple #24
0
def edit(request,p_id,m_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    message = get_object_or_404(Message, pk=m_id)
    project.check_user_in_project_or_404(user)
    users_in_project = project.get_users()

    if not checkperm(PERMISSIONS_MESSAGE_EDITDELETE, user, project, message ) or message.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    tags = utils.get_site_tags(project)

    if request.method == 'POST':
        if message.initial_message == message:
            form=MessageForm(project.get_users(), tags, request.POST)
        else:
            form=CommentForm(request.POST)

        if form.is_valid():
            form.save(user, project, message)
            events_log(user, 'U', message.title, message)

            if message.initial_message == message:
                return HttpResponseRedirect(urlresolvers.reverse('rancho.message.views.list', args=[project.id]))
            else:
                return HttpResponseRedirect(urlresolvers.reverse('rancho.message.views.read_add_comment', kwargs={'p_id': project.id, 'm_id': message.initial_message.id}))
    else:
        data = {'title':message.title,
                'message':message.body
                }
        if message.initial_message == message:
            data['tags'] = message.tags
            form=MessageForm(project.get_users(), tags, data)
        else:
            form=CommentForm(data)

    context = {'project': project,
               'users_in_project': users_in_project,
               'form': form,
               'edit_initial': isinstance(form, MessageForm),
               'message': message
                }
    return render_to_response("message/edit_message.html", context,
                              context_instance=RequestContext(request))
Exemple #25
0
def delete_todo(request, p_id):

    #TODOS: Need to delete todo in todo list
    user = request.user
    project = get_object_or_404(Project, id = p_id)
    if request.method == 'GET':
        todo_item = get_object_or_404(ToDo, id = int(request.GET.get('todo')))
        todo_list = todo_item.todo_list

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project, todo_item) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        todo_item.delete()
        events_log(user, 'D', todo_item.description, todo_item)

        return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
    else:
        return HttpResponseRedirect(urlresolvers.reverse('rancho.todo.views.list', args = [p_id]))
Exemple #26
0
def new_project(request):
    user = request.user

    if request.method == 'POST':
        form = NewProjectForm(request.POST, request.FILES)
        if form.is_valid():
            project = form.save(user)

            events_log(user, 'A', project.name, project)

            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.project.views.overview',
                                     args=[project.id]))
    else:
        form = NewProjectForm()

    return render_to_response('project/new_project.html',
                              {'newProjectForm': form},
                              context_instance=RequestContext(request))
Exemple #27
0
def delete(request, p_id, entry_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    wiki = get_object_or_404(Wiki, pk=entry_id)
    project.check_user_in_project_or_404(user)

    if not checkperm(PERMISSIONS_WIKIBOARD_EDITDELETE, user, project,
                     wiki) or wiki.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    events_log(user, 'D', wiki.name, wiki)
    user.message_set.create(
        message=_('The Wikiboard "%s" has been successfully deleted.') %
        wiki.name)
    wiki.delete()

    return HttpResponseRedirect(
        urlresolvers.reverse('rancho.wikiboard.views.list', args=[p_id]))
Exemple #28
0
def create(request, p_id):

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

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


    if request.method=='POST':
        form = NewWikiEntryForm(project, request.POST)
        if form.is_valid():

            #TODO: put in form save
            wiki = Wiki()
            wiki.project = project
            wiki.creator = user
            wiki.name = form.cleaned_data['wiki_name']
            wiki.save()

            wikientry = WikiEntry()
            wikientry.content = form.cleaned_data['content']
            wikientry.author = user
            wikientry.wiki = wiki
            wikientry.save()
            wiki.last_version = wikientry
            wiki.save()

            events_log(user, 'A', wiki.name, wikientry)
            request.user.message_set.create(message=_('Wikiboard "%s" was successfully created.') % wiki.name)

            kw = {'p_id': project.id, 'entry_id': wiki.id, 'entry_version': wikientry.id}
            return HttpResponseRedirect(urlresolvers.reverse('rancho.wikiboard.views.view_page', kwargs=kw))
    else:
        form = NewWikiEntryForm(project)

    context = {'project': project,
               'users_in_project': users_in_project,
               'form': form }
    return render_to_response("wikiboard/create_entry.html", context,
                              context_instance=RequestContext(request))
Exemple #29
0
def edit_todo(request, p_id, todo_id):

    user = request.user
    project = get_object_or_404(Project, id=p_id)
    todo = get_object_or_404(ToDo, id=todo_id)
    todo_list = todo.todo_list

    if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project,
                     todo) or todo_list.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    users_in_project = utils.format_users_for_dropdown(user,
                                                       project.get_users())
    context = {'project': project, 'todo': todo, 'todo_list': todo_list}
    if request.method == 'POST':
        edit_todo_form = EditToDoForm(users_in_project, request.POST)
        context['edit_todo_form'] = edit_todo_form
        if edit_todo_form.is_valid():
            user_id = int(edit_todo_form.cleaned_data['responsible'])
            if user_id != 0:
                todo.responsible = get_object_or_404(User, id=user_id)
            else:
                todo.responsible = None
            todo.description = edit_todo_form.cleaned_data['title']
            todo.save()

            events_log(user, 'U', todo.description, todo)
            request.user.message_set.create(
                message=_('ToDo item successfully updated.'))
        return render_to_response('todo/edit_todo.html',
                                  context,
                                  context_instance=RequestContext(request))
    responsible_index = 0
    if todo.responsible:
        responsible_index = todo.responsible.id
    data = {'title': todo.description, 'responsible': responsible_index}
    edit_todo_form = EditToDoForm(users_in_project, data)
    context['edit_todo_form'] = edit_todo_form
    return render_to_response('todo/edit_todo.html',
                              context,
                              context_instance=RequestContext(request))
Exemple #30
0
def delete_todo(request, p_id):

    #TODOS: Need to delete todo in todo list
    user = request.user
    project = get_object_or_404(Project, id=p_id)
    if request.method == 'GET':
        todo_item = get_object_or_404(ToDo, id=int(request.GET.get('todo')))
        todo_list = todo_item.todo_list

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project,
                         todo_item) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        todo_item.delete()
        events_log(user, 'D', todo_item.description, todo_item)

        return HttpResponseRedirect(
            urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
    else:
        return HttpResponseRedirect(
            urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
Exemple #31
0
def delete_todo_list(request, p_id):

    #TODOS: Need to delete todo in todo list
    user = request.user
    project = get_object_or_404(Project, id=p_id)
    if request.method == 'GET':
        todo_list = get_object_or_404(ToDoList,
                                      id=int(request.GET.get('todo_list')))

        if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project,
                         todo_list) or todo_list.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

        request.user.message_set.create(
            message=_('ToDo list "%(todo_list_name)s" deleted.') %
            {'todo_list_name': todo_list.title})
        todo_list.delete()

        events_log(user, 'D', todo_list.title, todo_list)
    return HttpResponseRedirect(
        urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
Exemple #32
0
def edit_todo_list(request, p_id, todo_list_id):

    user = request.user
    project = get_object_or_404(Project, id=p_id)
    edit_todo_list = get_object_or_404(ToDoList, id=todo_list_id)

    if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project,
                     edit_todo_list) or edit_todo_list.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    context = {'todo_list': edit_todo_list, 'project': project}
    milestones = [(milestone.id, milestone.title) for milestone \
                  in edit_todo_list.get_free_milestones()]
    milestones = [(0, _("None"))] + milestones
    if request.method == 'POST':
        data = request.POST.copy()
        edit_todo_list_form = EditToDoListForm(milestones, data)
        context['edit_todo_list_form'] = edit_todo_list_form
        if edit_todo_list_form.is_valid():
            edit_todo_list_form.save_with_form_data(edit_todo_list)
            events_log(user, 'U', edit_todo_list.title, edit_todo_list)
            request.user.message_set.create(
                message=_('ToDo list successfully updated.'))

        return render_to_response('todo/edit_todo_list.html',
                                  context,
                                  context_instance=RequestContext(request))
    milestone_id = 0
    if edit_todo_list.milestone:
        milestone_id = edit_todo_list.milestone.id
    data = {
        'todolist_name': edit_todo_list.title,
        'todolist_description': edit_todo_list.description,
        'milestone': milestone_id
    }
    edit_todo_list_form = EditToDoListForm(milestones, data)
    context['edit_todo_list_form'] = edit_todo_list_form
    return render_to_response('todo/edit_todo_list.html',
                              context,
                              context_instance=RequestContext(request))
Exemple #33
0
def delete(request, p_id, v_id):

    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    project.check_user_in_project_or_404(user)
    file_version = get_object_or_404(FileVersion, pk=v_id)

    if not checkperm(PERMISSIONS_FILE_EDITDELETE, user, project,
                     file_version) or file_version.file.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    #delete all versions if main or delete just one
    if file_version.file.last_file_version == file_version:
        FileVersion.objects.filter(file=file_version.file).delete()
        File.objects.filter(id=file_version.file.id).delete()

        events_log(user, 'D', file_version.file.title, file_version.file)
    else:
        file_version.delete()
    request.user.message_set.create(message=_('File successfully deleted'))
    return HttpResponseRedirect(
        urlresolvers.reverse('rancho.file.views.list', args=[project.id]))
Exemple #34
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))
Exemple #35
0
def create(request,p_id):
    '''
    Creates a new message
    '''
    user = request.user
    project = get_object_or_404(Project, pk=p_id)
    project.check_user_in_project_or_404(user)
    users_in_project = project.get_users()

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

    tags = utils.get_site_tags(project)

    users_to_notify = utils.get_users_to_notify(project, PERMISSIONS_MESSAGE_VIEW)

    if request.method == 'POST':
        form = MessageForm(users_to_notify,tags, request.POST)
        if form.is_valid():
            msg = form.save(user, project)

            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}),)
            notification.send(msg.notify_to.all(), "message_new", {'link_url': link_url, 'message': msg })

            request.user.message_set.create(message=_("Message Created"))
            events_log(user, 'A', msg.title, msg)
            return HttpResponseRedirect(urlresolvers.reverse('rancho.message.views.list', args=[project.id]))
    else:
        form = MessageForm(users_to_notify, tags)

    context = {'project': project,
               'users_in_project': users_in_project,
               'form': form }
    return render_to_response("message/new_message.html", context,
                              context_instance=RequestContext(request)
                              )
Exemple #36
0
def edit_todo(request, p_id, todo_id):

    user = request.user
    project = get_object_or_404(Project, id = p_id)
    todo = get_object_or_404(ToDo, id = todo_id)
    todo_list = todo.todo_list

    if not checkperm(PERMISSIONS_TODO_EDITDELETE, user, project, todo) or todo_list.project != project:
        return HttpResponseForbidden(_('Forbidden Access'))

    users_in_project = utils.format_users_for_dropdown(user, project.get_users())
    context = {'project': project, 'todo': todo, 'todo_list': todo_list}
    if request.method == 'POST':
        edit_todo_form = EditToDoForm(users_in_project, request.POST)
        context['edit_todo_form'] = edit_todo_form
        if edit_todo_form.is_valid():
            user_id = int(edit_todo_form.cleaned_data['responsible'])
            if user_id != 0:
                todo.responsible = get_object_or_404(User, id = user_id)
            else:
                todo.responsible = None
            todo.description = edit_todo_form.cleaned_data['title']
            todo.save()

            events_log(user, 'U', todo.description, todo)
            request.user.message_set.create(message=_('ToDo item successfully updated.'))
        return render_to_response('todo/edit_todo.html', context,
                      context_instance=RequestContext(request))
    responsible_index = 0
    if todo.responsible:
        responsible_index = todo.responsible.id
    data = {'title': todo.description, 'responsible': responsible_index}
    edit_todo_form = EditToDoForm(users_in_project, data)
    context['edit_todo_form'] = edit_todo_form
    return render_to_response('todo/edit_todo.html', context,
                          context_instance=RequestContext(request))
Exemple #37
0
def add_todo(request, p_id, todo_list):
    user = request.user
    project = get_object_or_404(Project, id=p_id)
    todo_list = get_object_or_404(ToDoList, id=todo_list)

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

    if request.method == 'GET':
        try:
            todo_desc = request.GET.get('todo_desc')
            todo_responsible = int(request.GET.get('todo_responsible'))
        except:
            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.todo.views.list', args=[p_id]))
        if not todo_desc:
            result = """<taconite>
                            <show select="#empty_todo_error{{ todo_list }}"/>
                        </taconite>"""
            result = loader.get_template_from_string(result).render(
                Context({'todo_list': todo_list.id}))
            return HttpResponse(result, mimetype='text/xml')
        if todo_responsible:
            todo_responsible = get_object_or_404(User, pk=todo_responsible)
        todo = ToDo()
        todo.creator = user
        if todo_responsible != 0:
            todo.responsible = todo_responsible
        todo.description = todo_desc
        todo.todo_list = todo_list
        todo.save()
        todo_list.number_of_todos += 1
        todo_list.save()
        todo.position = todo_list.number_of_todos + 1
        todo.save()

        events_log(user, 'A', todo.description, todo)

        #notify all users with perm
        link_url = u"http://%s%s" % (
            unicode(Site.objects.get_current()),
            urlresolvers.reverse('rancho.todo.views.view_todo_list',
                                 kwargs={
                                     'p_id': project.id,
                                     'todo_list_id': todo_list.id
                                 }),
        )
        if todo.responsible:  #just notify one person
            notification.send(
                [todo.responsible], "todo_new", {
                    'link_url': link_url,
                    'todo': todo,
                    'project': project,
                    'todo_list': todo_list
                })
        else:  #notify all users with perm
            users_to_notify = utils.get_users_to_notify(
                project, PERMISSIONS_TODO_VIEW)
            notification.send(
                users_to_notify, "todo_new", {
                    'link_url': link_url,
                    'todo': todo,
                    'project': project,
                    'todo_list': todo_list
                })

        context = Context({
            'todo_list': todo_list.id,
            'user': user,
            'todo': todo,
            'project': project
        })
        result = loader.get_template('todo/add_todo.html').render(context)
        return HttpResponse(result, mimetype='text/xml')
Exemple #38
0
def edit(request, p_id, entry_id=None, entry_version=None):

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

    if entry_id and entry_version:
        wiki = get_object_or_404(Wiki, pk=entry_id)
        wikicurentry = get_object_or_404(WikiEntry, id=entry_version)

        if not checkperm(PERMISSIONS_WIKIBOARD_CREATE, user, project,
                         wiki) or wiki.project != project:
            return HttpResponseForbidden(_('Forbidden Access'))

    if request.method == 'POST':
        tinyMceForm = TinyMceForm(request.POST)
        if tinyMceForm.is_valid():

            wikientry = WikiEntry()
            wikientry.content = tinyMceForm.cleaned_data['content']
            wikientry.author = user
            wikientry.wiki = wiki
            wikientry.save()
            wiki.last_version = wikientry
            wiki.save()

            events_log(user, 'U', wiki.name, wikientry)

            request.user.message_set.create(
                message=_('Wikiboard "%s" was successfully updated.') %
                wiki.name)
            kw = {
                'p_id': project.id,
                'entry_id': wiki.id,
                'entry_version': wikientry.id
            }
            return HttpResponseRedirect(
                urlresolvers.reverse('rancho.wikiboard.views.view_page',
                                     kwargs=kw))

    else:
        if wiki:
            data = {'content': wikicurentry.content}
        else:
            data = {}

        tinyMceForm = TinyMceForm(data)

    context = {
        'project':
        project,
        'users_in_project':
        users_in_project,
        'wiki':
        wiki,
        'wikicurentry':
        wikicurentry,
        'wiki_entrys':
        WikiEntry.objects.filter(wiki=wiki).order_by('-creation_date'),
        'form':
        tinyMceForm
    }
    return render_to_response("wikiboard/edit_entry.html",
                              context,
                              context_instance=RequestContext(request))