Example #1
0
def test_data(request, group_slug, count):
    project = get_object_or_404(Project, slug=group_slug)
    admin_access_or_403(project, request.user )
    count = int(count)
    story_count = project.stories.all().count()
    for i in range(count) :
        story = Story( rank=i + story_count,
                       summary="Test story #" + str(story_count+i),
                       local_id=i + story_count,
                       detail="Test story detail data",
                       creator=request.user,
                       points=5,
                       iteration=project.get_default_iteration(),
                       project=project);
        story.save();
    return HttpResponse("OK")
Example #2
0
def test_data(request, group_slug, count):
    project = get_object_or_404(Project, slug=group_slug)
    admin_access_or_403(project, request.user)
    count = int(count)
    story_count = project.stories.all().count()
    for i in range(count):
        story = Story(rank=i + story_count,
                      summary="Test story #" + str(story_count + i),
                      local_id=i + story_count,
                      detail="Test story detail data",
                      creator=request.user,
                      points=5,
                      iteration=project.get_default_iteration(),
                      project=project)
        story.save()
    return HttpResponse("OK")
Example #3
0
def import_story(request, project_slug, queue_id):
    logger.debug("Adding story from StoryQueue")
    project = get_object_or_404(Project, slug=project_slug)
    write_access_or_403(project, request.user)
    try:
        story = StoryQueue.objects.get(id=queue_id)
    except:
        return HttpResponseRedirect(
            reverse("story_queue_url", kwargs={'project_slug': project_slug}))

    if story.project != project:
        # Shenanigans here!
        raise PermissionDenied()

    # TODO (Useability):
    #    What should rank be set at to make the most sense?
    new_story = Story(project=project,
                      rank=0,
                      local_id=project.getNextId(),
                      summary=story.summary,
                      detail=story.detail,
                      extra_1=story.extra_1,
                      extra_2=story.extra_2,
                      extra_3=story.extra_3,
                      status=story.status,
                      points=story.points,
                      iteration=project.get_default_iteration(),
                      creator=request.user)
    new_story.save()
    mapping = ExternalStoryMapping(story=new_story,
                                   external_id=story.external_id,
                                   external_url=story.external_url,
                                   extra_slug=story.extra_slug)
    mapping.save()
    request.user.message_set.create(message="Story imported.")

    story.delete()  # delete the story queue object since we just imported it.

    signals.story_imported.send(sender=request,
                                story=new_story,
                                story_queue=story,
                                user=request.user)

    return HttpResponseRedirect(
        reverse("story_queue_url",
                kwargs={'project_slug':
                        project_slug}))  #story_queue(request,project_slug)
Example #4
0
def import_stories(request, project_slug):
    logger.debug("Adding story from StoryQueue")
    project = get_object_or_404(Project, slug=project_slug)
    write_access_or_403(project, request.user)
    queue_ids = str(request.POST.get("stories", "")).split(",")
    iteration = project.get_default_iteration()
    count = 0

    for queue_id in queue_ids:
        try:
            story = StoryQueue.objects.get(id=queue_id)
        except:
            continue

        if story.project != project:
            # Shenanigans here!
            raise PermissionDenied()

        new_story = Story(project=project,
                          rank=0,
                          local_id=project.getNextId(),
                          summary=story.summary,
                          detail=story.detail,
                          extra_1=story.extra_1,
                          extra_2=story.extra_2,
                          extra_3=story.extra_3,
                          status=story.status,
                          points=story.points,
                          iteration=iteration,
                          creator=request.user)
        new_story.save()
        logger.debug("Added story %d" % new_story.id)
        mapping = ExternalStoryMapping(story=new_story,
                                       external_id=story.external_id,
                                       external_url=story.external_url,
                                       extra_slug=story.extra_slug)
        mapping.save()
        story.delete(
        )  # delete the story queue object since we just imported it.
        signals.story_imported.send(sender=request,
                                    story=new_story,
                                    story_queue=story,
                                    user=request.user)
        count += 1

    return HttpResponse("%d imported" % count)
