diff --git a/README.rst b/README.rst index 640f9a3..dfd04eb 100644 --- a/README.rst +++ b/README.rst @@ -49,7 +49,7 @@ These permissions break down into three methods so that you can give groups, ind Git Repo Polling (complete): -DjTracker can polling a git repo's commits, and auto-update issues based on a certain string. This is pretty common in other issue trackers as well. You can set this up by setting the "Git Repo Path" of a project, which correlates to a location on your *filesystem*. gitpython doesn't handle parsing git URLs as far as I can tell yet, so you need to have the repo checked out on the server. This has a couple of drawbacks, such as you'll need to setup a cron to pull down commits to that repo on a semi-regular basis. +DjTracker can polling a git repo's commits, and auto-update issues based on a certain string. This is pretty common in other issue trackers as well. You can set this up by setting the "Git Repo Path" of a project, which correlates to a location on your *filesystem*. gitpython doesn't handle parsing git URLs as far as I can tell yet, so you need to have the repo checked out on the server. This has a couple of drawbacks, such as you'll need to setup a cron to pull down commits to that repo on a semi-regular basis. You'll also need to initialize the project by giving it a starting commit hash as well. This allows the git poller to have a starting location in the git log to parse from. It'll then be able to parse from that commit forward. Again, some drawbacks, it'll brute force the list of commits, meaning that it can find commits in other branches than the master. Again, this appears to me as another limit of the 'gitpython' package. (Note: I don't mean any ill towards gitpython, I love the package, and I'm sure it'll continue its improvement.) @@ -75,12 +75,12 @@ Issues are attached to projects via foreign keys. You can comment on issues, cha User Profiles (80% complete): ------------------------------------------------ -Currently I don't see an excessively large need for these, but that could change depending on use cases. As a result I went ahead and built a user profile module just in case. It's currently very limited, but you can view your profile (and the profile of others) to see what issues they have assigned to them. +Currently I don't see an excessively large need for these, but that could change depending on use cases. As a result I went ahead and built a user profile module just in case. It's currently very limited, but you can view your profile (and the profile of others) to see what issues they have assigned to them. Email Handling ------------------------------------------------ -DjTracker has the ability to parse email addresses for new comments and new issues. Currently this only supports IMAP, but POP3 support is planned for the future. +DjTracker has the ability to parse email addresses for new comments and new issues. Currently this only supports IMAP, but POP3 support is planned for the future. Email Settings ------------------------------------------------ @@ -99,12 +99,12 @@ Expected Email Subjects DjTracker needs email subjects to be formed in a certain fashion in order to properly create issues on your behalf. If you're creating a new issue via email, the following subject is expected: DjTracker: [project-slug]: Your Title - + If you're responding on an issue, you'd use the following: DjTracker: [project-slug]: Issue #5 - -That'll add the comment onto the end of the current issue with an ID of 5. + +That'll add the comment onto the end of the current issue with an ID of 5. Email Cron Job ------------------------------------------------ diff --git a/djtracker/fixtures/initial_data.json b/djtracker/fixtures/initial_data.json index cf732e3..295ae6b 100644 --- a/djtracker/fixtures/initial_data.json +++ b/djtracker/fixtures/initial_data.json @@ -1,188 +1,188 @@ [ { - "pk": 1, - "model": "djtracker.project", - "fields": { - "allow_anon_comment": false, - "modified_date": "2009-11-14 16:50:17", - "allow_authed_editing": true, - "groups_can_comment": [], - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", - "groups_can_edit": [], - "users_can_comment": [], - "allow_authed_viewing": true, - "groups_can_view": [], - "name": "Default Project", - "users_can_edit": [], - "allow_authed_comment": true, - "users_can_view": [], - "created_date": "2009-11-14 16:50:17", - "active": true, - "allow_anon_viewing": true, - "slug": "default-project", + "pk": 1, + "model": "djtracker.project", + "fields": { + "allow_anon_comment": false, + "modified_date": "2009-11-14 16:50:17", + "allow_authed_editing": true, + "groups_can_comment": [], + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", + "groups_can_edit": [], + "users_can_comment": [], + "allow_authed_viewing": true, + "groups_can_view": [], + "name": "Default Project", + "users_can_edit": [], + "allow_authed_comment": true, + "users_can_view": [], + "created_date": "2009-11-14 16:50:17", + "active": true, + "allow_anon_viewing": true, + "slug": "default-project", "allow_anon_editing": false } - }, + }, { - "pk": 1, - "model": "djtracker.milestone", + "pk": 1, + "model": "djtracker.milestone", "fields": { - "modified_date": "2009-11-14 16:52:10", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", - "project": 1, - "created_date": "2009-11-14 16:52:10", - "active": true, - "goal_date": "2009-11-24 16:52:08", - "slug": "default-milestone", + "modified_date": "2009-11-14 16:52:10", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", + "project": 1, + "created_date": "2009-11-14 16:52:10", + "active": true, + "goal_date": "2009-11-24 16:52:08", + "slug": "default-milestone", "name": "Default Milestone" } - }, + }, { - "pk": 1, - "model": "djtracker.component", + "pk": 1, + "model": "djtracker.component", "fields": { - "modified_date": "2009-11-14 16:52:19", - "name": "Default Component", - "project": 1, - "created_date": "2009-11-14 16:52:19", - "active": true, + "modified_date": "2009-11-14 16:52:19", + "name": "Default Component", + "project": 1, + "created_date": "2009-11-14 16:52:19", + "active": true, "slug": "default-component" } - }, + }, { - "pk": 1, - "model": "djtracker.version", + "pk": 1, + "model": "djtracker.version", "fields": { - "modified_date": "2009-11-14 16:52:41", - "name": "Default Version", - "project": 1, - "created_date": "2009-11-14 16:52:41", - "active": true, + "modified_date": "2009-11-14 16:52:41", + "name": "Default Version", + "project": 1, + "created_date": "2009-11-14 16:52:41", + "active": true, "slug": "default-version" } - }, + }, { - "pk": 1, - "model": "djtracker.status", + "pk": 1, + "model": "djtracker.status", "fields": { - "name": "Open", + "name": "Open", "slug": "open" } - }, + }, { - "pk": 2, - "model": "djtracker.status", + "pk": 2, + "model": "djtracker.status", "fields": { - "name": "Closed", + "name": "Closed", "slug": "closed" } - }, + }, { - "pk": 3, - "model": "djtracker.status", + "pk": 3, + "model": "djtracker.status", "fields": { - "name": "Deferred", + "name": "Deferred", "slug": "deferred" } - }, + }, { - "pk": 4, - "model": "djtracker.status", + "pk": 4, + "model": "djtracker.status", "fields": { - "name": "Denied", + "name": "Denied", "slug": "denied" } - }, + }, { - "pk": 1, - "model": "djtracker.priority", + "pk": 1, + "model": "djtracker.priority", "fields": { - "name": "Urgent", + "name": "Urgent", "slug": "urgent" } - }, + }, { - "pk": 2, - "model": "djtracker.priority", + "pk": 2, + "model": "djtracker.priority", "fields": { - "name": "Critical", + "name": "Critical", "slug": "critical" } - }, + }, { - "pk": 3, - "model": "djtracker.priority", + "pk": 3, + "model": "djtracker.priority", "fields": { - "name": "Trivial", + "name": "Trivial", "slug": "trivial" } - }, + }, { - "pk": 4, - "model": "djtracker.priority", + "pk": 4, + "model": "djtracker.priority", "fields": { - "name": "Normal", + "name": "Normal", "slug": "normal" } - }, + }, { - "pk": 5, - "model": "djtracker.priority", + "pk": 5, + "model": "djtracker.priority", "fields": { - "name": "Low", + "name": "Low", "slug": "low" } - }, + }, { - "pk": 6, - "model": "djtracker.priority", + "pk": 6, + "model": "djtracker.priority", "fields": { - "name": "High", + "name": "High", "slug": "high" } - }, + }, { - "pk": 1, - "model": "djtracker.issuetype", + "pk": 1, + "model": "djtracker.issuetype", "fields": { - "name": "Bug", + "name": "Bug", "slug": "bug" } - }, + }, { - "pk": 2, - "model": "djtracker.issuetype", + "pk": 2, + "model": "djtracker.issuetype", "fields": { - "name": "Defect", + "name": "Defect", "slug": "defect" } - }, + }, { - "pk": 3, - "model": "djtracker.issuetype", + "pk": 3, + "model": "djtracker.issuetype", "fields": { - "name": "Feature Request", + "name": "Feature Request", "slug": "feature-request" } - }, - { - "pk": 1, - "model": "djtracker.issue", - "fields": { - "status": 1, - "priority": 2, - "name": "Test Issue", - "created_date": "2009-11-14 16:52:57", - "modified_date": "2009-11-14 16:52:57", - "assigned_to": null, - "component": 1, - "created_by": null, - "project": 1, - "version": 1, - "watched_by": [], - "issue_type": 1, - "milestone": 1, - "active": true, + }, + { + "pk": 1, + "model": "djtracker.issue", + "fields": { + "status": 1, + "priority": 2, + "name": "Test Issue", + "created_date": "2009-11-14 16:52:57", + "modified_date": "2009-11-14 16:52:57", + "assigned_to": null, + "component": 1, + "created_by": null, + "project": 1, + "version": 1, + "watched_by": [], + "issue_type": 1, + "milestone": 1, + "active": true, "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus." } } diff --git a/djtracker/fixtures/testdata/00_test_users.json b/djtracker/fixtures/testdata/00_test_users.json index ffeea9b..a468da9 100644 --- a/djtracker/fixtures/testdata/00_test_users.json +++ b/djtracker/fixtures/testdata/00_test_users.json @@ -1,4 +1,4 @@ -[ { "fields" : +[ { "fields" : { "date_joined" : "2009-12-08 03:56:19", "email" : "admin@djtracker.corp", "first_name" : "", @@ -15,7 +15,7 @@ "model" : "auth.user", "pk" : 1 }, - { "fields" : + { "fields" : { "date_joined" : "2009-12-13 20:26:17", "email" : "creator@djtracker.corp", "first_name" : "", diff --git a/djtracker/fixtures/testdata/01_test_config.json b/djtracker/fixtures/testdata/01_test_config.json index a03b233..34a6050 100644 --- a/djtracker/fixtures/testdata/01_test_config.json +++ b/djtracker/fixtures/testdata/01_test_config.json @@ -1,169 +1,169 @@ [ { - "pk": 1, - "model": "djtracker.project", + "pk": 1, + "model": "djtracker.project", "fields": { - "allow_anon_comment": false, - "modified_date": "2009-11-14 16:50:17", - "allow_authed_editing": true, - "groups_can_comment": [], - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", - "groups_can_edit": [], - "users_can_comment": [], - "allow_authed_viewing": true, - "groups_can_view": [], - "name": "Default Project", - "users_can_edit": [], - "allow_authed_comment": true, + "allow_anon_comment": false, + "modified_date": "2009-11-14 16:50:17", + "allow_authed_editing": true, + "groups_can_comment": [], + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", + "groups_can_edit": [], + "users_can_comment": [], + "allow_authed_viewing": true, + "groups_can_view": [], + "name": "Default Project", + "users_can_edit": [], + "allow_authed_comment": true, "users_can_view": [], "watched_by": [ 4 ], - "created_date": "2009-11-14 16:50:17", - "active": true, - "allow_anon_viewing": true, - "slug": "unittest-project", + "created_date": "2009-11-14 16:50:17", + "active": true, + "allow_anon_viewing": true, + "slug": "unittest-project", "allow_anon_editing": false } - }, + }, { - "pk": 1, - "model": "djtracker.milestone", + "pk": 1, + "model": "djtracker.milestone", "fields": { - "modified_date": "2009-11-14 16:52:10", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", - "project": 1, - "created_date": "2009-11-14 16:52:10", - "active": true, - "goal_date": "2009-11-24 16:52:08", - "slug": "unittest-milestone", + "modified_date": "2009-11-14 16:52:10", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus.", + "project": 1, + "created_date": "2009-11-14 16:52:10", + "active": true, + "goal_date": "2009-11-24 16:52:08", + "slug": "unittest-milestone", "name": "Default Milestone" } - }, + }, { - "pk": 1, - "model": "djtracker.component", + "pk": 1, + "model": "djtracker.component", "fields": { - "modified_date": "2009-11-14 16:52:19", - "name": "Default Component", - "project": 1, - "created_date": "2009-11-14 16:52:19", - "active": true, + "modified_date": "2009-11-14 16:52:19", + "name": "Default Component", + "project": 1, + "created_date": "2009-11-14 16:52:19", + "active": true, "slug": "unittest-component" } - }, + }, { - "pk": 1, - "model": "djtracker.version", + "pk": 1, + "model": "djtracker.version", "fields": { - "modified_date": "2009-11-14 16:52:41", - "name": "Default Version", - "project": 1, - "created_date": "2009-11-14 16:52:41", - "active": true, + "modified_date": "2009-11-14 16:52:41", + "name": "Default Version", + "project": 1, + "created_date": "2009-11-14 16:52:41", + "active": true, "slug": "unittest-version" } - }, + }, { - "pk": 1, - "model": "djtracker.status", + "pk": 1, + "model": "djtracker.status", "fields": { - "name": "Open", + "name": "Open", "slug": "test-open" } - }, + }, { - "pk": 2, - "model": "djtracker.status", + "pk": 2, + "model": "djtracker.status", "fields": { - "name": "Closed", + "name": "Closed", "slug": "test-closed" } - }, + }, { - "pk": 3, - "model": "djtracker.status", + "pk": 3, + "model": "djtracker.status", "fields": { - "name": "Deferred", + "name": "Deferred", "slug": "test-deferred" } - }, + }, { - "pk": 4, - "model": "djtracker.status", + "pk": 4, + "model": "djtracker.status", "fields": { - "name": "Denied", + "name": "Denied", "slug": "test-denied" } - }, + }, { - "pk": 1, - "model": "djtracker.priority", + "pk": 1, + "model": "djtracker.priority", "fields": { - "name": "High", + "name": "High", "slug": "test-high" } - }, + }, { - "pk": 2, - "model": "djtracker.priority", + "pk": 2, + "model": "djtracker.priority", "fields": { - "name": "Normal", + "name": "Normal", "slug": "test-normal" } - }, + }, { - "pk": 3, - "model": "djtracker.priority", + "pk": 3, + "model": "djtracker.priority", "fields": { - "name": "Low", + "name": "Low", "slug": "test-low" } - }, + }, { - "pk": 1, - "model": "djtracker.issuetype", + "pk": 1, + "model": "djtracker.issuetype", "fields": { - "name": "Bug", + "name": "Bug", "slug": "bug" } - }, + }, { - "pk": 2, - "model": "djtracker.issuetype", + "pk": 2, + "model": "djtracker.issuetype", "fields": { - "name": "Defect", + "name": "Defect", "slug": "defect" } - }, + }, { - "pk": 3, - "model": "djtracker.issuetype", + "pk": 3, + "model": "djtracker.issuetype", "fields": { - "name": "Feature Request", + "name": "Feature Request", "slug": "feature-request" } - }, + }, { - "pk": 1, - "model": "djtracker.issue", + "pk": 1, + "model": "djtracker.issue", "fields": { - "status": 1, - "priority": 2, - "name": "Test Issue", - "created_date": "2009-11-14 16:52:57", - "modified_date": "2009-11-14 16:52:57", - "assigned_to": 3, - "component": 1, - "created_by": 2, - "project": 1, - "version": 1, + "status": 1, + "priority": 2, + "name": "Test Issue", + "created_date": "2009-11-14 16:52:57", + "modified_date": "2009-11-14 16:52:57", + "assigned_to": 3, + "component": 1, + "created_by": 2, + "project": 1, + "version": 1, "watched_by": [ 4 - ], - "issue_type": 1, - "milestone": 1, - "active": true, + ], + "issue_type": 1, + "milestone": 1, + "active": true, "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in diam est. In id tortor vitae nulla iaculis imperdiet. Quisque scelerisque ipsum suscipit nibh scelerisque gravida. In sit amet dolor lectus. Vestibulum sit amet consectetur urna. Nam sit amet ligula ac turpis consequat dapibus sed et leo. Donec eget quam massa. Sed ac porta ante. In mi metus, rhoncus quis viverra in, vulputate eu erat. Aenean facilisis mauris nec lacus congue tempor. Vivamus facilisis, augue at imperdiet interdum, velit urna consequat nisi, sed tempus erat felis sed turpis. Suspendisse bibendum leo vel metus ultrices congue. In fringilla purus varius velit rutrum eget faucibus turpis blandit. Cras mauris metus, cursus et hendrerit id, rutrum at purus. Vestibulum accumsan tincidunt ante sed pretium. Phasellus nec mattis lacus." } } diff --git a/djtracker/templates/djtracker/base.html b/djtracker/templates/djtracker/base.html index ae691d3..70ab6df 100644 --- a/djtracker/templates/djtracker/base.html +++ b/djtracker/templates/djtracker/base.html @@ -13,7 +13,7 @@ {% include "djtracker/usermenu.html" %} -
+
@@ -26,9 +26,9 @@

