3654 Commits

Author SHA1 Message Date
Christopher Allan Webber
cd1fda4d94 PyTest needs to be >= 2.3.1 2013-07-10 13:34:49 -05:00
Rodney Ewing
537ce5973a need to use .get('messages') to not get a keyerror 2013-07-10 11:08:28 -07:00
Rodney Ewing
05ceada051 remove the list from response.vary. not sure why I was getting an error using openid without it, but everything seems to be working fine now 2013-07-10 10:37:13 -07:00
Rodney Ewing
b3c4cbd5c1 only check password if there is a store_hash 2013-07-10 10:35:26 -07:00
Christopher Allan Webber
bed9ad06b7 Release notes v0.4.1 ... fixes serious issue with conversion via libreoffice.
This commit sponsored by William Linna.  Thank you!
2013-07-10 11:41:29 -05:00
Christopher Allan Webber
2d7a6789be Fixing bug that effectively broke document support in 0.4.0.. how embarassing :(
This fix sponsored by Christophe Drevet.  Thank you!
2013-07-10 08:45:18 -05:00
Christopher Allan Webber
5622cc44ed Mention setup.py develop --upgrade also in release notes.
This commit sponsored by Christoph Schumacher.  Thank you!
2013-07-09 19:41:49 -05:00
Rodney Ewing
94a566e60e typo 2013-07-09 13:41:40 -07:00
Rodney Ewing
26d2cce85e added docs for the persona plugin 2013-07-09 13:31:32 -07:00
Rodney Ewing
bd0ece0557 added basic_auth and openid docs to index and link them together 2013-07-09 12:57:57 -07:00
Rodney Ewing
2c4cdd096f added openid docs 2013-07-09 12:34:13 -07:00
Rodney Ewing
6a93bb4ef7 basic_auth documentation 2013-07-09 12:31:01 -07:00
tilly-Q
650a0aa90d I just added the attribution for the clipboard image to the code. 2013-07-08 14:31:28 -04:00
tilly-Q
3ce0c6113e This update I mostly did work on the templates for the admin pages. I did a co-
-uple other small changes. I changed the information around the media processi-
ng panel to be more specific, since it was written when it was the only admin
page. Git didn't catch this, but I renamed the templates, so mediagoblin/templ-
ates/admin/user.html now referrs to the page which shows the details of a spec-
ific user. The list view pages are now named ELEMENT_panel.html(ie. user_panel)
I also added a column reported_user_id to the ReportBase table, and had to add
to Report filing to make sure that column gets created. Also I moved the report
media button (on a media page) to the sidebar, though it still needs some form-
atting

--\ mediagoblin/static/images/icon_clipboard.png
--| Added this image for use in template mediagoblin/admin/report.html.
--| Distributed by the GNOME project http://www.gnome.org
--| Under a GNU LGPL v.3 or Creative Commons BY-SA 3.0 license.
--| I'm still trying to figure out the appropriate way to attribute this in
  | the code

--\ mediagoblin/templates/mediagoblin/admin/media_panel.html
--| This template is actually the template formerly know as media.html. I
  | renamed it for clarity

--\ mediagoblin/templates/mediagoblin/admin/report_panel.html
--| This template is actually the template formerly know as report.html. I
  | renamed it for clarity

--\ mediagoblin/templates/mediagoblin/admin/user_panel.html
--| This template is actually the template formerly know as user.html. I renam-
  | -ed it for clarity

--\ mediagoblin/templates/mediagoblin/utils/report.html
--| This template is included in the media_home page. It is the report media
  | button. I figured I'd write it like this in case it got more complicated.

--\ mediagoblin/admin/routing.py
--| I changed the routing path /a/panel to /a/media for specificity

--\ mediagoblin/admin/views.py
--| I renamed admin_processing_panel to admin_media_processing_panel
--| I wrote a new view function admin_reports_detail
--| I wrote a new view function admin_users_detail

--\ mediagoblin/db/migrations.py
--| I added in the column reported_user_id to the ReportBase_v0 class

--\ mediagoblin/db/models.py
--| I added in the column reported_user_id to the ReportBase class

--\ mediagoblin/static/css/base.css
--| I added in css classes to display a report. Right now, they are just echo-
  | -ing the ways comments are displayed, but with the link in another color

--\ mediagoblin/templates/mediagoblin/admin/report.html
--| Created this new template (although git doesn't realize it) to show the de-
  | -tails of a specific report, indicated in the URL

--\ mediagoblin/templates/mediagoblin/admin/user.html
--| Created this new template (although git doesn't realize it) to show the de-
  | -tails of a specific user, indicated in the URL

--\ mediagoblin/templates/mediagoblin/base.html
--| Redirected the link from /a/panel to /a/media

--\ mediagoblin/templates/mediagoblin/user_pages/media.html
--| Moved the media report button to the sidebar

--\ mediagoblin/user_pages/lib.py
--| Changed the creation of reports, so that they also assign a column for rep-
  | -orted_user_id.
2013-07-08 14:20:28 -04:00
Rodney Ewing
20d4995d81 made it so that the create account button works with only persona enabled 2013-07-03 15:07:52 -05:00
Rodney Ewing
e39b9cc60f moved persona template stuff to use template_hooks 2013-07-03 15:07:50 -05:00
Rodney Ewing
4f8f0a4e1f merge --squash persona branch to take care of a false merge commit in
the basic_auth branch that persona is forked from

Conflicts:
	mediagoblin/templates/mediagoblin/auth/login.html
	mediagoblin/templates/mediagoblin/auth/register.html
	mediagoblin/templates/mediagoblin/edit/edit_account.html

These are commit messages from the squashed persona stuff:

 - added tests and fixed minor errors
 - fixed a redirect loop when only persona is enabled and accessing /auth/login
 - moved persona.js to plugin's static dir
 - fixes for add/remove persona emails
 - add and remove personas
 - working with multiple plugins
 - working version
 - switched to hidden form instead of ajax
 - beginings
2013-07-03 15:07:39 -05:00
Christopher Allan Webber
41a14c6efc Merge remote-tracking branch 'remotes/lotusecho/trac_711_test_speed' 2013-07-03 14:07:11 -05:00
Christopher Allan Webber
87bca496b2 Fix missing quote 2013-07-03 14:06:22 -05:00
Rodney Ewing
c92b3c63b1 changed hook name to reuse with persona 2013-07-03 13:49:17 -05:00
Rodney Ewing
fea0b3b289 use template hooks instead of hardcoding in templates 2013-07-03 13:49:17 -05:00
Rodney Ewing
d66f79031e forgot to pass request.form into LoginForm class 2013-07-03 13:49:16 -05:00
Rodney Ewing
ef146456b1 typo 2013-07-03 13:49:16 -05:00
Rodney Ewing
664ce3bfae fixed openid store cleanupAssociations 2013-07-03 13:49:16 -05:00
Rodney Ewing
b01bff8b3c removed openid/lib, since the get forms functions were not needed for persona plugin 2013-07-03 13:49:16 -05:00
Rodney Ewing
5adb906a0a merge --squash openid branch to take care of a false merge commit in the
basic_auth branch that openid is forked from

Commits squashed together (in reverse chronological order):
 - do the label thing only for boolean fields
 - made edit_account to autofocus on the first field
 - added feature to render_divs where if field.label == '' then it
   will render form.description the same a render_label
 - added allow_registration check
 - refactored create_user
 - removed verification_key from create_user
 - removed get_user from openid
 - cleanup after removing openid from template_env.globals
 - fix for werkzueg 0.9.1
 - cleanup after merge
 - more tests
 - restored openid extra_validation just for safety
 - tests for openid
 - deleted openid extra_validation
 - passed next parameter in session for openid
 - fixed a bug that was deleting the messages
 - implemented openid store using sqlalchemy
 - ask openid provider for 'nickname' to prefill username in registration form
 - refactored delete openid url to work with generic urls such as
   google and to not allow a user to delete a url if it is there only
   one and they don't have a pw
 - refactored login to register user workflow, which fixed a problem
   where the 'or register with a password link' wasn't showing up when
   the finish_login view called the register view because there wasn't
   any redirect.
 - added the ability to remove openid's
 - added the ability to add openids to an existing account
 - refactored start_login and finish_login views
 - modified edit_account.html to use render_divs
 - modified gmg/edit/views to behave appropriatly if no password
   authentication is enabled. moved the update email stuff to it's own
   funtion to make edit_account view cleaner. edit_account now
   modifies the form depending on the plugins.
 - minor typos
 - added retrieving email from openid provider
 - moved allow_registration check to a decorator
 - moved check if auth is enabled to a decorator
 - changed openid user registration to go through login first
 - cleanup after merge
 - modified verification emails to use itsdangerous tokens
 - added error handling on bad token, fixed route, and added tests
 - added support for user to change email address
 - added link to login view openid/password in login template
 - updated openid get_user function
 - modified get_user function to take kwargs instead of username
 - no need for user might be email kwarg in check_login_simple
 - added gen_password_hash and check_password functions to auth/__init__
 - added focus to form input
 - made imports fully qualified
 - modified basic_auth.check_login to check that the user has a pw_hash first
 - changed occurances of form.data['whatever'] to form.whatever.data
 - convert tabs to spaces in register template, remove unsed
   templates, and fixed trans tags in templates
 - in process of openid login. it works, but needs major imporvements
 - make password field required in basic_auth form
 - check if password field present in basic_auth create_user
 - modified openid create_user function
 - modified models based on Elronds suggestions
 - changed register form action to a variable to be passed in by the
   view using the template
 - openid plugin v0, still need to authenticate via openid.
 - added a register_user function to be able to use in a plugin's
   register view, and modified auth/views.register to redirect to
   openid/register if appropriate.
 - Modified basic_auth plugin to work with modified auth plugin
   hooks. Added context variables. Removed basic_auth/tools which was
   previously renamed to basic_auth/lib.
 - modified auth/__init__ hooks to work better with multiple
   plugins. Removed auth/lib.py. And added a basic_extra_verification
   function that all plugins will use.
 - added models and migrations for openid plugin
2013-07-03 13:49:16 -05:00
tilly-Q
3fb96fc978 This was a simple commit. I changed all references to Groups into Privileges so
as to not conflict with the new federated groups which are also being written.
I also fixed up some of the code in the user_in_group/user_has_privilege decor-
ator. Users are now assigned the default privileges when they sign up, and ass-
iged active once they are activated. I updated the gmg command makeadmin to use
my groups as well. Lastly, I added the decorator to various views, requiring th-
at users belong to appropriate groups to access pages.

--\ mediagoblin/auth/tools.py
--| Added code to assign new users to default privileges

--\ mediagoblin/auth/views.py
--| Added code to assign users to u'active' privilege once the email
  | verification is complete

--\ mediagoblin/db/migrations.py
--| Renamed Group class to Privilege class

--\ mediagoblin/db/models.py
--| Renamed Group class to Privilege class

--\ mediagoblin/decorators.py
--| Renamed function based on the Group->Privilege change
--| Rewrote the function to be, ya know, functional

--\ mediagoblin/gmg_commands/users.py
--| Changed the 'makeadmin' command to add the target user to the admin
  | privilege group as well as affecting 'is_admin' column

--\ mediagoblin/submit/views.py
--| Added the requirement that a user has the 'uploader' privilege in order
  | to submit new media.

--\ mediagoblin/user_pages/views.py
--| Added the requirement that a user has the 'commenter' privilege in order
  | to make a comment.
--| Added the requirement that a user has the 'reporter' privilege in order
  | to submit new reports.
--| Got rid of some vestigial code in the file_a_report function.
2013-07-03 14:46:21 -04:00
Christopher Allan Webber
ac0bc6a1e1 fixing the config section we pull things out of for basic_auth 2013-07-03 08:09:48 -05:00
Rodney Ewing
c81186dd2e added a warning for old media types 2013-07-02 09:26:12 -07:00
Rodney Ewing
cbac4a7fc9 converted video media_type to plugin 2013-07-02 09:00:57 -07:00
Rodney Ewing
239296b004 converted stl media_type to plugin 2013-07-02 09:00:57 -07:00
Rodney Ewing
51e4e43504 converted pdf media_type to plugin 2013-07-02 09:00:57 -07:00
Rodney Ewing
df68438a34 converted audio media_type to plugin 2013-07-02 09:00:57 -07:00
Rodney Ewing
b1a763f61e typo in image supported_filetypes 2013-07-02 09:00:57 -07:00
Rodney Ewing
2293081231 converted ascii media_type to plugin 2013-07-02 09:00:50 -07:00
Rodney Ewing
e699197258 fixed some typos and enabled media_type plugins in tests 2013-07-02 08:06:39 -07:00
Rodney Ewing
2d9a452c3a removed sniff_handler from Imange Media Manager class 2013-07-02 07:22:02 -07:00
Rodney Ewing
90b7b6e878 removed CompatMediaManager() since all core media_types are classes 2013-07-02 07:22:02 -07:00
Rodney Ewing
58a947578c modified gmg to use plugin media_types and converted image media_type to new plugin style 2013-07-02 07:21:44 -07:00
Christopher Allan Webber
e9f3306627 More clarifications on what ./bin/gmg dbupdate does on each run.
This commit sponsored by Jessica Howard.  Thanks, sistah!
2013-06-28 11:51:40 -05:00
Christopher Allan Webber
4436fbcd01 Some documentation on how to write database migrations.
This commit sponsored by Andrei Cristian Petcu.  Thanks!
2013-06-28 10:27:06 -05:00
tilly-Q
9b8ef022ef In this commit, I have made a few changes and tightened up some of my models
code. I added in two major pieces of functionality: table foundations and a
decorator to confirm whether or not a user is a member of a certain group.

Table Foundations are default rows that should be present in a given table as
soon as the database is initialized. For example, I am using these to populate
the core__groups table with all of the necessary groups ('moderator', 'com-
menter', etc). Right now, this is achieved by adding a dictionary of parameters
(with the parameters as lists) to the constant FOUNDATIONS in
mediagoblin.db.models. The keys to this dictionary are uninstantiated classes.
The classes which require foundations also have must have a constructor so that
the list of parameters can be passed appropriately like so:
        Model(*parameters)
In order to implement these foundations, I added the method populate_table_fou-
-ndations to MigrationManager in mediagoblin.db.migration_tools.

The decorator, called user_in_group, accepts as a parameter a unicode string,
and then decides whether to redirect to 403 or let the user access the page. The
identifier is the Group.group_name string, because I believe that will allow for
the most readable code.

I also added in the simple decorator require_admin_login.

In terms of tightening up my code, I made many minor changes to my use of white
space and made a few small documentation additions. I removed a vestigial class
(ReportForm) from mediagoblin.user_pages.forms. I moved all of my migrations in-
to one registered Migration.

Setting up Foundations
==============================

--\ mediagoblin/db/migration_tools.py
--| created: MigrationManager.populate_table_foundations
--| modified: MigrationManager.init_or_migrate to run
  |     self.populate_table_foundations on init

--\ mediagoblin/db/models.py
--| created: FOUNDATIONS
----| created: group_foundations

Working With Permissions
==============================
--\ mediagoblin/decorators.py
--| created: user_in_group
--| created: require_admin_login

--\ mediagoblin/user_pages/views.py
--| modified: added decorator user_in_group to file_a_report

--\ mediagoblin/admin/views.py
--| modified: added decorator require_admin_login to all views functions

General Code Tidying
=============================

--/ mediagoblin/admin/views.py
--/ mediagoblin/user_pages/forms.py
--/ mediagoblin/db/models.py
--/ mediagoblin/user_pages/lib.py
--/ mediagoblin/user_pages/views.py
--/ mediagoblin/db/migrations.py
2013-06-27 14:13:42 -07:00
Emily O'Leary
6db23bd9b6 Updated comments for run_all_migrations and config_spec.ini. 2013-06-27 17:05:25 -04:00
Rodney Ewing
491f2007f5 typo 2013-06-26 07:39:17 -07:00
Rodney Ewing
889564a3c1 do the label thing only for boolean fields 2013-06-26 07:36:11 -07:00
Rodney Ewing
c345dcf875 made edit_account to autofocus on the first field 2013-06-26 06:45:36 -07:00
Emily O'Leary
4a698535bc Improved test runtime from 352 seconds to 59 seconds by implementing an in-memory sqlite DB and including an option to run migrations on this newly created database by adding a config option called run_migrations to the config_spec and passing it along in app.py to the setup_database function. 2013-06-25 20:57:50 -04:00
Rodney Ewing
1e21471a8a added feature to render_divs where if field.label == '' then it will render form.description the same a render_label 2013-06-25 16:28:45 -07:00
Christopher Allan Webber
15db183151 Explain about sqlite dropping the constraint and why we're adding it back manually. 2013-06-25 17:12:33 -05:00
Rodney Ewing
6174169786 cleanup after merge 2013-06-25 13:43:33 -07:00