Пример #1
0
def item_add(request, client_pk, job_pk):
    client = Client.objects.get(pk=client_pk)
    job = Job.objects.get(pk=job_pk, client=client)  # Check if Job exists
    if job:
        if request.method == 'POST':
            post = request.POST.copy()
            num_pages = int(post['num_pages'])
            start_page = int(post['start_page'])
            name = str(post['name'])
            desc = str(post['desc'])
            post['job'] = job.pk

            # Save Item:
            item = Item.objects.create(name=name, desc=desc, job=job)
            print('\n\n\n' + str(item))
            # Create all the neccesary pages:
            i = 0
            for i in range(i, num_pages):
                page = Page.objects.create()
                page.save()
                # Create relationship to Version:
                base = Version.objects.create(
                    abs_num=i + 1,
                    rel_num=i + start_page,
                    item=item,
                    page=page,
                )
                base.save()
                # And add a Revision to the Version:
                revision = Revision(rev_number=0, version=base)
                revision.save()

            message = 'You added Item: %r' % name + ' - %r' % desc + ' - %r' % num_pages
            return render_to_response('item_add.html', {
                'message': message,
                'client': client,
                'job': job,
            })
        return render_to_response('item_add.html', {
            'client': client,
            'job': job,
        })
    else:
        raise Http404
Пример #2
0
def item_add (request, client_pk, job_pk):
    client = Client.objects.get(pk=client_pk)
    job = Job.objects.get(pk=job_pk, client=client)  # Check if Job exists
    if job:
        if request.method == 'POST':
            post = request.POST.copy()
            num_pages = int(post['num_pages'])
            start_page = int(post['start_page'])
            name = str(post['name'])
            desc = str(post['desc'])
            post['job'] = job.pk

            # Save Item:
            item = Item.objects.create(name=name, desc=desc, job=job)
            print('\n\n\n' + str(item))
            # Create all the neccesary pages:
            i = 0
            for i in range(i, num_pages):
                page = Page.objects.create()
                page.save()
                # Create relationship to Version:
                base = Version.objects.create(
                    abs_num=i + 1, rel_num=i + start_page, item=item, page=page,
                )
                base.save()

            # Add a initial PENDING Revision to each new page:
            last_pages = Page.objects.filter(item=item)
            for page in last_pages:
                revision = Revision(rev_number=0, page=page)
                revision.save()
            message = 'You added Item: %r' % name + ' - %r' % desc + ' - %r' % num_pages
            return render_to_response('item_add.html',
                                      {'message': message, 'client': client, 'job': job, })
        return render_to_response('item_add.html', {
        'client': client,
        'job': job,
        })
    else:
        raise Http404