DjTracker Issue Tracker{% if project %} » {{project}}{

{% block content %} - {% endblock %} + {% endblock %}
- +
{% include "djtracker/sidebar.html" %} {% block sidebar %} diff --git a/djtracker/templates/djtracker/blocks/issue_proptab.html b/djtracker/templates/djtracker/blocks/issue_proptab.html index 153c6f4..14f1213 100644 --- a/djtracker/templates/djtracker/blocks/issue_proptab.html +++ b/djtracker/templates/djtracker/blocks/issue_proptab.html @@ -1,12 +1,12 @@ {% load i18n %} - +
{% if issue.component %} {% endif %} - {% if issue.version %} + {% if issue.version %} {% endif %} {% if issue.milestone %} diff --git a/djtracker/templates/djtracker/djtracker.css b/djtracker/templates/djtracker/djtracker.css index 77fd2ff..03fbbb7 100644 --- a/djtracker/templates/djtracker/djtracker.css +++ b/djtracker/templates/djtracker/djtracker.css @@ -19,7 +19,7 @@ a:hover { #usermenu { text-align:right; border-bottom: 1px solid #C3D9FF; - padding: 5px 10px; + padding: 5px 10px; } /* BANNER */ @@ -32,7 +32,7 @@ a:hover { #banner h1 a, #banner h1 a:visited { color: black; - text-decoration: none; + text-decoration: none; } #banner ul { @@ -48,7 +48,7 @@ div#mainNav { #mainNav ul { margin: 0; - padding: 0; + padding: 0; border-bottom: 1px solid #E5ECF9; width: 100%; font-size: 14px; @@ -63,7 +63,7 @@ div#mainNav { color: black; text-decoration: none; padding: 2px 10px; - display: block; + display: block; } #mainNav li a:hover { @@ -94,7 +94,7 @@ td.col { #main h1 { color: #663900; padding-top: 15px; - margin-bottom: 10px; + margin-bottom: 10px; } #main h2 { @@ -113,7 +113,7 @@ td.col { } #main h2, #main h3, #main h4 { - margin-bottom: 5px; + margin-bottom: 5px; border-bottom: 1px solid #E5ECF9; } @@ -169,11 +169,11 @@ td.col { } .issuelist { - width: 100%; + width: 100%; } -.issuelist th { - background-color:#E5ECF9; +.issuelist th { + background-color:#E5ECF9; } .issuelist td:hover { @@ -218,7 +218,7 @@ ul.errorlist, #mainwrap ul.errorlist { clear: both; padding: 5px; border-top: 1px solid #E5ECF9; - border-bottom: 1px solid #E5ECF9; + border-bottom: 1px solid #E5ECF9; color: #888888; text-align: center; font-size: 80%; @@ -229,27 +229,27 @@ ul.errorlist, #mainwrap ul.errorlist { float: right; width: 200px; margin-bottom: 2px; - margin-left: 10px; + margin-left: 10px; position: relative; -} +} #main .figure p { position: absolute; - left: 10px; - bottom: 10px; - width: 168px; + left: 10px; + bottom: 10px; + width: 168px; background-color: #FFF; border: 1px dashed #666666; - font-size: 1.1em; - font-weight: bold; - text-align: center; - padding: 5px; - margin: 0; -} + font-size: 1.1em; + font-weight: bold; + text-align: center; + padding: 5px; + margin: 0; +} #main .figure img { display: block; -} +} /* prop tables */ .proptab { @@ -351,7 +351,7 @@ ul.dropdown li:hover > ul { } -/** +/** * Default CSS Drop-Down Menu Theme * * @file default.css @@ -389,7 +389,7 @@ ul.dropdown li { } ul.dropdown li.hover, - ul.dropdown li:hover { + ul.dropdown li:hover { color: #FFFFFF; } diff --git a/djtracker/templates/djtracker/index.html b/djtracker/templates/djtracker/index.html index 3dc233f..6d93405 100644 --- a/djtracker/templates/djtracker/index.html +++ b/djtracker/templates/djtracker/index.html @@ -9,7 +9,7 @@

{% trans "Submit Issue" %} | RSS {{ project }}

-

{{ project.description }}

+

{{ project.description }}

{% endfor %} {% else %} {% if request.user.is_authenticated %} @@ -17,6 +17,6 @@

{% else %}

{% trans "Authentication Required" %}

{% trans "Please" %}{% trans " log in to use this bugtracker." %}

- {% endif %} + {% endif %} {% endif %} {% endblock %} diff --git a/djtracker/templates/djtracker/issue_detail.html b/djtracker/templates/djtracker/issue_detail.html index 809d49b..e65b44b 100644 --- a/djtracker/templates/djtracker/issue_detail.html +++ b/djtracker/templates/djtracker/issue_detail.html @@ -2,12 +2,12 @@ {% load comments i18n markup %} {% block title %} - {{ issue }} {% endblock %} {% block content %} -

{% trans "Status" %}{{ issue.status }}
{% trans "Type" %}{{ issue.issue_type }}
{% trans "Priority" %}{{ issue.priority }}
{% trans "Component" %}{{ issue.component }}
{% trans "Version" %}{{ issue.version }}
-

{% if request.user.is_authenticated %}{% if can_edit %}{% trans "edit" %} |{% endif %} {% if is_watching %}{% trans "unwatch" %}{% else %}{% trans "watch" %}{% endif %}{% if can_comment %} | {% trans "submit issue" %}{% endif %}{% endif %}{{ issue.project }} : {{ issue }}

+
+

{% if request.user.is_authenticated %}{% if can_edit %}{% trans "edit" %} |{% endif %} {% if is_watching %}{% trans "unwatch" %}{% else %}{% trans "watch" %}{% endif %}{% if can_comment %} | {% trans "submit issue" %}{% endif %}{% endif %}{{ issue.project }} : {{ issue }}

{{ issue.description|restructuredtext }}

{% if can_comment %}{% trans "Add an Attachment" %}{% endif %}{% trans "Attachments" %}

{% if issue.fileupload_set.all %} -
    +
      {% for file in issue.fileupload_set.all %}
    • {{ file }}
    • {% endfor %} @@ -22,11 +22,11 @@

      {% trans "Comments" %}

      (#){% if comment.user_name %} {% if comment.user %}{% endif %}{{ comment.user_name }}{% else %}anon{% endif %}, {{ comment.submit_date|date:'r' }}:
      {{ comment.comment|restructuredtext }}

      {% endfor %} - {% endif %} + {% endif %} {% if can_comment %}

      {% trans "New Comment" %}

      {% if request.user.is_authenticated %} - {% get_comment_form for issue as form %} + {% get_comment_form for issue as form %}
      {{ form.content_type }} {{ form.object_pk }} @@ -47,12 +47,12 @@

      {% trans "New Comment" %}

      {{ form.honeypot }} {{ form.comment }}
- + {% else %} {% render_comment_form for issue %} {% endif %} {% endif %}
{% include 'djtracker/blocks/issue_proptab.html' %} -
+ {% endblock %} diff --git a/djtracker/templates/djtracker/issue_filter.html b/djtracker/templates/djtracker/issue_filter.html index 6cc2c12..151ed9c 100644 --- a/djtracker/templates/djtracker/issue_filter.html +++ b/djtracker/templates/djtracker/issue_filter.html @@ -43,7 +43,7 @@

Filter Issues

{% endif %} {% endfor %} - + {% trans "Priority" %}:

{% if request.user.is_authenticated %} -

{% trans "Save this filter for future use" %}: +

{% trans "Save this filter for future use" %}: {% trans "Saved filter name" %}:

- {% endif %} + {% endif %}

{{ project }}: {% trans "Issues" %} {% if can_comment %}{% trans "Submit Issue" %}{% endif %}

- {% with issues as issue_list %} + {% with issues as issue_list %} {% include 'djtracker/blocks/issue_list.html' %} {% endwith %} - + {% if can_comment %} {% trans "Submit Issue" %} {% endif %} diff --git a/djtracker/templates/djtracker/modify_issue.html b/djtracker/templates/djtracker/modify_issue.html index e4b2867..8ff276a 100644 --- a/djtracker/templates/djtracker/modify_issue.html +++ b/djtracker/templates/djtracker/modify_issue.html @@ -3,8 +3,8 @@ {% block title %} - {% blocktrans %}Modify {{ issue }}{% endblocktrans %}{% endblock %} {% block content %} -
- {{ form.as_table }}
+ + {{ form.as_table }}
{% endblock %} diff --git a/djtracker/templates/djtracker/profile/login.html b/djtracker/templates/djtracker/profile/login.html index 06c4208..120eff5 100644 --- a/djtracker/templates/djtracker/profile/login.html +++ b/djtracker/templates/djtracker/profile/login.html @@ -14,10 +14,10 @@ {{ form.password.label_tag }} {{ form.password }} - + - +

{% trans "Forgot your password? Click " %}{% trans "here" %} {% trans "to get a fresh one." %}

{% endblock %} - + diff --git a/djtracker/templates/djtracker/project_index.html b/djtracker/templates/djtracker/project_index.html index 75e5588..02089c9 100644 --- a/djtracker/templates/djtracker/project_index.html +++ b/djtracker/templates/djtracker/project_index.html @@ -10,20 +10,20 @@ {% block content %} {% if project %}

{% if request.user.is_superuser %}{% trans "Edit Project" %} | {% endif %}{% if is_watching %}{% trans "unwatch" %}{% else %}{% trans "watch" %}{% endif %} | RSS{{ project }}

-

{{ project.description }}

+

{{ project.description }}

{% trans "View all Issues" %}{% if can_comment %} | {% trans "Submit Issue" %}{% endif %}{{ project }}: {% trans "Open Issues" %}

- + {% with open_issues as issue_list %} {% include 'djtracker/blocks/issue_list.html' %} {% endwith %} - +

{% trans "Browse Issues by" %}

- +
{% trans "Status" %}:{% for status in statuses %}{{ status }}{% if not forloop.last %} | {% endif %}{% endfor %}
{% trans "Issue Type" %}:{% for type in types %}{{ type }}{% if not forloop.last %} | {% endif %}{% endfor %}
{% trans "Priority" %}:{% for priority in priorities %}{{ priority }}{% if not forloop.last %} | {% endif %}{% endfor %}
{% trans "Priority" %}:{% for priority in priorities %}{{ priority }}{% if not forloop.last %} | {% endif %}{% endfor %}

{% trans "Project Information" %}

diff --git a/djtracker/templates/djtracker/sorttable.js b/djtracker/templates/djtracker/sorttable.js index c123e1b..7347c6a 100644 --- a/djtracker/templates/djtracker/sorttable.js +++ b/djtracker/templates/djtracker/sorttable.js @@ -3,13 +3,13 @@ version 2 7th April 2007 Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/ - + Thanks to many, many people for contributions and suggestions. Licenced as X11: http://www.kryogenix.org/code/browser/licence.html This basically means: do what you want with it. */ - + var stIsIE = /*@cc_on!@*/false; sorttable = { @@ -20,19 +20,19 @@ sorttable = { arguments.callee.done = true; // kill the timer if (_timer) clearInterval(_timer); - + if (!document.createElement || !document.getElementsByTagName) return; - + sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/; - + forEach(document.getElementsByTagName('table'), function(table) { if (table.className.search(/\bsortable\b/) != -1) { sorttable.makeSortable(table); } }); - + }, - + makeSortable: function(table) { if (table.getElementsByTagName('thead').length == 0) { // table doesn't have a tHead. Since it should have, create one and @@ -43,9 +43,9 @@ sorttable = { } // Safari doesn't support table.tHead, sigh if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0]; - + if (table.tHead.rows.length != 1) return; // can't cope with two header rows - + // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as // "total" rows, for example). This is B&R, since what you're supposed // to do is put them in a tfoot. So, if there are sortbottom rows, @@ -67,7 +67,7 @@ sorttable = { } delete sortbottomrows; } - + // work through each column and calculate its type headrow = table.tHead.rows[0].cells; for (var i=0; i fields. - + hasInputs = (typeof node.getElementsByTagName == 'function') && node.getElementsByTagName('input').length; - + if (node.getAttribute("sorttable_customkey") != null) { return node.getAttribute("sorttable_customkey"); } @@ -234,7 +234,7 @@ sorttable = { } } }, - + reverse: function(tbody) { // reverse the rows in a tbody newrows = []; @@ -246,14 +246,14 @@ sorttable = { } delete newrows; }, - + /* sort functions each sort function takes two parameters, a and b you are comparing a[0] and b[0] */ sort_numeric: function(a,b) { aa = parseFloat(a[0].replace(/[^0-9.-]/g,'')); if (isNaN(aa)) aa = 0; - bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); + bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); if (isNaN(bb)) bb = 0; return aa-bb; }, @@ -292,7 +292,7 @@ sorttable = { if (dt1 +
{{ form.as_table }}
diff --git a/djtracker/templates/djtracker/topnav.html b/djtracker/templates/djtracker/topnav.html index d475eb3..7d0e745 100644 --- a/djtracker/templates/djtracker/topnav.html +++ b/djtracker/templates/djtracker/topnav.html @@ -8,7 +8,7 @@ {% endif %} {% if bar_project_list %}
  • {% trans "Projects" %} -
      +
        {% for bar_project in bar_project_list %}
      • {{ bar_project }}
      • {% endfor %} diff --git a/djtracker/templates/djtracker/upload_form.html b/djtracker/templates/djtracker/upload_form.html index 8e27809..13fcee0 100644 --- a/djtracker/templates/djtracker/upload_form.html +++ b/djtracker/templates/djtracker/upload_form.html @@ -1,7 +1,7 @@ {% extends "djtracker/base.html" %} {% load i18n %} {% block content %} -
        + {% if form.errors %} {{ form.errors }} {% endif %} diff --git a/djtracker/templates/djtracker/user_dashboard.html b/djtracker/templates/djtracker/user_dashboard.html index 1cf2564..b47e890 100644 --- a/djtracker/templates/djtracker/user_dashboard.html +++ b/djtracker/templates/djtracker/user_dashboard.html @@ -6,7 +6,7 @@ {% endblock %} - + {% block content %}

        Subscribe to Your RSS Feed

        @@ -23,11 +23,11 @@

        {% trans "Issues assigned to me" %}

        {# if profile.issuefilter_set.all #}

        {% trans "Saved Filters" %}

        {% for issue_filter in profile.issuefilter_set.all %} - ({% trans "delete" %}){{ issue_filter.name }} + ({% trans "delete" %}){{ issue_filter.name }} {% if not forloop.last %} | {% endif %} {% endfor %} {# endif #} - + - + {% if created_issues %} - + {% if watched_issues %}