Author Archives: ter

Status Reports – Feb. 27, 2011

Steve

Status

  • Successfully created a sub-repository for generating & uploading diffs to the test repositories
  • Currently able to upload diffs
  • Started to work on adding diff comments

Next Steps

  • Get diff comments to successfully complete
  • Polish up fill-database.py script for final critique
  • Modify script based on feedback

Roadblocks

  • not entirely sure on the proper method of gaining handles to required areas (ie: no FileDiff handle or ReviewRequests->Review handle, etc) and creating appropriate relations between the objects

Mark

Status

  • Updated the banner review request with new JS to keep the banner in
    a container

Next Steps

  • Write some better tests for the git patch

Roadblocks

  • Figuring out the best way to tell if the banner is in the box or not
  • as is turns out, looking at the container is easier than looking at
    the banner

Teresa

Status

  • Have implemented a template loader to load specially named templates
  • the template loader is linked into the settings and actually loads templates with _extension as the end of the regular template name

Next Steps

  • figure out how to fix the infinite loading problem (see roadblocks)
  • document how to extend a template
  • keep working on breaking the templates into components

Roadblocks

  • infinite loading – the way the template loaders work they run in a specific order, so if the customized loader always runs first and looks for name_extension then when the extended template has to load name (because it extends it) it ends up loading itself again

Mengyun

Status

  • added options for spell checking at the admin setting page
  • added options in accounts’ profile
  • began to read about webapi stuff, preparing to work for dictionary resources.

Next Steps

  • get a sense of webapi and begin to work with it for spell checking

Roadblocks

  • the performance of checking is still not improved.
  • forgot to switch to a new branch before a relatively new part of feature..

Crystal

Status

  • Moved the ui-autocomplete-* to common.css and now the autocomplete
    looks really nice. Turned out it was much more simple than I thought
  • Added the line “Press tab to autocomplete” on to the list of
    suggestion
  • Tried working on clicking on suggestion would take you to the
    object’s URL
  • Made some git mistakes and fixed them

Next Steps

  • Continuing with the user clicking on a suggestion, it should
    directly go to the object’s URL
  • Testing!
  • Should finish my feature very soon

Roadblocks

  • Not sure how to do the URL… my approach was wrong

Kahlil

Status

  • Added the customizable button to extension admin page
  • Started to figured out how to edit the page for the customization
  • Researched on hooks for various fields
  • Added the correct fields to the XMLExport
  • Ran into a couple of  problems (see road blocks)

Next Steps

  • Fix road blocks so I can get the code snippet functionality working
  • Fix road blocks so I can edit the customize tab on the extension

Roadblocks

  • I couldn’t figure out how to edit the customize page on extension in the admin page, and none of the extensions I have installed are using the customize page either.
  • I notice that the code snippet part of the current Web UI doesn’t actually show the diff, it just gives the filename->line of each. I don’t know if this is sufficient enough.

Time Line

Now that I’m finally on the right track I feel like I’ve made some good progress on the extend-able themes project. I’ve got a ‘working’ template loader built – there is still one problem with the loader getting stuck in an infinite loop, but it does load the correct templates at this point. I’m pretty sure I should be able to have this project completed in early March.

Time Line:

  1. Templates (1 week)
    1. Finish the extension template loader (1-2 days)
    2. Keep breaking up templates into smaller pieces (2-4 days)
  2. Test & Document (1 week)

Infinite Recursion… Hmmm

So, working on the template loader – I’m finally on the right track with this project 🙂

All seems to be going well, I have it set up to try and load the extended version before going for the default template. But, there is a small catch… when the custom template extends the default template things get a bit messy. Because of the way the loaders are set up, the loader looking for extended templates always runs first when searching for any template. So, the new template loader looks for template_name + _extended each template load… this means that each time a template is loaded the _extended version is loaded first.