Пример #3
0
def comment_add(request, version, item, job, client):
    # This conditions also checks that POST data comes from the same page
    # where the send button was hit. Avoids accidentally adding comments
    # from a different form and receiving POST twice from different forms
    # (since forms share IDs in the template):
    if request.method == 'POST' and int(
            request.POST['from_page']) == version.rel_num:
        post = request.POST.copy()
        print(post)
        print('\nProcessing POST...')

        # Extract variables form POST message
        # TODO: sanitize entries
        comment = post['comment']
        new_status = post['status']
        pages = post.getlist('pages[]')
        print('\tpages: ' + str(pages) + '\n\tcomment: ' + str(comment) +
              '\n\tnew_status: ' + str(new_status) + '\n\tfrom_page: ' +
              str(post['from_page']) + '\n\tcalling_page: ' +
              str(version.rel_num))

        # Create a comment and save it for later:
        new_comment = Comment(comment=comment)
        new_comment.save()
        print('\nNew Comment saved.\n')

        # Assign comment to a revision of its own page
        # and also to each page in the "affects too" list.
        # This revision can be:
        # a) if the user adding the comment belongs to providers list, the current last_rev()
        # b) if the user adding the comment belongs to clients list, a new revision (i.e.: last_rev()+1)
        print('Pages affected:')
        print(
            'count: \tpg_abs_num: \tpg_rel_num: \tcurr_rev: \tnew_rev: \tchanges rev?'
        )
        c = 0
        for p in pages:
            current_page_num = int(p)
            current_version = Version.objects.get(rel_num=current_page_num,
                                                  item=item,
                                                  name=version.name)
            current_page = current_version.page
            current_rev = current_page.last_rev()

            # Add new revision only when status has been changed
            if current_rev.status != new_status:
                new_rev_num = current_rev.rev_number + 1
                new_revision = Revision(rev_number=new_rev_num,
                                        page=current_page,
                                        status=new_status)
                new_revision.save()
                revision = new_revision
                changes = 'Yes'
            else:  # Do not create a new revision
                revision = current_rev
                changes = 'No'

            print(
                str(c) + '\t\t' + str(current_version.abs_num) + '\t\t' +
                str(current_version.rel_num) + '\t\t' +
                str(current_rev.rev_number) + '\t\t' +
                str(revision.rev_number) + '\t\t' + str(changes))

            # Associate new_comment to revision
            new_comment.revision.add(revision)
            c += 1

        print('\nNew Comment \"' + str(new_comment.comment) +
              '\" added to pages ' + str(pages) + ' inside ' + '\"' +
              str(job.name) + '\"/\"' + str(item.name) + '\".')
    return {
        'version': version,
        'item': item,
        'job': job,
        'client': client,
    }
Пример #4
0
def comment_add (request, version, item, job, client):
    # This conditions also checks that POST data comes from the same page
    # where the send button was hit. Avoids accidentally adding comments
    # from a different form and receiving POST twice from different forms
    # (since forms share IDs in the template):
    if request.method == 'POST' and int(request.POST['from_page']) == version.rel_num:
        post = request.POST.copy()
        print(post)
        print('\nProcessing POST...')

        # Extract variables form POST message
        # TODO: sanitize entries
        comment = post['comment']
        new_status = post['status']
        pages = post.getlist('pages[]')
        print('\tpages: ' + str(pages) + '\n\tcomment: ' + str(comment) + '\n\tnew_status: ' + str(
            new_status) + '\n\tfrom_page: ' + str(post['from_page']) + '\n\tcalling_page: ' + str(version.rel_num))

        # Create a comment and save it for later:
        new_comment = Comment(comment=comment)
        new_comment.save()
        print('\nNew Comment saved.\n')

        # Assign comment to a revision of its own page
        # and also to each page in the "affects too" list.
        # This revision can be:
        # a) if the user adding the comment belongs to providers list, the current last_rev()
        # b) if the user adding the comment belongs to clients list, a new revision (i.e.: last_rev()+1)
        print('Pages affected:')
        print('count: \tpg_abs_num: \tpg_rel_num: \tcurr_rev: \tnew_rev: \tchanges rev?')
        c = 0
        for p in pages:
            current_page_num = int(p)
            current_version = Version.objects.get(rel_num=current_page_num, item=item, name=version.name)
            current_page = current_version.page
            current_rev = current_page.last_rev()

            # Add new revision only when status has been changed
            if current_rev.status != new_status:
                new_rev_num = current_rev.rev_number + 1
                new_revision = Revision(rev_number=new_rev_num, page=current_page, status=new_status)
                new_revision.save()
                revision = new_revision
                changes = 'Yes'
            else:  # Do not create a new revision
                revision = current_rev
                changes = 'No'

            print(str(c) + '\t\t' + str(current_version.abs_num) + '\t\t' + str(current_version.rel_num) + '\t\t' + str(
                current_rev.rev_number) + '\t\t' + str(revision.rev_number) + '\t\t' + str(changes))

            # Associate new_comment to revision
            new_comment.revision.add(revision)
            c += 1

        print(
            '\nNew Comment \"' + str(new_comment.comment) + '\" added to pages ' + str(pages) + ' inside ' + '\"' + str(
                job.name) + '\"/\"' + str(item.name) + '\".')
    return {
        'version': version,
        'item': item,
        'job': job,
        'client': client,
    }