Skip to end of metadata
Go to start of metadata

This is the application compliance evaluation template which can be used to "grade" how well a web application follows the Django best practices.  This template can be completed as part of an ART review and can be used as a tool in that over-arching process.  The goal is to provide as many objective data points as possible and use those data points to improve compliance and consistency going forward.  Clearly, the template and data points will evolve over time, but this should provide a solid basis for the discussions that trigger that evolution.  While scoring something like this can be somewhat subjective, the goal is to provide as objective and quantifiable of an assessment as possible.

 

 

CategoryS/UStandardExampleApplication ApproachScoreComment
Project Name

 

Agreed upon Project name or CodeName

Voyages, OpenEmory

   
Project Organization 

Each project should have its own virtual python environment. Python dependencies are installed here.

 

Logical pieces of code such as models, views etc. are grouped in apps within the project.

 

Include the files, settings.py, localsetting.py, pip-install.txt,

CHANGELOG, DEPLOYNOTES , README



openemory/

--- CHANGELOG.rst

--- DEPLOYNOTES.rst

--- fabfile.py

--- openemory

        --- accounts

         --- common

        ---  harvest

        ---  localsettings.py

        ---  localsettings.py.dist

        ---  manage.py

        ---  publication

        ---  settings.py

        ---  urls.py

        ---  pip-install.txt

        --- README.rst

   

Setting and Localsettings

 

Include all setting that will not change from environment to environment in setting.py.

 

Static middle-ware Should be enabled.

TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'

(or other package with XML output) should be enabled for use with continuous integration server.

 

Any settings that will change or has sensitive data such as DB user/pass or API keys put in local settings.py. This should not be in version control.

 

There should be a localsettings.py.dist file that is checked into version control that is to be used as a template for creating localsettings.py

    

Python Dependencies

 

List all python packages required

Django
eulxml
eulxml

   

Documentation

 

Make sure Sphinx is in the pip-install file.

Using the markkup language make sure all public classes, functions and variables are documented.

    

DEPLOYNOTES

 

Should be in RST format for use with Sphinx

Should contain a section(s) describing the process for a first time install. If there are any differences between a dev or prod install, this should be noted here.

There should be an additional sections broken down by release describing what needs to be done to upgrade to that release.

The release sections should be ordered from most recent to oldest.

Release 1.2.9 - Odds and Ends
----------------------------- -------
* Run migrations::
$ python ./manage.py migrate accounts

   

CHANGELOG

 

Should be in RST format for use with Sphinx

Should contain sections broken down by release describing major features / bugs in the release

Release 1.2.14
-------------------------
* Modified Grant Proposal form
* Updated Privacy Policy link


.

   

README

 

Should be in RST format for use with Sphinx

Should contain general information about the project.

    

Logic distributed appropriately

 

Keep non-view specific logic in the models so that logic can be leveraged by multiple views or apps.  This can be somewhat of a subjective assessment.  The goal here is to make sure any logic that might be needed on multiple views is NOT duplicated.

    
I

Build, Packaging and Deploy

 

Make sure the fabric package is in the pip-install file

 

A script should exist which does the following

1. if git, exports from the local checkout, if SVN exports from the current branch

2. bzip export

3. transfers to target host

4. unpacks

5. runs commands to create a new virtualenv and uses the pip-install.py to install dependencies

6. runs collect static

7. change the prev link to point to the last version and the current link to point to the version that was just deployed

    
Unit Testing 

75% of public (and appropriate private) methods should be covered by tests unless there are special circumstances. Use your best judgement as to how complex these need to be.

 

 

    
       
Total GradeS/U    % Django Compliance Score

General Comments

This is where the evaluator can add general comments about the application that either add to comments made above or discuss other items that may not be covered in the categories above.

This section allows the reviewers to document action items and assign those tasks to an individual or group to be completed.

Action Item DescriptionAssigned ToDue DateDate CompleteComments
     
     
  • No labels