Example #5
0
def import_stories(request, project_slug):
    logger.debug("Adding story from StoryQueue")
    project = get_object_or_404(Project, slug=project_slug)
    write_access_or_403(project, request.user)
    queue_ids = str(request.POST.get("stories", "")).split(",")
    iteration = project.get_default_iteration()
    count = 0

    for queue_id in queue_ids:
        try:
            story = StoryQueue.objects.get(id=queue_id)
        except:
            continue

        if story.project != project:
            # Shenanigans here!
            raise PermissionDenied()

        new_story = Story(project=project, rank=0,
                          local_id=project.getNextId(),
                          summary=story.summary,
                          detail=story.detail,
                          extra_1=story.extra_1,
                          extra_2=story.extra_2,
                          extra_3=story.extra_3,
                          status=story.status,
                          points=story.points,
                          iteration=iteration,
                          creator=request.user
                          )
        new_story.save()
        logger.debug("Added story %d" % new_story.id)
        mapping = ExternalStoryMapping(story=new_story,
                                       external_id=story.external_id,
                                       external_url=story.external_url,
                                       extra_slug=story.extra_slug)
        mapping.save()
        # delete the story queue object since we just imported it.
        story.delete()
        signals.story_imported.send(
            sender=request, story=new_story, story_queue=story, user=request.user)
        count += 1

    return HttpResponse("%d imported" % count)
Example #6
0
def import_story(request, project_slug, queue_id):
    logger.debug("Adding story from StoryQueue")
    project = get_object_or_404( Project, slug=project_slug )
    write_access_or_403(project, request.user )
    try:
        story = StoryQueue.objects.get(id=queue_id)
    except:
        return HttpResponseRedirect(reverse("story_queue_url", kwargs={'project_slug':project_slug} ))
        
    if story.project != project:
        # Shenanigans here!
        raise PermissionDenied()

    # TODO (Useability):
    #    What should rank be set at to make the most sense?
    new_story = Story(project=project, rank=0,
                      local_id=project.getNextId(),
                      summary=story.summary,
                      detail=story.detail,
                      extra_1=story.extra_1,
                      extra_2=story.extra_2,
                      extra_3=story.extra_3,
                      status=story.status,
                      points=story.points,
                      iteration = project.get_default_iteration(),
                      creator = request.user
                      )
    new_story.save()
    mapping = ExternalStoryMapping(story=new_story,
                                   external_id=story.external_id,
                                   external_url=story.external_url,
                                   extra_slug=story.extra_slug)
    mapping.save()
    request.user.message_set.create(message="Story imported.")

    story.delete() # delete the story queue object since we just imported it.

    signals.story_imported.send( sender=request, story=new_story, story_queue=story, user=request.user )

    return HttpResponseRedirect(reverse("story_queue_url", kwargs={'project_slug':project_slug} )) #story_queue(request,project_slug)
Example #7
0
def _importSingleRow(row, iteration, user):
    try:
        local_id = _getFieldFromImportData(row, "Story ID")
        story = None
        if local_id is not None:
            try:
                story = Story.objects.get(
                    project=iteration.project, local_id=int(local_id))
                logger.debug("Found story to update (%d)" % int(local_id))
            except:
                # Story didn't exist already, so we'll be making a new one
                # This is a little dangerous if there was a story id set, since we'll now be ignoring
                # that and that might not be what the user intended.
                story = Story(
                    project=iteration.project, iteration=iteration, local_id=iteration.project.getNextId())
                story.creator = user
                logger.debug("Creating new story to import into.")

        # A user could move rows from one iteration export to another, so set
        # it here. It'll probably be rare to actually happen.
        story.iteration = iteration

        headers = _getHeaders(iteration.project)
        for header in headers:
            value = _getFieldFromImportData(row, header[1])
            if value is not None:
                try:
                    # This should be a method capable of setting the property
                    f = header[4]
                    f(story, value)
                    # logger.debug("Setting %s to %s" % (header[1],value) )
                except:
                    logger.info("Failed to set %s to %s, ignoring." %
                                (header[1], unicode(value)))

        story.save()
        return True
    except Exception as e:
        logger.debug("Failed to import a record. %s" % e)
        return False
