Author Archives: justinmaillet

Status Reports – November 15, 2014

Justin Maillet:

What project are you working on?
I’m working on making new extension hooks.
What you accomplished this week?
I got three WIP’s, but because of other classes I have not finished as much as I would have like.
Links to anything you’ve done this week
What you plan to do next week?
This week, I will be trying to finish as many patches as I can, and add documentation for those hooks as thy get accepted.
What, if anything, is blocking you from making progress?
Nothing is blocking me.
Any other questions?
No new questions.

Barret Rennie:

What project are you working on?
I’ve started looking at adding API endpoints for having multiple commits attached to a review request.

What’d you accomplish this week?
I fixed up caching so that it works properly, tested (and documented the testing) of API caching. I also fixed a bug which made the diff expansion controls expand while scrolling in some browsers.

Links to anything you’ve done this week.

What do you plan to do next week?
I plan to start working on both review board and rbtools to allow multiple commits for commit requests.
I’m going to have to look into how the schema will have to be updated to accommodate multiple diffs and associated metadata with each review request.

What, if anything, is blocking you from making progress?
The rbtools aliases RR requires a review. (

Any other questions?

David Kus:

What project are you working on?
Drag ‘n Drop inline images into the markdown editor.

What you accomplished this week?
I’ve been working on allowing users to drag ’n drop files into multiple
areas on the page, so that they can drop files into markdown editors or
onto a review request. Still needs some tweaking.

Links to anything you’ve done this week.

What you plan to do next week?
Continue tweaking the drag ’n drop. Add some tests to it.
If I get around to it, continue working on displaying upload progress (I
have something in place for it already, just not very well tested and
looks kinda ugly 😦 )

What, if anything, is blocking you from making progress?
Still need some reviews for my backend review request:

Any other questions?

Mark Loyzer:

What project are you working on?
Adding an extension to Review Board that will allow people to export a review request as PDF and XML.
What you accomplished this week?
I finished implementing the data extraction part of ChangeDescription.
I also started segregating how the data is extracted from ReviewRequests, Comments, FileAttachments, etc. from how the information is ‘printed’.  I did this so it should make it easier to create the XML files (and any others if there are some added in the future).
Links to anything you’ve done this week & uploaded a new sample PDF document.
What you plan to do next week?
Finish a class to extract information from Reviews and then tidy up the PDF part, remove [WIP] and start XML.
What, if anything, is blocking you from making progress?
For the review summary section, I am combining the Reviews with ChangeDescriptions and trying to sort them in order (by timestamp):

reviews = list( + list(self.review_request.changedescs.all())     

reviews.sort(key=lambda item: item[‘timestamp’])

produces the error:

'Review' object has no attribute '__getitem__'
Any other questions?

Yanjia Xin:

What project are you working on?
As usual, general comments
What you accomplished this week?
1. Finally able to create a general comment on review request page, multiple comments can be in a single review.
2. Previously DraftReviewBannerBar will not show after adding general comments created. I force the bar to show when saving comments in CommentDialogView. It affects others comments as well but the behaviour seems right.
3. Make changes to emails content.
4. Stuck on fixing reviewDialogPageTests and reply to a general comment
Links to anything you’ve done this week
Front-end of general comments:
(Got some review from ChipX86, I’ll probably update again tomorrow)
What you plan to do next week?
1. Fix reviewDialogPageTests
2. Fix reply to a general comment
What, if anything, is blocking you from making progress?
1. I’m failing reviewDialogPageTests with weird ordering.
for line 319 and 335: Expected ‘/file-attachment-comments/’ to be ‘/diff-comments/’ and following data fields are also wrong
for line 389 and 405: Expected ‘/general-comments/’ to be ‘/file-attachment-comments/‘ and following data fields are also wrong
ChipX86 pointed out today that it may due to the ordering of loading comments in ReviewDialogView so I should test them in particular order. Unfortunately I’m not able to fix that today, hopefully I can fix it tomorrow.
(P.S. I was wondering before last week’s release, do we check the ordering in this test? coz I passed this test before with the same order.)
2. Last week I was able to reply to a general comment, but now I got error: {“fields”: {“include_text_types”: [“Field is not supported”]}, “stat”: “fail”, “err”: {“msg”: “One or more fields had errors”, “code”: 105}}
I guess the include_text_types are added last week, but it is in BaseComment so my GeneralComment should have that field. I still have no idea how to fix it.
Any other questions?

Andrew Hong:

What project are you working on?
Autocomplete for users/groups in Review Requests
What you accomplished this week?
Fixed most issues with autocomplete.
Links to anything you’ve done this week
What you plan to do next week?
Fix matchContains flag since it doesn’t seem to be working. e.g. “hil” should match “phil” with the flag set to true.
Get back on finishing up review request attachments zip.
What, if anything, is blocking you from making progress?
Nothing at the moment.
Any other questions?

Ryan Done:

What project are you working on?
File Attachment Diff Slider
What you accomplished this week?
I’ve got an initial slider rendering now on image attachments, which makes use of the fileAttachmentRevisionSliderView (a generic slider that will be used for all fileAttachments). Also updated the js model (fileAttachmentReviewableModel) with a couple values that will be useful to the slider.
Had a bit of a slow start figuring out the how all Javascript came together, but ChipX86 helped me out quite a bit
Links to anything you’ve done this week
What you plan to do next week?
Had a bit of a slow start figuring out the how all Javascript came together, but ChipX86 helped me out quite a bit in IRC.
I’ve gotten a good grasp on things now and I’m getting code out quicker. 
What, if anything, is blocking you from making progress?
Any other questions?
Nothing at the moment.

Azad Salahli:

What project are you working on?
`rbt land` for landing changes on upstream
What you accomplished this week?
1. Added a wrapper around rbt patch.
2. Did a little bit of error handling on git operations
With these changes the working version of the command should be ready and complete.
Links to anything you’ve done this week
What you plan to do next week? 
Thats up to mentors. I can start working on supporting other SCM backends, or I can work on RR ID guessing code.
(While fixing the issues with my request)
What, if anything, is blocking you from making progress? 
Nothing is blocking me, but I’ve left a note in the description of my WIP request. It’d be great if I can get insight on that.
Also, a few reviews would be awesome.
Any other questions?

Meeting Minutes: November 2, 2014



  • m_conley (Mike Conley)
  • Chipx86 (Christian Hammond)
  • purple_cow (David Trowbridge)


  • andrewhong_t (Andrew Hong)
  • asalahli (Azad Salahli)
  • dkus_ (David Kus)
  • justy777 (Justin Maillet)
  • mloyzer (Mark Loyzer)
  • nicole_xin_ (Nicole Xin)
  • rdone (Ryan Done)


m_conley (Mike Conley)
Hey all – so just took a look at the calendar.
we’re just a little over a month away from pencils down.
Wait; make that exactly 1 month away.
1 month – that’s 4 meetings remaining.
deep breath!
So take a look at where you are with your project.
4 weeks – and also keep in mind that other courses are likely to heat up;
wind of term, whatnot.
so you should be starting to think about orienting yourself to end of term – that means figuring out what you can accomplish in that time.
and more importantly, what you _cannot_ accomplish in that time.
and if what you cannot accomplish in that time is something you thought you _could_ accomplish in that time.
please let us know ASAP!
the sooner we know about corrections like that, the better.
The worst thing you can do is tell us that everything is fine, until the last week, and then tell us that you can’t deliver on your deadlines.
I think that’s all I have to open with.
Oh, one thing.
Additionally, we wanted to remind you all about the importance of the Description and Testing Done fields of your review requests.
It’s very, very important that these are clear – we use these to create the commit messages for your landings; the more comprehensive they are, the better.
So when you write them, don’t just target them assuming that we’re the ones reading them. Maybe it’ll be other developers, wayyyy in the future who are trying to piece things together.
So go into detail about what your review request does, and what sorts of things you tested.
That goes for currently existing review requests too – give them a read if you have any in flight, and if there are assumptions or other things unsaid that could be fleshed out, please do it.
Ok, I think that’s all
ChipX86: yes, just look at existing commits already made by us.
m_conley: Review Board has _excellent_ commit messages.
ChipX86: this is just as important as your code being in good shape.
and this, while it may not seem like a big deal, will really matter down the road.

Round Robin

andrewhong(Andrew Hong)

m_conley: andrewhong_t: we’ll start with you.
andrewhong_t: sounds like you and ChipX86 are still figuring out some zip stuff?
andrewhong: Yes, I am going tor revisit some previous sites and documentation to see if i missed anything. I think we’re on the same understanding of things so hopefully it will be resolved shortly.
m_conley: andrewhong_t: ok, so “Anything regarding the zip feature that might help me would be great, or maybe an alternative approach that will also work?” <– that’s being sorted as we speak?
andrewhong: yeah
m_conley: andrewhong_t: excellent. And the autocomplete stuff – how’s that going?
andrewhong: most solutions I found on the web are about writing individual complete files to a zip but not chunks of files.
m_conley: andrewhong: tricky, yes
andrewhong: purple_cow put up a few reported issues about the autocomplete and I couldn’t reproduce 2 of them. I found the part thats affecting the last one
m_conley: andrewhong: ok
andrewhong: is there anything that you need from us?
ChipX86: andrewhong: I’m going to help with this after the meeting
andrewhong: a new router :p, otherwise nope
ChipX86, sounds good
m_conley: andrewhong: ok, thanks

rdone (Ryan Done)

m_conley: rdone: you’re next
rdone: hey
m_conley: rdone: I wanted to talk diff slider first
rdone: sure
m_conley: rdone: I was curious to know (and I should probably know this) if this diff slider is just for showing different versions individually
m_conley: or if it’s specifically for images, in that we do onion-skinning or transparency to check for differences?
rdone: as far as I understand yes
m_conley: rdone: ok
purple_cow: I think we want that to depend on whether the given review UI is capable of doing diffs
m_conley: I see, ok
purple_cow: if it is (I think ImageReviewUI is the only one that is right now), then we should allow selecting either a single revision or two.
If not, just a single revision
rdone: I’ll make a note of that
so if the media type is reviewable: display 2 versions
else: 1
purple_cow: diffable, not reviewable
see the supports_diffing flag in ReviewUI
rdone: ok
m_conley: rdone: so it sounds like you’re leaning into this slider now, and you’re blocked on reviews for the paginator.
rdone: is that about right?
I put most of my time this week into the paginator.
And I don
m_conley: rdone: ok cool, besides paginator reviews, is there anything you need from us?
any required clarity for the diff slider?
rdone: nope all good for now
I think I’m ok with the slider
m_conley: Great, ok. Thank you.

dkus_ (David Kus)

m_conley: dkus: you’re next
dkus: so it sounds like you had to do some refactoring on the backend…
m_conley: refactoring? Looks mostly like some cleanup
dkus: Lots of cleanup and some refactoring as well
m_conley: but ok, looks like you got a review go by
sorry, english. Looks like you’ve got another review request up that needs some looking at.
dkus: Yeah, so I addressed all the issues in my review request for the backend and its ready for more reviews now
m_conley: dkus: any questions about how to proceed on the front-end?
dkus: I think I’m good for now
m_conley: dkus: Ok. I know a previous student had been working on this stuff – did we judge that any of his front-end work was salvagable?
or are you starting from scratch here?
dkus: I’m starting with what the previous student did
I’ve already gone through it a bit and started cleaning some stuff up
m_conley: dkus: ok, that’s good. And you’re clear on how it operates? No questions on the pre-existing code?
dkus: None yet
m_conley: dkus: ok – let us know when you do. Thanks!

asalahli (Azad Salahli)

m_conley: asalahli: you’re next
asalahli: so I know for the last two meetings, there’s been some confusion about the scope and approach for rbt land.
m_conley: asalahli: are things clear now? Crystal clear?
asalahli: Yes it seems so.
I discussed it with ChipX86, and agreed upon a specific behaviour.
m_conley: asalahli: Ok, excellent. Do you think that the implementation is realistic within the 4 weeks remaining? That includes time for us to review the final patch.
asalahli: I’m almost certain it will be ready with Git support.
I cannot estimate time required for adding other SCM backends.
because I have no previous experience with them.
ChipX86: Git is a good start.
m_conley: asalahli: ok. Keep an eye on the clock – we lost some time figuring out this project, and then this week with other work, so you’ve gotta make sure you hit this one running
asalahli: m_conley, you’re right.
m_conley: asalahli: like, don’t panic or anything, but keep an eye on the calendar.
asalahli: anything blocking you, or anything you need from us?
I want to get a basic version that works by this week, so that we can focus on reviewing, correcting things during upcoming weeks, and I can focus on other SCM clients.
that’s my plan.
No, I don’t have anything blocking me for now.
m_conley: asalahli: ok, great – thank you!

mloyzer (Mark Loyzer)

m_conley: mloyzer_: you’re next
mloyzer_: hey
m_conley: mloyzer_: hey – sorry I forgot to ask you this earlier, but would you mind updating your review request with a document that you’ve generated so far?
just to see where you are?
mloyzer_: ya, sure.
m_conley: mloyzer_: great, thanks!
So, you ask: Do you have any tips on how to input the uploaded files or diff/change sets into the PDF? What do the Mimetypes do? Could I leverage that?
mloyzer_: when you say diff/change sets… are you talking about the actual patches?
was that in scope for this project? The actual export-to-foo of the entire patch?
mloyzer_: i was going to input the changes made to each file…
m_conley: so basically, the diff
ChipX86 / purple_cow: was that something we want to actually put into a PDF here? The full blown diff?
ChipX86: I don’t think so.
diffs are expensive and hard to do up-front
purple_cow: The only part of the diff I could see wanting are the lines corresponding to comments
m_conley: for file attachments, I doubt we could do much with anything except images
mloyzer_: so in the review summary, you just want the …summary of the review request change and not the code associated with it
m_conley: yes – there’s no need to export the diff as well
mloyzer_: oh ok.. so ..well and the comments/replies associated witht the reviews. correct?
m_conley: mloyzer_: yes, we do want those.
mloyzer_: ok, nevermind to my question then. I’ll make sure to post a PDF of what is currently generated today
m_conley: mloyzer_: great – is there any further clarity needed on what’s being exported here?
mloyzer_: I don’t think so
m_conley: mloyzer_: great, thanks!

nicole_xin_ (Nicole Xin)

m_conley: nicole_x-: hey!
nicole_x-: i’ve changed my mind about how to let user create a general comment
m_conley: nicole_x-: let’s hear it.
nicole_x-: in the status report i said to create body_top/general comment according to whether user tick “open an issue” or not
nicole_x-: that wouldn’t work since body top cannot have a header and a footer, and it’s confusing to the users.
so how about a scroll down menu on ‘Review’ button?
purple_cow: Can we just add an “Add Comment” next to the “Review” button?
nicole_x-: yes, and both body-top and general comments use a reviewDialogView?
ChipX86: comments always use a CommentDialogView
m_conley: purple_cow: –^?
andrewhong: m_conley, done. didn’t realize the seperate post in the google group
m_conley: andrewhong: thanks
purple_cow: the ReviewDialogView should show the general comments inside of it
just like it shows diff comments, file attachment comments, etc
body top and body bottom (header and footer) go on either side of the comments.
nicole_x-: okay, great!
I think i’m clear.
oh one thing!
m_conley: nicole_x-: go ahead
nicole_x-: ChipX86: i saw ur comments on my web-api resources, and you said some functions should be in subclass, not in baseGeneralCommentResource.
ChipX86: actually I have them separated, and purple_cow said there is no need to have a GeneralCommentResourse, so i just merge the subclass to the baseclass
ChipX86: can you give me more info on where the base class is used? What subclasses it?
there seems to be things in there i would not expect in a Base* class. Things reserved for specific resources.
nicole_x-: hmm, baseclass is BaseGeneralCommentResource.
subclass is GeneralCommentResource which doesn’t exist.
purple_cow: BaseGeneralCommentResource should be subclassed by ReviewGeneralCommentResource and ReviewReplyGeneralCommentResource.
nicole_x-: oh yes, i forgot to mention that
ChipX86: (pulling up the change)
ok, so for example, the name
can you rename that to BaseReviewGeneralCommentResource?
nicole_x-: yes sure
ChipX86: also, you don’t need to do the ‘general_comment_resource = BaseGeneral….()’ at the end, since it’s solely for subclasing.
nicole_x-: ok i will remove that!
m_conley: nicole_x-: any other questions, or anything blocking you?
ChipX86: but that makes more sense now. I wasn’t getting that it’s not used in the same way as the other base comment resources.
nicole_x-: yes it’s confusing
m_conley: i think i’m good now!
m_conley: nicole_x-: cool, thanks!

justy777 (Justin Maillet)

m_conley: justy777: ok, last but not least
justy777: Hey.
m_conley: justy777: hey – so, you and I cleared up the webAPI testing questions you had before this meeting.
justy777: so are you all good now on that front?
justy777: yes, i am.
m_conley: justy777: ok, cool. So, how close are you to having all of this sandboxing wrapped up, would you say?
justy777: yes pretty close, just dealing with a few last things
m_conley: justy777: will you have the last patches up this week?
justy777: yes I will, and hopefully choose another project to work on
m_conley: justy777: please do, and please choose soon – and contact us if you can’t find anything.
justy777: is there anything else blocking you?
justy777: well, not really blocking but i always seem to be getting unbound method errors
ChipX86: in what cases?
m_conley: justy777: hrm – that’s the first I’ve heard of that. Curious as to why that wasn’t in your status report…
justy777: because I’ve solved most of them already and i just ran into more 5 minutes ago
purple_cow: it means you’re calling methods on classes instead of on instances
justy777: in this case it’s telling me TypeError: unbound method get_comment_thumbnail() must be called with SandboxReviewUI instance as first argument (got FileAttachmentComment instance instead).
ChipX86: is this with a spy_on call?
justy777: the spy_on call is not causing it, but there is a spy on that function yes
ChipX86: ok, is this new code since you last updated the review request?
justy777: it’s a new patch, so there is no review request yet, i can put up a [WIP] in a few seconds though.
m_conley: justy777: that’d be great – and please comment on the section of the code throwing this error.
justy777: is there anything else blocking you from moving forward?
justy777: okay i shall do that.
nope, nothing.
m_conley: ok, great

Status Reports – Oct. 11, 2014

Justin Maillet

Here is my status report:
What project are you working on?
I’m still working on sandboxing extensions.
What you accomplished this week?
I’ve finally gotten the hang of searching through the code and have started taking more notes, and I’ve almost got my unit test running.
Links to anything you’ve done this week.
What you plan to do next week?
This week I plan to really put some work in and see if I can get more than three extensions sandboxed.
What, if anything, is blocking you from making progress?
Nothing is blocking my progress.
Any other questions?
No further questions.

Barret Rennie

 What project are you working on?
What you accomplished this week?
This week I’ve worked on a few things. I’ve finished up the first
draft for comment diff fragment expansions; it has moved out of WIP
and is ready for review[1]. I’ve also submitted a fix for bug
3565[2] — it just improves the error message to indicate the
underlying error[3]. I’ve also added a feature for reviewboard users
to opt out of receiving notifications of their own activity[4].Most of the work requried for [1] was getting the UI correct and the
tempaltes to generate correctly. It also required adding some Django
templatetags (to make the code neater).What you plan to do next week?This next week I plan on working on the student project idea: “Add
support for aliases to RBTools.” I want to make it behave as closely
as possible to git aliases, while remainning portable. I believe the
majority fo the parsing can be done with shlex and rbtools can
either call out to (ba)sh/cmd (depending on OS) with the arguments
or handle calls to subprocess.popen and the like itself.Any other questions?No questions thus far.Links to anything you’ve done this week.[1]:

Ryan Done

What project are you working on?
Alphabet paginator. Almost done
What you accomplished this week?
Added a selector for non-alphabetic names (0-9 _-.) and did error handling on incorrect URL arguments
Updated the unit tests for user list to verify the alphabetic query behaviour.
Adjusted the paginator template so that the letter options always display, whereas before they would not display if the queryset is less than the size of a page (this was the original behaviour of the numeric paginator)
Links to anything you’ve done this week
What you plan to do next week?
Address any code changes from outstanding reviews
Get started on the live search feature or some other project
What, if anything, is blocking you from making progress?
I had some issues with CRLF in windows that was breaking my unit tests. I believe I got that all worked out but I’m still getting some unit tests that throw errors for review board.
The tests output is here: if anyone wants to take a look.
Any other questions?

Andrew Hong

What project are you working on?
Download File Attachments as .zipWhat you accomplished this week?

– Came up with approach to pulling the files locally when attachments are hosted externally — see development log
– Got free 1 year Amazon AWS set up (Thanks Barrett!) 

– Found a bug where Storage settings in the administrator panel doesn’t save the chosen storage option or your credentials so I need to fix this before I can proceed with testing project feature with Amazon AWS.

– Narrowing down the problem, found out that the save function is never called on the form. Still investigating as to why that is; hopefully a quick fix.

Links to anything you’ve done this week

What you plan to do next week?
Hopefully fix the bug and move back to finishing project.

What, if anything, is blocking you from making progress?
The bug mentioned above… 😦

Any other questions?
Nope, none at the moment.

David Kus

What project are you working on?
Drag ‘n Drop Images into Markdown Editor
What you accomplished this week?
– Added LocalSite relation to FileAttachment, and only allowing users to access the resource if they have access to the assoicated LocalSite
– Refactored BaseFileAttachmentResource to contain only fields / functionality common to both User file attachments and Review Request file attachments. Moved the Review Request specific logic into a new class, BaseReviewRequestFileAttachmentResource.
Links to anything you’ve done this week.
What you plan to do this week?
Try to finish up the backend stuff.
What, if anything, is blocking you from making progress?
– How do I check if a user is a superuser?

Yanjia Xin

What project are you working on?
Same as last week, I’m working on general comments web-api.
What you accomplished this week?
1. Web-api build complete
2. Tests created (Testing next week)
3. Experiment with git rebase between branches
Links to anything you’ve done this week
What you plan to do next week?
Test on previously built models and web-api, start UI and design and build front-end js.
What, if anything, is blocking you from making progress?
Currently my dev server can be run as usual, but when i click on a review request, it gives error “no such table: reviews_review_general_comments”
So I try to update the database using syncdb, but I’m receiving an error says:
”  File “/src/reviewboard/reviewboard/”, line 10, in <module>
    from reviewboard.extensions.base import get_extension_manager 
I can’t figure out why.
Any other questions?

Azad Salahli

1. What project are you working on?
Same as last week: “Update ‘rbt post’ to use the “Validate Diff” API resource”.
2. What you accomplished this week?
Fixed issues opened by David And Steven. Tested my changes with Mercurial.
3. Links to anything you’ve done this week
4. What you plan to do next week?
Testing this with Subversion and possibly finalizing the project.
5. What, if anything, is blocking you from making progress?H
I’m having trouble with installing `subvertpy` python module. This is the error&traceback I get:
I’m running Ubuntu 12.04. I executed:
    $ sudo apt-get install subversion libapr1 libapr1-dev libsvn1
    $ pip install subvertpy
and got the error mentioned in the link above.
6. Any other questions?
How should I fix [5] ?

Mark Loyer

What project are you working on?
Adding an extension to Review Board that will allow people to export a review request as PDF or CSV.
What you accomplished this week?
I created two mock documents (CSV and PDF) and uploaded them for review.  I’ve had some feedback from m_conley and I added a spreadsheet file to illustrate the complications with creating a CSV file.  During the time the files were being reviewed I made some mall changes to my current code and updated my review request with them.  Then I started implementing the function for CSV file generation until m_conley submitted a review for it in which case I started creating the spreadsheets.
I’m not really sure what content is required because I don’t see an easy way to generate a CSV file that conforms to the CSV structure.
I created the spreadsheet in my google drive and when I saved it to my computer to upload to reviewboard the folder it was saved in was the same as my reviewboard development environment and overwrote the directory (I believe this was the reason but not 100% sure).
The only good thing about this is that I didn’t have too many uncommitted changes.
Links to anything you’ve done this week.
What you plan to do next week?
I would really like to get these documents finalized so I can begin programming with a better idea of what is to be done.  At least for the CSV file.  I have to make some changes to the PDF file which I will do early next week as well.
What, if anything, is blocking you from making progress?
Not knowing which content is to be inputted into the CSV file.
Need to re-set up my development environment now and am running across the issue:

An error occurred while executing `vmrun`, a utility for controlling

VMware machines. The command and output are below:

Command: [“start”, “/Users/Markintosh/Documents/Projects/reviewboard/rb-vm-dev/.vagrant/machines/default/vmware_fusion/2d702f8a-8138-45b2-80f1-dc2b8561b176/precise64.vmx”, “nogui”, {:notify=>[:stdout, :stderr]}]

Stdout: 2014-10-11T18:41:22.432| ServiceImpl_Opener: PID 25343

Error: The operation was canceled


during the “vagrant up –provider vmware_fusion” command.

Any other questions?
1) How do I resolve the above error?
2) I think I have indirectly stated it, but I am still unsure of what the CSV file should contain…this is in large part because of the complex and hierarchical structure of reviews (with associated comments and issues) needs to be mapped to a one-dimensional space within a CSV file.
3) Secondly, what is the difference between a review’s body_top, body_bottom, and comments?  In order to add a ‘body_top’ I had to click the ‘add comment’ link which I assumed would generate and save the contents as a comment…but it was apparently the review’s body_top.  So, in short, what is the difference between these?