Commit e5caa3e9 authored by Sofia Papagiannaki's avatar Sofia Papagiannaki

Progress I

parent 995d6106
......@@ -7,4 +7,315 @@ docs/build
.pydevproject
snf-astakos-app/astakos/version.py
snf-astakos-app/distribute-0.6.10-py2.6.egg
snf-astakos-app/distribute-0.6.10.tar.gz
\ No newline at end of file
snf-astakos-app/distribute-0.6.10.tar.gz
snf-astakos-app/build/lib/astakos/__init__.py
snf-astakos-app/build/lib/astakos/im/__init__.py
snf-astakos-app/build/lib/astakos/im/activation_backends.py
snf-astakos-app/build/lib/astakos/im/api/__init__.py
snf-astakos-app/build/lib/astakos/im/api/admin.py
snf-astakos-app/build/lib/astakos/im/api/backends/__init__.py
snf-astakos-app/build/lib/astakos/im/api/backends/base.py
snf-astakos-app/build/lib/astakos/im/api/backends/errors.py
snf-astakos-app/build/lib/astakos/im/api/backends/lib/__init__.py
snf-astakos-app/build/lib/astakos/im/api/backends/lib/django/__init__.py
snf-astakos-app/build/lib/astakos/im/api/backends/notifications.py
snf-astakos-app/build/lib/astakos/im/api/callpoint.py
snf-astakos-app/build/lib/astakos/im/api/client.py
snf-astakos-app/build/lib/astakos/im/api/faults.py
snf-astakos-app/build/lib/astakos/im/api/service.py
snf-astakos-app/build/lib/astakos/im/api/spec.py
snf-astakos-app/build/lib/astakos/im/auth_backends.py
snf-astakos-app/build/lib/astakos/im/context_processors.py
snf-astakos-app/build/lib/astakos/im/cookie.py
snf-astakos-app/build/lib/astakos/im/endpoints/__init__.py
snf-astakos-app/build/lib/astakos/im/endpoints/aquarium/__init__.py
snf-astakos-app/build/lib/astakos/im/endpoints/aquarium/client.py
snf-astakos-app/build/lib/astakos/im/endpoints/aquarium/consumer.py
snf-astakos-app/build/lib/astakos/im/endpoints/aquarium/producer.py
snf-astakos-app/build/lib/astakos/im/endpoints/qh.py
snf-astakos-app/build/lib/astakos/im/forms.py
snf-astakos-app/build/lib/astakos/im/functions.py
snf-astakos-app/build/lib/astakos/im/management/__init__.py
snf-astakos-app/build/lib/astakos/im/management/commands/__init__.py
snf-astakos-app/build/lib/astakos/im/management/commands/_common.py
snf-astakos-app/build/lib/astakos/im/management/commands/full-cleanup.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-list.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-permissions-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-permissions-remove.py~HEAD
snf-astakos-app/build/lib/astakos/im/management/commands/group-permissions-remove.py~future
snf-astakos-app/build/lib/astakos/im/management/commands/group-update.py
snf-astakos-app/build/lib/astakos/im/management/commands/invitation-details.py
snf-astakos-app/build/lib/astakos/im/management/commands/invitation-list.py
snf-astakos-app/build/lib/astakos/im/management/commands/quotaholder-sync.py
snf-astakos-app/build/lib/astakos/im/management/commands/resource-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/resource-list.py
snf-astakos-app/build/lib/astakos/im/management/commands/resource-remove.py
snf-astakos-app/build/lib/astakos/im/management/commands/service-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/service-list.py
snf-astakos-app/build/lib/astakos/im/management/commands/service-remove.py
snf-astakos-app/build/lib/astakos/im/management/commands/service-token-renew.py
snf-astakos-app/build/lib/astakos/im/management/commands/term-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-activation-send.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-add.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-details.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-invite.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-list.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-update.py
snf-astakos-app/build/lib/astakos/im/messages.py
snf-astakos-app/build/lib/astakos/im/middleware.py
snf-astakos-app/build/lib/astakos/im/migrations/0001_initial.py
snf-astakos-app/build/lib/astakos/im/migrations/0002_auto__add_field_astakosuser_third_party_identifier.py
snf-astakos-app/build/lib/astakos/im/migrations/0003_auto__add_unique_invitation_username.py
snf-astakos-app/build/lib/astakos/im/migrations/0004_auto__add_field_astakosuser_email_verified.py
snf-astakos-app/build/lib/astakos/im/migrations/0005_auto__add_field_astakosuser_has_credits.py
snf-astakos-app/build/lib/astakos/im/migrations/0006_auto__add_approvalterms__add_field_astakosuser_has_signed_terms__add_f.py
snf-astakos-app/build/lib/astakos/im/migrations/0007_auto__chg_field_astakosuser_email_verified__chg_field_astakosuser_has_.py
snf-astakos-app/build/lib/astakos/im/migrations/0007_auto__del_field_invitation_accepted__del_field_invitation_is_accepted.py
snf-astakos-app/build/lib/astakos/im/migrations/0008_auto__add_emailchange.py
snf-astakos-app/build/lib/astakos/im/migrations/0009_auto__add_service.py
snf-astakos-app/build/lib/astakos/im/migrations/0010_auto__add_field_astakosuser_activation_sent__chg_field_service_url.py
snf-astakos-app/build/lib/astakos/im/migrations/0011_set_old_activation_sent.py
snf-astakos-app/build/lib/astakos/im/migrations/0012_auto__add_additionalmail.py
snf-astakos-app/build/lib/astakos/im/migrations/0013_auto__del_unique_additionalmail_email.py
snf-astakos-app/build/lib/astakos/im/migrations/0014_auto__add_unique_astakosuser_third_party_identifier_provider.py
snf-astakos-app/build/lib/astakos/im/migrations/0015_auto__add_groupkind__add_astakosgroup__add_resourcemetadata__add_astak.py
snf-astakos-app/build/lib/astakos/im/migrations/0015_auto__add_pendingthirdpartyuser__add_unique_pendingthirdpartyuser_prov.py
snf-astakos-app/build/lib/astakos/im/migrations/0016_auto__add_sessioncatalog.py
snf-astakos-app/build/lib/astakos/im/migrations/0017_populate_resource_data.py
snf-astakos-app/build/lib/astakos/im/migrations/0018_auto__add_field_astakosgroup_homepage.py
snf-astakos-app/build/lib/astakos/im/migrations/0020_auto__chg_field_astakosgroup_homepage.py
snf-astakos-app/build/lib/astakos/im/migrations/0021_auto__add_field_astakosgroupquota_uplimit__add_field_astakosuserquota_.py
snf-astakos-app/build/lib/astakos/im/migrations/0022_copy_limit_to_uplimit.py
snf-astakos-app/build/lib/astakos/im/migrations/0024_auto__chg_field_astakosgroupquota_lim.py
snf-astakos-app/build/lib/astakos/im/migrations/0025_case_insensitive_emails.py
snf-astakos-app/build/lib/astakos/im/migrations/0026_auto__add_field_resource_desc__add_field_resource_unit.py
snf-astakos-app/build/lib/astakos/im/migrations/0027_auto__add_field_resource_group.py
snf-astakos-app/build/lib/astakos/im/migrations/0028_auto__add_field_astakosuser_disturbed_quota.py
snf-astakos-app/build/lib/astakos/im/migrations/0029_auto__add_field_astakosgroup_max_participants.py
snf-astakos-app/build/lib/astakos/im/migrations/0030_populate_resource_data.py
snf-astakos-app/build/lib/astakos/im/migrations/0031_populate_group_data.py
snf-astakos-app/build/lib/astakos/im/migrations/__init__.py
snf-astakos-app/build/lib/astakos/im/models.py
snf-astakos-app/build/lib/astakos/im/settings.py
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/README.rst
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/cloudbar.css
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/cloudbar.js
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/cloudbar.less
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/home-icon.png
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/service_cloud.css
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/service_cyclades.css
snf-astakos-app/build/lib/astakos/im/static/im/cloudbar/service_pithos.css
snf-astakos-app/build/lib/astakos/im/static/im/css/boxsizing.htc
snf-astakos-app/build/lib/astakos/im/static/im/css/browser-fixes.css
snf-astakos-app/build/lib/astakos/im/static/im/css/colorbox.css
snf-astakos-app/build/lib/astakos/im/static/im/css/custom.css
snf-astakos-app/build/lib/astakos/im/static/im/css/dropkick.css
snf-astakos-app/build/lib/astakos/im/static/im/css/formating.css
snf-astakos-app/build/lib/astakos/im/static/im/css/forms.css
snf-astakos-app/build/lib/astakos/im/static/im/css/global.css
snf-astakos-app/build/lib/astakos/im/static/im/css/ie7.css
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_flat_0_aaaaaa_40x100.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_glass_55_fbf9ee_1x400.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_glass_65_ffffff_1x400.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_glass_75_dadada_1x400.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_glass_75_e6e6e6_1x400.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_glass_75_ffffff_1x400.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-icons_222222_256x240.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-icons_2e83ff_256x240.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-icons_454545_256x240.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-icons_888888_256x240.png
snf-astakos-app/build/lib/astakos/im/static/im/css/images/ui-icons_cd0a0a_256x240.png
snf-astakos-app/build/lib/astakos/im/static/im/css/jquery-ui-1.8.21.custom.css
snf-astakos-app/build/lib/astakos/im/static/im/css/max480.css
snf-astakos-app/build/lib/astakos/im/static/im/css/max768.css
snf-astakos-app/build/lib/astakos/im/static/im/css/max960.css
snf-astakos-app/build/lib/astakos/im/static/im/css/modules.css
snf-astakos-app/build/lib/astakos/im/static/im/css/print.css
snf-astakos-app/build/lib/astakos/im/static/im/css/uniform.default.css
snf-astakos-app/build/lib/astakos/im/static/im/images/_double-dots.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/accounts-logo.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down_black.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down_blue.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down_grey.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-lt.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-up.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-up_blue.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-white-reverse.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-white.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow_01.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/bandwidth-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/banner.png
snf-astakos-app/build/lib/astakos/im/static/im/images/black-line.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/checkbox.png
snf-astakos-app/build/lib/astakos/im/static/im/images/cpu-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-compute.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-network.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-cpu.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-disk.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-network.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-ram.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-storage.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-resource-vm.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create-storage.png
snf-astakos-app/build/lib/astakos/im/static/im/images/create.png
snf-astakos-app/build/lib/astakos/im/static/im/images/dashed_border.png
snf-astakos-app/build/lib/astakos/im/static/im/images/disk-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/dots.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/double-dots-unequal.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/join.png
snf-astakos-app/build/lib/astakos/im/static/im/images/local.png
snf-astakos-app/build/lib/astakos/im/static/im/images/network-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/openid.png
snf-astakos-app/build/lib/astakos/im/static/im/images/pictures/accounts_3.png
snf-astakos-app/build/lib/astakos/im/static/im/images/pictures/login_pic.png
snf-astakos-app/build/lib/astakos/im/static/im/images/pictures/ring_bell_beige.gif
snf-astakos-app/build/lib/astakos/im/static/im/images/pictures/signup_pic.png
snf-astakos-app/build/lib/astakos/im/static/im/images/plus-minus-hover.png
snf-astakos-app/build/lib/astakos/im/static/im/images/plus-minus.png
snf-astakos-app/build/lib/astakos/im/static/im/images/porta.png
snf-astakos-app/build/lib/astakos/im/static/im/images/question-mark.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/quota-related-bg.png
snf-astakos-app/build/lib/astakos/im/static/im/images/ram-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/red-stats-vm.png
snf-astakos-app/build/lib/astakos/im/static/im/images/refresh_g.png
snf-astakos-app/build/lib/astakos/im/static/im/images/refresh_lg.png
snf-astakos-app/build/lib/astakos/im/static/im/images/service_okeanos_logo.png
snf-astakos-app/build/lib/astakos/im/static/im/images/service_pithos_logo.png
snf-astakos-app/build/lib/astakos/im/static/im/images/shibboleth.png
snf-astakos-app/build/lib/astakos/im/static/im/images/sound_g.png
snf-astakos-app/build/lib/astakos/im/static/im/images/sound_lg.png
snf-astakos-app/build/lib/astakos/im/static/im/images/sprite.png
snf-astakos-app/build/lib/astakos/im/static/im/images/statistics_icons.png
snf-astakos-app/build/lib/astakos/im/static/im/images/stats-line.jpg
snf-astakos-app/build/lib/astakos/im/static/im/images/storage-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/images/symbols.png
snf-astakos-app/build/lib/astakos/im/static/im/images/symbols2.png
snf-astakos-app/build/lib/astakos/im/static/im/images/twitter.png
snf-astakos-app/build/lib/astakos/im/static/im/images/vm-stats.png
snf-astakos-app/build/lib/astakos/im/static/im/js/common.js
snf-astakos-app/build/lib/astakos/im/static/im/js/forms.js
snf-astakos-app/build/lib/astakos/im/static/im/js/html5.js
snf-astakos-app/build/lib/astakos/im/static/im/js/html5shiv-printshiv.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jqModal.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery-1.7.1.min.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery-ui-1.8.21.custom.min.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.alerts.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.colorbox.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.dropkick-1.0.0.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.infieldlabel.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.labelify.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.tablesorter.js
snf-astakos-app/build/lib/astakos/im/static/im/js/jquery.uniform.js
snf-astakos-app/build/lib/astakos/im/static/im/js/main.js
snf-astakos-app/build/lib/astakos/im/static/im/js/modernizr-2.0.6.js
snf-astakos-app/build/lib/astakos/im/static/im/js/os.js
snf-astakos-app/build/lib/astakos/im/static/im/js/quotas.js
snf-astakos-app/build/lib/astakos/im/static/im/js/resources_list.js
snf-astakos-app/build/lib/astakos/im/static/im/js/underscore.js
snf-astakos-app/build/lib/astakos/im/static/im/less/bootstrap.less
snf-astakos-app/build/lib/astakos/im/static/im/less/django_forms.less
snf-astakos-app/build/lib/astakos/im/static/im/less/forms.less
snf-astakos-app/build/lib/astakos/im/static/im/less/mixins.less
snf-astakos-app/build/lib/astakos/im/static/im/less/patterns.less
snf-astakos-app/build/lib/astakos/im/static/im/less/reset.less
snf-astakos-app/build/lib/astakos/im/static/im/less/scaffolding.less
snf-astakos-app/build/lib/astakos/im/static/im/less/tables.less
snf-astakos-app/build/lib/astakos/im/static/im/less/type.less
snf-astakos-app/build/lib/astakos/im/static/im/less/variables.less
snf-astakos-app/build/lib/astakos/im/static/im/less/xtra.less
snf-astakos-app/build/lib/astakos/im/synnefo_settings.py
snf-astakos-app/build/lib/astakos/im/target/__init__.py
snf-astakos-app/build/lib/astakos/im/target/local.py
snf-astakos-app/build/lib/astakos/im/target/redirect.py
snf-astakos-app/build/lib/astakos/im/target/shibboleth.py
snf-astakos-app/build/lib/astakos/im/tasks.py
snf-astakos-app/build/lib/astakos/im/templates/im/account_base.html
snf-astakos-app/build/lib/astakos/im/templates/im/account_notification.txt
snf-astakos-app/build/lib/astakos/im/templates/im/activation_email.txt
snf-astakos-app/build/lib/astakos/im/templates/im/approval_terms.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosgroup_create_list.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosgroup_detail.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosgroup_form.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosgroup_form_summary.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosgroup_list.html
snf-astakos-app/build/lib/astakos/im/templates/im/astakosuserquota_list.html
snf-astakos-app/build/lib/astakos/im/templates/im/base.html
snf-astakos-app/build/lib/astakos/im/templates/im/base_two_cols.html
snf-astakos-app/build/lib/astakos/im/templates/im/billing.html
snf-astakos-app/build/lib/astakos/im/templates/im/captcha.html
snf-astakos-app/build/lib/astakos/im/templates/im/email.txt
snf-astakos-app/build/lib/astakos/im/templates/im/feedback.html
snf-astakos-app/build/lib/astakos/im/templates/im/feedback_mail.txt
snf-astakos-app/build/lib/astakos/im/templates/im/footer.html
snf-astakos-app/build/lib/astakos/im/templates/im/form_render.html
snf-astakos-app/build/lib/astakos/im/templates/im/group_creation_notification.txt
snf-astakos-app/build/lib/astakos/im/templates/im/helpdesk_notification.txt
snf-astakos-app/build/lib/astakos/im/templates/im/invitation.txt
snf-astakos-app/build/lib/astakos/im/templates/im/invitations.html
snf-astakos-app/build/lib/astakos/im/templates/im/login.html
snf-astakos-app/build/lib/astakos/im/templates/im/login_base.html
snf-astakos-app/build/lib/astakos/im/templates/im/one_col_base.html
snf-astakos-app/build/lib/astakos/im/templates/im/profile.html
snf-astakos-app/build/lib/astakos/im/templates/im/projects/list_types.html
snf-astakos-app/build/lib/astakos/im/templates/im/register.html
snf-astakos-app/build/lib/astakos/im/templates/im/resource_list.html
snf-astakos-app/build/lib/astakos/im/templates/im/services_description.html
snf-astakos-app/build/lib/astakos/im/templates/im/signup.html
snf-astakos-app/build/lib/astakos/im/templates/im/signup_complete.html
snf-astakos-app/build/lib/astakos/im/templates/im/switch_accounts_email.txt
snf-astakos-app/build/lib/astakos/im/templates/im/third_party_check_local.html
snf-astakos-app/build/lib/astakos/im/templates/im/third_party_registration.html
snf-astakos-app/build/lib/astakos/im/templates/im/timeline.html
snf-astakos-app/build/lib/astakos/im/templates/im/welcome_email.txt
snf-astakos-app/build/lib/astakos/im/templates/registration/email_change_confirm.html
snf-astakos-app/build/lib/astakos/im/templates/registration/email_change_done.html
snf-astakos-app/build/lib/astakos/im/templates/registration/email_change_email.txt
snf-astakos-app/build/lib/astakos/im/templates/registration/email_change_form.html
snf-astakos-app/build/lib/astakos/im/templates/registration/logged_out.html
snf-astakos-app/build/lib/astakos/im/templates/registration/password_change_form.html
snf-astakos-app/build/lib/astakos/im/templates/registration/password_email.txt
snf-astakos-app/build/lib/astakos/im/templates/registration/password_reset_complete.html
snf-astakos-app/build/lib/astakos/im/templates/registration/password_reset_confirm.html
snf-astakos-app/build/lib/astakos/im/templates/registration/password_reset_done.html
snf-astakos-app/build/lib/astakos/im/templates/registration/password_reset_form.html
snf-astakos-app/build/lib/astakos/im/templatetags/__init__.py
snf-astakos-app/build/lib/astakos/im/templatetags/astakos_tags.py
snf-astakos-app/build/lib/astakos/im/templatetags/filters.py
snf-astakos-app/build/lib/astakos/im/templatetags/formatters.py
snf-astakos-app/build/lib/astakos/im/urls.py
snf-astakos-app/build/lib/astakos/im/util.py
snf-astakos-app/build/lib/astakos/im/views.py
snf-astakos-app/build/lib/astakos/im/widgets.py
snf-astakos-app/build/lib/astakos/urls.py
snf-astakos-app/build/lib/astakos/version.py
snf-astakos-app/dist/snf_astakos_app-0.7.6_279_gc0b2660-py2.6.egg
snf-astakos-app/build/lib/astakos/im/auth_providers.py
snf-astakos-app/build/lib/astakos/im/management/commands/astakos-qh-sync.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-details.py
snf-astakos-app/build/lib/astakos/im/management/commands/group-permissions-remove.py
snf-astakos-app/build/lib/astakos/im/management/commands/user-remove.py
snf-astakos-app/build/lib/astakos/im/migrations/0016_populate_group_data.py
snf-astakos-app/build/lib/astakos/im/migrations/0031_auto__add_sessioncatalog__add_pendingthirdpartyuser__add_unique_pendin.py
snf-astakos-app/build/lib/astakos/im/migrations/0032_auto__add_astakosuserauthprovider__add_unique_astakosuserauthprovider_.py
snf-astakos-app/build/lib/astakos/im/migrations/0033_multiple_auth_providers.py
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down_green.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-down_yellow.png
snf-astakos-app/build/lib/astakos/im/static/im/images/arrow-up_green.png
snf-astakos-app/build/lib/astakos/im/static/im/images/how_it_works.png
snf-astakos-app/build/lib/astakos/im/templates/im/account_creation_notification.txt
snf-astakos-app/build/lib/astakos/im/templates/im/auth/local_login_form.html
snf-astakos-app/build/lib/astakos/im/templates/im/auth/local_login_prompt.html
snf-astakos-app/build/lib/astakos/im/templates/im/auth/local_signup_prompt.html
snf-astakos-app/build/lib/astakos/im/templates/im/auth/shibboleth_login.html
snf-astakos-app/build/lib/astakos/im/templates/im/auth/shibboleth_login_prompt.html
snf-astakos-app/build/lib/astakos/im/templates/im/auth/shibboleth_quick_login.html
snf-astakos-app/build/lib/astakos/im/templates/im/how_it_works.html
snf-astakos-app/build/lib/astakos/im/templates/im/profile_bak.html
snf-astakos-app/build/lib/astakos/im/templates/im/resource_usage.html
snf-astakos-app/build/lib/astakos/im/tests.py
snf-astakos-app/dist/snf_astakos_app-0.7.6_343_g666c749-py2.6.egg
\ No newline at end of file
......@@ -33,19 +33,28 @@
from django.db import IntegrityError, transaction
from django.core.exceptions import ObjectDoesNotExist
from django.conf import settings
from functools import wraps
from smtplib import SMTPException
from astakos.im.models import (
AstakosUser, AstakosGroup, GroupKind, Resource, Service, RESOURCE_SEPARATOR
AstakosUser, AstakosGroup, GroupKind, Resource, Service, RESOURCE_SEPARATOR,
Project, ProjectApplication, ProjectMembership, filter_queryset_by_property
)
from astakos.im.api.backends.base import BaseBackend, SuccessResult, FailureResult
from astakos.im.api.backends.errors import (
ItemNotExists, ItemExists, MissingIdentifier, MultipleItemsExist
)
# from astakos.im.api.backends.lib.notifications import EmailNotification
from astakos.im.util import reserved_email, model_to_dict
from astakos.im.endpoints.qh import get_quota
from astakos.im.endpoints.qh import get_quota, send_quota
from astakos.im.settings import SITENAME
try:
from astakos.im.messages import astakos_messages
except:
pass
import logging
......@@ -56,7 +65,6 @@ DEFAULT_CONTENT_TYPE = None
def safe(func):
"""Decorator function for views that implement an API method."""
@transaction.commit_manually
@wraps(func)
def wrapper(self, *args, **kwargs):
logger.debug('%s %s %s' % (func, args, kwargs))
......@@ -64,10 +72,8 @@ def safe(func):
data = func(self, *args, **kwargs) or ()
except Exception, e:
logger.exception(e)
transaction.rollback()
return FailureResult(e)
else:
transaction.commit()
return SuccessResult(data)
return wrapper
......@@ -107,7 +113,10 @@ class DjangoBackend(BaseBackend):
q = model.objects.all()
if filter:
q = q.filter(id__in=filter)
return map(lambda o: model_to_dict(o, exclude=[]), q)
return map(lambda o: self._details(o), q)
def _details(self, obj):
return model_to_dict(obj, exclude=[])
def _create_object(self, model, **kwargs):
o = model.objects.create(**kwargs)
......@@ -136,6 +145,7 @@ class DjangoBackend(BaseBackend):
permissions = kwargs.pop('permissions', ())
groups = kwargs.pop('groups', ())
password = kwargs.pop('password', None)
provider = kwargs.pop('provider', 'local')
u = self._create_object(AstakosUser, **kwargs)
......@@ -145,10 +155,10 @@ class DjangoBackend(BaseBackend):
u.policies = policies
u.extended_groups = groups
if not u.has_auth_provider('local'):
u.add_auth_provider('local')
if not u.has_auth_provider(provider):
u.add_auth_provider(provider)
return self._list(AstakosUser, filter=(u.id,))
return self._details(u)
@safe
def add_policies(self, user_id, update=False, policies=()):
......@@ -180,6 +190,7 @@ class DjangoBackend(BaseBackend):
except ObjectDoesNotExist, e:
append((service, resource, e))
return rejected
@safe
def add_permissions(self, user_id, permissions=()):
user = self._lookup_user(user_id)
......@@ -252,7 +263,7 @@ class DjangoBackend(BaseBackend):
resources = kwargs.pop('resources', ())
s = self._create_object(Service, **kwargs)
s.resources = resources
return self._list(Service, filter=(s.id,))
return self._details(s)
@safe
def remove_services(self, ids=()):
......@@ -308,4 +319,152 @@ class DjangoBackend(BaseBackend):
g.policies = policies
# g.members = members
g.owners = owners
return self._list(AstakosGroup, filter=(g.id,))
return self._details(g)
@safe
def submit_application(self, **kwargs):
app = self._create_object(ProjectApplication, **kwargs)
notification = build_notification(
settings.SERVER_EMAIL,
[settings.ADMINS],
_(GROUP_CREATION_SUBJECT) % {'group':app.definition.name},
_('An new project application identified by %(serial)s has been submitted.') % app.serial
)
notification.send()
@safe
def list_applications(self):
return self._list(ProjectAppication)
@safe
def approve_application(self, serial):
app = self._lookup_object(ProjectAppication, serial=serial)
notify = False
if not app.precursor_application:
kwargs = {
'application':app,
'creation_date':datetime.now(),
'last_approval_date':datetime.now(),
}
project = self._create_object(Project, **kwargs)
else:
project = app.precursor_application.project
last_approval_date = project.last_approval_date
if project.is_valid:
project.application = app
project.last_approval_date = datetime.now()
project.save()
else:
raise Exception(_(astakos_messages.INVALID_PROJECT) % project.__dict__)
r = _synchonize_project(project.serial)
if not r.is_success:
# revert to precursor
project.appication = app.precursor_application
if project.application:
project.last_approval_date = last_approval_date
project.save()
r = synchonize_project(project.serial)
if not r.is_success:
raise Exception(_(astakos_messages.QH_SYNC_ERROR))
else:
project.last_application_synced = app
project.save()
sender, recipients, subject, message
notification = build_notification(
settings.SERVER_EMAIL,
[project.owner.email],
_('Project application has been approved on %s alpha2 testing' % SITENAME),
_('Your application request %(serial)s has been apporved.')
)
notification.send()
@safe
def list_projects(self, filter_property=None):
if filter_property:
q = filter_queryset_by_property(
Project.objects.all(),
filter_property
)
return map(lambda o: self._details(o), q)
return self._list(Project)
@safe
def add_project_member(self, serial, user_id, request_user):
project = self._lookup_object(Project, serial=serial)
user = self.lookup_user(user_id)
if not project.owner == request_user:
raise Exception(_(astakos_messages.NOT_PROJECT_OWNER))
if not project.is_alive:
raise Exception(_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__)
if len(project.members) + 1 > project.limit_on_members_number:
raise Exception(_(astakos_messages.MEMBER_NUMBER_LIMIT_REACHED))
m = self._lookup_object(ProjectMembership, person=user, project=project)
if m.is_accepted:
return
m.is_accepted = True
m.decision_date = datetime.now()
m.save()
notification = build_notification(
settings.SERVER_EMAIL,
[user.email],
_('Your membership on project %(name)s has been accepted.') % project.definition.__dict__,
_('Your membership on project %(name)s has been accepted.') % project.definition.__dict__,
)
notification.send()
@safe
def remove_project_member(self, serial, user_id, request_user):
project = self._lookup_object(Project, serial=serial)
if not project.is_alive:
raise Exception(_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__)
if not project.owner == request_user:
raise Exception(_(astakos_messages.NOT_PROJECT_OWNER))
user = self.lookup_user(user_id)
m = self._lookup_object(ProjectMembership, person=user, project=project)
if not m.is_accepted:
return
m.is_accepted = False
m.decision_date = datetime.now()
m.save()
notification = build_notification(
settings.SERVER_EMAIL,
[user.email],
_('Your membership on project %(name)s has been removed.') % project.definition.__dict__,
_('Your membership on project %(name)s has been removed.') % project.definition.__dict__,
)
notification.send()
@safe
def suspend_project(self, serial):
project = self._lookup_object(Project, serial=serial)
project.suspend()
notification = build_notification(
settings.SERVER_EMAIL,
[project.owner.email],
_('Project %(name)s has been suspended on %s alpha2 testing' % SITENAME),
_('Project %(name)s has been suspended on %s alpha2 testing' % SITENAME)
)
notification.send()
@safe
def terminate_project(self, serial):
project = self._lookup_object(Project, serial=serial)
project.termination()
notification = build_notification(
settings.SERVER_EMAIL,
[project.owner.email],
_('Project %(name)s has been terminated on %s alpha2 testing' % SITENAME),
_('Project %(name)s has been terminated on %s alpha2 testing' % SITENAME)
)
notification.send()
@safe
def synchonize_project(self, serial):
project = self._lookup_object(Project, serial=serial)
project.sync()
\ No newline at end of file
[
{
"model": "im.memberacceptpolicy",
"pk": 1,
"fields": {
"policy": "auto_accept",
"description": "new join requests are automatically accepted by the system"
}
},
{
"model": "im.memberacceptpolicy",
"pk": 2,
"fields": {
"policy": "owner_accepts",
"description": "new join requests must be accepted by the owner of the project"
}
},
{
"model": "im.memberacceptpolicy",
"pk": 3,
"fields": {
"policy": "closed",
"description": "no new members can join the project, even if old ones leave"
}
}
]
......@@ -35,9 +35,11 @@ from random import random
from django import forms
from django.utils.translation import ugettext as _
from django.contrib.auth.forms import (UserCreationForm, AuthenticationForm,
PasswordResetForm, PasswordChangeForm,
SetPasswordForm)
from django.contrib.auth.forms import (
UserCreationForm, AuthenticationForm,
PasswordResetForm, PasswordChangeForm,
SetPasswordForm
)
from django.core.mail import send_mail
from django.contrib.auth.tokens import default_token_generator
from django.template import Context, loader
......@@ -50,10 +52,12 @@ from django.forms.models import fields_for_model
from django.db import transaction
from django.utils.encoding import smart_unicode
from django.core import validators
from django.contrib.auth.models import AnonymousUser
from astakos.im.models import (
AstakosUser, EmailChange, AstakosGroup, Invitation, GroupKind,
Resource, PendingThirdPartyUser, get_latest_terms, RESOURCE_SEPARATOR
Resource, PendingThirdPartyUser, get_latest_terms, RESOURCE_SEPARATOR,
ProjectDefinition, ProjectApplication, create_application
)
from astakos.im.settings import (
INVITATIONS_PER_LEVEL, BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY,
......@@ -902,3 +906,104 @@ class ExtendedSetPasswordForm(SetPasswordForm):
except BaseException, e:
logger.exception(e)
return super(ExtendedSetPasswordForm, self).save(commit=commit)
class ProjectApplicationForm(forms.ModelForm):
name = forms.CharField(
validators=[validators.RegexValidator(
DOMAIN_VALUE_REGEX,