This at first seems like exactly what we want, but when the extended template extends the original… well, the new loader runs first and reloads the extended template – which extends the original, so reloads the extended version using the new loader, etc. So, it gets into an infinite loop of loading the same extended template.

I’m thinking that there would be a couple of ways to fix this:

  1. load from a special extended templates directory structure (but this could lead to the same problem, only in a different directory)
  2. have a set of default templates and used templates, then only extend the defaults (the regular templates would also extend the defaults, there just would be no changes – but then why not just have defaults & extensions?)
  3. know what template is calling the loader and if it is requesting the same template then don’t load using the extension loader (this seems to be the best & cleanest option to me as it gets rid of the need for extra template files and solves the infinite recursion problem – now, to figure out how to do this)
  4. or I could do this a bit backwards, have the special template loader remove the _extended part of the template_name and change all of the url redirects to template_name_extended – but this doesn’t seem very clean, it would keep the number of files down though

Meeting Minutes – Feb. 20, 2011

Meeting Minutes

  • Steve – making some good progress
  • Mark – hasn’t encountered any problems
  • Kahlil – starting to feel more at ease with the project
  • Crystal – finished the javascript wrapper that she was working on
    • having some trouble with quick search – not working in every page
  • Mengyun – noticed some slowing down with the spellchecker
    • is going to try some profiling to see where the slowdown is occurring
    • “you can enable profiling in admin UI->Settings->Logging, and then access a URL with ?profiling=1 appended”
  • Teresa – some questions about form handlers
    • turns out to be unnecessary though (the admin would be expected to just copy their template extensions into the template directory)
  • No one feels completely panicky at this point
  • Screen caputures
    • going to be due April 8th
    • its a good idea to start looking into a decent program to do this
    • Also, we will all need a decent mic for the screen captures
    • best to either post the video to youtube or upload it and send the url to mike so he can post it to his youtube account
    • after the screen capture is posted send Mengyun the url so she can put together the screencap blog
  • Projects will not likely take the entire term to complete
    • let Christian, Mike, or David know if this is the case so you can figure out some other work to do
  • No one has been reimbursed for the code sprint yet – Mike is looking into it
  • Crystal, Khalil, Steve, and Teresa all have reviewboard project presentations for class requirements in early April

Project Plan – Editable Themes

Project Milestone Plan

1 week: add in forms to the theme settings page (have this completed using charFields right now – just need to build the customized forms to swap in)

2 weeks? (I am really not sure about this one): build the color-selector form & the image selector form for the theme settings page

  • Color selection component (point and click on a desired color)
  • Banner image selector/loader
  • Restore defaults for each editable component
  • Restore all defaults option

1 week: create a model to store the default theme values and the current values (defaults if there has been no editing) & add them into the theme settings page instead of the CharFields

After that I’m not sure about time, but have a plan on how to actually implement the change in themes:

  1. Pull out all of the editable values from the commons.css files and create a new .css file called commons_editable.css (should not take long). Also, edit the templates to use this new .css file as well as the commons.css.
  2. Whenever the themes are changed (and the changes are saved) re-write the editable.css with the new current values from the models
  3. Will also want to make a validation system for the banner image (should we allow uploading a banner image, or just using a url?) and the color values (the user should be able to just input a hex value instead of being forced to use the color selector).
  4. Try to break it
  5. Fix problems and repeat 4-5 until I can’t break it anymore

If there is time for me to take on another small project (or if things go faster than anticipated) I can look into working on one of the extension projects (or something else).

 

 

Code Sprint – day 2

So, I did some more work on issue 1632. I’m not sure how the order_by(sort_list) actually uses the sort list to generate the SQL code, but it seems like my initial attempt to fix the problem (adding lower() around the submitter sort_item) will not work. I took a look at the SQL code being generated with the query.query.__str__() and adding lower() to the sort list didn’t seem to change anything – it also broke reviewboard (lower(submitter) was not a valid field in the query).

Project:

I will be working on adding customizable themes by the admin as my first project for reviewboard. So, I spent the rest of the day figuring out how the .html files were actually being linked to the GUI. I managed to make a new theme tab under the admin page’s settings tab by using the storage tab’s .html template. This required adding in a new /style url to the urls.py under reviewboard/admin as well as altering the reviewboard/admin/views.py file by adding in a new class StyleSettingsForm.

Next:

I will be looking into how to actually use the django framework to populate the theme page with data and then figuring out what kind of things should be customizable/making the GUI.

 

Getting Started – Jan. 21, 2011

Getting setup at the start of the day went pretty well (had already made a fork on github and had review board running on my machine). Getting git setup properly (cloning my fork and setting up a branch to develop on, and just trying it out) took a lot out of the morning. Following setup we moved on to looking at the easy-fix bug list.

Issue 1632:

I was able to reproduce issue 1632 using sqlite as my underlying database, so decided to take it on.

With help from Mike I was able to step through the code base to find approximately where this issue is being caused. I am new to using django however, and the problem seems to be a combination of an order_by() call on a queryset in the djiblets.datagrid.DataGrid class, and whether or not the database being used is case sensitive.

Some checking into the django API revealed that the order_by method’s case sensitivity depends on how the underlying database handles case. So, it looks like the generated SQL does not use ORDER BY LOWER(field) as a default way to handle upper/lower case orderings.

Possible solutions:

– add a new column of the lowercase submitter names so the sort could happen to the lowercase column instead (would only work for the submitter column – also storing redundant data)

Have tried:

– adding a “lower()” call around the submitter field in the sort_list in the precompute_object method in djiblet.djiblet.datagrids.datagrid.py (DataGrid class). I would think that adding this around some of the sort_list items (the strings) would make the order by call use ORDER BY LOWER(string1), LOWER(string2), …

So far this hasn’t worked (have to look into the database to see what field I actually want to use lower on (if that works then a regex could be used to handle all strings that way – assuming we want to sort all strings without case sensitivity)

Meeting Minutes: Jan 16, 2011

First meeting:

  • If people don’t have laptops for the code sprint, there will be Ubuntu machines available. ReviewBoard will have to be setup on them.
  • Everyone will want to have their github accounts set up as well as a reviewboard fork before the code sprint
  • Had a git tutorial after the meeting (posted at: https://reviewboardstudents.wordpress.com/2011/01/18/an-introduction-to-git)
  • All code is reviewed at: http://reviews.reviewboard.org
  • Post code to gitHub even if it is not complete that way the review process can start out early and hopefully catch bugs/issues early
  • The RB bug list is located at:  http://code.google.com/p/reviewboard/issues/list
  • Issues and code ideas that are organized by difficulty can be found at:  http://code.google.com/p/reviewboard/wiki/Google_CodeIn_Ideas
  • There is also a list of easy-fix bugs for us to try out and get comfortable with the codebase at:  http://code.google.com/p/reviewboard/issues/list?q=label:EasyFix
  • Mike mentioned a new idea for an extension: an extension that lets review requesters anonymously review their reviews
  • If anyone doesn’t know what project they would like to work on, one could be assigned
  • markstrmr – interested in theme support, UI for committed code, and javascript test
  • KAmlani – interested in extension code
  • Steve – interested in themes and scalability testing
  • Mengyun – interested in spell checking
  • CrystalLokKoo – interested in extension and the Web UI
  • Teresa – interested in quick search and user browser

Extensions:

The code sprint:

  • meet everyone in person
  • try to work on the project together (possibly partner up for the larger project)
  • kevin will be at the code sprint
  • team leads will likely be available in the #reviewboard-students IRC channel
  • The team will be meeting up at the pub by the hotel on Thursday night
  • It would be a good idea to look over the easy-fix and code-in ideas (look for easy ones and try them out to get familiar with the codebase as well as with using git)
  • Whenever you pick a bug from the list e-mail the review board list to claim it