Example #8
0
def home(request):
    my_projects = []
    member_projects = []
    organizations = []
    activities = []
    next_page = False

    if request.user.is_authenticated():
        organizations = Organization.getOrganizationsForUser(request.user)
        activities = Activity.getActivitiesForUser(request.user)

        assigned_stories = Story.getAssignedStories(request.user)

        paginator = Paginator(activities, 10)
        page_obj = paginator.page(1)
        activities = page_obj.object_list
        next_page = page_obj.has_next()

        memberships = ProjectMember.objects.filter(user=request.user)
        for membership in memberships:
            try:

                if (membership.project.creator_id == request.user.id):
                    my_projects.append(membership.project)
                else:
                    member_projects.append(membership.project)
            except:
                pass

        num_projects = len(member_projects) + len(
            filter(lambda p: p.organization == None, my_projects))
        blank_state = True if (num_projects +
                               len(organizations)) == 0 else False
        return render_to_response(
            "homepage.html",
            {
                "my_projects": my_projects,
                "my_organizations": organizations,
                "activities": activities,
                "activities_next_page": next_page,
                "assigned_stories": assigned_stories,
                "return_type": "queue",  # for the queue mini stories
                "member_projects": member_projects,
                "num_projects": num_projects,
                "now": datetime.datetime.now(),
                "blank_state": blank_state
            },
            context_instance=RequestContext(request))
    else:
        return render_to_response("unauthenticated_homepage.html",
                                  context_instance=RequestContext(request))
Example #9
0
def home(request):
    my_projects = []
    member_projects = []
    organizations = []
    activities = []
    next_page = False

    if request.user.is_authenticated():
        organizations = Organization.getOrganizationsForUser(request.user)
        activities = Activity.getActivitiesForUser(request.user)

        assigned_stories = Story.getAssignedStories(request.user)

        paginator = Paginator(activities, 10)
        page_obj = paginator.page(1)
        activities = page_obj.object_list
        next_page = page_obj.has_next()

        memberships = ProjectMember.objects.filter(user=request.user)
        for membership in memberships:
            try:

                if membership.project.creator_id == request.user.id:
                    my_projects.append(membership.project)
                else:
                    member_projects.append(membership.project)
            except:
                pass

        num_projects = len(member_projects) + len(filter(lambda p: p.organization == None, my_projects))
        blank_state = True if (num_projects + len(organizations)) == 0 else False
        return render_to_response(
            "homepage.html",
            {
                "my_projects": my_projects,
                "my_organizations": organizations,
                "activities": activities,
                "activities_next_page": next_page,
                "assigned_stories": assigned_stories,
                "return_type": "queue",  # for the queue mini stories
                "member_projects": member_projects,
                "num_projects": num_projects,
                "now": datetime.datetime.now(),
                "blank_state": blank_state,
            },
            context_instance=RequestContext(request),
        )
    else:
        return render_to_response("unauthenticated_homepage.html", context_instance=RequestContext(request))
Example #10
0
def _importSingleRow(row, iteration, user):
    try:
        local_id = _getFieldFromImportData(row, "Story ID")
        story = None
        if local_id != None:
            try:
                story = Story.objects.get(project=iteration.project,
                                          local_id=int(local_id))
                logger.debug("Found story to update (%d)" % int(local_id))
            except:
                # Story didn't exist already, so we'll be making a new one
                # This is a little dangerous if there was a story id set, since we'll now be ignoring
                # that and that might not be what the user intended.
                story = Story(project=iteration.project,
                              iteration=iteration,
                              local_id=iteration.project.getNextId())
                story.creator = user
                logger.debug("Creating new story to import into.")

        # A user could move rows from one iteration export to another, so set it here. It'll probably be rare to actually happen.
        story.iteration = iteration

        headers = _getHeaders(iteration.project)
        for header in headers:
            value = _getFieldFromImportData(row, header[1])
            if value != None:
                try:
                    f = header[
                        4]  # This should be a method capable of setting the property
                    f(story, value)
                    # logger.debug("Setting %s to %s" % (header[1],value) )
                except:
                    logger.info("Failed to set %s to %s, ignoring." %
                                (header[1], unicode(value)))

        story.save()
        return True
    except Exception as e:
        logger.debug("Failed to import a record. %s" % e)
        return False