From ec7399752ced79b133264e2e4913439b55dbfe79 Mon Sep 17 00:00:00 2001 From: Alfred Wingate Date: Wed, 15 Nov 2023 23:30:06 +0200 Subject: [PATCH] Remove the djano webservice in its entirety Signed-off-by: Alfred Wingate --- AUTHORS | 5 - Makefile | 4 - README.rst | 83 - TODO | 1 - euscanwww/.gitignore | 6 - euscanwww/INSTALL | 45 - euscanwww/README.Celery | 36 - euscanwww/__init__.py | 0 euscanwww/djeuscan/__init__.py | 0 euscanwww/djeuscan/admin.py | 60 - euscanwww/djeuscan/api/__init__.py | 0 euscanwww/djeuscan/api/emitters.py | 51 - euscanwww/djeuscan/api/handlers.py | 177 - euscanwww/djeuscan/api/urls.py | 39 - euscanwww/djeuscan/charts.py | 292 - euscanwww/djeuscan/feeds.py | 325 - euscanwww/djeuscan/forms.py | 28 - euscanwww/djeuscan/helpers.py | 100 - euscanwww/djeuscan/management/__init__.py | 0 .../djeuscan/management/commands/__init__.py | 0 .../management/commands/list_packages.py | 64 - .../management/commands/regen_rrds.py | 16 - .../management/commands/scan_metadata.py | 52 - .../management/commands/scan_portage.py | 69 - .../management/commands/scan_upstream.py | 45 - .../commands/stabilization_candidates.py | 28 - .../management/commands/update_counters.py | 35 - .../commands/update_portage_trees.py | 16 - euscanwww/djeuscan/managers.py | 187 - euscanwww/djeuscan/migrations/0001_initial.py | 283 - .../0002_auto__chg_field_package_homepage.py | 113 - ...chg_field_package_last_version_gentoo__.py | 139 - ...add_unique_categoryassociation_user_cat.py | 238 - ..._type__add_field_version_handler__add_f.py | 197 - ...can_time__add_field_euscanresult_ebuild.py | 191 - ...uery_query__add_field_refreshpackageque.py | 191 - .../0008_auto__add_problemreport.py | 198 - ...dd_unique_overlayassociation_user_overl.py | 207 - ...d_path__add_field_version_metadata_path.py | 208 - ...n_version_type__add_field_version_vtype.py | 208 - .../0012_auto__add_field_versionlog_vtype.py | 201 - euscanwww/djeuscan/migrations/0013_auto.py | 205 - euscanwww/djeuscan/migrations/0014_auto.py | 206 - .../0015_initial_celery_periodictasks.py | 324 - ...__del_unique_maintainerassociation_user.py | 355 - ..._overlay_name__add_unique_category_name.py | 197 - ...tream_info__add_field_userprofile_porta.py | 203 - ...tage_info__del_field_userprofile_upstre.py | 282 - ...auto__add_field_userprofile_email_every.py | 203 - ..._auto__add_field_userprofile_last_email.py | 204 - .../migrations/0022_auto__del_userprofile.py | 179 - ...verlay_revision_version_package__add_un.py | 187 - .../migrations/0024_add_index_handler.py | 183 - euscanwww/djeuscan/migrations/0024_auto.py | 181 - .../0025_auto__del_field_version_alive.py | 184 - ...ption__add_field_overlay_description__a.py | 201 - ...27_auto__add_field_overlay_overlay_path.py | 186 - ...d_field_version_stabilization_candidate.py | 189 - euscanwww/djeuscan/migrations/0029_auto.py | 187 - ...ption__chg_field_overlay_homepage__chg_.py | 205 - ...1_auto__chg_field_version_metadata_path.py | 187 - euscanwww/djeuscan/migrations/__init__.py | 0 euscanwww/djeuscan/models.py | 384 - euscanwww/djeuscan/processing/__init__.py | 30 - .../djeuscan/processing/misc/__init__.py | 6 - .../djeuscan/processing/misc/regen_rrds.py | 31 - .../misc/stabilization_candidates.py | 74 - .../processing/misc/update_counters.py | 174 - .../processing/misc/update_portage_trees.py | 133 - .../djeuscan/processing/scan/__init__.py | 7 - .../djeuscan/processing/scan/scan_metadata.py | 255 - .../djeuscan/processing/scan/scan_portage.py | 450 -- .../djeuscan/processing/scan/scan_upstream.py | 176 - euscanwww/djeuscan/tasks.py | 390 - euscanwww/djeuscan/templates/_base.html | 126 - .../admin/djcelery/taskstate/change_list.html | 81 - .../templates/euscan/_categories_table.html | 34 - .../djeuscan/templates/euscan/_datatable.html | 36 - .../templates/euscan/_herds_table.html | 36 - .../templates/euscan/_maintainers_table.html | 42 - .../templates/euscan/_overlays_table.html | 20 - .../templates/euscan/_package_bar.html | 9 - .../templates/euscan/_package_cols.html | 30 - .../templates/euscan/_package_details.html | 125 - .../templates/euscan/_package_vlogs.html | 31 - .../djeuscan/templates/euscan/_packages.html | 62 - .../djeuscan/templates/euscan/about.html | 41 - euscanwww/djeuscan/templates/euscan/api.html | 22 - .../djeuscan/templates/euscan/categories.html | 15 - .../djeuscan/templates/euscan/category.html | 67 - .../djeuscan/templates/euscan/config.html | 124 - .../djeuscan/templates/euscan/feeds.html | 30 - euscanwww/djeuscan/templates/euscan/herd.html | 64 - .../djeuscan/templates/euscan/herds.html | 15 - .../djeuscan/templates/euscan/index.html | 27 - .../djeuscan/templates/euscan/maintainer.html | 65 - .../templates/euscan/maintainers.html | 15 - .../djeuscan/templates/euscan/overlay.html | 28 - .../djeuscan/templates/euscan/overlays.html | 15 - .../djeuscan/templates/euscan/package.html | 89 - .../djeuscan/templates/euscan/problem.html | 57 - .../djeuscan/templates/euscan/statistics.html | 72 - .../templates/euscan/statistics_handler.html | 16 - .../djeuscan/templates/euscan/world.html | 30 - .../djeuscan/templates/euscan/world_scan.html | 41 - .../registration/_registration_base.html | 1 - .../templates/registration/activate.html | 13 - .../registration/activation_complete.html | 6 - .../registration/activation_email.txt | 11 - .../registration/activation_email_subject.txt | 1 - .../templates/registration/login.html | 39 - .../registration/password_change_form.html | 24 - .../registration/password_reset_complete.html | 7 - .../registration/password_reset_confirm.html | 21 - .../registration/password_reset_done.html | 10 - .../registration/password_reset_email.html | 16 - .../registration/password_reset_form.html | 24 - .../registration/registration_complete.html | 6 - .../registration/registration_form.html | 23 - euscanwww/djeuscan/templatetags/__init__.py | 0 euscanwww/djeuscan/templatetags/div.py | 12 - .../djeuscan/templatetags/djeuscan_helpers.py | 76 - euscanwww/djeuscan/templatetags/math_.py | 35 - euscanwww/djeuscan/templatetags/mul.py | 9 - euscanwww/djeuscan/templatetags/sub.py | 9 - euscanwww/djeuscan/templatetags/timedelta.py | 24 - euscanwww/djeuscan/tests/__init__.py | 57 - euscanwww/djeuscan/tests/euscan_factory.py | 147 - euscanwww/djeuscan/tests/test_charts.py | 102 - euscanwww/djeuscan/tests/test_models.py | 105 - euscanwww/djeuscan/tests/test_views.py | 305 - euscanwww/djeuscan/urls.py | 125 - euscanwww/djeuscan/views.py | 488 -- euscanwww/euscan_accounts/__init__.py | 0 euscanwww/euscan_accounts/admin.py | 4 - euscanwww/euscan_accounts/feeds.py | 26 - euscanwww/euscan_accounts/forms.py | 38 - euscanwww/euscan_accounts/helpers.py | 81 - .../migrations/0001_initial.py | 159 - .../euscan_accounts/migrations/__init__.py | 0 euscanwww/euscan_accounts/models.py | 35 - .../templates/euscan/_favourite.html | 23 - .../templates/euscan/accounts/categories.html | 15 - .../euscan/accounts/euscan_email.txt | 32 - .../templates/euscan/accounts/herds.html | 14 - .../templates/euscan/accounts/index.html | 110 - .../euscan/accounts/maintainers.html | 14 - .../templates/euscan/accounts/overlays.html | 15 - .../templates/euscan/accounts/packages.html | 16 - .../euscan/accounts/preferences.html | 116 - .../euscan_accounts/templatetags/__init__.py | 0 .../templatetags/euscan_accounts_helpers.py | 11 - euscanwww/euscan_accounts/tests.py | 16 - euscanwww/euscan_accounts/urls.py | 26 - euscanwww/euscan_accounts/views.py | 246 - euscanwww/euscan_captcha/__init__.py | 6 - euscanwww/euscan_captcha/forms.py | 11 - euscanwww/euscan_captcha/models.py | 0 euscanwww/euscan_captcha/urls.py | 10 - euscanwww/euscan_captcha/views.py | 5 - euscanwww/euscanwww/__init__.py | 1 - euscanwww/euscanwww/models.py | 0 euscanwww/euscanwww/sendmail.py | 53 - euscanwww/euscanwww/settings.py | 273 - euscanwww/euscanwww/templates/404.html | 1 - euscanwww/euscanwww/urls.py | 24 - euscanwww/euscanwww/wsgi.py | 28 - euscanwww/htdocs/css/bootstrap.min.css | 9 - euscanwww/htdocs/css/style.css | 244 - euscanwww/htdocs/css/table.css | 336 - euscanwww/htdocs/css/toggle_buttons.css | 155 - euscanwww/htdocs/favicon.ico | Bin 3438 -> 0 bytes euscanwww/htdocs/img/back_disabled.jpg | Bin 612 -> 0 bytes euscanwww/htdocs/img/back_enabled.jpg | Bin 807 -> 0 bytes euscanwww/htdocs/img/bug.png | Bin 925 -> 0 bytes euscanwww/htdocs/img/django.png | Bin 1473 -> 0 bytes euscanwww/htdocs/img/feed.png | Bin 800 -> 0 bytes euscanwww/htdocs/img/forward_disabled.jpg | Bin 635 -> 0 bytes euscanwww/htdocs/img/forward_enabled.jpg | Bin 852 -> 0 bytes euscanwww/htdocs/img/freshness-icon.png | Bin 3365 -> 0 bytes euscanwww/htdocs/img/gentoo-header-bar-bg.png | Bin 210 -> 0 bytes euscanwww/htdocs/img/gentoo-icon.png | Bin 916 -> 0 bytes euscanwww/htdocs/img/gentoo.png | Bin 2295 -> 0 bytes euscanwww/htdocs/img/gentoo_org.png | Bin 47830 -> 0 bytes euscanwww/htdocs/img/linux.png | Bin 2090 -> 0 bytes euscanwww/htdocs/img/metadata.png | Bin 798 -> 0 bytes euscanwww/htdocs/img/overlay-icon.png | Bin 558 -> 0 bytes euscanwww/htdocs/img/python.png | Bin 3140 -> 0 bytes euscanwww/htdocs/img/refresh-active.png | Bin 1423 -> 0 bytes euscanwww/htdocs/img/refresh-inactive.png | Bin 1032 -> 0 bytes euscanwww/htdocs/img/sort_asc.png | Bin 263 -> 0 bytes euscanwww/htdocs/img/sort_asc_disabled.png | Bin 252 -> 0 bytes euscanwww/htdocs/img/sort_both.png | Bin 282 -> 0 bytes euscanwww/htdocs/img/sort_desc.png | Bin 260 -> 0 bytes euscanwww/htdocs/img/sort_desc_disabled.png | Bin 251 -> 0 bytes euscanwww/htdocs/img/unstable-icon.png | Bin 605 -> 0 bytes euscanwww/htdocs/img/unwatch-icon.png | Bin 1140 -> 0 bytes euscanwww/htdocs/img/upstream-icon.png | Bin 751 -> 0 bytes euscanwww/htdocs/img/watch-icon.png | Bin 821 -> 0 bytes euscanwww/htdocs/js/favourite.js | 23 - euscanwww/htdocs/js/jquery.dataTables.js | 6862 ----------------- euscanwww/htdocs/js/jquery.dataTables.min.js | 143 - .../htdocs/js/jquery.dataTables.min.js.gz | Bin 18052 -> 0 bytes euscanwww/htdocs/js/jquery.js | 4 - euscanwww/htdocs/js/jquery.toggle.buttons.js | 228 - euscanwww/htdocs/static | 1 - euscanwww/manage.py | 10 - euscanwww/runtests.py | 50 - euscanwww/scripts/euscan-update.sh | 35 - euscanwww/scripts/euscan.fcgi | 18 - .../scripts/local-tree/etc/layman/layman.cfg | 81 - euscanwww/scripts/local-tree/etc/make.conf | 19 - euscanwww/scripts/local-tree/var/cache/eix | Bin 612667 -> 0 bytes euscanwww/scripts/regen-seq.py | 25 - euscanwww/scripts/start_dev_services.sh | 3 - euscanwww/var/cache/.keep | 0 euscanwww/var/charts/.keep | 0 euscanwww/var/db/.keep | 0 euscanwww/var/rrd/.keep | 0 .../var/snapshots/snapshot-20120404.json.gz | Bin 6703496 -> 0 bytes euscanwww/var/uploads/.keep | 0 setup.py | 24 - 222 files changed, 23336 deletions(-) delete mode 100644 euscanwww/.gitignore delete mode 100644 euscanwww/INSTALL delete mode 100644 euscanwww/README.Celery delete mode 100644 euscanwww/__init__.py delete mode 100644 euscanwww/djeuscan/__init__.py delete mode 100644 euscanwww/djeuscan/admin.py delete mode 100644 euscanwww/djeuscan/api/__init__.py delete mode 100644 euscanwww/djeuscan/api/emitters.py delete mode 100644 euscanwww/djeuscan/api/handlers.py delete mode 100644 euscanwww/djeuscan/api/urls.py delete mode 100644 euscanwww/djeuscan/charts.py delete mode 100644 euscanwww/djeuscan/feeds.py delete mode 100644 euscanwww/djeuscan/forms.py delete mode 100644 euscanwww/djeuscan/helpers.py delete mode 100644 euscanwww/djeuscan/management/__init__.py delete mode 100644 euscanwww/djeuscan/management/commands/__init__.py delete mode 100644 euscanwww/djeuscan/management/commands/list_packages.py delete mode 100644 euscanwww/djeuscan/management/commands/regen_rrds.py delete mode 100644 euscanwww/djeuscan/management/commands/scan_metadata.py delete mode 100644 euscanwww/djeuscan/management/commands/scan_portage.py delete mode 100644 euscanwww/djeuscan/management/commands/scan_upstream.py delete mode 100644 euscanwww/djeuscan/management/commands/stabilization_candidates.py delete mode 100644 euscanwww/djeuscan/management/commands/update_counters.py delete mode 100644 euscanwww/djeuscan/management/commands/update_portage_trees.py delete mode 100644 euscanwww/djeuscan/managers.py delete mode 100644 euscanwww/djeuscan/migrations/0001_initial.py delete mode 100644 euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py delete mode 100644 euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py delete mode 100644 euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py delete mode 100644 euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py delete mode 100644 euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py delete mode 100644 euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py delete mode 100644 euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py delete mode 100644 euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py delete mode 100644 euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py delete mode 100644 euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py delete mode 100644 euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py delete mode 100644 euscanwww/djeuscan/migrations/0013_auto.py delete mode 100644 euscanwww/djeuscan/migrations/0014_auto.py delete mode 100644 euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py delete mode 100644 euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py delete mode 100644 euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py delete mode 100644 euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py delete mode 100644 euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py delete mode 100644 euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py delete mode 100644 euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py delete mode 100644 euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py delete mode 100644 euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py delete mode 100644 euscanwww/djeuscan/migrations/0024_add_index_handler.py delete mode 100644 euscanwww/djeuscan/migrations/0024_auto.py delete mode 100644 euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py delete mode 100644 euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py delete mode 100644 euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py delete mode 100644 euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py delete mode 100644 euscanwww/djeuscan/migrations/0029_auto.py delete mode 100644 euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py delete mode 100644 euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py delete mode 100644 euscanwww/djeuscan/migrations/__init__.py delete mode 100644 euscanwww/djeuscan/models.py delete mode 100644 euscanwww/djeuscan/processing/__init__.py delete mode 100644 euscanwww/djeuscan/processing/misc/__init__.py delete mode 100644 euscanwww/djeuscan/processing/misc/regen_rrds.py delete mode 100644 euscanwww/djeuscan/processing/misc/stabilization_candidates.py delete mode 100644 euscanwww/djeuscan/processing/misc/update_counters.py delete mode 100644 euscanwww/djeuscan/processing/misc/update_portage_trees.py delete mode 100644 euscanwww/djeuscan/processing/scan/__init__.py delete mode 100644 euscanwww/djeuscan/processing/scan/scan_metadata.py delete mode 100644 euscanwww/djeuscan/processing/scan/scan_portage.py delete mode 100644 euscanwww/djeuscan/processing/scan/scan_upstream.py delete mode 100644 euscanwww/djeuscan/tasks.py delete mode 100644 euscanwww/djeuscan/templates/_base.html delete mode 100644 euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_categories_table.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_datatable.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_herds_table.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_maintainers_table.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_overlays_table.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_package_bar.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_package_cols.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_package_details.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_package_vlogs.html delete mode 100644 euscanwww/djeuscan/templates/euscan/_packages.html delete mode 100644 euscanwww/djeuscan/templates/euscan/about.html delete mode 100644 euscanwww/djeuscan/templates/euscan/api.html delete mode 100644 euscanwww/djeuscan/templates/euscan/categories.html delete mode 100644 euscanwww/djeuscan/templates/euscan/category.html delete mode 100644 euscanwww/djeuscan/templates/euscan/config.html delete mode 100644 euscanwww/djeuscan/templates/euscan/feeds.html delete mode 100644 euscanwww/djeuscan/templates/euscan/herd.html delete mode 100644 euscanwww/djeuscan/templates/euscan/herds.html delete mode 100644 euscanwww/djeuscan/templates/euscan/index.html delete mode 100644 euscanwww/djeuscan/templates/euscan/maintainer.html delete mode 100644 euscanwww/djeuscan/templates/euscan/maintainers.html delete mode 100644 euscanwww/djeuscan/templates/euscan/overlay.html delete mode 100644 euscanwww/djeuscan/templates/euscan/overlays.html delete mode 100644 euscanwww/djeuscan/templates/euscan/package.html delete mode 100644 euscanwww/djeuscan/templates/euscan/problem.html delete mode 100644 euscanwww/djeuscan/templates/euscan/statistics.html delete mode 100644 euscanwww/djeuscan/templates/euscan/statistics_handler.html delete mode 100644 euscanwww/djeuscan/templates/euscan/world.html delete mode 100644 euscanwww/djeuscan/templates/euscan/world_scan.html delete mode 100644 euscanwww/djeuscan/templates/registration/_registration_base.html delete mode 100644 euscanwww/djeuscan/templates/registration/activate.html delete mode 100644 euscanwww/djeuscan/templates/registration/activation_complete.html delete mode 100644 euscanwww/djeuscan/templates/registration/activation_email.txt delete mode 100644 euscanwww/djeuscan/templates/registration/activation_email_subject.txt delete mode 100644 euscanwww/djeuscan/templates/registration/login.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_change_form.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_reset_complete.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_reset_confirm.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_reset_done.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_reset_email.html delete mode 100644 euscanwww/djeuscan/templates/registration/password_reset_form.html delete mode 100644 euscanwww/djeuscan/templates/registration/registration_complete.html delete mode 100644 euscanwww/djeuscan/templates/registration/registration_form.html delete mode 100644 euscanwww/djeuscan/templatetags/__init__.py delete mode 100644 euscanwww/djeuscan/templatetags/div.py delete mode 100644 euscanwww/djeuscan/templatetags/djeuscan_helpers.py delete mode 100644 euscanwww/djeuscan/templatetags/math_.py delete mode 100644 euscanwww/djeuscan/templatetags/mul.py delete mode 100644 euscanwww/djeuscan/templatetags/sub.py delete mode 100644 euscanwww/djeuscan/templatetags/timedelta.py delete mode 100644 euscanwww/djeuscan/tests/__init__.py delete mode 100644 euscanwww/djeuscan/tests/euscan_factory.py delete mode 100644 euscanwww/djeuscan/tests/test_charts.py delete mode 100644 euscanwww/djeuscan/tests/test_models.py delete mode 100644 euscanwww/djeuscan/tests/test_views.py delete mode 100644 euscanwww/djeuscan/urls.py delete mode 100644 euscanwww/djeuscan/views.py delete mode 100644 euscanwww/euscan_accounts/__init__.py delete mode 100644 euscanwww/euscan_accounts/admin.py delete mode 100644 euscanwww/euscan_accounts/feeds.py delete mode 100644 euscanwww/euscan_accounts/forms.py delete mode 100644 euscanwww/euscan_accounts/helpers.py delete mode 100644 euscanwww/euscan_accounts/migrations/0001_initial.py delete mode 100644 euscanwww/euscan_accounts/migrations/__init__.py delete mode 100644 euscanwww/euscan_accounts/models.py delete mode 100644 euscanwww/euscan_accounts/templates/euscan/_favourite.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/categories.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/herds.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/index.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/packages.html delete mode 100644 euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html delete mode 100644 euscanwww/euscan_accounts/templatetags/__init__.py delete mode 100644 euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py delete mode 100644 euscanwww/euscan_accounts/tests.py delete mode 100644 euscanwww/euscan_accounts/urls.py delete mode 100644 euscanwww/euscan_accounts/views.py delete mode 100644 euscanwww/euscan_captcha/__init__.py delete mode 100644 euscanwww/euscan_captcha/forms.py delete mode 100644 euscanwww/euscan_captcha/models.py delete mode 100644 euscanwww/euscan_captcha/urls.py delete mode 100644 euscanwww/euscan_captcha/views.py delete mode 100644 euscanwww/euscanwww/__init__.py delete mode 100644 euscanwww/euscanwww/models.py delete mode 100644 euscanwww/euscanwww/sendmail.py delete mode 100644 euscanwww/euscanwww/settings.py delete mode 100644 euscanwww/euscanwww/templates/404.html delete mode 100644 euscanwww/euscanwww/urls.py delete mode 100644 euscanwww/euscanwww/wsgi.py delete mode 100644 euscanwww/htdocs/css/bootstrap.min.css delete mode 100644 euscanwww/htdocs/css/style.css delete mode 100644 euscanwww/htdocs/css/table.css delete mode 100644 euscanwww/htdocs/css/toggle_buttons.css delete mode 100644 euscanwww/htdocs/favicon.ico delete mode 100644 euscanwww/htdocs/img/back_disabled.jpg delete mode 100644 euscanwww/htdocs/img/back_enabled.jpg delete mode 100644 euscanwww/htdocs/img/bug.png delete mode 100644 euscanwww/htdocs/img/django.png delete mode 100644 euscanwww/htdocs/img/feed.png delete mode 100644 euscanwww/htdocs/img/forward_disabled.jpg delete mode 100644 euscanwww/htdocs/img/forward_enabled.jpg delete mode 100644 euscanwww/htdocs/img/freshness-icon.png delete mode 100644 euscanwww/htdocs/img/gentoo-header-bar-bg.png delete mode 100644 euscanwww/htdocs/img/gentoo-icon.png delete mode 100644 euscanwww/htdocs/img/gentoo.png delete mode 100644 euscanwww/htdocs/img/gentoo_org.png delete mode 100644 euscanwww/htdocs/img/linux.png delete mode 100644 euscanwww/htdocs/img/metadata.png delete mode 100644 euscanwww/htdocs/img/overlay-icon.png delete mode 100644 euscanwww/htdocs/img/python.png delete mode 100644 euscanwww/htdocs/img/refresh-active.png delete mode 100644 euscanwww/htdocs/img/refresh-inactive.png delete mode 100644 euscanwww/htdocs/img/sort_asc.png delete mode 100644 euscanwww/htdocs/img/sort_asc_disabled.png delete mode 100644 euscanwww/htdocs/img/sort_both.png delete mode 100644 euscanwww/htdocs/img/sort_desc.png delete mode 100644 euscanwww/htdocs/img/sort_desc_disabled.png delete mode 100644 euscanwww/htdocs/img/unstable-icon.png delete mode 100644 euscanwww/htdocs/img/unwatch-icon.png delete mode 100644 euscanwww/htdocs/img/upstream-icon.png delete mode 100644 euscanwww/htdocs/img/watch-icon.png delete mode 100644 euscanwww/htdocs/js/favourite.js delete mode 100644 euscanwww/htdocs/js/jquery.dataTables.js delete mode 100644 euscanwww/htdocs/js/jquery.dataTables.min.js delete mode 100644 euscanwww/htdocs/js/jquery.dataTables.min.js.gz delete mode 100644 euscanwww/htdocs/js/jquery.js delete mode 100644 euscanwww/htdocs/js/jquery.toggle.buttons.js delete mode 120000 euscanwww/htdocs/static delete mode 100755 euscanwww/manage.py delete mode 100644 euscanwww/runtests.py delete mode 100644 euscanwww/scripts/euscan-update.sh delete mode 100755 euscanwww/scripts/euscan.fcgi delete mode 100644 euscanwww/scripts/local-tree/etc/layman/layman.cfg delete mode 100644 euscanwww/scripts/local-tree/etc/make.conf delete mode 100644 euscanwww/scripts/local-tree/var/cache/eix delete mode 100644 euscanwww/scripts/regen-seq.py delete mode 100755 euscanwww/scripts/start_dev_services.sh delete mode 100644 euscanwww/var/cache/.keep delete mode 100644 euscanwww/var/charts/.keep delete mode 100644 euscanwww/var/db/.keep delete mode 100644 euscanwww/var/rrd/.keep delete mode 100644 euscanwww/var/snapshots/snapshot-20120404.json.gz delete mode 100644 euscanwww/var/uploads/.keep diff --git a/AUTHORS b/AUTHORS index 5dbd90f..b8fd9ca 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,8 +1,3 @@ * euscan Original author: Corentin Chary Current maintainer: src_prepare group https://gitlab.com/src_prepare - -* euscanwww - Original author: Corentin Chary - Current maintainer: src_prepare group https://gitlab.com/src_prepare - diff --git a/Makefile b/Makefile index 8dc62c3..aa62957 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,6 @@ BIN = euscan clean install-user install-user-test - install-user-web install uninstall distclean @@ -23,9 +22,6 @@ install-user: install-user-test: pip install --user .'[test]' -install-user-web: - pip install --user .'[web]' - install: install-user diff --git a/README.rst b/README.rst index 01ace03..27e50a6 100644 --- a/README.rst +++ b/README.rst @@ -85,89 +85,6 @@ default settings. Maybe we should add the ability to use /etc/euscan.conf and ~/.config/euscan/euscan.conf to override these settings. -euscan-www: euscan as a service -=============================== - -euscan-www is a web application that aggregates euscan results. For example -there is an instance of euscan-www that monitors gentoo-x86 + some official -overlays currently hosted at http://euscan.iksaif.net/ . - -euscan-www uses django and provides some custom commands to feed the database. -You can use euscan-www on you system tree, or preferably you can use a local -tree to avoid messing with your system. - -Installation ------------- - -Install requirements from PyPI using:: - - $ python setup.py develop - -Extra dependencies: -* portage python api -* rrdtool[python] - -Like any django web app, just start by editing settings.py and then run -these two commands. -:: - - $ python manage.py syncdb - $ python manage.py migrate - -Now your instance is ready, you can just run this command to browse it. -If you want to host it publicly you should use a real webserver. -:: - - $ python manage.py runserver - -Creating a local tree (optional) --------------------------------- - -Create a local tree with all that portage (and layman would need). -There is an example in euscanwww/scripts/local-tree/. See escan-update.sh -to know what env variables you need to run any portage related command in -this local tree. - -Scanning process ----------------- - -The scanning process is done by euscan-update.sh. You should read carefully -this script, and adapt it to your needs. For example it uses gparallel to -launch multiple process at a time, and you should adapt that to your number -of cpu and network bandwith. - -Once your euscan-update.sh is ok, just run it. -:: - - $ sh euscan-update.sh - -Custom Django management commands ---------------------------------- - -euscan-www povides some new management commands, here is a short description -of these commands. Use "help" or read euscan-update.sh to get more informations. - -list-packages - List packages stored in database. - -scan-portage - Scan the portage tree and store new packages and versions in the database. - -scan-metadata - Scan metadata and looks for homepage, maintainers and herds. - -scan-upstream - Scan upstream package. The prefered way to use this script it to first launch - euscan on some packages, store the result of the file, and feed this command with - the result. - -update-counters - Update statistics and rrd files. - -regen-rrds - If you deleted your rrd files, this script will use the database to - regen them. - How does it work ? ================== diff --git a/TODO b/TODO index ee5f05f..61fd34c 100644 --- a/TODO +++ b/TODO @@ -61,7 +61,6 @@ euscanwww ### packages -- show additional informations in the web interface (remote-id, etc...) - Ignore alpha/beta if current is not alpha/beta: per-package setting using metadata.xml ? - ~arch / stable support: see "models: keywords" - stabilisation candidates: check stabilizations rules, and see how this can be automated diff --git a/euscanwww/.gitignore b/euscanwww/.gitignore deleted file mode 100644 index 73c561d..0000000 --- a/euscanwww/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -var/cache/*/ -var/charts/*.png -var/rrd/*.rrd -var/db/euscan.db -var/db/euscan.db-journal -local_settings.py diff --git a/euscanwww/INSTALL b/euscanwww/INSTALL deleted file mode 100644 index d6b6cfc..0000000 --- a/euscanwww/INSTALL +++ /dev/null @@ -1,45 +0,0 @@ -## Basic Install - -# Create local_settings.py, you can override settings.py stuff here -# You should at least define SECRET_KEY -touch euscanwww/local_settings.py - -# Initialize database -./manage.py syncdb -./manage.py migrate - -# emerge euscan, or add euscan to your path somehow - -# Scan htop -./manage.py scan-portage htop # Scan ebuilds -./manage.py scan-metadata htop # Lookup for maintainers, herds, etc... -./manage.py scan-upstream htop # Run euscan - -# Scan dev-python -eix --only-names -C dev-python | ./manage.py scan-portage -eix --only-names -C dev-python | ./manage.py scan-metadata -eix --only-names -C dev-python | ./manage.py scan-upstream - -# Update counters at end of scan -./manage.py update-counters # Update counters, graphs, etc... - -# Start server -./manage.py runserver - - -## Importing a snapshot - -# Remove database - -# Reinitialize database -./manage.py syncdb -./manage.py migrate - -# Import snapshot -./manage.py loaddata var/snapshots/snapshot-yyyymmdd.js - -rm -rf var/rrd/* -rm -rf var/cache/* -rm -rf var/charts/* - -./manage.py regen-rrds diff --git a/euscanwww/README.Celery b/euscanwww/README.Celery deleted file mode 100644 index 00884c5..0000000 --- a/euscanwww/README.Celery +++ /dev/null @@ -1,36 +0,0 @@ -Requirements -============ - -Installing requirements with setup.py is the easiest way, just run:: - - python setup.py develop - -or:: - - python setup.py install # to install euscan and requirements - -If you prefer to use portage just install dev-python/django-celery - -There's the need of having a broker for tasks. The default and reccommended -broker is RabbitMQ. -Install with:: -emerge rabbitmq-server - - -Running Celery -============== - -You'll need: -* celeryd (celery daemon for running tasks):: - - python manage.py celeryd -B -E -l INFO - -* celerycam (for monitoring celery and see the results in the django admin page):: - - python manage.py celerycam - - -TODO -==== - -Provide a supervisord configuration diff --git a/euscanwww/__init__.py b/euscanwww/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/__init__.py b/euscanwww/djeuscan/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/admin.py b/euscanwww/djeuscan/admin.py deleted file mode 100644 index bdf7f6b..0000000 --- a/euscanwww/djeuscan/admin.py +++ /dev/null @@ -1,60 +0,0 @@ -from djeuscan.models import Package, Version, VersionLog, EuscanResult, \ - Log, WorldLog, CategoryLog, HerdLog, MaintainerLog, Herd, Maintainer, \ - RefreshPackageQuery, Category, Overlay, ProblemReport -from django.contrib import admin - - -class EuscanResultAdmin(admin.ModelAdmin): - search_fields = ('package__name', 'package__category') - list_filter = ('datetime', 'package__category') - ordering = ["-datetime"] - - -class HerdAdmin(admin.ModelAdmin): - search_fields = ('herd', 'email') - ordering = ["herd"] - - -class MaintainerAdmin(admin.ModelAdmin): - search_fields = ('name', 'email') - ordering = ["name"] - - -class PackageAdmin(admin.ModelAdmin): - search_fields = ('category', 'name') - list_filter = ('category', ) - - -class VersionAdmin(admin.ModelAdmin): - search_fields = ('package__name', 'package__category') - list_filter = ('overlay', 'packaged') - - -class ProblemReportAdmin(admin.ModelAdmin): - list_display = ('package', 'subject', 'datetime') - search_fields = ('package__name', 'package__category') - list_filter = ('datetime', 'package__category') - ordering = ["-datetime"] - - -admin.site.register(Package, PackageAdmin) - -admin.site.register(Herd, HerdAdmin) -admin.site.register(Maintainer, MaintainerAdmin) - -admin.site.register(Version, VersionAdmin) -admin.site.register(VersionLog) - -admin.site.register(EuscanResult, EuscanResultAdmin) - -admin.site.register(Log) -admin.site.register(WorldLog) -admin.site.register(CategoryLog) -admin.site.register(HerdLog) -admin.site.register(MaintainerLog) - -admin.site.register(RefreshPackageQuery) -admin.site.register(Category) -admin.site.register(Overlay) - -admin.site.register(ProblemReport, ProblemReportAdmin) diff --git a/euscanwww/djeuscan/api/__init__.py b/euscanwww/djeuscan/api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/api/emitters.py b/euscanwww/djeuscan/api/emitters.py deleted file mode 100644 index 1f7a63a..0000000 --- a/euscanwww/djeuscan/api/emitters.py +++ /dev/null @@ -1,51 +0,0 @@ -from piston.emitters import XMLEmitter - - -class EuscanXMLEmitter(XMLEmitter): - _parent = [] - _known_parents = { - 'vlog': 'version', - 'herds': 'herd', - 'maintainers': 'maintainer', - 'packaged': 'version', - 'upstream': 'version', - 'packages': 'package', - 'categories': 'category' - } - - def _push_parent(self, parent): - self._parent.append(parent) - - def _pop_parent(self): - if self._parent: - return self._parent.pop() - else: - return None - - def _current_parent(self): - if self._parent: - return self._parent[-1] - else: - return None - - def _name_from_parent(self): - return self._known_parents.get(self._current_parent(), 'resource') - - def _to_xml(self, xml, data): - def recurse(name, xml, item): - attrs = {} - xml.startElement(name, attrs) - self._push_parent(name) - self._to_xml(xml, item) - self._pop_parent() - xml.endElement(name) - - if isinstance(data, (list, tuple)): - for item in data: - name = self._name_from_parent() - recurse(name, xml, item) - elif isinstance(data, dict): - for key, value in data.iteritems(): - recurse(key, xml, value) - else: - super(EuscanXMLEmitter, self)._to_xml(xml, data) diff --git a/euscanwww/djeuscan/api/handlers.py b/euscanwww/djeuscan/api/handlers.py deleted file mode 100644 index 922fe16..0000000 --- a/euscanwww/djeuscan/api/handlers.py +++ /dev/null @@ -1,177 +0,0 @@ -from piston.handler import AnonymousBaseHandler -from piston.utils import rc - -from django.core.exceptions import ObjectDoesNotExist -from django.forms.models import model_to_dict - -from djeuscan.models import Version, Package, Herd, Maintainer, EuscanResult, \ - VersionLog -from djeuscan.helpers import catch_and_return - -# replace default XMLEmitter with ours -from piston.emitters import Emitter -from .emitters import EuscanXMLEmitter -Emitter.register('xml', EuscanXMLEmitter, 'text/xml; charset=utf-8') - - -# /api/1.0/ -class RootHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - return {'api-version': '1.0'} - - -# /api/1.0/statistics -class StatisticsHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - data = {} - data['n_packaged'] = Package.objects.n_packaged() - data['n_overlay'] = Package.objects.n_overlay() - data['n_versions'] = Package.objects.n_versions() - data['n_upstream'] = Package.objects.n_upstream() - data['n_packages'] = Package.objects.count() - data['n_herds'] = Herd.objects.count() - data['n_maintainers'] = Maintainer.objects.count() - data['last_scan'] = EuscanResult.objects.latest().datetime - - return data - - -# /api/1.0/maintainers -class MaintainersHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - maintainers = Package.objects.maintainers(rename=True) - - return {'maintainers': maintainers} - - -# /api/1.0/herds -class HerdsHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - # FIXME: optimize the query, it uses 'LEFT OUTER JOIN' - # instead of 'INNER JOIN' - herds = Package.objects.herds(rename=True) - - return {'herds': herds} - - -# /api/1.0/categories -class CategoriesHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - categories = Package.objects.categories() - - return {'categories': categories} - - -# /api/1.0/packages/by-maintainer/ -# /api/1.0/packages/by-category/ -# /api/1.0/packages/by-herd/ -class PackagesHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - fields = ('category', 'name', 'n_packaged', 'n_overlay', 'n_versions', - ('last_version_gentoo', ('version',)), - ('last_version_overlay', ('version',)), - ('last_version_upstream', ('version',))) - model = Package - - @catch_and_return(ObjectDoesNotExist, rc.NOT_FOUND) - def read(self, request, **kwargs): - data = {} - - if 'category' in kwargs: - packages = Package.objects.for_category( - kwargs['category'], - last_versions=True - ) - data = {'category': kwargs['category']} - elif 'herd' in kwargs: - herd = Herd.objects.get(herd=kwargs['herd']) - packages = Package.objects.for_herd(herd, last_versions=True) - data = {'herd': herd} - elif 'maintainer_id' in kwargs or 'maintainer_email' in kwargs: - if 'maintainer_id' in kwargs: - maintainer = Maintainer.objects.get(id=kwargs['maintainer_id']) - elif 'maintainer_email' in kwargs: - maintainer = Maintainer.objects.get(email=kwargs['maintainer_email']) - - packages = Package.objects.for_maintainer( - maintainer, - last_versions=True - ) - data = {'maintainer': maintainer} - - data['packages'] = packages - - if not data: - return rc.NOT_FOUND - - return data - - -# /api/1.0/package/ -class PackageHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - @catch_and_return(ObjectDoesNotExist, rc.NOT_FOUND) - def read(self, request, category, package): - package = Package.objects.get(category=category, name=package) - - versions = Version.objects.filter(package=package) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - - vlog = VersionLog.objects.for_package(package, order=True) - - herds = [] - for herd in package.herds.all(): - herds.append(model_to_dict(herd, ['herd'])) - - maintainers = [] - for maintainer in package.maintainers.all(): - maintainers.append(model_to_dict(maintainer, ['name', 'email'])) - - version_log = [] - for v in vlog: - v = model_to_dict(v, ['version', 'revision', 'slot', 'overlay', - 'datetime', 'action']) - if v['action'] == VersionLog.VERSION_ADDED: - v['action'] = 'added' - if v['action'] == VersionLog.VERSION_REMOVED: - v['action'] = 'removed' - version_log.append(v) - - upstream = [] - packaged = [] - for version in versions: - unpackaged = not version.packaged - version = model_to_dict( - version, - ['version', 'revision', 'slot', 'overlay', 'urls'] - ) - if unpackaged: - upstream.append(version) - else: - packaged.append(version) - - package = model_to_dict(package, ['category', 'name', 'description', - 'homepage']) - package['herds'] = herds - package['maintainers'] = maintainers - package['packaged'] = packaged - package['upstream'] = upstream - package['vlog'] = version_log - if log: - package['log'] = model_to_dict(log, ['result', 'datetime']) - - return package diff --git a/euscanwww/djeuscan/api/urls.py b/euscanwww/djeuscan/api/urls.py deleted file mode 100644 index 578a8be..0000000 --- a/euscanwww/djeuscan/api/urls.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.conf.urls.defaults import url, patterns - -from piston.resource import Resource -from handlers import RootHandler, StatisticsHandler, HerdsHandler, \ - CategoriesHandler, MaintainersHandler, PackagesHandler, PackageHandler - -root_handler = Resource(handler=RootHandler) -statistics_handler = Resource(handler=StatisticsHandler) -herds_handler = Resource(handler=HerdsHandler) -categories_handler = Resource(handler=CategoriesHandler) -maintainers_handler = Resource(handler=MaintainersHandler) -packages_handler = Resource(handler=PackagesHandler) -package_handler = Resource(handler=PackageHandler) - -urlpatterns = patterns('djeuscan.api.views', - url(r'^1.0/statistics\.(?P.+)$', statistics_handler, - name='api.views.statistics'), - url(r'^1.0/herds\.(?P.+)$', herds_handler, - name='api.views.herds'), - url(r'^1.0/categories\.(?P.+)$', categories_handler, - name='api.views.categories'), - url(r'^1.0/maintainers\.(?P.+)$', maintainers_handler, - name='api.views.maintainers'), - - url(r'^1.0/packages/by-maintainer/(?P\d+)\.(?P.+)$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-maintainer/(?P[^/]+)\.(?P.+)$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-herd/(?P[\@\{\}\w+.-]*)\.(?P.+)?$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-category/(?P[\w+][\w+.-]*)\.(?P.+)?$', - packages_handler, name='api.views.packages'), - - url(r'^1.0/package/(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)\.(?P.+)$', - package_handler, name='api.views.package'), - - url(r'^1.0/api\.(?P.+)$', - root_handler, name='api.views.root'), -) diff --git a/euscanwww/djeuscan/charts.py b/euscanwww/djeuscan/charts.py deleted file mode 100644 index 4e4ca97..0000000 --- a/euscanwww/djeuscan/charts.py +++ /dev/null @@ -1,292 +0,0 @@ -import os.path -import time - -import rrdtool -import pylab - -from django.db.models import F - -from django.conf import settings -from djeuscan.models import Package - - -CHARTS_ROOT = os.path.join(settings.EUSCAN_ROOT, 'var', 'charts') -CHARTS_URL = os.path.join(settings.EUSCAN_ROOT, 'var', 'charts') -CHARTS_TTL = (24 * 60 * 60) - -pylab.rcParams['font.size'] = 10.0 -pylab.rcParams['axes.titlesize'] = 10.0 -pylab.rcParams['xtick.labelsize'] = 8.0 -pylab.rcParams['legend.fontsize'] = 8.0 - - -def chart_alive(name): - path = os.path.join(CHARTS_ROOT, name) - if not os.path.exists(path): - return False - if os.path.getmtime(__file__) > os.path.getmtime(path): - return False - if os.path.getmtime(path) + CHARTS_TTL < time.time(): - return False - return True - - -def rrd_name(**kwargs): - name = "" - - if 'category' in kwargs and kwargs['category']: - name = 'category-%s' % kwargs['category'] - elif 'herd' in kwargs and kwargs['herd']: - name = 'herd-%d' % kwargs['herd'].id - elif 'maintainer' in kwargs and kwargs['maintainer']: - name = 'maintainer-%d' % kwargs['maintainer'].id - else: - name = 'world' - - return name - - -def chart_name(name, **kwargs): - name = name.replace('_', '-') - - if 'category' in kwargs and kwargs['category']: - name += '-%s' % kwargs['category'] - if 'herd' in kwargs and kwargs['herd']: - name += '-h-%d' % kwargs['herd'].id - if 'maintainer' in kwargs and kwargs['maintainer']: - name += '-m-%d' % kwargs['maintainer'].id - - for kw in ('-small', '-weekly', '-monthly', '-yearly'): - if kw in kwargs: - name += kw - - return name + ".png" - - -def getpackages(**kwargs): - pkgs = Package.objects - - if 'category' in kwargs and kwargs['category']: - pkgs = Package.objects.for_category(kwargs['category']) - if 'herd' in kwargs and kwargs['herd']: - pkgs = Package.objects.for_herd(kwargs['herd']) - if 'maintainer' in kwargs and kwargs['maintainer']: - pkgs = Package.objects.for_maintainer(kwargs['maintainer']) - - return pkgs - - -def cached_pylab_chart(f): - def new_f(*args, **kwds): - name = chart_name(f.func_name, **kwds) - - if not chart_alive(name): - f(*args, **kwds) - pylab.savefig(os.path.join(CHARTS_ROOT, name)) - pylab.close() - - return name - - new_f.func_name = f.func_name - return new_f - - -@cached_pylab_chart -def pie_versions(**kwargs): - gpk = getpackages(**kwargs) - n_packaged = gpk.n_packaged() - n_overlay = gpk.n_overlay() - n_upstream = gpk.n_upstream() - - pylab.figure(1, figsize=(3.5, 3.5)) - - if n_overlay: - labels = 'Gentoo', 'Overlays', 'Upstream' - fracs = [n_packaged, n_overlay, n_upstream] - colors = '#008000', '#0B17FD', '#FF0000' - else: - labels = 'Gentoo', 'Upstream' - fracs = [n_packaged, n_upstream] - colors = '#008000', '#FF0000' - - pylab.pie(fracs, labels=labels, colors=colors, autopct='%1.1f%%', - shadow=True) - pylab.title('Versions', bbox={'facecolor': '0.8', 'pad': 5}) - - -@cached_pylab_chart -def pie_packages(**kwargs): - gpk = getpackages(**kwargs) - n_packages = gpk.count() - n_packages_uptodate_main = gpk.filter(n_versions=F('n_packaged')).count() - n_packages_uptodate_all = gpk.filter(n_versions=F('n_packaged') + \ - F('n_overlay')).count() - n_packages_outdated = n_packages - n_packages_uptodate_all - n_packages_uptodate_ovl = n_packages_uptodate_all - \ - n_packages_uptodate_main - - pylab.figure(1, figsize=(3.5, 3.5)) - - if n_packages_uptodate_ovl: - labels = 'Ok (gentoo)', 'Ok (overlays)', 'Outdated' - fracs = [n_packages_uptodate_main, n_packages_uptodate_ovl, - n_packages_outdated] - colors = '#008000', '#0B17FD', '#FF0000' - else: - labels = 'Ok (gentoo)', 'Outdated' - fracs = [n_packages_uptodate_main, n_packages_outdated] - colors = '#008000', '#FF0000' - - pylab.pie(fracs, labels=labels, colors=colors, autopct='%1.1f%%', - shadow=True) - pylab.title('Packages', bbox={'facecolor': '0.8', 'pad': 5}) - - -def rrd_path(name): - res = str(os.path.join(settings.RRD_ROOT, name)) - if res.endswith(".rrd"): - return res - else: - return res + ".rrd" - - -def rrd_create(name, start=None): - if start is None: - start = int(time.time()) - - path = rrd_path(name) - if not os.path.exists(path): - rrdtool.create(path, '--step', '86400', - '--start', '%s' % int(start - 10), - 'DS:n_packages_gentoo:GAUGE:4294967295:0:U', - 'DS:n_packages_overlay:GAUGE:4294967295:0:U', - 'DS:n_packages_outdated:GAUGE:4294967295:0:U', - 'DS:n_versions_gentoo:GAUGE:4294967295:0:U', - 'DS:n_versions_overlay:GAUGE:4294967295:0:U', - 'DS:n_versions_upstream:GAUGE:4294967295:0:U', - 'RRA:AVERAGE:0.5:1:100', - 'RRA:AVERAGE:0.5:5:200', - 'RRA:AVERAGE:0.5:10:200') - - -def rrd_update(name, datetime, values): - now = time.mktime(datetime.timetuple()) - rrd_create(name, now) - rrdtool.update( - rrd_path(name), - '%d:%d:%d:%d:%d:%d:%d' % \ - (now, values.n_packages_gentoo, values.n_packages_overlay, - values.n_packages_outdated, values.n_versions_gentoo, - values.n_versions_overlay, values.n_versions_upstream) - ) - - -""" -[-s|--start time] [-e|--end time] [-S|--step seconds] -[-t|--title string] [-v|--vertical-label string] -[-w|--width pixels] [-h|--height pixels] [-j|--only-graph] -[-D|--full-size-mode][-u|--upper-limit value] [-l|--lower-limit value] -[-u|--upper-limit value] [-l|--lower-limit value] [-r|--rigid] -[-A|--alt-autoscale] -[-M|--alt-autoscale-max] -[-J|--alt-autoscale-min] -""" - - -def cached_rrd_chart(f): - def new_f(*args, **kwds): - if 'period' not in kwds: - kwds['period'] = '-yearly' - - name = chart_name(f.func_name, **kwds) - path = os.path.join(CHARTS_ROOT, name) - - if not chart_alive(name): - kwds['title'] = '%s (%s)' % (f.func_name, kwds['period']) - kwds['steps'] = kwds['period'] - kwds['vertical-label'] = f.func_name - - kwds['rrd'] = rrd_path(rrd_name(**kwds)) - rrd_create(kwds['rrd']) # create the rrd file if it's not present - - kwds['path'] = path - - kwds['end'] = 'now' - - if kwds['period'] == '-weekly': - kwds['start'] = 'now-4weeks' - elif kwds['period'] == '-monthly': - kwds['start'] = 'now-12months' - else: - kwds['start'] = 'now-4years' - - if '-small' in kwds and kwds['-small']: - kwds['width'] = '100' - kwds['height'] = '30' - kwds['graph-mode'] = '--only-graph' - else: - kwds['width'] = '500' - kwds['height'] = '170' - kwds['graph-mode'] = '--full-size-mode' - - f(*args, **kwds) - - return name - - new_f.func_name = f.func_name - return new_f - - -@cached_rrd_chart -def packages(**kwargs): - path = str(kwargs['path']) - rrd = kwargs['rrd'] - - rrdtool.graph( - path, - '--imgformat', 'PNG', - '--width', kwargs['width'], - '--height', kwargs['height'], - kwargs['graph-mode'], - '--color', 'CANVAS#FFFFFF00', - '--color', 'BACK#FFFFFF00', - - '--start', kwargs['start'], - '--end', kwargs['end'], - '--vertical-label', kwargs['vertical-label'], - '--title', kwargs['title'], - '--lower-limit', '0', - 'DEF:n_packages_gentoo=%s:n_packages_gentoo:AVERAGE' % rrd, - 'DEF:n_packages_overlay=%s:n_packages_overlay:AVERAGE' % rrd, - 'DEF:n_packages_outdated=%s:n_packages_outdated:AVERAGE' % rrd, - 'LINE1.25:n_packages_gentoo#008000:Gentoo', - 'LINE1.25:n_packages_overlay#0B17FD:Overlay', - 'LINE1.25:n_packages_outdated#FF0000:Outdated' - ) - - -@cached_rrd_chart -def versions(**kwargs): - path = str(kwargs['path']) - rrd = kwargs['rrd'] - - rrdtool.graph( - path, - '--imgformat', 'PNG', - '--width', kwargs['width'], - '--height', kwargs['height'], - kwargs['graph-mode'], - '--color', 'CANVAS#FFFFFF00', - '--color', 'BACK#FFFFFF00', - '--start', kwargs['start'], - '--end', kwargs['end'], - '--vertical-label', kwargs['vertical-label'], - '--title', kwargs['title'], - '--lower-limit', '0', - 'DEF:n_versions_gentoo=%s:n_versions_gentoo:AVERAGE' % rrd, - 'DEF:n_versions_overlay=%s:n_versions_overlay:AVERAGE' % rrd, - 'DEF:n_versions_outdated=%s:n_versions_upstream:AVERAGE' % rrd, - 'LINE1.25:n_versions_gentoo#008000:Gentoo', - 'LINE1.25:n_versions_overlay#0B17FD:Overlay', - 'LINE1.25:n_versions_outdated#FF0000:Outdated' - ) diff --git a/euscanwww/djeuscan/feeds.py b/euscanwww/djeuscan/feeds.py deleted file mode 100644 index 62d4d78..0000000 --- a/euscanwww/djeuscan/feeds.py +++ /dev/null @@ -1,325 +0,0 @@ -import json -from urllib import urlencode - -from django.contrib.syndication.views import Feed, FeedDoesNotExist -from django.shortcuts import get_object_or_404 -from django.utils.feedgenerator import Atom1Feed -from django.core.urlresolvers import reverse -from django.db.models import Q - -from euscan.version import gentoo_unstable - -from djeuscan.models import Package, Herd, Maintainer, Version, VersionLog - -from euscan_accounts.helpers import get_profile - - -class StabilizationCandidatesFeed(Feed): - feed_type = Atom1Feed - author_name = 'euscan' - item_author_name = author_name - title = 'Stabilization candidates' - link = "/" - description = "Stabilization candidates" - ttl = 3600 - - def item_title(self, version): - return version.cpv() - - def item_description(self, version): - cpv = version.cpv() - maintainers = herds = "" - - if version.package.maintainers.all(): - maintainers = "Maintainers: {}\n".format( - ", ".join(str(m) for m in version.package.maintainers.all()) - ) - - if version.package.herds.all(): - herds = "Herds: {}\n".format( - ", ".join(str(h) for h in version.package.herds.all()) - ) - - bugs_link = "https://bugs.gentoo.org/buglist.cgi?quicksearch={}" - - comment = """ - This bug was filed via euscan - - How much have you used the package in question? - - Have you had any problems with the package? - - emerge --info: - - Other info: - {} {} - """.format(herds, maintainers) - comment = "\n".join([line.lstrip() for line in comment.split("\n")]) - description = """ - Added to tree: {date}
- {herds}
- {maintainers}
- Open bugs for {cat_pn}: - Show
- Open bugs for {pn}: - Show
- File bug - """.format( - date=version.stabilization_candidate, - herds=herds, - maintainers=maintainers, - cat_pn=version.package.cp(), - cat_bugs=bugs_link.format(version.package.cp()), - pn=version.package.name, - pn_bugs=bugs_link.format(version.package.name), - submit_bug='https://bugs.gentoo.org/enter_bug.cgi?{}'.format( - urlencode({ - "product": 'Gentoo Linux', - "short_desc": "Stable request for {}".format(cpv), - "comment": comment, - "keywords": 'STABLEREQ', - }) - ), - ) - return description - - def item_link(self, version): - kwargs = {'category': version.package.category, - 'package': version.package.name} - return "%s#version-%s" % ( - reverse('djeuscan.views.package', kwargs=kwargs), version.tag - ) - - def item_categories(self): - return ["stabilization_candidate"] - - def items(self): - versions = Version.objects.exclude(stabilization_candidate=None) - return versions.order_by("-stabilization_candidate") - - -class BaseFeed(Feed): - feed_type = Atom1Feed - author_name = 'euscan' - item_author_name = author_name - ttl = 3600 - - def item_title(self, vlog): - return str(vlog) - - def item_description(self, vlog): - if vlog.overlay: - txt = 'Version %s-%s [%s] of package %s ' % \ - (vlog.version, vlog.revision, vlog.slot, vlog.package) - else: - txt = 'Version %s of package %s ' % (vlog.version, vlog.package) - if vlog.action == vlog.VERSION_REMOVED: - if not vlog.overlay: - txt += 'has been removed upstream' - else: - txt += 'has been removed from overlay "%s"' % vlog.overlay - if vlog.action == vlog.VERSION_ADDED: - if not vlog.overlay: - txt += 'has been added upstream' - else: - txt += 'has been added to overlay "%s"' % vlog.overlay - - return txt - - def item_link(self, vlog): - kwargs = {'category': vlog.package.category, - 'package': vlog.package.name} - return "%s#version-%s" % ( - reverse('djeuscan.views.package', kwargs=kwargs), vlog.tag - ) - - def item_pubdate(self, vlog): - return vlog.datetime - - def item_categories(self, vlog): - return [vlog.package.category] - - def items(self, data=None): - user = data.get("user", None) if data else None - options = data.get("options", {}) if data else {} - - # first of all consider options, then user preferences - try: - upstream_info = json.loads(options.get("upstream_info", "1")) - portage_info = json.loads(options.get("portage_info", "1")) - show_adds = json.loads(options.get("show_adds", "1")) - show_removals = json.loads(options.get("show_removals", "1")) - ignore_pre = json.loads(options.get("ignore_pre", "0")) - ignore_pre_if_stable = json.loads( - options.get("ignore_pre_if_stable", "0") - ) - except ValueError: - return [] - - if user and not options: - profile = get_profile(user) - upstream_info = profile.feed_upstream_info - portage_info = profile.feed_portage_info - show_adds = profile.feed_show_adds - show_removals = profile.feed_show_removals - ignore_pre = profile.feed_ignore_pre - ignore_pre_if_stable = profile.feed_ignore_pre_if_stable - - ret, max_items = self._items(data) - - if not upstream_info: - ret = ret.exclude(overlay="") - if not portage_info: - ret = ret.exclude(~Q(overlay="")) - if not show_adds: - ret = ret.exclude(action=VersionLog.VERSION_ADDED) - if not show_removals: - ret = ret.exclude(action=VersionLog.VERSION_REMOVED) - if ignore_pre: - ret = ret.exclude(vtype__in=gentoo_unstable) - if ignore_pre_if_stable: - ret = ret.exclude( - ~Q(package__last_version_gentoo__vtype__in=gentoo_unstable), - vtype__in=gentoo_unstable - ) - - return ret.order_by("-datetime")[:max_items] - - -class GlobalFeed(BaseFeed): - title = "euscan" - link = "/" - description = "Last euscan changes" - - def get_object(self, request): - return {"options": request.GET} - - def categories(self, data): - categories = Package.objects.categories() - return [category['category'] for category in categories] - - def _items(self, data): - return VersionLog.objects.all(), 250 - - -class PackageFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, category, package): - return { - "obj": get_object_or_404(Package, category=category, name=package), - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.package', args=[data["obj"].category, - data["obj"].name]) - - def description(self, data): - return data["obj"].description - - def _items(self, data): - return VersionLog.objects.for_package(data["obj"]), 30 - - def item_description(self, vlog): - return '' - - -class MaintainerFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, maintainer_id=None, maintainer_email=None): - if maintainer_id: - obj = get_object_or_404(Maintainer, id=maintainer_id) - else: - obj = get_object_or_404(Maintainer, email=maintainer_email) - - return { - "obj": obj, - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.maintainer', args=[data["obj"].email]) - - def _items(self, data): - return VersionLog.objects.for_maintainer(data["obj"]), 50 - - -class HerdFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, herd): - return { - "obj": get_object_or_404(Herd, herd=herd), - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.herd', - kwargs={'herd': data["obj"].herd}) - - def _items(self, data): - return VersionLog.objects.for_herd(data["obj"]), 100 - - -class CategoryFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, category): - if not Package.objects.categories().count(): - raise FeedDoesNotExist - return { - "obj": category, - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.category', args=[data["obj"]]) - - def _items(self, data): - return VersionLog.objects.for_category(data["obj"]), 100 - - -class WorldScanFeed(BaseFeed): - link = "/" - - def get_object(self, request): - return { - "options": request.GET, - } - - def _items(self, data): - packages = [] - for pkg_name in data["options"].getlist("p", []): - if "/" in pkg_name: - cat, name = pkg_name.split("/", 1) - pkg = Package.objects.filter(name=name, category=cat) - else: - pkg = Package.objects.filter(name=pkg_name) - packages.extend(pkg) - - vlogs = VersionLog.objects.filter(package__in=packages) - - return vlogs, 100 diff --git a/euscanwww/djeuscan/forms.py b/euscanwww/djeuscan/forms.py deleted file mode 100644 index a1c6f65..0000000 --- a/euscanwww/djeuscan/forms.py +++ /dev/null @@ -1,28 +0,0 @@ -from django import forms -from djeuscan.models import Version, ProblemReport - - -class WorldForm(forms.Form): - world = forms.FileField() - - -class PackagesForm(forms.Form): - packages = forms.CharField(widget=forms.Textarea) - - -class ProblemReportForm(forms.ModelForm): - version = forms.ModelChoiceField(queryset=Version.objects.all(), - empty_label="all", required=False) - message = forms.CharField( - widget=forms.Textarea(attrs={'cols': 80, 'rows': 15}) - ) - - def __init__(self, package, *args, **kwargs): - super(ProblemReportForm, self).__init__(*args, **kwargs) - self.fields["version"].queryset = Version.objects.filter( - package=package - ) - - class Meta: - model = ProblemReport - fields = ('version', 'subject', 'message') diff --git a/euscanwww/djeuscan/helpers.py b/euscanwww/djeuscan/helpers.py deleted file mode 100644 index 171ba5e..0000000 --- a/euscanwww/djeuscan/helpers.py +++ /dev/null @@ -1,100 +0,0 @@ -""" -djeuscan.helpers -""" - -from distutils.version import StrictVersion, LooseVersion -from django.shortcuts import get_object_or_404 -from django.conf import settings - -from layman import Layman - -from portage.util import getconfig - - -def xint(i): - """ - Tries to cast to int, fallbacks to 0 - """ - try: - return int(i) - except Exception: - return 0 - - -def select_related_last_versions(queryset): - queryset = queryset.select_related( - 'last_version_gentoo', - 'last_version_overlay', - 'last_version_upstream' - ) - - -def version_key(version): - version = version.version - try: - return StrictVersion(version) - # in case of abnormal version number, fall back to LooseVersion - except ValueError: - return LooseVersion(version) - - -def packages_from_names(data): - """ - Returns a list of Package objects from a string of names - """ - - from djeuscan.models import Package - - packages = [] - data = data.replace("\r", "") - - for pkg in data.split('\n'): - if pkg.count('/') == 1: - cat, pkg = pkg.split('/') - packages.extend(Package.objects.filter(category=cat, name=pkg)) - else: - packages.extend(Package.objects.filter(name=pkg)) - return packages - - -def rename_fields(vqs, fields): - ret = [] - for n in vqs: - for tr in fields: - if tr[0] in n: - n[tr[1]] = n[tr[0]] - del n[tr[0]] - ret.append(n) - return ret - - -class catch_and_return(object): - def __init__(self, err, response): - self.err = err - self.response = response - - def __call__(self, fn): - def wrapper(*args, **kwargs): - try: - return fn(*args, **kwargs) - except self.err: - return self.response - return wrapper - - -def get_maintainer_or_404(id=None, email=None): - from djeuscan.models import Maintainer - if id: - return get_object_or_404(Maintainer, pk=id) - else: - return get_object_or_404(Maintainer, email=email) - - -def get_make_conf(): - return getconfig(settings.MAKE_CONF, tolerant=1, allow_sourcing=True) - - -def get_layman_repos(): - lay = Layman(config=settings.LAYMAN_CONFIG) - installed_overlays = lay.get_installed() - return lay.get_all_info(installed_overlays) diff --git a/euscanwww/djeuscan/management/__init__.py b/euscanwww/djeuscan/management/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/management/commands/__init__.py b/euscanwww/djeuscan/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/management/commands/list_packages.py b/euscanwww/djeuscan/management/commands/list_packages.py deleted file mode 100644 index 23efe7a..0000000 --- a/euscanwww/djeuscan/management/commands/list_packages.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -from optparse import make_option - -from django.core.management.base import BaseCommand -from djeuscan.models import Package - - -def list_packages(stdout=None, **options): - if stdout is None: - stdout = sys.stdout - - after = None - before = None - - if options['after']: - category, name = options['after'].split('/') - after = Package.objects.get(category=category, name=name) - - if options['before']: - category, name = options['before'].split('/') - before = Package.objects.get(category=category, name=name) - - packages = Package.objects - - if after or before: - if after: - packages = packages.filter(id__gte=after.id) - if before: - packages = packages.filter(id__lte=before.id) - else: - packages = packages.all() - - if options['limit']: - packages = packages[:int(options['limit'])] - - for pkg in packages: - stdout.write('%s/%s\n' % (pkg.category, pkg.name)) - stdout.close() - - -class Command(BaseCommand): - _overlays = {} - help = 'List packages' - - option_list = BaseCommand.option_list + ( - make_option('--after', - action='store', - dest='after', - default=False, - help='After package'), - make_option('--before', - action='store', - dest='before', - default=False, - help='Before package'), - make_option('--limit', - action='store', - dest='limit', - default=False, - help='limit'), - ) - - def handle(self, *args, **options): - list_packages(self.stdout, **options) diff --git a/euscanwww/djeuscan/management/commands/regen_rrds.py b/euscanwww/djeuscan/management/commands/regen_rrds.py deleted file mode 100644 index 82c3fd4..0000000 --- a/euscanwww/djeuscan/management/commands/regen_rrds.py +++ /dev/null @@ -1,16 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import regen_rrds - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Regenerate rrd database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - regen_rrds(logger=logger) diff --git a/euscanwww/djeuscan/management/commands/scan_metadata.py b/euscanwww/djeuscan/management/commands/scan_metadata.py deleted file mode 100644 index 7fb5b52..0000000 --- a/euscanwww/djeuscan/management/commands/scan_metadata.py +++ /dev/null @@ -1,52 +0,0 @@ -import sys -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_metadata - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--category', - action='store', - dest='category', - default=None, - help='Scan only this category'), - make_option('--populate', - action='store_true', - dest='populate', - default=False, - help='Populate herds and maintainers from herds.xml'), - ) - args = '' - help = 'Scans metadata and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all'] or options['category']: - packages = None - - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_metadata( - packages=packages, - category=options['category'], - logger=logger, - populate=options['populate'], - ) diff --git a/euscanwww/djeuscan/management/commands/scan_portage.py b/euscanwww/djeuscan/management/commands/scan_portage.py deleted file mode 100644 index f1d9485..0000000 --- a/euscanwww/djeuscan/management/commands/scan_portage.py +++ /dev/null @@ -1,69 +0,0 @@ -import sys -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_portage - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--category', - action='store', - dest='category', - default=None, - help='Scan only this category'), - make_option('--purge-packages', - action='store_true', - dest='purge-packages', - default=False, - help='Purge old packages'), - make_option('--purge-versions', - action='store_true', - dest='purge-versions', - default=False, - help='Purge old versions'), - make_option('--upstream', - action='store_true', - dest='upstream', - default=False, - help='Scan upstream for updated packages in Portage'), - make_option('--no-log', - action='store_true', - dest='no-log', - default=False, - help='Don\'t store logs'), - ) - args = '[package package ...]' - help = 'Scans portage tree and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all'] or options['category']: - packages = None - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_portage( - packages=packages, - category=options['category'], - no_log=options["no-log"], - purge_packages=options["purge-packages"], - purge_versions=options["purge-versions"], - upstream=options["upstream"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/scan_upstream.py b/euscanwww/djeuscan/management/commands/scan_upstream.py deleted file mode 100644 index a1528d4..0000000 --- a/euscanwww/djeuscan/management/commands/scan_upstream.py +++ /dev/null @@ -1,45 +0,0 @@ -import logging -import sys -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_upstream - -logger = logging.getLogger(__name__) - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--purge-versions', - action='store_true', - dest='purge-versions', - default=False, - help='Purge old versions'), - ) - args = '' - help = 'Scans metadata and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all']: - packages = None - - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_upstream( - packages=packages, - purge_versions=options["purge-versions"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/stabilization_candidates.py b/euscanwww/djeuscan/management/commands/stabilization_candidates.py deleted file mode 100644 index 890e0d1..0000000 --- a/euscanwww/djeuscan/management/commands/stabilization_candidates.py +++ /dev/null @@ -1,28 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import stabilization_candidates -from optparse import make_option - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option( - '-d', - '--days-to-candidate', - action='store_true', - dest='all', - default=30, - help='Minimum of days to be in tree for becoming stable.' - ), - ) - help = 'Collects stabilization candidates' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - stabilization_candidates(logger=logger) \ No newline at end of file diff --git a/euscanwww/djeuscan/management/commands/update_counters.py b/euscanwww/djeuscan/management/commands/update_counters.py deleted file mode 100644 index 35d1830..0000000 --- a/euscanwww/djeuscan/management/commands/update_counters.py +++ /dev/null @@ -1,35 +0,0 @@ -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import update_counters - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Update counters' - - option_list = BaseCommand.option_list + ( - make_option('--fast', - action='store_true', - dest='fast', - default=False, - help='Skip sanity checks'), - make_option('--nolog', - action='store_true', - dest='nolog', - default=False, - help='Skip logs'), - ) - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - update_counters( - fast=options["fast"], - nolog=options["nolog"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/update_portage_trees.py b/euscanwww/djeuscan/management/commands/update_portage_trees.py deleted file mode 100644 index b114548..0000000 --- a/euscanwww/djeuscan/management/commands/update_portage_trees.py +++ /dev/null @@ -1,16 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import update_portage_trees - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Regenerate rrd database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - update_portage_trees(logger=logger) diff --git a/euscanwww/djeuscan/managers.py b/euscanwww/djeuscan/managers.py deleted file mode 100644 index a55f38c..0000000 --- a/euscanwww/djeuscan/managers.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -djeuscan.managers -""" - -from django.db import models -from djeuscan.helpers import xint, rename_fields, select_related_last_versions - - -def _gen_n_function(field_name): - def n_method(self): - res = self.aggregate(models.Sum(field_name))[field_name + '__sum'] - return xint(res) - n_method.func_name = field_name - return n_method - - -def _gen_for_function(field): - def for_method(self, val, last_versions=False): - """ - Returns packages that belong to the given parametrs - """ - res = self.filter(**{field: val}) - - if last_versions: - select_related_last_versions(res) - - return res - - for_method.func_name = 'for_' + field - return for_method - - -ANNOTATE_DICT = {name: models.Sum(name) - for name in ['n_packaged', 'n_overlay', 'n_versions']} - - -class PackageMixin(object): - for_maintainer = _gen_for_function('maintainers') - for_herd = _gen_for_function('herds') - for_category = _gen_for_function('category') - - n_packaged = _gen_n_function("n_packaged") - n_overlay = _gen_n_function("n_overlay") - n_versions = _gen_n_function("n_versions") - - def n_upstream(self): - return self.n_versions() - self.n_packaged() - self.n_overlay() - - def categories(self): - """ - Returns all the available categories - """ - return self.values('category').annotate(**ANNOTATE_DICT) - - def herds(self, ids=None, rename=False): - """ - Returns all the available herds - """ - # FIXME: optimize the query, it uses 'LEFT OUTER JOIN' instead of - # 'INNER JOIN' - if ids is not None: - res = self.filter(herds__id__in=ids) - else: - res = self.filter(herds__isnull=False) - res = res.values('herds__herd').annotate(**ANNOTATE_DICT) - - if rename: - res = rename_fields(res, [('herds__herd', 'herd')]) - - return res - - def maintainers(self, ids=None, rename=False): - """ - Returns all the available maintainers - """ - if ids is not None: - res = self.filter(maintainers__id__in=ids) - else: - res = self.filter(maintainers__isnull=False) - - res = res.values( - 'maintainers__id', 'maintainers__name', 'maintainers__email' - ) - res = res.annotate(**ANNOTATE_DICT) - - if rename: - res = rename_fields( - res, - [('maintainers__id', 'id'), - ('maintainers__name', 'name'), - ('maintainers__email', 'email')] - ) - - return res - - def overlays(self): - """ - Returns the all available overlays - """ - res = self.values('version__overlay').exclude(version__overlay='') - return [o["version__overlay"] for o in res.distinct()] - - def for_overlay(self, overlay): - """ - Returns packages that belong to the given overlay - """ - packages = self.values( - 'id', 'name', 'category', 'n_versions', 'n_packaged', 'n_overlay' - ) - return packages.filter(version__overlay=overlay).distinct() - - def for_handler(self, handler): - """ - Returns packages that belong to the given handler - """ - packages = self.values( - 'id', 'name', 'category', 'n_versions', 'n_packaged', 'n_overlay' - ) - return packages.filter(version__handler=handler, - version__overlay="").distinct() - - -class PackageQuerySet(models.query.QuerySet, PackageMixin): - pass - - -class PackageManager(models.Manager, PackageMixin): - def get_query_set(self): - return PackageQuerySet(self.model, using=self._db) - - -class VersionLogMixin(object): - def for_package(self, package, order=False): - res = self.filter(package=package) - if order: - res = res.order_by('-id') - return res - - def for_maintainer(self, maintainer, order=False): - res = self.filter(package__maintainers__id=maintainer.id) - if order: - res = res.order_by('-id') - return res - - def for_category(self, category, order=False): - res = self.filter(package__category=category) - if order: - res = res.order_by('-id') - return res - - def for_herd(self, herd, order=False): - res = self.filter(package__herds__id=herd.id) - if order: - res = res.order_by('-id') - return res - - -class VersionLogQuerySet(models.query.QuerySet, VersionLogMixin): - pass - - -class VersionLogManager(models.Manager, VersionLogMixin): - def get_query_set(self): - return VersionLogQuerySet(self.model, using=self._db) - - -class EuscanResultMixin(object): - def for_package(self, package): - return self.filter(package=package) - - def for_maintainer(self, maintainer): - return self.filter(package__maintainers__id=maintainer.id) - - def for_category(self, category): - return self.filter(package__category=category) - - def for_herd(self, herd): - return self.filter(package__herds__id=herd.id) - - -class EuscanResultQuerySet(models.query.QuerySet, EuscanResultMixin): - pass - - -class EuscanResultManager(models.Manager, EuscanResultMixin): - def get_query_set(self): - return EuscanResultQuerySet(self.model, using=self._db) diff --git a/euscanwww/djeuscan/migrations/0001_initial.py b/euscanwww/djeuscan/migrations/0001_initial.py deleted file mode 100644 index d05d2e8..0000000 --- a/euscanwww/djeuscan/migrations/0001_initial.py +++ /dev/null @@ -1,283 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Adding model 'Herd' - db.create_table('djeuscan_herd', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('herd', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), - ('email', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)), - )) - db.send_create_signal('djeuscan', ['Herd']) - - # Adding model 'Maintainer' - db.create_table('djeuscan_maintainer', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('email', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), - )) - db.send_create_signal('djeuscan', ['Maintainer']) - - # Adding model 'Package' - db.create_table('djeuscan_package', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('description', self.gf('django.db.models.fields.TextField')(blank=True)), - ('homepage', self.gf('django.db.models.fields.CharField')(max_length=256, blank=True)), - ('n_versions', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packaged', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('last_version_gentoo', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_gentoo', null=True, to=orm['djeuscan.Version'])), - ('last_version_overlay', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_overlay', null=True, to=orm['djeuscan.Version'])), - ('last_version_upstream', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_upstream', null=True, to=orm['djeuscan.Version'])), - )) - db.send_create_signal('djeuscan', ['Package']) - - # Adding unique constraint on 'Package', fields ['category', 'name'] - db.create_unique('djeuscan_package', ['category', 'name']) - - # Adding M2M table for field herds on 'Package' - db.create_table('djeuscan_package_herds', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)) - )) - db.create_unique('djeuscan_package_herds', ['package_id', 'herd_id']) - - # Adding M2M table for field maintainers on 'Package' - db.create_table('djeuscan_package_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_package_maintainers', ['package_id', 'maintainer_id']) - - # Adding model 'Version' - db.create_table('djeuscan_version', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('slot', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('revision', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('version', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('packaged', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('overlay', self.gf('django.db.models.fields.CharField')(default='gentoo', max_length=128, db_index=True)), - ('urls', self.gf('django.db.models.fields.TextField')(blank=True)), - ('alive', self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True)), - )) - db.send_create_signal('djeuscan', ['Version']) - - # Adding unique constraint on 'Version', fields ['package', 'slot', 'revision', 'version', 'overlay'] - db.create_unique('djeuscan_version', ['package_id', 'slot', 'revision', 'version', 'overlay']) - - # Adding model 'VersionLog' - db.create_table('djeuscan_versionlog', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), - ('slot', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('revision', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('version', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('packaged', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('overlay', self.gf('django.db.models.fields.CharField')(default='gentoo', max_length=128)), - ('action', self.gf('django.db.models.fields.IntegerField')()), - )) - db.send_create_signal('djeuscan', ['VersionLog']) - - # Adding model 'EuscanResult' - db.create_table('djeuscan_euscanresult', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('datetime', self.gf('django.db.models.fields.DateTimeField')()), - ('result', self.gf('django.db.models.fields.TextField')(blank=True)), - )) - db.send_create_signal('djeuscan', ['EuscanResult']) - - # Adding model 'Log' - db.create_table('djeuscan_log', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('datetime', self.gf('django.db.models.fields.DateTimeField')()), - ('n_packages_gentoo', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packages_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packages_outdated', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_gentoo', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_upstream', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('djeuscan', ['Log']) - - # Adding model 'WorldLog' - db.create_table('djeuscan_worldlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - )) - db.send_create_signal('djeuscan', ['WorldLog']) - - # Adding model 'CategoryLog' - db.create_table('djeuscan_categorylog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['CategoryLog']) - - # Adding model 'HerdLog' - db.create_table('djeuscan_herdlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdLog']) - - # Adding model 'MaintainerLog' - db.create_table('djeuscan_maintainerlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - )) - db.send_create_signal('djeuscan', ['MaintainerLog']) - - - def backwards(self, orm): - - # Removing unique constraint on 'Version', fields ['package', 'slot', 'revision', 'version', 'overlay'] - db.delete_unique('djeuscan_version', ['package_id', 'slot', 'revision', 'version', 'overlay']) - - # Removing unique constraint on 'Package', fields ['category', 'name'] - db.delete_unique('djeuscan_package', ['category', 'name']) - - # Deleting model 'Herd' - db.delete_table('djeuscan_herd') - - # Deleting model 'Maintainer' - db.delete_table('djeuscan_maintainer') - - # Deleting model 'Package' - db.delete_table('djeuscan_package') - - # Removing M2M table for field herds on 'Package' - db.delete_table('djeuscan_package_herds') - - # Removing M2M table for field maintainers on 'Package' - db.delete_table('djeuscan_package_maintainers') - - # Deleting model 'Version' - db.delete_table('djeuscan_version') - - # Deleting model 'VersionLog' - db.delete_table('djeuscan_versionlog') - - # Deleting model 'EuscanResult' - db.delete_table('djeuscan_euscanresult') - - # Deleting model 'Log' - db.delete_table('djeuscan_log') - - # Deleting model 'WorldLog' - db.delete_table('djeuscan_worldlog') - - # Deleting model 'CategoryLog' - db.delete_table('djeuscan_categorylog') - - # Deleting model 'HerdLog' - db.delete_table('djeuscan_herdlog') - - # Deleting model 'MaintainerLog' - db.delete_table('djeuscan_maintainerlog') - - - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py b/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py deleted file mode 100644 index 1d0aa00..0000000 --- a/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py +++ /dev/null @@ -1,113 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Package.homepage' - db.alter_column('djeuscan_package', 'homepage', self.gf('django.db.models.fields.TextField')()) - - - def backwards(self, orm): - - # Changing field 'Package.homepage' - db.alter_column('djeuscan_package', 'homepage', self.gf('django.db.models.fields.CharField')(max_length=256)) - - - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py b/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py deleted file mode 100644 index 9dfa51b..0000000 --- a/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'RefreshPackageQuery' - db.create_table('djeuscan_refreshpackagequery', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('query', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)), - ('priority', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('djeuscan', ['RefreshPackageQuery']) - - - # Changing field 'Package.last_version_gentoo' - db.alter_column('djeuscan_package', 'last_version_gentoo_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_overlay' - db.alter_column('djeuscan_package', 'last_version_overlay_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_upstream' - db.alter_column('djeuscan_package', 'last_version_upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - def backwards(self, orm): - # Deleting model 'RefreshPackageQuery' - db.delete_table('djeuscan_refreshpackagequery') - - - # Changing field 'Package.last_version_gentoo' - db.alter_column('djeuscan_package', 'last_version_gentoo_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_overlay' - db.alter_column('djeuscan_package', 'last_version_overlay_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_upstream' - db.alter_column('djeuscan_package', 'last_version_upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py b/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py deleted file mode 100644 index 888fefa..0000000 --- a/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py +++ /dev/null @@ -1,238 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'CategoryAssociation' - db.create_table('djeuscan_categoryassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['CategoryAssociation']) - - # Adding unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.create_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Adding model 'PackageAssociation' - db.create_table('djeuscan_packageassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - )) - db.send_create_signal('djeuscan', ['PackageAssociation']) - - # Adding unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.create_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Adding model 'HerdAssociation' - db.create_table('djeuscan_herdassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdAssociation']) - - # Adding unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.create_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Adding model 'MaintainerAssociation' - db.create_table('djeuscan_maintainerassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - )) - db.send_create_signal('djeuscan', ['MaintainerAssociation']) - - # Adding unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.create_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - def backwards(self, orm): - # Removing unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.delete_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Removing unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.delete_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Removing unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.delete_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Removing unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.delete_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Deleting model 'CategoryAssociation' - db.delete_table('djeuscan_categoryassociation') - - # Deleting model 'PackageAssociation' - db.delete_table('djeuscan_packageassociation') - - # Deleting model 'HerdAssociation' - db.delete_table('djeuscan_herdassociation') - - # Deleting model 'MaintainerAssociation' - db.delete_table('djeuscan_maintainerassociation') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py b/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py deleted file mode 100644 index 64eda3c..0000000 --- a/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py +++ /dev/null @@ -1,197 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.version_type' - db.add_column('djeuscan_version', 'version_type', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Adding field 'Version.handler' - db.add_column('djeuscan_version', 'handler', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Adding field 'Version.confidence' - db.add_column('djeuscan_version', 'confidence', - self.gf('django.db.models.fields.IntegerField')(default=0), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Version.version_type' - db.delete_column('djeuscan_version', 'version_type') - - # Deleting field 'Version.handler' - db.delete_column('djeuscan_version', 'handler') - - # Deleting field 'Version.confidence' - db.delete_column('djeuscan_version', 'confidence') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py b/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py deleted file mode 100644 index 9e4bcce..0000000 --- a/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'EuscanResult.scan_time' - db.add_column('djeuscan_euscanresult', 'scan_time', - self.gf('django.db.models.fields.FloatField')(null=True, blank=True), - keep_default=False) - - # Adding field 'EuscanResult.ebuild' - db.add_column('djeuscan_euscanresult', 'ebuild', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'EuscanResult.scan_time' - db.delete_column('djeuscan_euscanresult', 'scan_time') - - # Deleting field 'EuscanResult.ebuild' - db.delete_column('djeuscan_euscanresult', 'ebuild') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py b/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py deleted file mode 100644 index 1f210c1..0000000 --- a/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'RefreshPackageQuery.query' - db.delete_column('djeuscan_refreshpackagequery', 'query') - - # Adding field 'RefreshPackageQuery.package' - db.add_column('djeuscan_refreshpackagequery', 'package', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package']), - keep_default=False) - - def backwards(self, orm): - # Adding field 'RefreshPackageQuery.query' - db.add_column('djeuscan_refreshpackagequery', 'query', - self.gf('django.db.models.fields.CharField')(default=None, max_length=256, unique=True), - keep_default=False) - - # Deleting field 'RefreshPackageQuery.package' - db.delete_column('djeuscan_refreshpackagequery', 'package_id') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py b/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py deleted file mode 100644 index db2bce4..0000000 --- a/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'ProblemReport' - db.create_table('djeuscan_problemreport', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('version', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Version'], null=True, blank=True)), - ('subject', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('message', self.gf('django.db.models.fields.TextField')()), - ('datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), - )) - db.send_create_signal('djeuscan', ['ProblemReport']) - - def backwards(self, orm): - # Deleting model 'ProblemReport' - db.delete_table('djeuscan_problemreport') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py b/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py deleted file mode 100644 index 6ebd84c..0000000 --- a/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py +++ /dev/null @@ -1,207 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'OverlayAssociation' - db.create_table('djeuscan_overlayassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('overlay', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['OverlayAssociation']) - - # Adding unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.create_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - def backwards(self, orm): - # Removing unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.delete_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Deleting model 'OverlayAssociation' - db.delete_table('djeuscan_overlayassociation') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py b/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py deleted file mode 100644 index 100e7a3..0000000 --- a/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.ebuild_path' - db.add_column('djeuscan_version', 'ebuild_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - # Adding field 'Version.metadata_path' - db.add_column('djeuscan_version', 'metadata_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Version.ebuild_path' - db.delete_column('djeuscan_version', 'ebuild_path') - - # Deleting field 'Version.metadata_path' - db.delete_column('djeuscan_version', 'metadata_path') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py b/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py deleted file mode 100644 index eb0da22..0000000 --- a/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'Version.version_type' - db.delete_column('djeuscan_version', 'version_type') - - # Adding field 'Version.vtype' - db.add_column('djeuscan_version', 'vtype', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - def backwards(self, orm): - # Adding field 'Version.version_type' - db.add_column('djeuscan_version', 'version_type', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Deleting field 'Version.vtype' - db.delete_column('djeuscan_version', 'vtype') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py b/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py deleted file mode 100644 index 920a6d0..0000000 --- a/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'VersionLog.vtype' - db.add_column('djeuscan_versionlog', 'vtype', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'VersionLog.vtype' - db.delete_column('djeuscan_versionlog', 'vtype') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0013_auto.py b/euscanwww/djeuscan/migrations/0013_auto.py deleted file mode 100644 index 5d2a1ee..0000000 --- a/euscanwww/djeuscan/migrations/0013_auto.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding M2M table for field maintainers on 'Herd' - db.create_table('djeuscan_herd_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_herd_maintainers', ['herd_id', 'maintainer_id']) - - def backwards(self, orm): - # Removing M2M table for field maintainers on 'Herd' - db.delete_table('djeuscan_herd_maintainers') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0014_auto.py b/euscanwww/djeuscan/migrations/0014_auto.py deleted file mode 100644 index 74cc7c3..0000000 --- a/euscanwww/djeuscan/migrations/0014_auto.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding M2M table for field users on 'RefreshPackageQuery' - db.create_table('djeuscan_refreshpackagequery_users', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('refreshpackagequery', models.ForeignKey(orm['djeuscan.refreshpackagequery'], null=False)), - ('user', models.ForeignKey(orm['auth.user'], null=False)) - )) - db.create_unique('djeuscan_refreshpackagequery_users', ['refreshpackagequery_id', 'user_id']) - - def backwards(self, orm): - # Removing M2M table for field users on 'RefreshPackageQuery' - db.delete_table('djeuscan_refreshpackagequery_users') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py b/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py deleted file mode 100644 index c25d411..0000000 --- a/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py +++ /dev/null @@ -1,324 +0,0 @@ -# -*- coding: utf-8 -*- -from south.v2 import DataMigration - - -class Migration(DataMigration): - - depends_on = ( - ("djcelery", "0001_initial"), - ) - - def forwards(self, orm): - every_day = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="01", - day_of_week="*", - day_of_month="*", - month_of_year="*" - ) - every_week = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="03", - day_of_week="1", - day_of_month="*", - month_of_year="*" - ) - every_month = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="05", - day_of_month="1", - month_of_year="*" - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Daily portage update", - task="djeuscan.tasks.update_portage", - crontab=every_day - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Weekly upstream update", - task="djeuscan.tasks.update_upstream", - crontab=every_week - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Weekly emails", - task="djeuscan.tasks.send_weekly_email", - crontab=every_week - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Monthly emails", - task="djeuscan.tasks.send_monthly_email", - crontab=every_month - ) - - def backwards(self, orm): - orm["djcelery.CrontabSchedule"].objects.all().delete() - orm["djcelery.PeriodicTask"].objects.all().delete() - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djcelery.crontabschedule': { - 'Meta': {'object_name': 'CrontabSchedule'}, - 'day_of_month': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'day_of_week': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'hour': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'minute': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'month_of_year': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}) - }, - 'djcelery.intervalschedule': { - 'Meta': {'object_name': 'IntervalSchedule'}, - 'every': ('django.db.models.fields.IntegerField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'period': ('django.db.models.fields.CharField', [], {'max_length': '24'}) - }, - 'djcelery.periodictask': { - 'Meta': {'object_name': 'PeriodicTask'}, - 'args': ('django.db.models.fields.TextField', [], {'default': "'[]'", 'blank': 'True'}), - 'crontab': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.CrontabSchedule']", 'null': 'True', 'blank': 'True'}), - 'date_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'exchange': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interval': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.IntervalSchedule']", 'null': 'True', 'blank': 'True'}), - 'kwargs': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), - 'last_run_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), - 'queue': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'routing_key': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'task': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'total_run_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) - }, - 'djcelery.periodictasks': { - 'Meta': {'object_name': 'PeriodicTasks'}, - 'ident': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'unique': 'True', 'primary_key': 'True'}), - 'last_update': ('django.db.models.fields.DateTimeField', [], {}) - }, - 'djcelery.taskmeta': { - 'Meta': {'object_name': 'TaskMeta', 'db_table': "'celery_taskmeta'"}, - 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'meta': ('djcelery.picklefield.PickledObjectField', [], {'default': 'None', 'null': 'True'}), - 'result': ('djcelery.picklefield.PickledObjectField', [], {'default': 'None', 'null': 'True'}), - 'status': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '50'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djcelery.tasksetmeta': { - 'Meta': {'object_name': 'TaskSetMeta', 'db_table': "'celery_tasksetmeta'"}, - 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'result': ('djcelery.picklefield.PickledObjectField', [], {}), - 'taskset_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}) - }, - 'djcelery.taskstate': { - 'Meta': {'ordering': "['-tstamp']", 'object_name': 'TaskState'}, - 'args': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'eta': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'db_index': 'True'}), - 'result': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'retries': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'runtime': ('django.db.models.fields.FloatField', [], {'null': 'True'}), - 'state': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}), - 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'tstamp': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), - 'worker': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.WorkerState']", 'null': 'True'}) - }, - 'djcelery.workerstate': { - 'Meta': {'ordering': "['-last_heartbeat']", 'object_name': 'WorkerState'}, - 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_heartbeat': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_index': 'True'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djcelery', 'djeuscan'] - symmetrical = True diff --git a/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py b/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py deleted file mode 100644 index b4fe300..0000000 --- a/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py +++ /dev/null @@ -1,355 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Removing unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.delete_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Removing unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.delete_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Removing unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.delete_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Removing unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.delete_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Removing unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.delete_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Deleting model 'MaintainerAssociation' - db.delete_table('djeuscan_maintainerassociation') - - # Deleting model 'PackageAssociation' - db.delete_table('djeuscan_packageassociation') - - # Deleting model 'HerdAssociation' - db.delete_table('djeuscan_herdassociation') - - # Deleting model 'OverlayAssociation' - db.delete_table('djeuscan_overlayassociation') - - # Deleting model 'CategoryAssociation' - db.delete_table('djeuscan_categoryassociation') - - # Adding model 'UserProfile' - db.create_table('djeuscan_userprofile', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)), - )) - db.send_create_signal('djeuscan', ['UserProfile']) - - # Adding M2M table for field herds on 'UserProfile' - db.create_table('djeuscan_userprofile_herds', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)) - )) - db.create_unique('djeuscan_userprofile_herds', ['userprofile_id', 'herd_id']) - - # Adding M2M table for field maintainers on 'UserProfile' - db.create_table('djeuscan_userprofile_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_userprofile_maintainers', ['userprofile_id', 'maintainer_id']) - - # Adding M2M table for field packages on 'UserProfile' - db.create_table('djeuscan_userprofile_packages', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)) - )) - db.create_unique('djeuscan_userprofile_packages', ['userprofile_id', 'package_id']) - - # Adding M2M table for field categories on 'UserProfile' - db.create_table('djeuscan_userprofile_categories', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('category', models.ForeignKey(orm['djeuscan.category'], null=False)) - )) - db.create_unique('djeuscan_userprofile_categories', ['userprofile_id', 'category_id']) - - # Adding M2M table for field overlays on 'UserProfile' - db.create_table('djeuscan_userprofile_overlays', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('overlay', models.ForeignKey(orm['djeuscan.overlay'], null=False)) - )) - db.create_unique('djeuscan_userprofile_overlays', ['userprofile_id', 'overlay_id']) - - # Adding model 'Category' - db.create_table('djeuscan_category', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['Category']) - - # Adding model 'Overlay' - db.create_table('djeuscan_overlay', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['Overlay']) - - def backwards(self, orm): - # Adding model 'MaintainerAssociation' - db.create_table('djeuscan_maintainerassociation', ( - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - )) - db.send_create_signal('djeuscan', ['MaintainerAssociation']) - - # Adding unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.create_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Adding model 'PackageAssociation' - db.create_table('djeuscan_packageassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - )) - db.send_create_signal('djeuscan', ['PackageAssociation']) - - # Adding unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.create_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Adding model 'HerdAssociation' - db.create_table('djeuscan_herdassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdAssociation']) - - # Adding unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.create_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Adding model 'OverlayAssociation' - db.create_table('djeuscan_overlayassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('overlay', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['OverlayAssociation']) - - # Adding unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.create_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Adding model 'CategoryAssociation' - db.create_table('djeuscan_categoryassociation', ( - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - )) - db.send_create_signal('djeuscan', ['CategoryAssociation']) - - # Adding unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.create_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Deleting model 'UserProfile' - db.delete_table('djeuscan_userprofile') - - # Removing M2M table for field herds on 'UserProfile' - db.delete_table('djeuscan_userprofile_herds') - - # Removing M2M table for field maintainers on 'UserProfile' - db.delete_table('djeuscan_userprofile_maintainers') - - # Removing M2M table for field packages on 'UserProfile' - db.delete_table('djeuscan_userprofile_packages') - - # Removing M2M table for field categories on 'UserProfile' - db.delete_table('djeuscan_userprofile_categories') - - # Removing M2M table for field overlays on 'UserProfile' - db.delete_table('djeuscan_userprofile_overlays') - - # Deleting model 'Category' - db.delete_table('djeuscan_category') - - # Deleting model 'Overlay' - db.delete_table('djeuscan_overlay') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py b/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py deleted file mode 100644 index 7d95034..0000000 --- a/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py +++ /dev/null @@ -1,197 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding unique constraint on 'Overlay', fields ['name'] - db.create_unique('djeuscan_overlay', ['name']) - - # Adding unique constraint on 'Category', fields ['name'] - db.create_unique('djeuscan_category', ['name']) - - def backwards(self, orm): - # Removing unique constraint on 'Category', fields ['name'] - db.delete_unique('djeuscan_category', ['name']) - - # Removing unique constraint on 'Overlay', fields ['name'] - db.delete_unique('djeuscan_overlay', ['name']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py b/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py deleted file mode 100644 index 63987c5..0000000 --- a/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py +++ /dev/null @@ -1,203 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.upstream_info' - db.add_column('djeuscan_userprofile', 'upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.portage_info' - db.add_column('djeuscan_userprofile', 'portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.upstream_info' - db.delete_column('djeuscan_userprofile', 'upstream_info') - - # Deleting field 'UserProfile.portage_info' - db.delete_column('djeuscan_userprofile', 'portage_info') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py b/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py deleted file mode 100644 index 7aa2289..0000000 --- a/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py +++ /dev/null @@ -1,282 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'UserProfile.portage_info' - db.delete_column('djeuscan_userprofile', 'portage_info') - - # Deleting field 'UserProfile.upstream_info' - db.delete_column('djeuscan_userprofile', 'upstream_info') - - # Adding field 'UserProfile.feed_upstream_info' - db.add_column('djeuscan_userprofile', 'feed_upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_portage_info' - db.add_column('djeuscan_userprofile', 'feed_portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.feed_show_adds' - db.add_column('djeuscan_userprofile', 'feed_show_adds', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_show_removals' - db.add_column('djeuscan_userprofile', 'feed_show_removals', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_ignore_pre' - db.add_column('djeuscan_userprofile', 'feed_ignore_pre', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.feed_ignore_pre_if_stable' - db.add_column('djeuscan_userprofile', 'feed_ignore_pre_if_stable', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.email_activated' - db.add_column('djeuscan_userprofile', 'email_activated', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.email_ignore_pre' - db.add_column('djeuscan_userprofile', 'email_ignore_pre', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.email_ignore_pre_if_stable' - db.add_column('djeuscan_userprofile', 'email_ignore_pre_if_stable', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - def backwards(self, orm): - # Adding field 'UserProfile.portage_info' - db.add_column('djeuscan_userprofile', 'portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.upstream_info' - db.add_column('djeuscan_userprofile', 'upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Deleting field 'UserProfile.feed_upstream_info' - db.delete_column('djeuscan_userprofile', 'feed_upstream_info') - - # Deleting field 'UserProfile.feed_portage_info' - db.delete_column('djeuscan_userprofile', 'feed_portage_info') - - # Deleting field 'UserProfile.feed_show_adds' - db.delete_column('djeuscan_userprofile', 'feed_show_adds') - - # Deleting field 'UserProfile.feed_show_removals' - db.delete_column('djeuscan_userprofile', 'feed_show_removals') - - # Deleting field 'UserProfile.feed_ignore_pre' - db.delete_column('djeuscan_userprofile', 'feed_ignore_pre') - - # Deleting field 'UserProfile.feed_ignore_pre_if_stable' - db.delete_column('djeuscan_userprofile', 'feed_ignore_pre_if_stable') - - # Deleting field 'UserProfile.email_activated' - db.delete_column('djeuscan_userprofile', 'email_activated') - - # Deleting field 'UserProfile.email_ignore_pre' - db.delete_column('djeuscan_userprofile', 'email_ignore_pre') - - # Deleting field 'UserProfile.email_ignore_pre_if_stable' - db.delete_column('djeuscan_userprofile', 'email_ignore_pre_if_stable') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py b/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py deleted file mode 100644 index c0f1525..0000000 --- a/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py +++ /dev/null @@ -1,203 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.email_every' - db.add_column('djeuscan_userprofile', 'email_every', - self.gf('django.db.models.fields.IntegerField')(default=1), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.email_every' - db.delete_column('djeuscan_userprofile', 'email_every') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py b/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py deleted file mode 100644 index 5a2e9dd..0000000 --- a/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py +++ /dev/null @@ -1,204 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.last_email' - db.add_column('djeuscan_userprofile', 'last_email', - self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2012, 8, 11, 0, 0), blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.last_email' - db.delete_column('djeuscan_userprofile', 'last_email') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_email': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py b/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py deleted file mode 100644 index e2a401b..0000000 --- a/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py +++ /dev/null @@ -1,179 +0,0 @@ -# -*- coding: utf-8 -*- -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - depends_on = ( - ('euscan_accounts', '0001_initial'), - ) - - def forwards(self, orm): - pass - - def backwards(self, orm): - pass - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py b/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py deleted file mode 100644 index 456ec7f..0000000 --- a/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Removing unique constraint on 'Version', fields ['slot', 'overlay', 'revision', 'version', 'package'] - db.delete_unique('djeuscan_version', ['slot', 'overlay', 'revision', 'version', 'package_id']) - - # Adding unique constraint on 'Version', fields ['overlay', 'revision', 'version', 'package'] - db.create_unique('djeuscan_version', ['overlay', 'revision', 'version', 'package_id']) - - def backwards(self, orm): - # Removing unique constraint on 'Version', fields ['overlay', 'revision', 'version', 'package'] - db.delete_unique('djeuscan_version', ['overlay', 'revision', 'version', 'package_id']) - - # Adding unique constraint on 'Version', fields ['slot', 'overlay', 'revision', 'version', 'package'] - db.create_unique('djeuscan_version', ['slot', 'overlay', 'revision', 'version', 'package_id']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0024_add_index_handler.py b/euscanwww/djeuscan/migrations/0024_add_index_handler.py deleted file mode 100644 index 7b4b0b3..0000000 --- a/euscanwww/djeuscan/migrations/0024_add_index_handler.py +++ /dev/null @@ -1,183 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['handler'] - db.create_index('djeuscan_version', ['handler']) - - - def backwards(self, orm): - # Removing index on 'Version', fields ['handler'] - db.delete_index('djeuscan_version', ['handler']) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0024_auto.py b/euscanwww/djeuscan/migrations/0024_auto.py deleted file mode 100644 index 02a81f6..0000000 --- a/euscanwww/djeuscan/migrations/0024_auto.py +++ /dev/null @@ -1,181 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['handler'] - db.create_index('djeuscan_version', ['handler']) - - def backwards(self, orm): - # Removing index on 'Version', fields ['handler'] - db.delete_index('djeuscan_version', ['handler']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py b/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py deleted file mode 100644 index 8416130..0000000 --- a/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'Version.alive' - db.delete_column('djeuscan_version', 'alive') - - - def backwards(self, orm): - # Adding field 'Version.alive' - db.add_column('djeuscan_version', 'alive', - self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True), - keep_default=False) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py b/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py deleted file mode 100644 index 7100301..0000000 --- a/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Category.description' - db.add_column('djeuscan_category', 'description', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - # Adding field 'Overlay.description' - db.add_column('djeuscan_overlay', 'description', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - # Adding field 'Overlay.homepage' - db.add_column('djeuscan_overlay', 'homepage', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Category.description' - db.delete_column('djeuscan_category', 'description') - - # Deleting field 'Overlay.description' - db.delete_column('djeuscan_overlay', 'description') - - # Deleting field 'Overlay.homepage' - db.delete_column('djeuscan_overlay', 'homepage') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py b/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py deleted file mode 100644 index e3d83aa..0000000 --- a/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Overlay.overlay_path' - db.add_column('djeuscan_overlay', 'overlay_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Overlay.overlay_path' - db.delete_column('djeuscan_overlay', 'overlay_path') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py b/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py deleted file mode 100644 index 594b8ac..0000000 --- a/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py +++ /dev/null @@ -1,189 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.stabilization_candidate' - db.add_column('djeuscan_version', 'stabilization_candidate', - self.gf('django.db.models.fields.DateField')(default=None, null=True, blank=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Version.stabilization_candidate' - db.delete_column('djeuscan_version', 'stabilization_candidate') - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0029_auto.py b/euscanwww/djeuscan/migrations/0029_auto.py deleted file mode 100644 index 0b873aa..0000000 --- a/euscanwww/djeuscan/migrations/0029_auto.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['stabilization_candidate'] - db.create_index('djeuscan_version', ['stabilization_candidate']) - - - def backwards(self, orm): - # Removing index on 'Version', fields ['stabilization_candidate'] - db.delete_index('djeuscan_version', ['stabilization_candidate']) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py b/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py deleted file mode 100644 index cd946b6..0000000 --- a/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Category.description' - db.alter_column('djeuscan_category', 'description', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.homepage' - db.alter_column('djeuscan_overlay', 'homepage', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.description' - db.alter_column('djeuscan_overlay', 'description', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.overlay_path' - db.alter_column('djeuscan_overlay', 'overlay_path', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)) - - def backwards(self, orm): - - # Changing field 'Category.description' - db.alter_column('djeuscan_category', 'description', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.homepage' - db.alter_column('djeuscan_overlay', 'homepage', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.description' - db.alter_column('djeuscan_overlay', 'description', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.overlay_path' - db.alter_column('djeuscan_overlay', 'overlay_path', self.gf('django.db.models.fields.CharField')(default='', max_length=256)) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py b/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py deleted file mode 100644 index 1c39724..0000000 --- a/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Version.metadata_path' - db.alter_column('djeuscan_version', 'metadata_path', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)) - - def backwards(self, orm): - - # Changing field 'Version.metadata_path' - db.alter_column('djeuscan_version', 'metadata_path', self.gf('django.db.models.fields.CharField')(default='', max_length=256)) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/__init__.py b/euscanwww/djeuscan/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/models.py b/euscanwww/djeuscan/models.py deleted file mode 100644 index e03d798..0000000 --- a/euscanwww/djeuscan/models.py +++ /dev/null @@ -1,384 +0,0 @@ -import json - -from django.db import models -from django.core.validators import RegexValidator, validate_email, URLValidator -from django.core.exceptions import ValidationError - -from django.contrib.auth.models import User - -from djeuscan.managers import PackageManager, VersionLogManager, \ - EuscanResultManager - - -validate_category = RegexValidator("^(?:\w+?-\w+?)|virtual$") -validate_name = RegexValidator("^\S+?$") -validate_revision = RegexValidator("^r\d+?$") -validate_url = URLValidator() - - -class Herd(models.Model): - """ - A herd is a collection of packages - """ - - herd = models.CharField(max_length=128, unique=True, - validators=[validate_name]) - email = models.CharField(max_length=128, blank=True, null=True, - validators=[validate_email]) - maintainers = models.ManyToManyField("Maintainer") - - def __unicode__(self): - if self.email: - return '%s <%s>' % (self.herd, self.email) - return self.herd - - def save(self, *args, **kwargs): - self.full_clean() - super(Herd, self).save(*args, **kwargs) - - -class Maintainer(models.Model): - """ - The person who maintains a package - """ - - name = models.CharField(max_length=128) - email = models.CharField(max_length=128, unique=True, - validators=[validate_email]) - - def __unicode__(self): - return '%s <%s>' % (self.name, self.email) - - def save(self, *args, **kwargs): - self.full_clean() - super(Maintainer, self).save(*args, **kwargs) - - -class Package(models.Model): - """ - A portage package - """ - - category = models.CharField(max_length=128, validators=[validate_category]) - name = models.CharField(max_length=128, validators=[validate_name]) - description = models.TextField(blank=True) - homepage = models.TextField(blank=True) - herds = models.ManyToManyField(Herd, blank=True) - maintainers = models.ManyToManyField(Maintainer, blank=True) - - # For performance, we keep pre-computed counters - n_versions = models.IntegerField(default=0) - n_packaged = models.IntegerField(default=0) - n_overlay = models.IntegerField(default=0) - - # And we also pre-compute last versions - last_version_gentoo = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_gentoo", - on_delete=models.SET_NULL - ) - last_version_overlay = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_overlay", - on_delete=models.SET_NULL - ) - last_version_upstream = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_upstream", - on_delete=models.SET_NULL - ) - - objects = PackageManager() - - class Meta: - unique_together = ['category', 'name'] - - def cp(self): - return '%s/%s' % (self.category, self.name) - - def __unicode__(self): - return self.cp() - - def save(self, *args, **kwargs): - self.full_clean() - - # Clean urls, accept only real urls - urls = [] - for url in self.homepages: - try: - validate_url(url) - except ValidationError: - pass - else: - urls.append(url) - self.homepage = " ".join(urls) - - super(Package, self).save(*args, **kwargs) - - @property - def homepages(self): - return self.homepage.split(' ') - - @property - def last_version(self): - from euscan.helpers import vercmp - - versions = [ - self.last_version_gentoo, - self.last_version_overlay, - self.last_version_upstream - ] - _cmp = lambda x, y: vercmp( - unicode(self), x.version if x else "", y.version if y else "" - ) - return sorted(versions, cmp=_cmp)[-1] - - -class Version(models.Model): - """ - Version associated to a package - """ - - package = models.ForeignKey(Package) - slot = models.CharField(max_length=128, blank=True, default="") - revision = models.CharField(max_length=128) - version = models.CharField(max_length=128) - packaged = models.BooleanField() - overlay = models.CharField(max_length=128, default='gentoo', db_index=True, - validators=[validate_name], blank=True) - urls = models.TextField(blank=True) - - vtype = models.CharField(max_length=128, blank=True) - handler = models.CharField(max_length=128, blank=True, db_index=True) - confidence = models.IntegerField(default=0) - - ebuild_path = models.CharField(blank=True, max_length=256) - metadata_path = models.CharField(null=True, blank=True, max_length=256) - - # If this is not null then the version is a stabilization candidate - stabilization_candidate = models.DateField( - blank=True, null=True, default=None, db_index=True - ) - - class Meta: - unique_together = ['package', 'revision', 'version', 'overlay'] - - @property - def tag(self): - return '%s%s%s' % ( - self.version, - "-" + self.revision if self.revision != "r0" else "", - "-" + self.overlay if self.overlay else "-upstream" - ) - - @property - def urls_list(self): - return self.urls.split() - - def cpv(self): - return '%s/%s-%s%s' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '' - ) - - def __unicode__(self): - return '%s/%s-%s%s%s [%s]' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '', - ':' + self.slot if self.slot and self.slot != '0' else '', - self.overlay or "" - ) - - def save(self, *args, **kwargs): - self.full_clean() - super(Version, self).save(*args, **kwargs) - - -class VersionLog(models.Model): - VERSION_ADDED = 1 - VERSION_REMOVED = 2 - VERSION_ACTIONS = ( - (VERSION_ADDED, 'Added'), - (VERSION_REMOVED, 'Removed') - ) - - package = models.ForeignKey(Package) - datetime = models.DateTimeField(auto_now_add=True) - slot = models.CharField(max_length=128, blank=True, default="") - revision = models.CharField(max_length=128) - version = models.CharField(max_length=128) - packaged = models.BooleanField() - overlay = models.CharField(max_length=128, default='gentoo', - validators=[validate_name], blank=True) - action = models.IntegerField(choices=VERSION_ACTIONS) - - vtype = models.CharField(max_length=128, blank=True) - - objects = VersionLogManager() - - @property - def tag(self): - return '%s%s%s' % ( - self.version, - "-" + self.revision if self.revision != "r0" else "", - "-" + self.overlay if self.overlay else "-upstream" - ) - - def __unicode__(self): - txt = '+ ' if self.action == self.VERSION_ADDED else '- ' - txt += '%s/%s-%s%s%s [%s]' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '', - ':' + self.slot if self.slot and self.slot != '0' else '', - self.overlay or "" - ) - return txt - - def save(self, *args, **kwargs): - self.full_clean() - super(VersionLog, self).save(*args, **kwargs) - - -class EuscanResult(models.Model): - package = models.ForeignKey(Package) - datetime = models.DateTimeField() - result = models.TextField(blank=True) - - scan_time = models.FloatField(null=True, blank=True) - ebuild = models.CharField(blank=True, max_length=256) - - objects = EuscanResultManager() - - class Meta: - get_latest_by = "datetime" - - def save(self, *args, **kwargs): - self.full_clean() - super(EuscanResult, self).save(*args, **kwargs) - - @property - def messages(self): - try: - result = json.loads(self.result) - except ValueError: - return self.result - - if result and self.package.cp() in result: - return result[self.package.cp()]['messages'] - else: - return "" - - def __unicode__(self): - return '[%s] %s/%s' % ( - self.datetime, self.package.category, self.package.name - ) - - -class Category(models.Model): - name = models.CharField(max_length=128, validators=[validate_category], - unique=True) - description = models.TextField(blank=True, null=True) - - class Meta: - verbose_name_plural = "categories" - - def __unicode__(self): - return self.name - - -class Overlay(models.Model): - name = models.CharField(max_length=128, validators=[validate_name], - unique=True) - description = models.TextField(blank=True, null=True) - homepage = models.TextField(blank=True, null=True) - overlay_path = models.CharField(blank=True, null=True, max_length=256) - - def __unicode__(self): - return self.name - - -class Log(models.Model): - """ - Model used for keeping data for charts - """ - - datetime = models.DateTimeField() - - # Packages up to date in the main portage tree - n_packages_gentoo = models.IntegerField(default=0) - - # Packages up to date in an overlay - n_packages_overlay = models.IntegerField(default=0) - - # Packages outdated - n_packages_outdated = models.IntegerField(default=0) - - # Versions in the main portage tree - n_versions_gentoo = models.IntegerField(default=0) - - # Versions in overlays - n_versions_overlay = models.IntegerField(default=0) - - # Upstream versions, not in the main tree or overlays - n_versions_upstream = models.IntegerField(default=0) - - def __unicode__(self): - return u'[%d:%d:%d] [%d:%d:%d]' % ( - self.n_packages_gentoo, self.n_packages_overlay, - self.n_packages_outdated, self.n_versions_gentoo, - self.n_versions_overlay, self.n_versions_upstream - ) - - def save(self, *args, **kwargs): - self.full_clean() - super(Log, self).save(*args, **kwargs) - - -class WorldLog(Log): - def __unicode__(self): - return u'world ' + Log.__unicode__(self) - - -class CategoryLog(Log): - category = models.CharField(max_length=128, validators=[validate_category]) - - def __unicode__(self): - return u'%s %s' % (self.category, Log.__unicode__(self)) - - -class HerdLog(Log): - herd = models.ForeignKey(Herd) - - def __unicode__(self): - return u'%s %s' % (self.herd, Log.__unicode__(self)) - - -class MaintainerLog(Log): - maintainer = models.ForeignKey(Maintainer) - - def __unicode__(self): - return u'%s %s' % (self.maintainer, Log.__unicode__(self)) - - -class RefreshPackageQuery(models.Model): - package = models.ForeignKey(Package) - priority = models.IntegerField(default=0) - users = models.ManyToManyField(User) - - @property - def position(self): - ordered = RefreshPackageQuery.objects.all().order_by("-priority") - for pos, obj in enumerate(ordered, start=1): - if obj == self: - return pos - - def __unicode__(self): - return u'[%d] %s' % (self.priority, self.package) - - -class ProblemReport(models.Model): - package = models.ForeignKey(Package) - version = models.ForeignKey(Version, null=True, blank=True) - subject = models.CharField(max_length=128) - message = models.TextField() - datetime = models.DateTimeField(auto_now_add=True) - - def __unicode__(self): - return u"[%s] %s" % (self.datetime, self.package) diff --git a/euscanwww/djeuscan/processing/__init__.py b/euscanwww/djeuscan/processing/__init__.py deleted file mode 100644 index f1a00c6..0000000 --- a/euscanwww/djeuscan/processing/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -class FakeLogger(object): - def __getattr__(self, key): - return lambda *x, **y: None - - -def set_verbosity_level(logger, verbosity): - import logging - - try: - verbosity = int(verbosity) - except (ValueError, TypeError): - return logger - - levels = { - 0: logging.DEBUG, - 1: logging.INFO, - 2: logging.WARNING, - 3: logging.ERROR, - 4: logging.CRITICAL - } - - if verbosity < 0: - verbosity = 0 - - if verbosity > 4: - verbosity = 4 - - logger.setLevel(levels[verbosity]) - - return logger diff --git a/euscanwww/djeuscan/processing/misc/__init__.py b/euscanwww/djeuscan/processing/misc/__init__.py deleted file mode 100644 index dc2bd59..0000000 --- a/euscanwww/djeuscan/processing/misc/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -__all__ = ["regen_rrds", "update_counters", "update_portage_trees", "stabilization_candidates"] - -from regen_rrds import regen_rrds -from update_counters import update_counters -from update_portage_trees import update_portage_trees -from stabilization_candidates import stabilization_candidates \ No newline at end of file diff --git a/euscanwww/djeuscan/processing/misc/regen_rrds.py b/euscanwww/djeuscan/processing/misc/regen_rrds.py deleted file mode 100644 index f578aa7..0000000 --- a/euscanwww/djeuscan/processing/misc/regen_rrds.py +++ /dev/null @@ -1,31 +0,0 @@ -from djeuscan.models import HerdLog, MaintainerLog, CategoryLog, WorldLog -from djeuscan import charts - -from djeuscan.processing import FakeLogger - - -def regen_rrds(logger=None): - """ - Regenerates the rrd database - """ - - if logger is None: - logger = FakeLogger() - - logger.info("Regenering RRDs for world") - for wlog in WorldLog.objects.all(): - charts.rrd_update('world', wlog.datetime, wlog) - - logger.info("Regenering RRDs for categories") - for clog in CategoryLog.objects.all(): - charts.rrd_update('category-%s' % clog.category, - clog.datetime, clog) - - logger.info("Regenering RRDs for herds") - for hlog in HerdLog.objects.all(): - charts.rrd_update('herd-%d' % hlog.herd.id, hlog.datetime, hlog) - - logger.info("Regenering RRDs for maintainers") - for mlog in MaintainerLog.objects.all(): - charts.rrd_update('maintainer-%d' % mlog.maintainer.id, - mlog.datetime, mlog) diff --git a/euscanwww/djeuscan/processing/misc/stabilization_candidates.py b/euscanwww/djeuscan/processing/misc/stabilization_candidates.py deleted file mode 100644 index 1c8f165..0000000 --- a/euscanwww/djeuscan/processing/misc/stabilization_candidates.py +++ /dev/null @@ -1,74 +0,0 @@ -import os.path -import re -from datetime import datetime, timedelta -from gentoolkit.package import Package -from dateutil.parser import parse - -from django.db.models import Q - -from gentoolkit.errors import GentoolkitFatalError - -from djeuscan.processing import FakeLogger -from djeuscan.models import Version - - -def get_version_date(version, date_limit): - """ - Returns the datetime when the version was added to Portage, - if less than date_limit - """ - changelog_path = os.path.join( - os.path.dirname(version.ebuild_path), - "ChangeLog" - ) - if not os.path.exists(changelog_path): - return - - with open(changelog_path) as changelog: - for line in changelog: - match = re.match( - r"^\*([^\(]+) \((\d\d \w\w\w \d\d\d\d)\)\s*$", line - ) - if match: - version_date = parse(match.group(2)).date() - if version_date < date_limit: - return version_date - - -def stabilization_candidates(days_to_candidate=30, logger=None): - """ - Collect stabilization candidates - """ - - if logger is None: - logger = FakeLogger() - - date_diff = (datetime.utcnow() - timedelta(days=days_to_candidate)) - date_limit = date_diff.date() - - logger.info("Collecting stabilization candidates - date_limit=%s", - str(date_limit)) - - # Set all versions to not be stabilization_candidates - #Version.objects.update(stabilization_candidate=False) - - # For every version check if it's unstable. - # If it is then check if can be a stabilization candidate - versions = Version.objects.filter(overlay='gentoo').filter( - Q(vtype='release') | Q(vtype='p')) - for version in versions: - pkg = Package(version.cpv()) - try: - keywords = pkg.environment("KEYWORDS").split() - except GentoolkitFatalError: - logger.warning("Error while processing %s!", version) - continue - if all([x.startswith("~") for x in keywords]): - version_date = get_version_date(version, date_limit) - if version_date: - logger.info('+ [s] %s @ %s', version, version_date) - # XXX: What should we save? A flag and the date?Just the date? - version.stabilization_candidate = version_date - version.save() - - logger.info("Finished collecting stabilization candidates") diff --git a/euscanwww/djeuscan/processing/misc/update_counters.py b/euscanwww/djeuscan/processing/misc/update_counters.py deleted file mode 100644 index 392b7b5..0000000 --- a/euscanwww/djeuscan/processing/misc/update_counters.py +++ /dev/null @@ -1,174 +0,0 @@ -from django.db.transaction import commit_on_success -from django.utils import timezone - -from djeuscan.models import Package, Herd, Maintainer, Version, HerdLog, \ - MaintainerLog, CategoryLog, WorldLog -from djeuscan import charts -from djeuscan.processing import FakeLogger - -from distutils.version import StrictVersion, LooseVersion - - -def _compare_versions(version1, version2): - try: - return cmp(StrictVersion(version1), StrictVersion(version2)) - # in case of abnormal version number, fall back to LooseVersion - except ValueError: - return cmp(LooseVersion(version1), LooseVersion(version2)) - - -def _add_safe(storage, key): - if key not in storage: - storage[key] = 1 - else: - storage[key] += 1 - - -def _add_last_ver(storage, version): - key = version['package_id'] - if key not in storage: - storage[key] = version - return - if version['version'].startswith('9999'): - return - if _compare_versions(storage[key]['version'], - version['version']) < 0: - storage[key] = version - - -@commit_on_success -def update_counters(fast=False, nolog=False, logger=None): - logger = logger or FakeLogger() - - now = timezone.now() - - categories = {} - herds = {} - maintainers = {} - - wlog = None - - if not nolog: - wlog = WorldLog() - wlog.datetime = now - - for cat in Package.objects.values('category').distinct(): - clog = CategoryLog() - clog.datetime = now - clog.category = cat['category'] - categories[clog.category] = clog - - for herd in Herd.objects.all(): - hlog = HerdLog() - hlog.datetime = now - hlog.herd = herd - herds[herd.id] = hlog - - for maintainer in Maintainer.objects.all(): - mlog = MaintainerLog() - mlog.datetime = now - mlog.maintainer = maintainer - maintainers[maintainer.id] = mlog - - package_queryset = Package.objects.all() - - n_versions = {} - n_packaged = {} - n_overlay = {} - - last_versions_gentoo = {} - last_versions_overlay = {} - last_versions_upstream = {} - - if not fast: - attrs = ['id', 'version', 'overlay', 'packaged', 'package_id'] - for version in Version.objects.all().values(*attrs): - overlay, packaged = version['overlay'], version['packaged'] - package_id = version['package_id'] - - _add_safe(n_versions, package_id) - - if not packaged: - _add_last_ver(last_versions_upstream, version) - continue - if overlay == 'gentoo': - _add_safe(n_packaged, package_id) - _add_last_ver(last_versions_gentoo, version) - else: - _add_safe(n_overlay, package_id) - _add_last_ver(last_versions_overlay, version) - - for package in package_queryset.select_related('herds', 'maintainers'): - if not fast: - package.n_versions = n_versions.get(package.id, 0) - package.n_packaged = n_packaged.get(package.id, 0) - package.n_overlay = n_overlay.get(package.id, 0) - - default = {'id': None} - package.last_version_gentoo_id = last_versions_gentoo.get( - package.id, default - )['id'] - package.last_version_overlay_id = last_versions_overlay.get( - package.id, default - )['id'] - package.last_version_upstream_id = last_versions_upstream.get( - package.id, default - )['id'] - package.save() - - n_packages_gentoo = int(package.n_packaged == package.n_versions) - n_packages_overlay = int(package.n_overlay and package.n_packaged \ - + package.n_overlay == package.n_versions) - n_packages_outdated = int(package.n_packaged + package.n_overlay \ - < package.n_versions) - - def update_row(storage, key): - storage[key].n_packages_gentoo += n_packages_gentoo - storage[key].n_packages_overlay += n_packages_overlay - storage[key].n_packages_outdated += n_packages_outdated - - storage[key].n_versions_gentoo += package.n_packaged - storage[key].n_versions_overlay += package.n_overlay - storage[key].n_versions_upstream += package.n_versions - \ - package.n_packaged - \ - package.n_overlay - - def update_log(storage, qs): - for row in qs: - update_row(storage, row['id']) - - if not nolog: - update_log(herds, package.herds.all().values('id')) - update_log(maintainers, package.maintainers.all().values('id')) - update_row(categories, package.category) - - wlog.n_packages_gentoo += n_packages_gentoo - wlog.n_packages_overlay += n_packages_overlay - wlog.n_packages_outdated += n_packages_outdated - - wlog.n_versions_gentoo += package.n_packaged - wlog.n_versions_overlay += package.n_overlay - wlog.n_versions_upstream += package.n_versions - \ - package.n_packaged - \ - package.n_overlay - - if nolog: - return - - for clog in categories.values(): - logger.info('+ [cl] %s', clog) - charts.rrd_update('category-%s' % clog.category, now, clog) - clog.save() - - for hlog in herds.values(): - logger.info('+ [hl] %s', hlog) - charts.rrd_update('herd-%d' % hlog.herd.id, now, hlog) - hlog.save() - - for mlog in maintainers.values(): - logger.info('+ [ml] %s', mlog) - charts.rrd_update('maintainer-%d' % mlog.maintainer.id, now, mlog) - mlog.save() - - charts.rrd_update('world', now, wlog) - wlog.save() diff --git a/euscanwww/djeuscan/processing/misc/update_portage_trees.py b/euscanwww/djeuscan/processing/misc/update_portage_trees.py deleted file mode 100644 index 55281a2..0000000 --- a/euscanwww/djeuscan/processing/misc/update_portage_trees.py +++ /dev/null @@ -1,133 +0,0 @@ -import os -import sys - -from django.conf import settings - - -def _launch_command(cmd, env=None, logger=None): - """ - Helper for launching shell commands inside tasks - """ - import subprocess - import select - - fp = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - mask = select.EPOLLIN | select.EPOLLHUP | select.EPOLLERR - - epoll = select.epoll() - epoll.register(fp.stdout.fileno(), mask) - epoll.register(fp.stderr.fileno(), mask) - - if logger: - info, error = logger.info, logger.error - else: - info = lambda x: sys.stdout.write(x + '\n') - error = lambda x: sys.stderr.write(x + '\n') - - try: - exited = False - while not exited: - events = epoll.poll(1) - for fileno, event in events: - if event & select.EPOLLIN: - if fileno == fp.stdout.fileno(): - source, out = fp.stdout, info - else: - source, out = fp.stderr, error - line = source.readline().rstrip('\n') - out("%s[%s]: %s" % (cmd[0], fp.pid, line)) - elif event & (select.EPOLLERR | select.EPOLLHUP): - exited = True - finally: - epoll.close() - - fp.wait() - - -def emerge_sync(logger): - """ - Launches an emerge --sync - """ - cmd = ["emerge", "--sync", "--root", settings.PORTAGE_ROOT, - "--config-root", settings.PORTAGE_CONFIGROOT] - return _launch_command(cmd, logger=logger) - - -def emerge_metadata(logger): - """ - Launches an emerge --metadata - """ - cmd = ["emerge", "--metadata", "--root", settings.PORTAGE_ROOT, - "--config-root", settings.PORTAGE_CONFIGROOT] - return _launch_command(cmd, logger=logger) - - -def layman_sync(logger, cache=True): - """ - Syncs Layman repos - """ - from layman import Layman - import shutil - - l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__, - stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/") - - installed_overlays = l.get_installed() - - for overlay in installed_overlays: - logger.info('Cleaning cache for overlay %s...' % overlay) - overlay_path = os.path.join(l.config['storage'], overlay) - dirs = [os.path.join(overlay_path, 'metadata/cache'), - os.path.join(overlay_path, 'metadata/md5-cache')] - files = [os.path.join(overlay_path, 'profiles/use.local.desc')] - for dirname in dirs: - if os.path.isdir(dirname): - shutil.rmtree(dirname, True) - for filename in files: - if os.path.exists(filename): - os.remove(filename) - - # FIXME, try to find a way to log layman output... - #l.sync(installed_overlays, output_results=False) - env = dict(os.environ) - env['ROOT'] = '/' - cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG] - _launch_command(cmd, env=env, logger=logger) - - cmd = ['egencache', '--jobs', "%s" % settings.EGENCACHE_JOBS, - '--rsync', '--config-root', settings.PORTAGE_CONFIGROOT, - '--update', '--update-use-local-desc'] - - for overlay in installed_overlays: - logger.info('Generating cache for overlay %s...' % overlay) - overlay_path = os.path.join(l.config['storage'], overlay) - repo_path = os.path.join(overlay_path, 'profiles/repo_name') - if not os.path.exists(repo_path): - continue - _launch_command(cmd + ['--repo', overlay], logger=logger) - - -def eix_update(logger): - """ - Launches eix-update - """ - cmd = ["eix-update"] - return _launch_command(cmd, logger=logger) - - -def update_portage_trees(logger=None): - from djeuscan.processing import FakeLogger - - logger = logger or FakeLogger() - logger.info("Running emerge --sync") - emerge_sync(logger) - emerge_metadata(logger) - logger.info("Running layman --sync") - layman_sync(logger, cache=True) - #logger.info("Running emerge --regen") - #emerge_regen(logger) - logger.info("Running eix-update") - eix_update(logger) - logger.info("Done!") diff --git a/euscanwww/djeuscan/processing/scan/__init__.py b/euscanwww/djeuscan/processing/scan/__init__.py deleted file mode 100644 index 611ee4c..0000000 --- a/euscanwww/djeuscan/processing/scan/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -__all__ = [ - "scan_metadata", "scan_portage", "scan_upstream", -] - -from scan_metadata import scan_metadata -from scan_portage import scan_portage -from scan_upstream import scan_upstream diff --git a/euscanwww/djeuscan/processing/scan/scan_metadata.py b/euscanwww/djeuscan/processing/scan/scan_metadata.py deleted file mode 100644 index 22bad3f..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_metadata.py +++ /dev/null @@ -1,255 +0,0 @@ -import os - -import portage -from gentoolkit.metadata import MetaData - -import xml.etree.cElementTree as etree - -from django.db.transaction import commit_on_success -from django.core.management.color import color_style -from django.core.exceptions import ValidationError - -from djeuscan.models import Package, Version, Herd, Maintainer -from djeuscan.processing import FakeLogger - - -class ScanMetadata(object): - def __init__(self, logger=None): - self.style = color_style() - self.logger = logger or FakeLogger() - - def get_package(self, query): - try: - return Package.objects.get(name=query) - except Package.DoesNotExist: - pass - - try: - category, package = portage.catsplit(query) - return Package.objects.get(category=category, name=package) - except Package.DoesNotExist: - pass - - try: - category, package, ver, rev = portage.catpkgsplit(query) - return Package.objects.get(category=category, name=package) - except Package.DoesNotExist: - pass - - return None - - def metadata_from_db(self, query, pkg=None): - if not pkg: - pkg = self.get_package(query) - - try: - version = Version.objects.filter(package=pkg).\ - values('metadata_path').order_by('version', 'revision')[0] - except IndexError: - return pkg, None - - if not version['metadata_path']: - return pkg, None - return pkg, MetaData(version['metadata_path']) - - def metadata_from_portage(self, query, pkg=None): - from gentoolkit.query import Query - - matches = Query(query).smart_find( - in_installed=True, - in_porttree=True, - in_overlay=True, - include_masked=True, - show_progress=False, - no_matches_fatal=False, - ) - - if not matches: - self.logger.error( - self.style.ERROR("Unknown package '%s'" % query) - ) - return pkg, None - - matches = sorted(matches) - package = matches.pop() - if '9999' in package.version and len(matches): - package = matches.pop() - - if not pkg: - pkg, created = Package.objects.get_or_create( - category=package.category, name=package.name - ) - else: - created = False - - if created: - self.logger.info('+ [p] %s/%s' % (pkg.category, pkg.name)) - - return pkg, package.metadata - - def scan(self, query=None, pkg=None): - try: - metadata = None - pkg, metadata = self.metadata_from_db(query, pkg) - - if not metadata: - pkg, metadata = self.metadata_from_portage(query, pkg) - - if not metadata: - return - except Exception as e: - if pkg: - self.logger.error( - self.style.ERROR('%s/%s: %s' % - (pkg.category, pkg.name, str(e))) - ) - else: - self.logger.error( - self.style.ERROR('%s: %s' % (query, str(e))) - ) - return - - herds = dict( - [(herd[0], herd) for herd in metadata.herds(True)] - ) - maintainers = dict( - [(m.email, m) for m in metadata.maintainers()] - ) - - existing_herds = [h.herd for h in pkg.herds.all()] - new_herds = set(herds.keys()).difference(existing_herds) - old_herds = set(existing_herds).difference(herds.keys()) - - existing_maintainers = [m.email for m in pkg.maintainers.all()] - new_maintainers = set(maintainers.keys()).\ - difference(existing_maintainers) - old_maintainers = set(existing_maintainers).\ - difference(maintainers.keys()) - - for herd in pkg.herds.all(): - if herd.herd in old_herds: - pkg.herds.remove(herd) - - for herd in new_herds: - herd = self.store_herd(*herds[herd]) - pkg.herds.add(herd) - - for maintainer in pkg.maintainers.all(): - email = maintainer.email - name = maintainer.name - if email in old_maintainers: - pkg.maintainers.remove(maintainer) - if (email in maintainers and - email == name and - maintainers[email].name != name and - maintainers[email].name): - maintainer.name = maintainers[email].name - maintainer.save() - - for maintainer in new_maintainers: - maintainer = maintainers[maintainer] - try: - maintainer = self.store_maintainer( - maintainer.name, maintainer.email - ) - pkg.maintainers.add(maintainer) - except ValidationError: - self.logger.error( - self.style.ERROR("Bad maintainer: '%s' '%s'" % \ - (maintainer.name, maintainer.email)) - ) - - pkg.save() - - def store_herd(self, name, email): - if not name: - name = '{nil}' - name = name.strip("\r").strip("\n").strip("\t").strip() - - herd, created = Herd.objects.get_or_create( - herd=name, - defaults={"email": email} - ) - - if created: - self.logger.info('+ [h] %s <%s>' % (name, email)) - - herd.email = email - herd.save() - - return herd - - def store_maintainer(self, name, email): - if not name: - name = email - if not name: - name = '{nil}' - - maintainer, created = Maintainer.objects.get_or_create( - email=email, - defaults={"name": name} - ) - - if created: - self.logger.info( - '+ [m] %s <%s>' % (name.encode('utf-8'), email) - ) - return maintainer - - def populate_herds_and_maintainers(self, herds_xml_path=None): - self.logger.info("Populating herds and maintainers from herds.xml...") - - herds_xml_path = herds_xml_path or os.path.join( - portage.settings["PORTDIR"], "metadata", "herds.xml" - ) - try: - self._herdstree = etree.parse(herds_xml_path) - except IOError: - return None - - for herd_node in self._herdstree.getiterator('herd'): - herd_name = herd_node.findtext('name') - herd_email = herd_node.findtext('email') - - try: - herd = self.store_herd(herd_name, herd_email) - except ValidationError: # just skip invalid data - continue - - herd.maintainers.clear() # clear previous data - - for maintainer_node in herd_node: - if maintainer_node.tag == "maintainer": - maintainer_name = maintainer_node.findtext('name') - maintainer_email = maintainer_node.findtext('email') - - try: - maintainer = self.store_maintainer( - maintainer_name, maintainer_email - ) - except ValidationError: - self.logger.error( - self.style.ERROR("Bad maintainer: '%s' '%s'" % \ - (maintainer_name, maintainer_email)) - ) - - herd.maintainers.add(maintainer) - - -@commit_on_success -def scan_metadata(packages=None, category=None, logger=None, populate=False): - scan_handler = ScanMetadata(logger=logger) - - if category: - packages = Package.objects.filter(category=category) - elif packages is None: - packages = Package.objects.all() - - if populate: - scan_handler.populate_herds_and_maintainers() - - for pkg in packages: - if isinstance(pkg, Package): - scan_handler.scan('%s/%s' % (pkg.category, pkg.name), pkg) - else: - scan_handler.scan(pkg) diff --git a/euscanwww/djeuscan/processing/scan/scan_portage.py b/euscanwww/djeuscan/processing/scan/scan_portage.py deleted file mode 100644 index 857fce2..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_portage.py +++ /dev/null @@ -1,450 +0,0 @@ -import subprocess - -import os -import sys - -import portage - -from gentoolkit.metadata import MetaData - -from layman import Layman - -from xml.etree.ElementTree import iterparse, ParseError - -from django.db.transaction import commit_on_success -from django.db import models -from django.core.management.color import color_style -from django.conf import settings - -from euscan.version import get_version_type - -from djeuscan.processing import FakeLogger -from djeuscan.models import Package, Version, VersionLog, Category, Overlay - - -class ScanPortage(object): - def __init__(self, logger=None, no_log=False, purge_packages=False, - purge_versions=False, upstream=False): - self.logger = logger or FakeLogger() - self.no_log = no_log - self.purge_packages = purge_packages - self.purge_versions = purge_versions - self.upstream = upstream - - self.style = color_style() - - self._cache = {'packages': {}, 'versions': {}} - self._overlays = None - self._packages_updated = set() - self._versions = set() - self._versions_seen = set() - - def packages_updated(self): - return list(self._packages_updated) - - def hash_package(self, category, name): - return '%s/%s' % (category, name) - - def cache_store_package(self, package): - key = self.hash_package(package.category, package.name) - self._cache['packages'][key] = package - - def cache_get_package(self, category, name): - return self._cache['packages'].get( - self.hash_package(category, name) - ) - - def hash_version(self, category, name, version, revision, - overlay): - key = '%s/%s-%s-r%s %s' % (category, name, - version, revision, - overlay) - return key - - def cache_get_version(self, category, name, version, revision, - overlay): - key = self.hash_version(category, name, version, revision, - overlay) - return self._cache['versions'].get(key) - - def cache_store_version(self, version): - key = self.hash_version( - version.package.category, version.package.name, version.version, - version.revision, version.overlay - ) - self._cache['versions'][key] = version - self._versions.add(version) - - def scan_gentoopm(self, query, category=None): - import gentoopm - - pm = gentoopm.get_package_manager() - - if category: - packages = pm.stack.filter(key_category=category) - elif query: - packages = pm.stack.filter(query) - else: - packages = pm.stack - - package = {} - package_name = None - - for p in packages: - pkg = p.key.package - - if pkg != package_name: - if package_name: - yield package - package_name = pkg - package['package'] = p.key.package - package['category'] = p.key.category - package['homepage'] = ' '.join(p.homepages) - package['description'] = p.description - package['versions'] = [] - package['versions'].append( - (p._cpv, p.slot, p.repository or 'gentoo') - ) - - if package_name: - yield package - - def scan_eix_xml(self, query, category=None): - cmd = ['eix', '--xml'] - env = os.environ - env['XML_OVERLAY'] = 'true' - if query: - cmd.extend(['--exact', query]) - if category: - cmd.extend(['-C', category]) - - sub = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE) - output = sub.stdout - - try: - parser = iterparse(output, ["start", "end"]) - parser.next() # read root tag just for testing output - except ParseError: - if query: - msg = "Unknown package '%s'" % query - else: - msg = "No packages." - self.logger.error(self.style.ERROR(msg)) - return - - package = {'versions': []} - category = "" - - for event, elem in parser: - if event == "start": # on tag opening - if elem.tag == "category": - category = elem.attrib["name"] - elif elem.tag == "package": - package["package"] = elem.attrib["name"] - package["category"] = category - elif elem.tag in ["description", "homepage"]: - package[elem.tag] = elem.text or "" - elif elem.tag == "version": - # append version data to versions - cpv = "%s/%s-%s" % ( - package["category"], - package["package"], - elem.attrib["id"] - ) - slot = elem.attrib.get("slot", "0") - overlay = elem.attrib.get("repository", "gentoo") - overlay_path = elem.attrib.get("overlay", None) - package["versions"].append( - (cpv, slot, overlay, overlay_path) - ) - - elif event == "end": # on tag closing - if elem.tag == "package": - # clean old data - yield package - package = {"versions": []} - - if elem.tag == "category": - # clean old data - category = "" - elem.clear() - - def scan(self, query=None, category=None): - for data in self.scan_eix_xml(query, category): - #for data in self.scan_gentoopm(query, category): - cat, pkg = data['category'], data['package'] - package = self.store_package( - cat, pkg, data['homepage'], data['description'] - ) - - new_version = False - for cpv, slot, overlay, overlay_path in data['versions']: - obj, created = self.store_version( - package, cpv, slot, overlay, overlay_path - ) - self._versions_seen.add(obj) - new_version = created or new_version - - # If the package has at least one new version scan upstream for it - if new_version: - self._packages_updated.add(package) - - self.purge_old_versions() - self.purge_old_packages() - - def store_package(self, cat, pkg, homepage, description): - created = False - obj = self.cache_get_package(cat, pkg) - - if not obj: - obj, created = Package.objects.get_or_create( - category=cat, - name=pkg, - defaults={"homepage": homepage, "description": description}, - ) - self.cache_store_package(obj) - - if created: - self.logger.info('+ [p] %s/%s' % (cat, pkg)) - - return obj - - def store_version(self, package, cpv, slot, overlay, overlay_path): - cat, pkg, ver, rev = portage.catpkgsplit(cpv) - if not overlay: - overlay = 'gentoo' - - created = False - obj = self.cache_get_version( - package.category, package.name, ver, rev, overlay - ) - - overlay_path = overlay_path or portage.settings["PORTDIR"] - package_path = os.path.join(overlay_path, package.category, package.name) - ebuild_path = os.path.join(package_path, "%s.ebuild" % cpv.split("/")[-1]) - metadata_path = os.path.join(package_path, "metadata.xml") - if not os.path.exists(metadata_path): - metadata_path = None - - if not obj: - obj, created = Version.objects.get_or_create( - package=package, - revision=rev, - version=ver, - overlay=overlay, - defaults={ - "slot": slot, - "packaged": True, - "vtype": get_version_type(ver), - "confidence": 100, - "handler": "portage", - "ebuild_path": ebuild_path, - "metadata_path": metadata_path, - } - ) - if not created: # Created objects have defaults values - if obj.slot != slot or obj.package != True: - obj.slot = slot - obj.packaged = True - obj.save() - - if created: - self.cache_store_version(obj) - - # nothing to do (note: it can't be an upstream version because - # overlay can't be empty here) - if not created: - return obj, created - - # New version created - self.logger.info('+ [v] %s' % (obj)) - - if overlay == 'gentoo': - package.n_packaged += 1 - else: - package.n_overlay += 1 - package.n_versions += 1 - package.save() - - if not self.no_log: - VersionLog.objects.create( - package=obj.package, - action=VersionLog.VERSION_ADDED, - slot=obj.slot, - revision=obj.revision, - version=obj.version, - overlay=obj.overlay, - vtype=obj.vtype, - ) - - return obj, created - - def purge_old_packages(self): - if not self.purge_packages: - return - - packages = Package.objects.filter(n_packaged=0, n_overlay=0) - - for package in packages: - self.logger.info('- [p] %s' % (package)) - package.delete() - - def version_hack(self, version): - try: - if version.package.last_version_gentoo: - version.package.last_version_gentoo.pk - if version.package.last_version_overlay: - version.package.last_version_overlay.pk - if version.package.last_version_upstream: - version.package.last_version_upstream.pk - except Version.DoesNotExist: - version.package.last_version_gentoo = None - version.package.last_version_overlay = None - version.package.last_version_upstream = None - - def purge_old_versions(self): - if not self.purge_versions: - return - - versions = self._versions.difference(self._versions_seen) - - for version in versions: - self.logger.info('- [v] %s' % (version)) - - if version.packaged == False: - continue # Not our job - - # Fix last_version_ stuff that is sometime broken - self.version_hack(version) - - if version.overlay == 'gentoo': - version.package.n_packaged -= 1 - else: - version.package.n_overlay -= 1 - version.package.n_versions -= 1 - version.package.save() - - if self.no_log: - continue - - VersionLog.objects.create( - package=version.package, - action=VersionLog.VERSION_REMOVED, - slot=version.slot, - revision=version.revision, - version=version.version, - overlay=version.overlay, - vtype=version.vtype, - ) - # remove from last version ? - version.delete() - - def prefetch(self, packages, category): - self.logger.info('Prefetching current objects...') - - ppackages = Package.objects.all() - pversions = Version.objects.filter(packaged=True)\ - .select_related('package').all() - - if category: - ppackages = ppackages.filter(category=category) - pversions = pversions.filter(package__category=category) - if packages: - ids = [package.id for package in packages] - ppackages = ppackages.filter(pk__in=ids) - pversions = pversions.filter(package__pk__in=ids) - - for package in ppackages: - self.cache_store_package(package) - for version in pversions: - self.cache_store_version(version) - - self.logger.info('done') - - -def populate_categories(logger): - portdir = portage.settings["PORTDIR"] - for cat in portage.settings.categories: - try: - meta = MetaData(os.path.join(portdir, cat, "metadata.xml")) - desc = meta.descriptions()[0] - except (IOError, IndexError): - desc = "" - obj, created = Category.objects.get_or_create(name=cat) - obj.description = desc.strip() - obj.save() - if created: - logger.info("+ [c] %s", cat) - - -def populate_overlays(logger): - l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__, - stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/") - installed_overlays = l.get_installed() - info = l.get_all_info(installed_overlays) - for overlay in installed_overlays: - if not overlay: - continue - obj, created = Overlay.objects.get_or_create(name=overlay) - if overlay in info and type(info[overlay]) == dict: - obj.description = info[overlay]["description"] - obj.homepage = info[overlay]["homepage"] - obj.overlay_path = os.path.join(l.config['storage'], overlay) - obj.save() - if created: - logger.info("+ [o] %s", overlay) - - -@commit_on_success -def scan_portage(packages=None, category=None, no_log=False, upstream=False, - purge_packages=False, purge_versions=False, logger=None): - - logger = logger or FakeLogger() - - scan_handler = ScanPortage( - logger=logger, - no_log=no_log, - purge_packages=purge_packages, - purge_versions=purge_versions - ) - - logger.info('Scanning portage tree...') - - if not packages: - qs = Package.objects.all() - if category: - qs = qs.filter(category=category) - prefetch_packages = qs - else: - results = [] - for package in packages: - if isinstance(package, Package): - results.append(package) - else: - if '/' in package: - cat, pkg = portage.catsplit(package) - qs = Package.objects.filter(category=cat, name=pkg) - else: - qs = Package.objects.filter(name=package) - for package in qs: - results.append(package) - prefetch_packages = results - - scan_handler.prefetch(prefetch_packages, category) - - if not packages and category: - scan_handler.scan(category=category) - elif not packages: - scan_handler.scan() - else: - for pkg in packages: - if isinstance(pkg, Package): - scan_handler.scan('%s/%s' % (pkg.category, pkg.name)) - else: - scan_handler.scan(pkg) - - populate_categories(logger) - populate_overlays(logger) - - logger.info('Done.') - return scan_handler.packages_updated() diff --git a/euscanwww/djeuscan/processing/scan/scan_upstream.py b/euscanwww/djeuscan/processing/scan/scan_upstream.py deleted file mode 100644 index dc7ba1b..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_upstream.py +++ /dev/null @@ -1,176 +0,0 @@ -import portage - -from django.utils import timezone -from django.db.transaction import commit_on_success - -from euscan import CONFIG, output -from euscan.scan import scan_upstream as euscan_scan_upstream - -from djeuscan.processing import FakeLogger -from djeuscan.models import Package, Version, EuscanResult, VersionLog - - -class ScanUpstream(object): - def __init__(self, logger=None, purge_versions=False): - self.logger = logger or FakeLogger() - self.purge_versions = purge_versions - self._versions = set() - self._versions_seen = set() - - def scan(self, package): - CONFIG["format"] = "dict" - output.clean() - output.set_query(package) - - euscan_scan_upstream(package) - - out = output.get_formatted_output() - out_json = output.get_formatted_output("json") - - try: - cpv = out[package]["metadata"]["cpv"] - scan_time = out[package]["metadata"]["scan_time"] - ebuild = out[package]["metadata"]["ebuild"] - except KeyError: - self.logger.error( - "Error while scanning upstream for package %s!", - package - ) - self.logger.debug( - "Error %s", - out_json - ) - return {} - - obj = self.store_package(cpv) - for res in out[package]["result"]: - if not res['version']: - continue - self.store_version( - obj, - res["version"], - " ".join(res["urls"]), - res["type"], - res["handler"], - res["confidence"], - ) - - self.store_result(obj, out_json, scan_time, ebuild) - - def store_result(self, package, formatted_log, scan_time, ebuild): - # Remove previous logs - EuscanResult.objects.filter(package=package).delete() - - obj = EuscanResult() - obj.package = package - obj.result = formatted_log - obj.datetime = timezone.now() - obj.scan_time = scan_time - obj.ebuild = ebuild - obj.save() - - def store_package(self, cpv): - cat, pkg, ver, rev = portage.catpkgsplit(cpv) - - obj, created = Package.objects.get_or_create(category=cat, name=pkg) - - if created: - self.logger.info('+ [p] %s/%s' % (cat, pkg)) - - versions = Version.objects.filter( - package=obj, packaged=False - ) - for version in versions: - self._versions.add(version) - - return obj - - def store_version(self, package, ver, url, version_type, handler, - confidence): - obj, created = Version.objects.get_or_create( - package=package, - revision='r0', - version=ver, - overlay='', - defaults={"slot": '', "urls": url, "packaged": False, - "vtype": version_type, "handler": handler, - "confidence": confidence} - ) - - if not created: - obj.slot = '' - obj.urls = url - obj.packaged = False - obj.save() - - self._versions_seen.add(obj) - - # If it's not a new version, just update the object and continue - if not created: - return - - self.logger.info('+ [u] %s %s' % (obj, url)) - - VersionLog.objects.create( - package=package, - action=VersionLog.VERSION_ADDED, - slot='', - revision='r0', - version=ver, - overlay='', - vtype=version_type, - ) - - package.n_versions += 1 - package.save() - - def purge_old_versions(self): - if not self.purge_versions: - return - - versions = self._versions.difference(self._versions_seen) - for version in versions: - if version.packaged == True: - continue # Not our job - VersionLog.objects.create( - package=version.package, - action=VersionLog.VERSION_REMOVED, - slot=version.slot, - revision=version.revision, - version=version.version, - overlay=version.overlay, - vtype=version.vtype, - ) - - version.package.n_versions -= 1 - version.package.save() - - self.logger.info('- [u] %s %s' % (version, version.urls)) - - version.delete() - - -@commit_on_success -def scan_upstream(packages=None, purge_versions=False, - logger=None): - logger = logger or FakeLogger() - - scan_handler = ScanUpstream(logger=logger, purge_versions=purge_versions) - - logger.info('Scanning upstream...') - - if not packages: - packages = Package.objects.all() - - for pkg in packages: - try: - package = '%s/%s' % (pkg.category, pkg.name) - except AttributeError: - package = pkg - - logger.info('Scanning %s' % package) - scan_handler.scan(package) - - scan_handler.purge_old_versions() - - logger.info('Done.') diff --git a/euscanwww/djeuscan/tasks.py b/euscanwww/djeuscan/tasks.py deleted file mode 100644 index 1929593..0000000 --- a/euscanwww/djeuscan/tasks.py +++ /dev/null @@ -1,390 +0,0 @@ -""" -Celery tasks for djeuscan -""" - -from datetime import datetime - -from celery.task import task, group - -#import portage - -from django.conf import settings -from django.template.loader import render_to_string -from django.core.mail import send_mail -from django.db.models import Q - -from euscan.version import gentoo_unstable - -from djeuscan.models import Package, RefreshPackageQuery, VersionLog -from djeuscan.processing import scan, misc - -from euscan_accounts.helpers import get_account_versionlogs, get_user_fav_infos -from euscan_accounts.models import UserProfile - - -class TaskFailedException(Exception): - """ - Exception for failed tasks - """ - pass - - -def group_one(task, seq, *args, **kwargs): - """ - Create a group of tasks, each task handle one element of seq - """ - tasks = [] - - if "attr_name" in kwargs: - attr_name = kwargs['attr_name'] - del kwargs["attr_name"] - else: - attr_name = None - - for elem in seq: - if attr_name: - kwargs[attr_name] = elem - tasks.append(task.subtask(args=list(args), kwargs=dict(kwargs), - immutable=True)) - else: - tasks.append(task.subtask(args=[elem] + list(args), - kwargs=dict(kwargs), immutable=True)) - - return group(tasks) - - -def group_chunks(task, seq, n, *args, **kwargs): - """ - Creates a group of tasks, each subtask has elements to handle - """ - tasks = [] - for i in xrange(0, len(seq), n): - tasks.append( - task.subtask(args=[seq[i:i + n]] + list(args), kwargs=kwargs, - immutable=True) - ) - return group(tasks) - - -@task -def regen_rrds(): - """ - Regenerate RRDs - """ - misc.regen_rrds() - return True - - -@task -def update_counters(fast=False): - """ - Updates counters - """ - logger = update_counters.get_logger() - logger.info("Updating counters (fast=%s)...", fast) - misc.update_counters(fast=fast) - logger.info("Done") - return True - - -@task -def scan_metadata(packages=[], category=None, populate=False): - """ - Scans metadata for the given set of packages - """ - logger = scan_metadata.get_logger() - - if packages: - logger.info("Starting metadata scan for %d packages...", - len(packages)) - elif category: - logger.info("Starting metadata scan for %s...", - category) - else: - logger.info("Starting metadata scan...") - - scan.scan_metadata( - packages=packages, - category=category, - logger=logger, - populate=populate, - ) - return True - - -@task -def scan_portage(packages=None, category=None, - no_log=False, purge_packages=False, - purge_versions=False): - """ - Scans portage for the given set of packages - """ - logger = scan_portage.get_logger() - - if packages: - logger.info("Starting portage scan for %d packages...", - len(packages)) - elif category: - logger.info("Starting portage scan for %s...", - category) - else: - logger.info("Starting portage scan...") - - return scan.scan_portage( - packages=packages, - category=category, - no_log=no_log, - purge_packages=purge_packages, - purge_versions=purge_versions, - logger=logger, - ) - - -@task -def scan_upstream(packages=[], purge_versions=False): - """ - Scans upstream for the given set of packages - """ - logger = scan_upstream.get_logger() - - if packages: - logger.info("Starting upstream scan subtask for %d packages...", - len(packages)) - else: - logger.info("Starting upstream scan...") - - scan.scan_upstream( - packages=packages, - purge_versions=purge_versions, - logger=logger, - ) - return True - - -@task -def update_portage_trees(): - """ - Update portage tree - """ - logger = update_portage_trees.get_logger() - misc.update_portage_trees(logger=logger) - return True - - -@task -def update_portage(packages=None): - #categories = portage.settings.categories - - # Workaround for celery bug when chaining groups - update_portage_trees() - updated_packages = scan_portage( - packages=None, - purge_packages=True, - purge_versions=True, - ) - scan_metadata(packages=None, populate=True) - - if not updated_packages: - # Simple/Fast path - update_counters(fast=False) - return - - ( - group_chunks(scan_upstream, updated_packages, - settings.TASKS_UPSTREAM_GROUPS, - purge_versions=True) | - update_counters.si(fast=False) - )() - - """ Currently broken - update_portage_trees() - scan_metadata(packages=None, populate=True) - ( - group_one(scan_portage, categories, - attr_name="category", purge_packages=True, - purge_versions=True) | - group_one(scan_metadata, categories, - attr_name="category") | - update_counters.si(fast=True) - )() - """ - return True - - -@task -def update_upstream(): - if settings.TASKS_UPSTREAM_GROUPS >= 1: - packages = Package.objects.all().order_by('pk') # .order_by('?') ? - - scan_upstream_sub = group_chunks(scan_upstream, packages, - settings.TASKS_UPSTREAM_GROUPS, - purge_versions=True) - else: - scan_upstream_sub = scan_upstream.si(purge_versions=True) - - ( - scan_upstream_sub | - update_counters.si(fast=False) | - send_update_email.si() - )() - return True - - -@task -def scan_package(package): - logger = scan_package.get_logger() - logger.info("Scanning package %s", package) - scan_portage([package], purge_packages=True, purge_versions=True) - scan_metadata([package]) - scan_upstream([package], purge_versions=True) - return True - - -@task(rate_limit="1/m") -def scan_package_user(package): - scan_package(package) - return True - - -@task(rate_limit="1/m") -def consume_refresh_queue(locked=False): - """ - Satisfies user requests for package refreshing, runs every minute - """ - logger = consume_refresh_queue.get_logger() - logger.info('Consuming package refresh request queue...') - - try: - query = RefreshPackageQuery.objects.all().order_by('-priority')[0] - pkg = query.package - query.delete() - scan_package_user.delay(pkg) - logger.info('Selected: %s' % pkg) - except IndexError: - return - - if RefreshPackageQuery.objects.count(): - logger.info('Restarting myself in 60s') - consume_refresh_queue.apply_async( - kwargs={'locked': True}, countdown=60 - ) - return True - - -@task(max_retries=10, default_retry_delay=10 * 60) -def send_user_email(address, subject, text): - try: - send_mail( - subject, text, settings.DEFAULT_FROM_EMAIL, [address], - fail_silently=False - ) - except Exception, exc: - raise send_user_email.retry(exc=exc) - return True - - -@task -def process_emails(profiles, only_if_vlogs=False): - for profile in profiles: - now = datetime.now() - user = profile.user - - vlogs = get_account_versionlogs(profile) - vlogs = vlogs.filter( - datetime__gt=profile.last_email, - overlay="", # only upstream versions - action=VersionLog.VERSION_ADDED, # only adds - ) - if profile.email_ignore_pre: - vlogs = vlogs.exclude(vtype__in=gentoo_unstable) - if profile.email_ignore_pre_if_stable: - vlogs = vlogs.exclude( - ~Q(package__last_version_gentoo__vtype__in=gentoo_unstable), - vtype__in=gentoo_unstable - ) - - if only_if_vlogs and not vlogs.count(): - continue - - vlogs = vlogs.order_by("-datetime") - - infos = get_user_fav_infos(user) - infos["user"] = user - infos["vlogs"] = vlogs - - mail_text = render_to_string( - "euscan/accounts/euscan_email.txt", - infos - ) - - send_user_email.delay( - user.email, "euscan updates - %s" % str(now.date()), mail_text - ) - - profile.last_email = now - profile.save(force_update=True) - return True - - -@task -def send_update_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_SCAN, - email_activated=True - ) - group_chunks( - process_emails, - profiles, - settings.TASKS_EMAIL_GROUPS, - only_if_vlogs=True - )() - return True - - -@task -def send_weekly_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_WEEKLY, - email_activated=True - ) - group_chunks(process_emails, profiles, settings.TASKS_EMAIL_GROUPS)() - return True - - -@task -def send_monthly_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_MONTHLY, - email_activated=True - ) - group_chunks(process_emails, profiles, settings.TASKS_EMAIL_GROUPS)() - return True - - -@task -def collect_stabilization_candidates(): - """ - This task collects the packages that are stabilization candidates - """ - logger = collect_stabilization_candidates.get_logger() - misc.stabilization_candidates( - days_to_stabilization=settings.DAYS_TO_STABILIZATION, - logger=logger - ) - - -admin_tasks = [ - regen_rrds, - update_counters, - scan_metadata, - scan_portage, - scan_upstream, - update_portage_trees, - update_portage, - update_upstream, - scan_package, - send_update_email, - send_weekly_email, - send_monthly_email, - collect_stabilization_candidates, -] diff --git a/euscanwww/djeuscan/templates/_base.html b/euscanwww/djeuscan/templates/_base.html deleted file mode 100644 index dedc70e..0000000 --- a/euscanwww/djeuscan/templates/_base.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -{% load url from future %} -{% load timedelta %} - - - - {% block title %}euscan{% endblock %} - - {% block meta %} - - {% endblock %} - {% block css %} - - - {% endblock %} - {% block javascript %} - {% endblock %} - - - -
-
-
-
-
- {% block content %}{% endblock %} -
-
-
-
-
- -
-
-
-
- - - diff --git a/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html b/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html deleted file mode 100644 index db2680b..0000000 --- a/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html +++ /dev/null @@ -1,81 +0,0 @@ -{% extends "admin/change_list.html" %} - -{% load url from future %} - -{% block object-tools %} -
- -
- Launch task -
- - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/_categories_table.html b/euscanwww/djeuscan/templates/euscan/_categories_table.html deleted file mode 100644 index d3571e2..0000000 --- a/euscanwww/djeuscan/templates/euscan/_categories_table.html +++ /dev/null @@ -1,34 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for category in categories %} - - - {% package_cols category %} - {% if extras %} - - {% endif %} - - {% endfor %} - -
CategorygentoooverlaysupstreamfreshnessGraphs
- {{ category.category }} - {% package_bar category %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_datatable.html b/euscanwww/djeuscan/templates/euscan/_datatable.html deleted file mode 100644 index 6af9ba9..0000000 --- a/euscanwww/djeuscan/templates/euscan/_datatable.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "_base.html" %} - -{% block css %} -{{ block.super }} - -{% endblock %} - -{% block javascript %} -{{ block.super }} - - - - -{% endblock %} - -{% block menus %} -{{ block.super }} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/_herds_table.html b/euscanwww/djeuscan/templates/euscan/_herds_table.html deleted file mode 100644 index 9f3f337..0000000 --- a/euscanwww/djeuscan/templates/euscan/_herds_table.html +++ /dev/null @@ -1,36 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for herd in herds %} - - - {% package_cols herd %} - {% if extras %} - - {% endif %} - - {% endfor %} - -
HerdgentoooverlaysupstreamfreshnessGraphs
- - {{ herd.herds__herd }} - - {% package_bar herd %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_maintainers_table.html b/euscanwww/djeuscan/templates/euscan/_maintainers_table.html deleted file mode 100644 index 665e3e8..0000000 --- a/euscanwww/djeuscan/templates/euscan/_maintainers_table.html +++ /dev/null @@ -1,42 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for maintainer in maintainers %} - - - {% package_cols maintainer %} - - {% if extras %} - - {% endif %} - - - {% endfor %} - -
MaintainergentoooverlaysupstreamfreshnessGraphs
- - {% if maintainer.maintainers__name != maintainer.maintainers__email %} - {{ maintainer.maintainers__name }} <{{ maintainer.maintainers__email }}> - {% else %} - {{ maintainer.maintainers__name }} - {% endif %} - - {% package_bar maintainer %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_overlays_table.html b/euscanwww/djeuscan/templates/euscan/_overlays_table.html deleted file mode 100644 index 68409ca..0000000 --- a/euscanwww/djeuscan/templates/euscan/_overlays_table.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load url from future %} - - - - - - - - - {% for overlay in overlays %} - - - - {% endfor %} - -
Overlay
- - {{ overlay }} - -
diff --git a/euscanwww/djeuscan/templates/euscan/_package_bar.html b/euscanwww/djeuscan/templates/euscan/_package_bar.html deleted file mode 100644 index b9fc03f..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_bar.html +++ /dev/null @@ -1,9 +0,0 @@ -{% load mul %} -{% load sub %} -{% load div %} - -
-
-
-
-
diff --git a/euscanwww/djeuscan/templates/euscan/_package_cols.html b/euscanwww/djeuscan/templates/euscan/_package_cols.html deleted file mode 100644 index 540a8c1..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_cols.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load djeuscan_helpers %} -{% load mul %} -{% load sub %} -{% load div %} - -{{ infos.n_packaged }} - -{% if infos.n_overlay == 0 or infos.n_overlay <= infos.n_packaged %} - -{% elif infos.n_overlay < infos.n_packaged %} - -{% else %} - -{% endif %} - {{ infos.n_overlay }} - - -{% if infos.n_versions == infos.n_packaged|add:infos.n_overlay %} - -{% elif infos.n_versions < infos.n_packaged|add:infos.n_overlay|mul:2 %} - -{% else %} - -{% endif %} -{{ infos.n_versions|sub:infos.n_packaged|sub:infos.n_overlay }} - - - - {{ infos.n_packaged|add:infos.n_overlay|div:infos.n_versions|mul:100|floatformat:"0" }} - diff --git a/euscanwww/djeuscan/templates/euscan/_package_details.html b/euscanwww/djeuscan/templates/euscan/_package_details.html deleted file mode 100644 index 64f8f3b..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_details.html +++ /dev/null @@ -1,125 +0,0 @@ -{% load djeuscan_helpers %} -{% load url from future %} - -
- {% if package.description %} -
Description
-
{{ package.description }}
- {% endif %} - {% if package.homepage %} -
Homepage
-
- {% for homepage in package.homepages %} - {{ homepage }}
- {% endfor %} -
- {% endif %} - {% if package.herds.all %} -
Herds
-
- {% for herd in package.herds.all %} -

- - {{ herd.herd }} - - <{{ herd.email }}> -

- {% endfor %} -
- {% endif %} - {% if package.maintainers.all %} -
Maintainers
-
- {% for maintainer in package.maintainers.all %} -

- {% if maintainer.name != maintainer.email %} - - {{ maintainer.name }} - - <{{ maintainer.email }}> - {% else %} - - {{ maintainer.email }} - - {% endif %} -

- {% endfor %} -
-
Q&A
-
- -
- {% endif %} - {% if packaged %} -
Packaged Versions
-
- -
- {% endif %} - {% if upstream %} -
Upstream versions
-
-
    - {% for version in upstream %} -
  • - upstream - - {% if version.vtype and not version.vtype|is_stable %} - unstable - {% endif %} - - {{ version.version }} - - {% for url in version.urls_list %} - {{ url }} - {% endfor %} - ({% if version.handler != "generic" %}{{ version.handler }} - {% endif %}{{ version.confidence }}%) -
  • - {% endfor %} -
-
- {% endif %} - {% include "euscan/_package_vlogs.html" %} - {% if log %} -
euscan log
-
-

Date: {{ log.datetime }}

-
{{ msg|ansi_to_html|safe }}
-
- {% endif %} -
diff --git a/euscanwww/djeuscan/templates/euscan/_package_vlogs.html b/euscanwww/djeuscan/templates/euscan/_package_vlogs.html deleted file mode 100644 index f67fb06..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_vlogs.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load djeuscan_helpers %} - - {% if vlog %} -
Version history
-
-
    - {% for version in vlog %} - {% if version.action == version.VERSION_ADDED %} -
  • - {% else %} -
  • - {% endif %} - {% if version.overlay == "gentoo" %} - gentoo - {% elif version.overlay %} - overlays - {% else %} - upstream - {% endif %} - - {% if version.vtype and not version.vtype|is_stable %} - unstable - {% endif %} - - {{ version }} - {{ version.datetime }} - -
  • - {% endfor %} -
-
- {% endif %} diff --git a/euscanwww/djeuscan/templates/euscan/_packages.html b/euscanwww/djeuscan/templates/euscan/_packages.html deleted file mode 100644 index 4ecb9d3..0000000 --- a/euscanwww/djeuscan/templates/euscan/_packages.html +++ /dev/null @@ -1,62 +0,0 @@ -{% load djeuscan_helpers %} -{% load sub %} -{% load div %} -{% load mul %} -{% load djeuscan_helpers %} - -{% load url from future %} - - - - - - - - - - - - - - - - {% for package in packages %} - - - - - - {% package_cols package %} - - {% endfor %} - -
Packagegentoooverlaysupstreamgentoooverlaysupstreamfreshness
- - {{ package.category }}/{{ package.name }} - - {% package_bar package %} - - {% with vtype=package.last_version_gentoo.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_gentoo.version|truncatechars:15 }} - - {% with vtype=package.last_version_overlay.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_overlay.version|truncatechars:15 }} - - {% with vtype=package.last_version_upstream.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_upstream.version|truncatechars:15 }} -
diff --git a/euscanwww/djeuscan/templates/euscan/about.html b/euscanwww/djeuscan/templates/euscan/about.html deleted file mode 100644 index 7079cc2..0000000 --- a/euscanwww/djeuscan/templates/euscan/about.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "_base.html" %} - -{% block content %} -

What's euscan ?

-

- Euscan is both a tool to check if an ebuild is outdated (app-portage/euscan) and a web interface. -

-

- This web interface allow you to browse the portage tree, and find outdated ebuilds. It is designed to help maintainers monitor their packages and bump them. -

-

- euscan code source is available on github. -

-

- Original Gentoo artwork and logos copyright (C) Gentoo Foundation. - Design inspired by (stolen from) gentoo.org and bugs.gentoo.org. -

-

- This site is not an official Gentoo website. -

- -

- Copyright (C) 2011 Corentin Chary -

- -

- Powered by: - - Linux Kernel - - - Gentoo Linux - - - Django - - - Python - -

-{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/api.html b/euscanwww/djeuscan/templates/euscan/api.html deleted file mode 100644 index e3f5ce3..0000000 --- a/euscanwww/djeuscan/templates/euscan/api.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block content %} -

API

- - - -

Formats: xml, yaml and json

- -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/categories.html b/euscanwww/djeuscan/templates/euscan/categories.html deleted file mode 100644 index 93a81f6..0000000 --- a/euscanwww/djeuscan/templates/euscan/categories.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - categories -{% endblock %} - -{% block content %} -

Categories

- -{% categories_table categories request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/category.html b/euscanwww/djeuscan/templates/euscan/category.html deleted file mode 100644 index 22a8cec..0000000 --- a/euscanwww/djeuscan/templates/euscan/category.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Category: {{ category }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ category|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Category: {{ category }} - - {% if user.is_authenticated %} - - {% favourite_buttons "category" category %} - - {% endif %} -

    - -

    {{ category.description }}

    - -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - versions weekly - versions monthly -

    - -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/config.html b/euscanwww/djeuscan/templates/euscan/config.html deleted file mode 100644 index 0990eed..0000000 --- a/euscanwww/djeuscan/templates/euscan/config.html +++ /dev/null @@ -1,124 +0,0 @@ -{% extends "_base.html" %} - -{% block content %} -

    Server configuration

    - - - - - {% for key, value in make_conf.items %} - - - - - {% endfor %} -
    -

    make.conf

    -
    {{ key }}{{ value }}
    - -
    - - - - {% for key, value in layman_repos.items %} - - - - - {% endfor %} -
    -

    Available overlays

    -
    {{ key }}{{ value.description }}
    - -
    - - - - {% for key, value in euscan_config.CONFIG.items %} - - - - - {% endfor %} -
    -

    Euscan config

    -
    {{ key }}{{ value }}
    - -
    - - - - {% for item in euscan_config.BLACKLIST_VERSIONS %} - - - - {% endfor %} -
    -

    Versions blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BLACKLIST_PACKAGES %} - - - - {% endfor %} -
    -

    Packages blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.SCANDIR_BLACKLIST_URLS %} - - - - {% endfor %} -
    -

    Scandir blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BRUTEFORCE_BLACKLIST_PACKAGES %} - - - - {% endfor %} -
    -

    Bruteforce packages blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BRUTEFORCE_BLACKLIST_URLS %} - - - - {% endfor %} -
    -

    Bruteforce urls blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.ROBOTS_TXT_BLACKLIST_DOMAINS %} - - - - {% endfor %} -
    -

    Robots.txt domain blacklist

    -
    {{ item }}
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/feeds.html b/euscanwww/djeuscan/templates/euscan/feeds.html deleted file mode 100644 index 280131b..0000000 --- a/euscanwww/djeuscan/templates/euscan/feeds.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block content %} -

    Feeds

    - -
    -

    - Euscan provides different types of feed for keeping an eye on the packages - you're interested in as well as a set of options to customize them. -

    -

    Options

    -
      -
    • portage_info: Get info about portage updates (default: on)
    • -
    • upstream_info: Get info about upstream updates (default: on)
    • -
    • show_adds: Show version bumps (default: on)
    • -
    • show_removals: Show removals (default: on)
    • -
    • ignore_pre: Ignore unstable releases (default: off)
    • -
    • ignore_pre_if_stable: Ignore unstable releases only if current release is stable (default: off)
    • -
    - -

    Usage examples

    - -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/herd.html b/euscanwww/djeuscan/templates/euscan/herd.html deleted file mode 100644 index afc187d..0000000 --- a/euscanwww/djeuscan/templates/euscan/herd.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Herd: {{ herd.herd }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ herd.herd|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Herd: {{ herd.herd }} - {% if user.is_authenticated %} - - {% favourite_buttons "herd" herd.herd %} - - {% endif %} - -

    -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - versions weekly - versions monthly -

    -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/herds.html b/euscanwww/djeuscan/templates/euscan/herds.html deleted file mode 100644 index ff04497..0000000 --- a/euscanwww/djeuscan/templates/euscan/herds.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - herds -{% endblock %} - -{% block content %} -

    Herds

    - -{% herds_table herds request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/index.html b/euscanwww/djeuscan/templates/euscan/index.html deleted file mode 100644 index bd3e19f..0000000 --- a/euscanwww/djeuscan/templates/euscan/index.html +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "_base.html" %} - -{% load timedelta %} - -{% block content %} -

    What's euscan ?

    -

    -Euscan is both a tool to check if an ebuild is outdated (app-portage/euscan) -and a web interface. -

    -

    -This web interface allow you to browse the portage tree, and find outdated -ebuilds. It is designed to help maintainers monitor their packages and bump them. -

    - -

    Overview

    -
      -
    • Packages: {{ n_packages }}
    • -
    • Versions: {{ n_packaged }}
    • -
    • Versions not-packaged: {{ n_upstream }}
    • -
    • Herds: {{ n_herds }}
    • -
    • Maintainers: {{ n_maintainers }}
    • - {% if last_scan %} -
    • Last scan: {{ last_scan }} ({{ last_scan|timedelta }})
    • - {% endif %} -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/maintainer.html b/euscanwww/djeuscan/templates/euscan/maintainer.html deleted file mode 100644 index 82ed52b..0000000 --- a/euscanwww/djeuscan/templates/euscan/maintainer.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Maintainer: {{ maintainer.name }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ maintainer.name|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Maintainer: {{ maintainer.name }} <{{ maintainer.email }}> - {% if user.is_authenticated %} - - {% favourite_buttons "maintainer" maintainer.email %} - - {% endif %} -

    - -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - version weekly - versions monthly -

    - -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/maintainers.html b/euscanwww/djeuscan/templates/euscan/maintainers.html deleted file mode 100644 index 1514231..0000000 --- a/euscanwww/djeuscan/templates/euscan/maintainers.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - maintainers -{% endblock %} - -{% block content %} -

    Maintainers

    - -{% maintainers_table maintainers request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/overlay.html b/euscanwww/djeuscan/templates/euscan/overlay.html deleted file mode 100644 index 394729f..0000000 --- a/euscanwww/djeuscan/templates/euscan/overlay.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Overlay: {{ overlay }} -{% endblock %} - -{% block content %} -

    - Overlay: {{ overlay }} - {% if user.is_authenticated %} - - {% favourite_buttons "overlay" overlay %} - - {% endif %} - -

    - -

    {{ overlay.description }}

    -

    Homepage

    - -{% packages packages %} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/overlays.html b/euscanwww/djeuscan/templates/euscan/overlays.html deleted file mode 100644 index 8bdafe4..0000000 --- a/euscanwww/djeuscan/templates/euscan/overlays.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - overlays -{% endblock %} - -{% block content %} -

    Overlays

    - -{% overlays_table overlays %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/package.html b/euscanwww/djeuscan/templates/euscan/package.html deleted file mode 100644 index 874ab52..0000000 --- a/euscanwww/djeuscan/templates/euscan/package.html +++ /dev/null @@ -1,89 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load sub %} -{% load euscan_accounts_helpers %} - -{% block meta %} -{{ block.super }} - -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ package|truncatechars:15 }} - -
  • -{% endblock %} - -{% block title %} -{{ block.super }} - {{ package.category }}/{{ package.name }} -{% endblock %} - -{% block content %} - -
    -

    A refresh request is in progress, please wait...

    -

    Queue position: {{ refresh_pos }}

    -
    - -

    - {{ package.category }}/{{ package.name }} - - {% if user.is_authenticated %} -
    -
    - - -
    - - - {% favourite_buttons "package" package.category package.name %} -
    - {% endif %} -

    - -{% include "euscan/_package_details.html" %} - -
    - -{% if user.is_authenticated %} - - - Report problems - - -{% endif %} - - - - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/problem.html b/euscanwww/djeuscan/templates/euscan/problem.html deleted file mode 100644 index 828b7ab..0000000 --- a/euscanwww/djeuscan/templates/euscan/problem.html +++ /dev/null @@ -1,57 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load sub %} -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - Report Problem: {{ package.category }}/{{ package.name }} -{% endblock %} - -{% block content %} - -{% if thanks_for_reporting %} -
    - Thanks! Your report has been sent to admins -
    -{% endif %} - -

    - Report Problem: {{ package.category }}/{{ package.name }} -

    - -{% include "euscan/_package_details.html" %} -
    -
    -
    -
    - -
    - {{ form.version }} - {{ form.version.errors.as_text }} -
    -
    -
    - -
    - {{ form.subject }} - {{ form.subject.errors.as_text }} -
    -
    -
    - -
    - {{ form.message }} - {{ form.message.errors.as_text }} -
    -
    - -
    -
    - -
    -
    -
    -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/statistics.html b/euscanwww/djeuscan/templates/euscan/statistics.html deleted file mode 100644 index 3179e56..0000000 --- a/euscanwww/djeuscan/templates/euscan/statistics.html +++ /dev/null @@ -1,72 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block css %} -{{ block.super }} - -{% endblock %} - - -{% block javascript %} -{{ block.super }} - - - - -{% endblock %} - - -{% block content %} -

    Statistics

    - -
    - -

    Current statistics

    -pie versions -pie packages - -

    All time statistics

    - -packages weekly -packages monthly - -versions weekly -versions monthly - -
    - -

    Handlers

    - - - - - - - - - - {% for handler in handlers %} - - - - - - {% endfor %} - -
    Handler# of found versionsAverage confidence
    - - {{ handler.handler }} - - {{ handler.n }}{{ handler.avg_conf|floatformat:1 }}
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/statistics_handler.html b/euscanwww/djeuscan/templates/euscan/statistics_handler.html deleted file mode 100644 index ff073e3..0000000 --- a/euscanwww/djeuscan/templates/euscan/statistics_handler.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} -{{ block.super }} - Handler: {{ handler }} -{% endblock %} - -{% block content %} -

    - Handler: {{ handler }} -

    -{% packages packages %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/world.html b/euscanwww/djeuscan/templates/euscan/world.html deleted file mode 100644 index 6ba2791..0000000 --- a/euscanwww/djeuscan/templates/euscan/world.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block title %} -{{ block.super }} - World scan -{% endblock %} - -{% block content %} -

    Scan your packages

    - -
    - -

    Import your /var/lib/portage/world file

    - -
    {% csrf_token %} -{{ world_form.as_p }} - -
    - -
    - -

    Or just list some packages

    - -
    {% csrf_token %} -{{ packages_form.as_p }} - -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/world_scan.html b/euscanwww/djeuscan/templates/euscan/world_scan.html deleted file mode 100644 index fa6d7b0..0000000 --- a/euscanwww/djeuscan/templates/euscan/world_scan.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - World Scan -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - World scan feed - -
  • -{% endblock %} - - -{% block content %} -

    - World scan: - {% if user.is_authenticated %} - - {% favourite_buttons "world" %} - - {% endif %} -

    - -{% packages packages %} - - - - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/_registration_base.html b/euscanwww/djeuscan/templates/registration/_registration_base.html deleted file mode 100644 index 9789436..0000000 --- a/euscanwww/djeuscan/templates/registration/_registration_base.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "_base.html" %} diff --git a/euscanwww/djeuscan/templates/registration/activate.html b/euscanwww/djeuscan/templates/registration/activate.html deleted file mode 100644 index 2e47513..0000000 --- a/euscanwww/djeuscan/templates/registration/activate.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}{% if account %}Activation complete{% else %}Activation problem{% endif %}{% endblock %} - -{% block content %} - {% if account %} - Thanks {{ account }}, activation complete! You may now login - using the username and password you set at registration. - {% else %} - Oops – it seems that your activation key is invalid. - Please check the url again. - {% endif %} -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/activation_complete.html b/euscanwww/djeuscan/templates/registration/activation_complete.html deleted file mode 100644 index 9d53ca9..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_complete.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Activation complete{% endblock %} -{% block content %} - Thanks, activation complete! You may now login - using the username and password you set at registration. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/activation_email.txt b/euscanwww/djeuscan/templates/registration/activation_email.txt deleted file mode 100644 index 55b583b..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_email.txt +++ /dev/null @@ -1,11 +0,0 @@ -You (or someone pretending to be you) have asked to register an account at -{{ site.name }}. If this wasn't you, please ignore this email -and your address will be removed from our records. - -To activate this account, please click the following link within the next -{{ expiration_days }} days: - -http://{{site.domain}}{% url 'registration_activate' activation_key=activation_key %} - -Sincerely, -{{ site.name }} Management diff --git a/euscanwww/djeuscan/templates/registration/activation_email_subject.txt b/euscanwww/djeuscan/templates/registration/activation_email_subject.txt deleted file mode 100644 index 13912aa..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_email_subject.txt +++ /dev/null @@ -1 +0,0 @@ -Account registration for {{ site.name }} diff --git a/euscanwww/djeuscan/templates/registration/login.html b/euscanwww/djeuscan/templates/registration/login.html deleted file mode 100644 index 194dd04..0000000 --- a/euscanwww/djeuscan/templates/registration/login.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% load url from future %} -{% load i18n %} - -{% block content %} - - {% if form.errors %} -
    - Error: Your username and password didn't match. Please try again. -
    - {% endif %} - -

    - Login -

    - -
    - {% csrf_token %} - - - - - - - - - - - - - -
    {{ form.username.label_tag }}{{ form.username }}
    {{ form.password.label_tag }}{{ form.password }}
    - Forgot password - - -
    - -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_change_form.html b/euscanwww/djeuscan/templates/registration/password_change_form.html deleted file mode 100644 index c8ab089..0000000 --- a/euscanwww/djeuscan/templates/registration/password_change_form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% load url from future %} - -{% block title %}Change password{% endblock %} - -{% block content %} -

    - Change password -

    - -
    - {% csrf_token %} - - {{ form }} - - - - -
    - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_complete.html b/euscanwww/djeuscan/templates/registration/password_reset_complete.html deleted file mode 100644 index 932dabf..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_complete.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Password reset complete{% endblock %} - -{% block content %} - Your password has been reset! You may now log in. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_confirm.html b/euscanwww/djeuscan/templates/registration/password_reset_confirm.html deleted file mode 100644 index 43aefec..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_confirm.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Confirm password reset{% endblock %} - -{% block content %} -

    - Reset password -

    - -

    - Enter your new password below to reset your password: -

    -
    {% csrf_token %} - - {{ form.as_table }} - - - - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_done.html b/euscanwww/djeuscan/templates/registration/password_reset_done.html deleted file mode 100644 index a263a5f..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_done.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Password reset{% endblock %} - -{% block content %} -

    - We have sent you an email with a link to reset your password. Please check - your email and click the link to continue. -

    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_email.html b/euscanwww/djeuscan/templates/registration/password_reset_email.html deleted file mode 100644 index 54fefff..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_email.html +++ /dev/null @@ -1,16 +0,0 @@ -Greetings {% if user.get_full_name %}{{ user.get_full_name }}{% else %}{{ user }}{% endif %}, - -You are receiving this email because you (or someone pretending to be you) -requested that your password be reset on the {{ domain }} site. If you do not -wish to reset your password, please ignore this message. - -To reset your password, please click the following link, or copy and paste it -into your web browser: - -{{ protocol }}://{{ domain }}{% url auth_password_reset_confirm uid token %} - -Your username, in case you've forgotten: {{ user.username }} - - -Best regards, -{{ site_name }} Management diff --git a/euscanwww/djeuscan/templates/registration/password_reset_form.html b/euscanwww/djeuscan/templates/registration/password_reset_form.html deleted file mode 100644 index 7014401..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Reset password{% endblock %} - -{% block content %} -

    - Reset password -

    - -

    - Forgot your password? Enter your email in the form below and we'll send you - instructions for creating a new one. -

    - -
    {% csrf_token %} - - {{ form }} - - - - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/registration_complete.html b/euscanwww/djeuscan/templates/registration/registration_complete.html deleted file mode 100644 index ae8dfcb..0000000 --- a/euscanwww/djeuscan/templates/registration/registration_complete.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Activation email sent{% endblock %} - -{% block content %} - An activation email has been sent. Please check your email and click on the link to activate your account. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/registration_form.html b/euscanwww/djeuscan/templates/registration/registration_form.html deleted file mode 100644 index c7858f4..0000000 --- a/euscanwww/djeuscan/templates/registration/registration_form.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %} - Register for an account -{% endblock %} - -{% block content %} -

    - Register -

    - -
    {% csrf_token %} - - {{ form }} - - - - -
    - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templatetags/__init__.py b/euscanwww/djeuscan/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/templatetags/div.py b/euscanwww/djeuscan/templatetags/div.py deleted file mode 100644 index d9eb880..0000000 --- a/euscanwww/djeuscan/templatetags/div.py +++ /dev/null @@ -1,12 +0,0 @@ -from django import template - -register = template.Library() - - -def div(value, arg=None): - try: - return float(value) / float(arg) - except ZeroDivisionError: - return 0 - -register.filter('div', div) diff --git a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py deleted file mode 100644 index 427b421..0000000 --- a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py +++ /dev/null @@ -1,76 +0,0 @@ -from django import template -from django.conf import settings - -from euscan.version import is_version_type_stable, get_version_type - -register = template.Library() - - -@register.inclusion_tag('euscan/_packages.html', takes_context=True) -def packages(context, pkgs): - context['packages'] = pkgs - return context - - -@register.inclusion_tag('euscan/_package_cols.html', takes_context=True) -def package_cols(context, infos): - context['infos'] = infos - return context - - -@register.inclusion_tag('euscan/_package_bar.html', takes_context=True) -def package_bar(context, infos): - context['infos'] = infos - return context - - -@register.inclusion_tag('euscan/_categories_table.html') -def categories_table(categories, extras=False): - return { - "categories": categories, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_herds_table.html') -def herds_table(herds, extras=False): - return { - "herds": herds, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_maintainers_table.html') -def maintainers_table(maintainers, extras=False): - return { - "maintainers": maintainers, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_overlays_table.html') -def overlays_table(overlays): - return { - "overlays": overlays, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.filter -def is_stable(version_type): - return is_version_type_stable(version_type) - - -@register.filter -def version_type(version): - return get_version_type(version) - - -@register.filter -def ansi_to_html(text): - from ansi2html import Ansi2HTMLConverter - conv = Ansi2HTMLConverter(inline=True, linkify=True) - return conv.convert(text, full=False) diff --git a/euscanwww/djeuscan/templatetags/math_.py b/euscanwww/djeuscan/templatetags/math_.py deleted file mode 100644 index d9250b3..0000000 --- a/euscanwww/djeuscan/templatetags/math_.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.template import Library -import math - -register = Library() - -# taken from http://lybniz2.sourceforge.net/safeeval.html -# make a list of safe functions -math_safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', - 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', - 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', - 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] - -# use the list to filter the local namespace -math_safe_dict = dict([(k, getattr(math, k)) for k in math_safe_list]) - -# add any needed builtins back in. -math_safe_dict['abs'] = abs - - -@register.filter('math') -def math_(lopr, expr): - """Evals a math expression and returns it's value. - - "$1" is a placeholder. Insert "$1" in the expression where the value is - to be used. All math functions such as abs, sin, cos, floor are supported. - Example, - a. You will be redirected in {{ seconds|math:"$1 / 60.0" }} minutes - b. Square of {{ x }} is {{ x|math:"$1 * $1" }} - c. Square root of {{ x }} is {{ x|math:"sqrt($1)" }} - d. Given x = {{ x }}, (2 + x) * 6 = {{ x|math:"(2 + $1) * 6" }} - """ - if lopr: - return eval(expr.replace('$1', str(lopr)), {"__builtins__": None}, - math_safe_dict) - return '' diff --git a/euscanwww/djeuscan/templatetags/mul.py b/euscanwww/djeuscan/templatetags/mul.py deleted file mode 100644 index dbad300..0000000 --- a/euscanwww/djeuscan/templatetags/mul.py +++ /dev/null @@ -1,9 +0,0 @@ -from django import template - -register = template.Library() - - -def mul(value, arg=None): - return value * arg - -register.filter('mul', mul) diff --git a/euscanwww/djeuscan/templatetags/sub.py b/euscanwww/djeuscan/templatetags/sub.py deleted file mode 100644 index 47f52a1..0000000 --- a/euscanwww/djeuscan/templatetags/sub.py +++ /dev/null @@ -1,9 +0,0 @@ -from django import template - -register = template.Library() - - -def sub(value, arg=None): - return value - arg - -register.filter('sub', sub) diff --git a/euscanwww/djeuscan/templatetags/timedelta.py b/euscanwww/djeuscan/templatetags/timedelta.py deleted file mode 100644 index e7656ae..0000000 --- a/euscanwww/djeuscan/templatetags/timedelta.py +++ /dev/null @@ -1,24 +0,0 @@ -from django import template -from django.utils.timesince import timesince -from django.conf import settings -from django.utils.timezone import make_aware, get_default_timezone -from datetime import datetime - -register = template.Library() - - -def timedelta(value, arg=None): - if not value: - return '' - if arg: - cmp = arg - else: - cmp = datetime.now() - if settings.USE_TZ: - cmp = make_aware(cmp, get_default_timezone()) - if value > cmp: - return "in %s" % timesince(cmp, value) - else: - return "%s ago" % timesince(value, cmp) - -register.filter('timedelta', timedelta) diff --git a/euscanwww/djeuscan/tests/__init__.py b/euscanwww/djeuscan/tests/__init__.py deleted file mode 100644 index 78a1082..0000000 --- a/euscanwww/djeuscan/tests/__init__.py +++ /dev/null @@ -1,57 +0,0 @@ -from urllib import urlencode - -from django.test import TestCase -from django.test.client import Client -from django.core.urlresolvers import reverse - -from djeuscan.tests.euscan_factory import UserFactory - - -class SystemTestCase(TestCase): - """ - Base class for system tests - """ - fixtures = ["test_data.json"] - - def setUp(self): - self.client = Client() - - def get(self, url_name, *args, **kwargs): - param = kwargs.pop("param", None) - if param: - url = "%s?%s" % (reverse(url_name, args=args, kwargs=kwargs), - urlencode(param)) - else: - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.get(url) - - def post(self, url_name, *args, **kwargs): - data = kwargs.pop("data", {}) - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.post(url, data) - - def login(self): - user = UserFactory.build() - user.set_password("pass") - user.save() - return Login(self, user.username, "pass") - - -class Login(object): - def __init__(self, testcase, user, password): - self.testcase = testcase - success = testcase.client.login(username=user, password=password) - self.testcase.assertTrue( - success, - "login with username=%r, password=%r failed" % (user, password) - ) - - def __enter__(self): - pass - - def __exit__(self, *args): - self.testcase.client.logout() - -from test_models import * -from test_views import * -from test_charts import * diff --git a/euscanwww/djeuscan/tests/euscan_factory.py b/euscanwww/djeuscan/tests/euscan_factory.py deleted file mode 100644 index 0a90874..0000000 --- a/euscanwww/djeuscan/tests/euscan_factory.py +++ /dev/null @@ -1,147 +0,0 @@ -import random -from string import letters -from datetime import datetime -from collections import defaultdict - -from django.contrib.auth.models import User -from django.db import IntegrityError - -import factory - -from djeuscan.models import Herd, Maintainer, Package, Version, EuscanResult, \ - Category, Overlay - - -class UserFactory(factory.Factory): - FACTORY_FOR = User - - username = factory.Sequence(lambda n: 'user' + n) - - -def random_string(length=None): - if length is None: - length = random.randint(1, 30) - return "".join([random.choice(letters) for _ in range(length)]) - - -class HerdFactory(factory.Factory): - FACTORY_FOR = Herd - - herd = factory.LazyAttribute(lambda a: random_string()) - email = factory.LazyAttribute(lambda a: "%s@example.com" % a.herd) - - -class MaintainerFactory(factory.Factory): - FACTORY_FOR = Maintainer - - name = factory.LazyAttribute(lambda a: random_string()) - email = factory.LazyAttribute(lambda a: "%s@example.com" % a.name) - - -class CategoryFactory(factory.Factory): - FACTORY_FOR = Category - - name = factory.LazyAttribute(lambda a: random_string()) - - -class OverlayFactory(factory.Factory): - FACTORY_FOR = Overlay - - name = factory.LazyAttribute(lambda a: random_string()) - - -class PackageFactory(factory.Factory): - FACTORY_FOR = Package - - category = factory.LazyAttribute( - lambda a: "%s-%s" % (random_string(), random_string()) - ) - name = factory.LazyAttribute(lambda a: random_string()) - description = "This is a test package" - homepage = "http://testpackage.com" - - @classmethod - def _prepare(cls, create, **kwargs): - package = super(PackageFactory, cls)._prepare(create, **kwargs) - category = kwargs.pop('category', None) - if create: - CategoryFactory.create(name=category) - else: - CategoryFactory.build(name=category) - return package - - -class VersionFactory(factory.Factory): - FACTORY_FOR = Version - - package = factory.LazyAttribute(lambda a: PackageFactory()) - slot = "1" - revision = "1" - version = "0.1" - packaged = True - overlay = "gentoo" - urls = "http://packageurl.com" - - @classmethod - def _prepare(cls, create, **kwargs): - version = super(VersionFactory, cls)._prepare(create, **kwargs) - overlay = kwargs.pop('overlay', None) - try: - if create: - OverlayFactory.create(name=overlay) - else: - OverlayFactory.build(name=overlay) - except IntegrityError: - pass - return version - - -class EuscanResultFactory(factory.Factory): - FACTORY_FOR = EuscanResult - - package = factory.LazyAttribute(lambda a: PackageFactory()) - datetime = datetime.now() - result = "this is the result" - - -def setup_maintainers(): - maintainers = [MaintainerFactory.create() for _ in range(10)] - packages = [] - for i in range(0, 10, 2): - p = PackageFactory.create() - p.maintainers.add(maintainers[i]) - p.maintainers.add(maintainers[i + 1]) - packages.append(p) - return maintainers, packages - - -def setup_categories(): - packages = [PackageFactory.create() for _ in range(10)] - categories = [p.category for p in packages] - return categories, packages - - -def setup_herds(): - herds = [HerdFactory.create() for _ in range(10)] - packages = [] - - for i in range(0, 10, 2): - p = PackageFactory.create() - p.herds.add(herds[i]) - p.herds.add(herds[i + 1]) - packages.append(p) - return herds, packages - - -def setup_overlays(): - overlays = [random_string() for _ in range(3)] - packages = defaultdict(list) - - for _ in range(3): - package = PackageFactory.create() - for overlay in overlays: - VersionFactory.create(package=package, - overlay=overlay) - packages[overlay].append(package) - - return overlays, packages diff --git a/euscanwww/djeuscan/tests/test_charts.py b/euscanwww/djeuscan/tests/test_charts.py deleted file mode 100644 index e50dd8b..0000000 --- a/euscanwww/djeuscan/tests/test_charts.py +++ /dev/null @@ -1,102 +0,0 @@ -from djeuscan.tests import SystemTestCase -from djeuscan.tests.euscan_factory import MaintainerFactory, HerdFactory, \ - PackageFactory - - -class ChartTests(SystemTestCase): - """ - Test charts - """ - - url = "chart" - args = [] - kwargs = {} - - def test_statistics(self): - response = self.get("statistics") - self.assertEqual(response.status_code, 200) - - def test_pie_versions(self): - response = self.get(self.url, chart="pie-versions", - *self.args, **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_pie_packages(self): - response = self.get(self.url, chart="pie-packages", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages(self): - response = self.get(self.url, chart="packages", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages_options(self): - response = self.get(self.url, chart="packages-small", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-weekly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-monthly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-yearly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages_option_incorrect(self): - response = self.get(self.url, chart="packages-trololol", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 404) - - def test_versions(self): - response = self.get(self.url, chart="versions", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_versions_options(self): - response = self.get(self.url, chart="versions-small", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-weekly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-monthly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-yearly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_versions_option_incorrect(self): - response = self.get(self.url, chart="versions-trololol", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 404) - - -class CategoryChartTests(ChartTests): - def setUp(self): - super(CategoryChartTests, self).setUp() - self.url = "chart_category" - self.kwargs = {"category": PackageFactory.create().category} - - -class HerdChartTests(ChartTests): - def setUp(self): - super(HerdChartTests, self).setUp() - self.url = "chart_herd" - self.kwargs = {"herd": HerdFactory.create().herd} - - -class MaintainerChartTests(ChartTests): - def setUp(self): - super(MaintainerChartTests, self).setUp() - self.url = "chart_maintainer" - self.kwargs = {"maintainer_id": MaintainerFactory.create().pk} diff --git a/euscanwww/djeuscan/tests/test_models.py b/euscanwww/djeuscan/tests/test_models.py deleted file mode 100644 index 3dfb837..0000000 --- a/euscanwww/djeuscan/tests/test_models.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -tests for models -""" - -from datetime import datetime - -from django.test import TestCase -from django.db import IntegrityError -from django.core.exceptions import ValidationError -from django.utils.timezone import utc - -from djeuscan.models import Package, EuscanResult -from djeuscan.tests.euscan_factory import VersionFactory, PackageFactory, \ - EuscanResultFactory, setup_maintainers, setup_herds, setup_categories, \ - setup_overlays - - -class VersionModelTests(TestCase): - def test_creation(self): - package = PackageFactory.build() - version = VersionFactory.build(package=package) - self.assertEqual(version.package, package) - - def test_not_allowed_creation(self): - package = PackageFactory.create() - VersionFactory.create(package=package) - - with self.assertRaises((IntegrityError, ValidationError)): - VersionFactory.create(package=package) - - -class PackageModelTests(TestCase): - def test_homepages(self): - homepage = "http://gentoo.org http://mypackage.com" - package = PackageFactory.build(homepage=homepage) - self.assertEqual(package.homepages, - ["http://gentoo.org", "http://mypackage.com"]) - - def test_for_maintainer(self): - maintainers, packages = setup_maintainers() - maintainer = maintainers[0] - self.assertEqual( - list(Package.objects.for_maintainer(maintainer)), - packages[:1] - ) - - def test_for_herd(self): - herds, packages = setup_herds() - herd = herds[0] - self.assertEqual( - list(Package.objects.for_herd(herd)), - packages[:1] - ) - - def test_for_category(self): - categories, packages = setup_categories() - category = categories[0] - self.assertEqual( - list(Package.objects.for_category(category)), - packages[:1] - ) - - def test_for_overlay(self): - overlays, packages = setup_overlays() - overlay = overlays[0] - - package_ids = [p.pk for p in packages[overlay]] - for package in Package.objects.for_overlay(overlay): - self.assertTrue(package["id"] in package_ids) - - def test_maintainers(self): - maintainers, packages = setup_maintainers() - maintainer_ids = [m.pk for m in maintainers] - for maintainer in Package.objects.maintainers(): - self.assertTrue(maintainer["maintainers__id"] in maintainer_ids) - - def test_herds(self): - herds, packages = setup_herds() - herd_names = [h.herd for h in herds] - for herd in Package.objects.herds(): - self.assertTrue(herd["herds__herd"] in herd_names) - - def test_categories(self): - categories, packages = setup_categories() - cat_names = [c["category"] for c in Package.objects.categories()] - for category in categories: - self.assertTrue(category in cat_names) - - def test_overlays(self): - overlays, packages = setup_overlays() - overlay_names = Package.objects.overlays() - for overlay in overlays: - self.assertTrue(overlay in overlay_names) - - -class EuscanResultModelTests(TestCase): - def test_lastest(self): - result1 = EuscanResultFactory.create( - datetime=datetime(2012, 04, 01, 12, 0, 0, 0, utc) - ) - result2 = EuscanResultFactory.create( - datetime=datetime(2012, 01, 01, 12, 0, 0, 0, utc) - ) - self.assertEqual(result1, EuscanResult.objects.latest()) - self.assertNotEqual(result2, EuscanResult.objects.latest()) diff --git a/euscanwww/djeuscan/tests/test_views.py b/euscanwww/djeuscan/tests/test_views.py deleted file mode 100644 index 4917d9d..0000000 --- a/euscanwww/djeuscan/tests/test_views.py +++ /dev/null @@ -1,305 +0,0 @@ -import StringIO - -try: - from BeautifulSoup import BeautifulSoup -except ImportError: - from bs4 import BeautifulSoup - -from euscan_accounts.helpers import get_profile - -from djeuscan.tests import SystemTestCase -from djeuscan.tests.euscan_factory import PackageFactory, setup_maintainers, \ - setup_herds, setup_categories, setup_overlays - - -class PagesTest(SystemTestCase): - """ - Test main pages - """ - - def test_index(self): - response = self.get("index") - self.assertEqual(response.status_code, 200) - - def test_world(self): - response = self.get("world") - self.assertEqual(response.status_code, 200) - - def test_about(self): - response = self.get("about") - self.assertEqual(response.status_code, 200) - - def test_global_feed(self): - response = self.get("global_feed") - self.assertEqual(response.status_code, 200) - - def test_api(self): - response = self.get("api") - self.assertEqual(response.status_code, 200) - - def test_profile(self): - response = self.get("accounts_index") - self.assertEqual(response.status_code, 302) - - with self.login(): - response = self.get("accounts_index") - self.assertEqual(response.status_code, 200) - - -class PackageTests(SystemTestCase): - def setUp(self): - super(PackageTests, self).setUp() - self.package = PackageFactory.create() - - def test_package(self): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).categories.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_package", category=self.package.category, - package=self.package.name) - - self.assertEquals(get_profile(user).packages.count(), 1) - - response = self.get("accounts_packages") - self.assertEqual(response.status_code, 200) - - self.assertIn(self.package.name, response.content) - - self.post("unfavourite_package", category=self.package.category, - package=self.package.name) - self.assertEquals(get_profile(user).packages.count(), 0) - - -class SectionTests(SystemTestCase): - def _check_table(self, response, items, attr=None): - soup = BeautifulSoup(response.content) - rows = soup.findAll("tr") - - # the -1 is for the table heading - self.assertEqual(len(rows) - 1, len(items)) - - for item in items: - if attr: - item_str = getattr(item, attr) - else: - item_str = item - self.assertTrue(item_str in response.content) - - -class CategoriesTests(SectionTests): - def setUp(self): - super(CategoriesTests, self).setUp() - self.categories, self.packages = setup_categories() - - def test_categories(self): - response = self.get("categories") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.categories) - - def test_category(self): - category = self.categories[0] - response = self.get("category", category=category) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_category_feed(self): - category = self.categories[0] - response = self.get("category_feed", category=category) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - category = self.categories[0] - - response = self.get("category", category=category) - - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("category", category=category) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).categories.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_category", category=category) - - self.assertEquals(get_profile(user).categories.count(), 1) - - response = self.get("accounts_categories") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [category]) - - self.post("unfavourite_category", category=category) - - self.assertEquals(get_profile(user).categories.count(), 0) - - -class HerdsTests(SectionTests): - def setUp(self): - super(HerdsTests, self).setUp() - self.herds, self.packages = setup_herds() - - def test_herds(self): - response = self.get("herds") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.herds, attr="herd") - - def test_herd(self): - herd = self.herds[0] - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_herd_feed(self): - herd = self.herds[0] - response = self.get("herd_feed", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - herd = self.herds[0] - - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).herds.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_herd", herd=herd.herd) - - self.assertEquals(get_profile(user).herds.count(), 1) - - response = self.get("accounts_herds") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [herd], attr="herd") - - self.post("unfavourite_herd", herd=herd.herd) - self.assertEquals(get_profile(user).herds.count(), 0) - - -class MaintainersTests(SectionTests): - def setUp(self): - super(MaintainersTests, self).setUp() - self.maintainers, self.packages = setup_maintainers() - - def test_maintainers(self): - response = self.get("maintainers") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.maintainers, attr="name") - - def test_maintainer(self): - maintainer = self.maintainers[0] - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_maintainer_feed(self): - maintainer = self.maintainers[0] - response = self.get("maintainer_feed", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - maintainer = self.maintainers[0] - - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).maintainers.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_maintainer", maintainer_id=maintainer.pk) - - self.assertEquals(get_profile(user).maintainers.count(), 1) - - response = self.get("accounts_maintainers") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [maintainer], attr="name") - - self.post("unfavourite_maintainer", maintainer_id=maintainer.pk) - - self.assertEquals(get_profile(user).maintainers.count(), 0) - - -class OverlayTests(SectionTests): - def setUp(self): - super(OverlayTests, self).setUp() - self.overlays, self.packages = setup_overlays() - - def test_overlays(self): - response = self.get("overlays") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.overlays) - - def test_overlay(self): - overlay = self.overlays[0] - response = self.get("overlay", overlay=overlay) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[overlay], attr="name") - - -class WorldScanTests(SectionTests): - def setUp(self): - super(WorldScanTests, self).setUp() - for _ in range(3): - PackageFactory.create() - self.packages = [PackageFactory.create().name for _ in range(3)] - - def test_world_scan_packages(self): - response = self.post("world_scan", - data={"packages": "\n".join(self.packages)}) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages) - - def test_world_scan_world(self): - world_file = StringIO.StringIO() - world_file.write("\n".join(self.packages)) - world_file.name = "world" - world_file.read = world_file.getvalue - - response = self.post("world_scan", data={"world": world_file}) - - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages) diff --git a/euscanwww/djeuscan/urls.py b/euscanwww/djeuscan/urls.py deleted file mode 100644 index be2e33f..0000000 --- a/euscanwww/djeuscan/urls.py +++ /dev/null @@ -1,125 +0,0 @@ -from django.conf.urls import url, patterns, include -from django.contrib.auth.decorators import user_passes_test - -from djcelery.views import apply as apply_task -from djeuscan.views import registered_tasks - -from euscan_accounts.views import favourite_package, unfavourite_package, \ - favourite_category, unfavourite_category, favourite_herd, \ - unfavourite_herd, favourite_maintainer, unfavourite_maintainer, \ - favourite_overlay, unfavourite_overlay, favourite_world, unfavourite_world - -from djeuscan.feeds import PackageFeed, CategoryFeed, HerdFeed, \ - MaintainerFeed, GlobalFeed, WorldScanFeed, StabilizationCandidatesFeed - -admin_required = user_passes_test(lambda u: u.is_superuser) - - -package_patterns = patterns('djeuscan.views', - url(r'^$', 'package', name="package"), - url(r'^feed/$', PackageFeed(), name='package_feed'), - url(r'^favourite/$', favourite_package, name="favourite_package"), - url(r'^unfavourite/$', unfavourite_package, name="unfavourite_package"), - url(r'^refresh$', "refresh_package", name="refresh_package"), - url(r'^problem$', 'problem', name="problem"), -) - -files_patterns = patterns('djeuscan.views', - url(r'^(?P[\w+][\w+.-]*)/(?P.+).ebuild$', - "package_version_ebuild", - name="package_version_ebuild"), - url(r'^(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)/' - r'(?P[\w+][\w+.-]*)/metadata.xml$', - "package_metadata", - name="package_metadata"), -) - -categories_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'category', name="category"), - url(r'^feed/$', CategoryFeed(), name='category_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_category', - name="chart_category"), - url(r'^favourite/$', favourite_category, name="favourite_category"), - url(r'^unfavourite/$', unfavourite_category, - name="unfavourite_category"), -) - -herds_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'herd', name="herd"), - url(r'^feed/$', HerdFeed(), name='herd_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_herd', name="chart_herd"), - url(r'^favourite/$', favourite_herd, name="favourite_herd"), - url(r'^unfavourite/$', unfavourite_herd, name="unfavourite_herd"), -) - -maintainers_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'maintainer', name="maintainer"), - url(r'^feed/$', MaintainerFeed(), name='maintainer_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_maintainer', - name="chart_maintainer"), - url(r'^favourite/$', favourite_maintainer, name="favourite_maintainer"), - url(r'^unfavourite/$', unfavourite_maintainer, - name="unfavourite_maintainer"), -) - -overlays_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'overlay', name="overlay"), - url(r'^favourite/$', favourite_overlay, name="favourite_overlay"), - url(r'^unfavourite/$', unfavourite_overlay, name="unfavourite_overlay"), -) - -tasks_patterns = patterns('djeuscan.views', - url(r'^registered_tasks/$', admin_required(registered_tasks), - name="registered_tasks"), - url(r'^apply/(?P.*)/$', admin_required(apply_task), - name="apply_task"), -) - - -urlpatterns = patterns('djeuscan.views', - # Global stuff - url(r'^api/', include('djeuscan.api.urls')), - - url(r'^$', 'index', name="index"), - url(r'^feed/$', GlobalFeed(), name='global_feed'), - url(r'^feed/stabilization_candidates$', StabilizationCandidatesFeed(), - name='stabilization_candidates_feed'), - url(r'^about/$', 'about', name="about"), - url(r'^about/api$', 'api', name="api"), - url(r'^about/feeds$', 'feeds', name="feeds"), - url(r'^about/config$', 'config', name="config"), - url(r'^statistics/$', 'statistics', name="statistics"), - url(r'^statistics/handlers/(?P[^/]+)/$', 'statistics_handler', - name="statistics_handler"), - url(r'^statistics/charts/(?P[\w\-]+).png$', 'chart', name="chart"), - url(r'^world/$', 'world', name="world"), - url(r'^world/scan/$', 'world_scan', name="world_scan"), - url(r'^world/scan/feed$', WorldScanFeed(), name="world_scan_feed"), - url(r'^world/favourite/$', favourite_world, name="favourite_world"), - url(r'^world/unfavourite/$', unfavourite_world, - name="unfavourite_world"), - - # Real data - url(r'^categories/$', 'categories', name="categories"), - url(r'^categories/(?P[\w+][\w+.-]*)/', - include(categories_patterns)), - - url(r'^herds/$', 'herds', name="herds"), - url(r'^herds/(?P[\@\{\}\w+.-]+)/', include(herds_patterns)), - - url(r'^maintainers/$', 'maintainers', name="maintainers"), - url(r'^maintainers/(?P\d+)/', - include(maintainers_patterns)), - url(r'^maintainers/(?P[^/]+)/', - include(maintainers_patterns)), - - url(r'^overlays/$', 'overlays', name="overlays"), - url(r'^overlays/(?P[\w+][\w+.-]*)/', include(overlays_patterns)), - - url(r'^package/(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)/', - include(package_patterns)), - - url(r'^files/', include(files_patterns)), - - url(r'^tasks/', include(tasks_patterns)), -) diff --git a/euscanwww/djeuscan/views.py b/euscanwww/djeuscan/views.py deleted file mode 100644 index fc10976..0000000 --- a/euscanwww/djeuscan/views.py +++ /dev/null @@ -1,488 +0,0 @@ -""" Views """ - -import inspect -from annoying.decorators import render_to, ajax_request - -from portage.versions import catpkgsplit - -from django.http import HttpResponse, HttpResponseNotFound -from django.core.urlresolvers import reverse -from django.shortcuts import get_object_or_404, redirect -from django.contrib.auth.decorators import login_required -from django.views.decorators.http import require_POST -from django.db import models - -from djeuscan.helpers import version_key, packages_from_names, \ - get_maintainer_or_404, get_make_conf, get_layman_repos -from djeuscan.models import Version, Package, Herd, Maintainer, EuscanResult, \ - VersionLog, RefreshPackageQuery, ProblemReport, Category, Overlay -from djeuscan.forms import WorldForm, PackagesForm, ProblemReportForm -from djeuscan.tasks import admin_tasks -from djeuscan import charts - -from euscan_accounts.helpers import get_profile - - -@render_to('euscan/index.html') -def index(request): - context = { - 'n_packaged': Package.objects.n_packaged(), - 'n_overlay': Package.objects.n_overlay(), - 'n_versions': Package.objects.n_versions(), - 'n_upstream': Package.objects.n_upstream(), - 'n_packages': Package.objects.count(), - 'n_herds': Herd.objects.count(), - 'n_maintainers': Maintainer.objects.count(), - } - try: - context['last_scan'] = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - context['last_scan'] = None - - return context - - -@render_to('euscan/logs.html') -def logs(request): - return {} - - -@render_to('euscan/categories.html') -def categories(request): - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'categories': Package.objects.categories(), 'last_scan': last_scan} - - -@render_to('euscan/category.html') -def category(request, category): - packages = Package.objects.for_category(category, last_versions=True) - - if not packages: - return HttpResponseNotFound() - - try: - last_scan = \ - EuscanResult.objects.for_category(category).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - try: - category = Category.objects.get(name=category) - favourited = category in get_profile(request.user).categories.all() - except Category.DoesNotExist: - pass - - return {'category': category, 'packages': packages, 'last_scan': last_scan, - 'favourited': favourited} - - -@render_to('euscan/herds.html') -def herds(request): - herds = Package.objects.herds() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'herds': herds, 'last_scan': last_scan} - - -@render_to('euscan/herd.html') -def herd(request, herd): - herd = get_object_or_404(Herd, herd=herd) - packages = Package.objects.for_herd(herd, last_versions=True) - - try: - last_scan = EuscanResult.objects.for_herd(herd).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if herd in get_profile(request.user).herds.all(): - favourited = True - - return {'herd': herd, 'packages': packages, "last_scan": last_scan, - 'favourited': favourited} - - -@render_to('euscan/maintainers.html') -def maintainers(request): - maintainers = Package.objects.maintainers() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'maintainers': maintainers, 'last_scan': last_scan} - - -@render_to('euscan/maintainer.html') -def maintainer(request, maintainer_id=None, maintainer_email=None): - maintainer = get_maintainer_or_404(maintainer_id, maintainer_email) - packages = Package.objects.for_maintainer(maintainer, last_versions=True) - - try: - last_scan = \ - EuscanResult.objects.for_maintainer(maintainer).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if maintainer in get_profile(request.user).maintainers.all(): - favourited = True - - return {'maintainer': maintainer, 'packages': packages, - 'last_scan': last_scan, 'favourited': favourited} - - -@render_to('euscan/overlays.html') -def overlays(request): - overlays = Package.objects.overlays() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'overlays': overlays, 'last_scan': last_scan} - - -@render_to('euscan/overlay.html') -def overlay(request, overlay): - packages = Package.objects.for_overlay(overlay) - if not packages: - return HttpResponseNotFound() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - try: - overlay = Overlay.objects.get(name=overlay) - favourited = overlay in get_profile(request.user).overlays.all() - except Overlay.DoesNotExist: - pass - - return {'overlay': overlay, 'packages': packages, 'last_scan': last_scan, - 'favourited': favourited} - - -@render_to('euscan/package.html') -def package(request, category, package): - package = get_object_or_404(Package, category=category, name=package) - packaged = Version.objects.filter(package=package, packaged=True) - upstream = Version.objects.filter(package=package, packaged=False) - - packaged = sorted(packaged, key=version_key) - upstream = sorted(upstream, key=version_key) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - vlog = VersionLog.objects.for_package(package, order=True) - - try: - last_scan = EuscanResult.objects.for_package(package).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if package in get_profile(request.user).packages.all(): - favourited = True - - try: - refresh_query = RefreshPackageQuery.objects.get(package=package) - except RefreshPackageQuery.DoesNotExist: - refresh_requested = False - refresh_pos = None - else: - refresh_requested = request.user in refresh_query.users.all() - refresh_pos = refresh_query.position - - return { - 'package': package, - 'packaged': packaged, - 'upstream': upstream, - 'vlog': vlog, - 'log': log, - 'msg': log.messages if log else "", - 'last_scan': last_scan, - 'favourited': favourited, - 'refresh_requested': refresh_requested, - 'refresh_pos': refresh_pos, - } - - -def package_metadata(request, overlay, category, package): - package = get_object_or_404(Package, category=category, name=package) - - versions = Version.objects.filter(package=package, overlay=overlay) - if len(versions) == 0: - return HttpResponseNotFound() - - # XXX: Kinda ugly, it assumes that every version with the same overlay - # has the same metadata path - version = versions[0] - - content = "" - if version.metadata_path: - try: - with open(version.metadata_path) as meta_file: - content = meta_file.read() - except IOError: - return HttpResponseNotFound() - else: - return HttpResponseNotFound() - return HttpResponse(content, content_type="text/plain") - - -def package_version_ebuild(request, overlay, cpv): - category, package, version, revision = catpkgsplit(cpv) - pkg = get_object_or_404(Package, category=category, name=package) - obj = get_object_or_404(Version, package=pkg, version=version, - revision=revision, overlay=overlay) - - if obj.ebuild_path: - try: - with open(obj.ebuild_path) as ebuild_file: - content = ebuild_file.read() - except IOError: - return HttpResponseNotFound() - else: - return HttpResponseNotFound() - return HttpResponse(content, content_type="text/plain") - - -@login_required -@render_to('euscan/problem.html') -def problem(request, category, package): - package = get_object_or_404(Package, category=category, name=package) - packaged = Version.objects.filter(package=package, packaged=True) - upstream = Version.objects.filter(package=package, packaged=False) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - - thanks_for_reporting = False - - if request.method == "POST": - form = ProblemReportForm(package, request.POST) - if form.is_valid(): - ProblemReport( - package=package, - version=form.cleaned_data["version"], - subject=form.cleaned_data["subject"], - message=form.cleaned_data["message"], - ).save() - thanks_for_reporting = True - else: - form = ProblemReportForm(package) - - return { - 'form': form, - 'thanks_for_reporting': thanks_for_reporting, - 'package': package, - 'packaged': packaged, - 'upstream': upstream, - 'msg': log.messages if log else "", - } - - -@render_to('euscan/world.html') -def world(request): - world_form = WorldForm() - packages_form = PackagesForm() - - return { - 'world_form': world_form, - 'packages_form': packages_form - } - - -@render_to('euscan/world_scan.html') -def world_scan(request): - if 'world' in request.FILES: - data = request.FILES['world'].read() - elif 'packages' in request.POST: - data = request.POST['packages'] - else: - data = "" - - packages = packages_from_names(data) - packages_ids = [p.pk for p in packages] - - favourited = False - if len(packages) > 0 and request.user.is_authenticated(): - profile = get_profile(request.user) - if len(packages) == len(profile.packages.filter(id__in=packages_ids)): - favourited = True - - return { - 'packages': packages, - 'packages_ids': packages_ids, - 'favourited': favourited - } - - -@render_to("euscan/about.html") -def about(request): - return {} - - -@render_to("euscan/api.html") -def api(request): - return {} - - -@render_to("euscan/feeds.html") -def feeds(request): - return {} - - -@render_to("euscan/config.html") -def config(request): - from euscan import CONFIG, BLACKLIST_VERSIONS, BLACKLIST_PACKAGES, \ - SCANDIR_BLACKLIST_URLS, BRUTEFORCE_BLACKLIST_PACKAGES, \ - BRUTEFORCE_BLACKLIST_URLS, ROBOTS_TXT_BLACKLIST_DOMAINS - euscan_config = { - "CONFIG": CONFIG, - "BLACKLIST_VERSIONS": BLACKLIST_VERSIONS, - "BLACKLIST_PACKAGES": BLACKLIST_PACKAGES, - "SCANDIR_BLACKLIST_URLS": SCANDIR_BLACKLIST_URLS, - "BRUTEFORCE_BLACKLIST_PACKAGES": BRUTEFORCE_BLACKLIST_PACKAGES, - "BRUTEFORCE_BLACKLIST_URLS": BRUTEFORCE_BLACKLIST_URLS, - "ROBOTS_TXT_BLACKLIST_DOMAINS": ROBOTS_TXT_BLACKLIST_DOMAINS, - } - make_conf = get_make_conf() - layman_repos = get_layman_repos() - - return { - "euscan_config": euscan_config, - "make_conf": make_conf, - "layman_repos": layman_repos, - } - - -@render_to("euscan/statistics.html") -def statistics(request): - handlers = ( - Version.objects.values("handler") - .filter(overlay="") - .annotate(n=models.Count("handler"), - avg_conf=models.Avg("confidence")) - ) - for i in xrange(len(handlers)): - if not handlers[i]['handler']: - handlers[i]['handler'] = "unknown" - return {"handlers": handlers} - - -@render_to("euscan/statistics_handler.html") -def statistics_handler(request, handler): - if handler == "unknown": - handler = "" - packages = Package.objects.for_handler(handler) - return {"handler": handler, "packages": packages} - - -def chart(request, **kwargs): - from django.views.static import serve - - chart = kwargs['chart'] if 'chart' in kwargs else None - - if 'maintainer_id' in kwargs or 'maintainer_email' in kwargs: - kwargs['maintainer'] = get_maintainer_or_404( - kwargs.get('maintainer_id'), - kwargs.get('maintainer_email') - ) - if 'herd' in kwargs: - kwargs['herd'] = get_object_or_404(Herd, herd=kwargs['herd']) - - for kw in ('-small', '-weekly', '-monthly', '-yearly'): - if chart.endswith(kw): - if kw in ('-weekly', '-monthly', '-yearly'): - kwargs['period'] = kw - kwargs[kw] = True - chart = chart[:-len(kw)] - - if chart == 'pie-packages': - path = charts.pie_packages(**kwargs) - elif chart == 'pie-versions': - path = charts.pie_versions(**kwargs) - elif chart == 'packages': - path = charts.packages(**kwargs) - elif chart == 'versions': - path = charts.versions(**kwargs) - else: - return HttpResponseNotFound() - - return serve(request, path, document_root=charts.CHARTS_ROOT) - - -def chart_maintainer(request, **kwargs): - return chart(request, **kwargs) - - -def chart_herd(request, **kwargs): - return chart(request, **kwargs) - - -def chart_category(request, **kwargs): - return chart(request, **kwargs) - - -@ajax_request -def registered_tasks(request): - data = {} - for task in admin_tasks: - argspec = inspect.getargspec(task.run) - data[task.name] = { - "args": argspec.args, - "defaults": argspec.defaults, - "default_types": None - } - if argspec.defaults is not None: - data[task.name].update({ - "defaults_types": [type(x).__name__ for x in argspec.defaults] - }) - return {"tasks": data} - - -@login_required -@require_POST -@ajax_request -def refresh_package(request, category, package): - pkg = get_object_or_404(Package, category=category, name=package) - - obj, created = RefreshPackageQuery.objects.get_or_create(package=pkg) - - if request.user in \ - RefreshPackageQuery.objects.get(package=pkg).users.all(): - return {"result": "failure"} - - obj.users.add(request.user) - if not created: - obj.priority += 1 - obj.save() - if created: - from djeuscan.tasks import consume_refresh_queue - consume_refresh_queue.delay() - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - else: - return {"result": "success", "position": obj.position} diff --git a/euscanwww/euscan_accounts/__init__.py b/euscanwww/euscan_accounts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/admin.py b/euscanwww/euscan_accounts/admin.py deleted file mode 100644 index 453650a..0000000 --- a/euscanwww/euscan_accounts/admin.py +++ /dev/null @@ -1,4 +0,0 @@ -from django.contrib import admin -from euscan_accounts.models import UserProfile - -admin.site.register(UserProfile) diff --git a/euscanwww/euscan_accounts/feeds.py b/euscanwww/euscan_accounts/feeds.py deleted file mode 100644 index 9a70b80..0000000 --- a/euscanwww/euscan_accounts/feeds.py +++ /dev/null @@ -1,26 +0,0 @@ -from djeuscan.feeds import BaseFeed -from euscan_accounts.helpers import get_profile, get_account_versionlogs - - -class UserFeed(BaseFeed): - link = "/" - - def description(self, data): - return "%s - last euscan changes" % data["user"] - - def title(self, data): - return "%s - watched packages" % data["user"] - - def get_object(self, request): - return { - "user": request.user, - "options": request.GET, - } - - def _items(self, data): - user = data["user"] - - profile = get_profile(user) - vlogs = get_account_versionlogs(profile) - - return vlogs, 100 diff --git a/euscanwww/euscan_accounts/forms.py b/euscanwww/euscan_accounts/forms.py deleted file mode 100644 index 620448d..0000000 --- a/euscanwww/euscan_accounts/forms.py +++ /dev/null @@ -1,38 +0,0 @@ -from django import forms -from euscan_accounts.models import UserProfile - - -class PreferencesForm(forms.Form): - first_name = forms.CharField(max_length=30, required=False) - last_name = forms.CharField(max_length=30, required=False) - email = forms.EmailField() - - feed_upstream_info = forms.BooleanField(required=False, - label="Upstream info") - feed_portage_info = forms.BooleanField(required=False, - label="Portage info") - feed_show_adds = forms.BooleanField(required=False, - label="Show version bumps") - feed_show_removals = forms.BooleanField(required=False, - label="Show version removals") - feed_ignore_pre = forms.BooleanField(required=False, - label="Ignore unstable releases") - feed_ignore_pre_if_stable = forms.BooleanField( - required=False, - label="Ignore unstable releases if current version is stable" - ) - - email_activated = forms.BooleanField( - required=False, label="Receive euscan emails" - ) - email_every = forms.ChoiceField( - choices=UserProfile.EMAIL_OPTS, - label="Send email", - ) - email_ignore_pre = forms.BooleanField( - required=False, label="Ignore unstable releases" - ) - email_ignore_pre_if_stable = forms.BooleanField( - required=False, - label="Ignore unstable releases if current version is stable" - ) diff --git a/euscanwww/euscan_accounts/helpers.py b/euscanwww/euscan_accounts/helpers.py deleted file mode 100644 index 7422ab9..0000000 --- a/euscanwww/euscan_accounts/helpers.py +++ /dev/null @@ -1,81 +0,0 @@ -from django.db.models import Q - - -def get_profile(user): - from euscan_accounts.models import UserProfile - try: - return user.get_profile() - except UserProfile.DoesNotExist: - UserProfile.objects.create(user=user) - return user.get_profile() - - -def get_account_categories(user): - from djeuscan.models import Package - # TODO: This is quite ugly - category_names = [obj.name for obj in get_profile(user).categories.all()] - return [c for c in Package.objects.categories() - if c["category"] in category_names] - - -def get_account_herds(user): - from djeuscan.models import Package - - ids = [herd.pk for herd in get_profile(user).herds.all()] - return Package.objects.herds(ids=ids) - - -def get_account_maintainers(user): - from djeuscan.models import Package - - ids = [obj.pk for obj in get_profile(user).maintainers.all()] - return Package.objects.maintainers(ids=ids) - - -def get_account_versionlogs(profile): - """ - Returns all watched packages - """ - from djeuscan.models import Package, VersionLog - - q_categories = Q(category__in=[ - category.name for category in profile.categories.all()]) - q_herds = Q(herds__in=profile.herds.all()) - q_maintainers = Q(maintainers__in=profile.maintainers.all()) - packages = list(profile.packages.all()) + list(Package.objects.filter( - q_categories | q_herds | q_maintainers)) - - overlays = [o.name for o in profile.overlays.all()] - - return VersionLog.objects.filter( - Q(package__in=packages) | Q(overlay__in=overlays) - ) - - -def get_user_fav_infos(user): - upstream_k = lambda c: c["n_versions"] - c["n_packaged"] - c["n_overlay"] - - categories = sorted(get_account_categories(user), - key=upstream_k, reverse=True) - c_upstream = sum([upstream_k(c) for c in categories]) - herds = sorted(get_account_herds(user), - key=upstream_k, reverse=True) - h_upstream = sum([upstream_k(c) for c in herds]) - maintainers = sorted(get_account_maintainers(user), - key=upstream_k, reverse=True) - m_upstream = sum([upstream_k(c) for c in maintainers]) - packages = sorted( - get_profile(user).packages.all(), - key=lambda p: p.n_versions - p.n_packaged - p.n_overlay, - reverse=True - ) - p_upstream = sum( - [c.n_versions - c.n_packaged - c.n_overlay for c in packages] - ) - - return { - "categories": categories, "categories_upstream": c_upstream, - "herds": herds, "herds_upstream": h_upstream, - "maintainers": maintainers, "maintainers_upstream": m_upstream, - "packages": packages, "packages_upstream": p_upstream, - } diff --git a/euscanwww/euscan_accounts/migrations/0001_initial.py b/euscanwww/euscan_accounts/migrations/0001_initial.py deleted file mode 100644 index a877d87..0000000 --- a/euscanwww/euscan_accounts/migrations/0001_initial.py +++ /dev/null @@ -1,159 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - - def forwards(self, orm): - db.rename_table('djeuscan_userprofile', - 'euscan_accounts_userprofile') - db.rename_table('djeuscan_userprofile_overlays', - 'euscan_accounts_userprofile_overlays') - db.rename_table('djeuscan_userprofile_maintainers', - 'euscan_accounts_userprofile_maintainers') - db.rename_table('djeuscan_userprofile_packages', - 'euscan_accounts_userprofile_packages') - db.rename_table('djeuscan_userprofile_herds', - 'euscan_accounts_userprofile_herds') - db.rename_table('djeuscan_userprofile_categories', - 'euscan_accounts_userprofile_categories') - - if not db.dry_run: - # For permissions to work properly after migrating - orm['contenttypes.contenttype'].objects.filter( - app_label='djeuscan', model='userprofile' - ).update(app_label='euscan_accounts') - - def backwards(self, orm): - db.rename_table('euscan_accounts_userprofile', - 'djeuscan_userprofile') - db.rename_table('euscan_accounts_userprofile_overlays', - 'djeuscan_userprofile_overlays') - db.rename_table('euscan_accounts_userprofile_maintainers', - 'djeuscan_userprofile_maintainers') - db.rename_table('euscan_accounts_userprofile_packages', - 'djeuscan_userprofile_packages') - db.rename_table('euscan_accounts_userprofile_herds', - 'djeuscan_userprofile_herds') - db.rename_table('euscan_accounts_userprofile_categories', - 'djeuscan_userprofile_categories') - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'euscan_accounts.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_email': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - } - } - - complete_apps = ['euscan_accounts'] diff --git a/euscanwww/euscan_accounts/migrations/__init__.py b/euscanwww/euscan_accounts/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/models.py b/euscanwww/euscan_accounts/models.py deleted file mode 100644 index 0d83e15..0000000 --- a/euscanwww/euscan_accounts/models.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User - -from djeuscan.models import Herd, Maintainer, Package, Category, Overlay - - -class UserProfile(models.Model): - EMAIL_SCAN = 1 - EMAIL_WEEKLY = 2 - EMAIL_MONTHLY = 3 - EMAIL_OPTS = ( - (EMAIL_SCAN, 'On updates'), - (EMAIL_WEEKLY, 'Weekly'), - (EMAIL_MONTHLY, 'Monthly') - ) - - user = models.OneToOneField(User) - herds = models.ManyToManyField(Herd) - maintainers = models.ManyToManyField(Maintainer) - packages = models.ManyToManyField(Package) - categories = models.ManyToManyField(Category) - overlays = models.ManyToManyField(Overlay) - - feed_upstream_info = models.BooleanField(default=True) - feed_portage_info = models.BooleanField(default=False) - feed_show_adds = models.BooleanField(default=True) - feed_show_removals = models.BooleanField(default=True) - feed_ignore_pre = models.BooleanField(default=False) - feed_ignore_pre_if_stable = models.BooleanField(default=False) - - email_activated = models.BooleanField(default=True) - email_every = models.IntegerField(choices=EMAIL_OPTS, default=EMAIL_SCAN) - email_ignore_pre = models.BooleanField(default=False) - email_ignore_pre_if_stable = models.BooleanField(default=False) - last_email = models.DateTimeField(auto_now_add=True) diff --git a/euscanwww/euscan_accounts/templates/euscan/_favourite.html b/euscanwww/euscan_accounts/templates/euscan/_favourite.html deleted file mode 100644 index ff4686a..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/_favourite.html +++ /dev/null @@ -1,23 +0,0 @@ -
    - - - {% for pk in packages_ids %} - - {% endfor %} -
    - -
    - - - {% for pk in packages_ids %} - - {% endfor %} -
    diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html b/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html deleted file mode 100644 index 0caa1a6..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched categories -{% endblock %} - - -{% block content %} -

    Watched categories

    - - {% categories_table categories %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt b/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt deleted file mode 100644 index baf396b..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt +++ /dev/null @@ -1,32 +0,0 @@ -{% load djeuscan_helpers %}{% load sub %}Hello {{ user }}, - -{% if vlogs %}euscan news: -{% for vlog in vlogs %} * {{ vlog.package|ljust:"35" }} {{ vlog.version }} {% if vlog.vtype and not vlog.vtype|is_stable %}({{ vlog.vtype }}){% endif %} -{% endfor %} -{% endif %} - -Summary: -{% with categories|length as num_categories %}{% if num_categories %} -Watching {{ num_categories }} categor{{ num_categories|pluralize:"y,ies"}}: {{ categories_upstream }} upstream version{{ categories_upstream|pluralize:"s"}} -{% if categories_upstream %}Hot categories: -{% for c in categories|slice:":3" %} * {{ c.category }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with herds|length as num_herds %}{% if num_herds %} -Watching {{ num_herds }} herd{{ num_herds|pluralize:"s"}}: {{ herds_upstream }} upstream version{{ herds_upstream|pluralize:"s"}} -{% if herds_upstream %}Hot herds: -{% for c in herds|slice:":3" %} * {{ c.herds__herd }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with maintainers|length as num_maintainers %}{% if num_maintainers %} -Watching {{ num_maintainers }} maintainer{{ num_maintainers|pluralize:"s"}}: {{ maintainers_upstream }} upstream version{{ maintainers_upstream|pluralize:"s"}} -{% if maintainers_upstream %}Hot maintainers: -{% for c in maintainers|slice:":3" %} * {{ c.maintainers__name }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with packages|length as num_packages %}{% if num_packages %} -Watching {{ num_packages }} package{{ num_packages|pluralize:"s"}}: {{ packages_upstream }} upstream version{{ packages_upstream|pluralize:"s"}} -{% if packages_upstream %}Hot packages: -{% for c in packages|slice:":3" %} * {{ c }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %} --- -This email was sent by euscan, please do not reply. -Go to your euscan account to change email notification settings. diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html b/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html deleted file mode 100644 index b9d3f50..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched herds -{% endblock %} - - -{% block content %} -

    Watched herds

    - - {% herds_table herds %} -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/index.html b/euscanwww/euscan_accounts/templates/euscan/accounts/index.html deleted file mode 100644 index 0e61ed6..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/index.html +++ /dev/null @@ -1,110 +0,0 @@ -{% extends "_base.html" %} -{% load url from future %} -{% load sub %} - -{% block title %} - {{ block.super }} - Welcome {{ user }} -{% endblock %} - -{% block content %} -

    - Welcome {{ user }} - - - - Change password - - - - Preferences - - -

    - -

    Summary

    - -
    -
    - {% with categories|length as num_categories %} - Watching {{ num_categories }} categor{{ num_categories|pluralize:"y,ies"}} -
      -
    • {{ categories_upstream }} new upstream version{{ categories_upstream|pluralize:"s"}}
    • - {% if categories_upstream %} -
    • - Hot categories: -
        - {% for c in categories|slice:":3" %} -
      • {{ c.category }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    - {% with herds|length as num_herds %} - Watching {{ num_herds }} herd{{ num_herds|pluralize:"s"}} -
      -
    • {{ herds_upstream }} new upstream version{{ herds_upstream|pluralize:"s"}}
    • - {% if herds_upstream %} -
    • - Hot herds: -
        - {% for c in herds|slice:":3" %} -
      • {{ c.herds__herd }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    -
    - -
    - {% with maintainers|length as num_maintainers %} - Watching {{ num_maintainers }} maintainer{{ num_maintainers|pluralize:"s"}} -
      -
    • {{ maintainers_upstream }} new upstream version{{ maintainers_upstream|pluralize:"s"}}
    • - {% if maintainers_upstream %} -
    • - Hot maintainers: -
        - {% for c in maintainers|slice:":3" %} -
      • {{ c.maintainers__name }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    - {% with packages|length as num_packages %} - Watching {{ num_packages }} package{{ num_packages|pluralize:"s"}} -
      -
    • {{ packages_upstream }} new upstream version{{ packages_upstream|pluralize:"s"}}
    • - {% if packages_upstream %} -
    • - Hot packages: -
        - {% for c in packages|slice:":3" %} -
      • {{ c }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    -
    - -
    -{% include "euscan/_package_vlogs.html" %} -
    -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html b/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html deleted file mode 100644 index cc8eefe..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched maintainers -{% endblock %} - - -{% block content %} -

    Watched maintainers

    - - {% maintainers_table maintainers %} -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html b/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html deleted file mode 100644 index 946b61e..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - Watched overlays -{% endblock %} - -{% block content %} -

    Watched overlays

    - -{% overlays_table overlays %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html b/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html deleted file mode 100644 index 46e674b..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} - -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched packages -{% endblock %} - - -{% block content %} -

    Watched packages

    - - {% packages packages %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html b/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html deleted file mode 100644 index 8df632a..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html +++ /dev/null @@ -1,116 +0,0 @@ -{% extends "_base.html" %} -{% load url from future %} - -{% block title %} - {{ block.super }} - Edit user preferences for {{ user }} -{% endblock %} - -{% block css %} - {{ block.super }} - -{% endblock %} - -{% block javascript %} - {{ block.super }} - - -{% endblock %} - - -{% block content %} - {% if updated %} -
    - Saved! Your preferences have been saved -
    - {% endif %} - -

    - Edit user preferences -

    - -
    - {% csrf_token %} - - - - - - - - - - - - - - -
    Personal settings
    {{ form.first_name.label_tag }}{% if form.first_name.errors %}
      {{ form.first_name.errors }}
    {% endif %}{{ form.first_name }}
    {{ form.last_name.label_tag }}{% if form.last_name.errors %}
      {{ form.last_name.errors }}
    {% endif %}{{ form.last_name }}
    {{ form.email.label_tag }}{% if form.first_name.errors %}
      {{ form.email.errors }}
    {% endif %} {{ form.email }}
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Feed settings
    {{ form.feed_upstream_info.label_tag }}{{ form.feed_upstream_info }}
    {{ form.feed_portage_info.label_tag }}{{ form.feed_portage_info }}
    {{ form.feed_show_adds.label_tag }}{{ form.feed_show_adds }}
    {{ form.feed_show_removals.label_tag }}{{ form.feed_show_removals }}
    {{ form.feed_ignore_pre.label_tag }}{{ form.feed_ignore_pre }}
    {{ form.feed_ignore_pre_if_stable.label_tag }}{{ form.feed_ignore_pre_if_stable }}
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Mail settings
    {{ form.email_activated.label_tag }}{{ form.email_activated }}
    {{ form.email_every.label_tag }}{{ form.email_every }}
    {{ form.email_ignore_pre.label_tag }}{{ form.email_ignore_pre }}
    {{ form.email_ignore_pre_if_stable.label_tag }}{{ form.email_ignore_pre_if_stable }}
     
    - -
    -
    - - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templatetags/__init__.py b/euscanwww/euscan_accounts/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py b/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py deleted file mode 100644 index c664837..0000000 --- a/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py +++ /dev/null @@ -1,11 +0,0 @@ -from django import template -from django.core.urlresolvers import reverse - -register = template.Library() - - -@register.inclusion_tag('euscan/_favourite.html', takes_context=True) -def favourite_buttons(context, subj, *args): - context["favourite_url"] = reverse("favourite_%s" % subj, args=args) - context["unfavourite_url"] = reverse("unfavourite_%s" % subj, args=args) - return context diff --git a/euscanwww/euscan_accounts/tests.py b/euscanwww/euscan_accounts/tests.py deleted file mode 100644 index 501deb7..0000000 --- a/euscanwww/euscan_accounts/tests.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -This file demonstrates writing tests using the unittest module. These will pass -when you run "manage.py test". - -Replace this with more appropriate tests for your application. -""" - -from django.test import TestCase - - -class SimpleTest(TestCase): - def test_basic_addition(self): - """ - Tests that 1 + 1 always equals 2. - """ - self.assertEqual(1 + 1, 2) diff --git a/euscanwww/euscan_accounts/urls.py b/euscanwww/euscan_accounts/urls.py deleted file mode 100644 index 0a798cb..0000000 --- a/euscanwww/euscan_accounts/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.conf.urls import patterns, url -from django.contrib.auth.views import logout -from django.views.generic import RedirectView -from django.contrib.auth.decorators import login_required - -from euscan_accounts.feeds import UserFeed - - -urlpatterns = patterns('euscan_accounts.views', - url(r'^profile/$', 'accounts_index', name="accounts_index"), - url(r'^profile/preferences/$', 'accounts_preferences', - name="accounts_preferences"), - url(r'^categories/$', 'accounts_categories', name="accounts_categories"), - url(r'^herds/$', 'accounts_herds', name="accounts_herds"), - url(r'^maintainers/$', 'accounts_maintainers', - name="accounts_maintainers"), - url(r'^packages/$', 'accounts_packages', name="accounts_packages"), - url(r'^overlays/$', 'accounts_overlays', name="accounts_overlays"), - - url(r'^feed/$', login_required(UserFeed()), name='user_feed'), - - url(r'^logout/$', logout, {'next_page': '/'}), - - url(r'^password/change/done/$', - RedirectView.as_view(url="../../../profile/")), -) diff --git a/euscanwww/euscan_accounts/views.py b/euscanwww/euscan_accounts/views.py deleted file mode 100644 index 5856cbd..0000000 --- a/euscanwww/euscan_accounts/views.py +++ /dev/null @@ -1,246 +0,0 @@ -from annoying.decorators import render_to, ajax_request - -from django.shortcuts import get_object_or_404, redirect -from django.core.urlresolvers import reverse -from django.contrib.auth.decorators import login_required -from django.views.decorators.http import require_POST - -from djeuscan.models import Package, Category, Herd, Overlay -from djeuscan.helpers import get_maintainer_or_404 - -from euscan_accounts.feeds import UserFeed -from euscan_accounts.forms import PreferencesForm -from euscan_accounts.helpers import get_user_fav_infos, get_profile, \ - get_account_categories, get_account_herds, get_account_maintainers - - -@login_required -@render_to('euscan/accounts/index.html') -def accounts_index(request): - user = request.user - - infos = get_user_fav_infos(user) - infos['vlog'] = UserFeed().items({'user': user, 'options': {}}) - - return infos - - -@login_required -@render_to('euscan/accounts/preferences.html') -def accounts_preferences(request): - user = request.user - prof = get_profile(user) - - updated = False - if request.method == "POST": - form = PreferencesForm(request.POST) - if form.is_valid(): - user.first_name = form.cleaned_data["first_name"] - user.last_name = form.cleaned_data["last_name"] - user.email = form.cleaned_data["email"] - user.save(force_update=True) - - prof.feed_upstream_info = form.cleaned_data["feed_upstream_info"] - prof.feed_portage_info = form.cleaned_data["feed_portage_info"] - prof.feed_show_adds = form.cleaned_data["feed_show_adds"] - prof.feed_show_removals = form.cleaned_data["feed_show_removals"] - prof.feed_ignore_pre = form.cleaned_data["feed_ignore_pre"] - prof.feed_ignore_pre_if_stable = \ - form.cleaned_data["feed_ignore_pre_if_stable"] - - prof.email_activated = form.cleaned_data["email_activated"] - prof.email_every = form.cleaned_data["email_every"] - prof.email_ignore_pre = form.cleaned_data["email_ignore_pre"] - prof.email_ignore_pre_if_stable = \ - form.cleaned_data["email_ignore_pre_if_stable"] - - prof.save(force_update=True) - - updated = True - else: - initial_data = { - "first_name": user.first_name, - "last_name": user.last_name, - "email": user.email, - "feed_upstream_info": prof.feed_upstream_info, - "feed_portage_info": prof.feed_portage_info, - "feed_show_adds": prof.feed_show_adds, - "feed_show_removals": prof.feed_show_removals, - "feed_ignore_pre": prof.feed_ignore_pre, - "feed_ignore_pre_if_stable": prof.feed_ignore_pre_if_stable, - "email_activated": prof.email_activated, - "email_every": prof.email_every, - "email_ignore_pre": prof.email_ignore_pre, - "email_ignore_pre_if_stable": prof.email_ignore_pre_if_stable, - } - form = PreferencesForm(initial_data) - return {"form": form, "updated": updated} - - -@login_required -@render_to('euscan/accounts/categories.html') -def accounts_categories(request): - return {"categories": get_account_categories(request.user)} - - -@login_required -@render_to('euscan/accounts/herds.html') -def accounts_herds(request): - return {"herds": get_account_herds(request.user)} - - -@login_required -@render_to('euscan/accounts/maintainers.html') -def accounts_maintainers(request): - return {"maintainers": get_account_maintainers(request.user)} - - -@login_required -@render_to('euscan/accounts/packages.html') -def accounts_packages(request): - return {"packages": get_profile(request.user).packages.all()} - - -@login_required -@render_to('euscan/accounts/overlays.html') -def accounts_overlays(request): - overlays = [obj.name for obj in get_profile(request.user).overlays.all()] - return {"overlays": overlays} - - -@login_required -@require_POST -@ajax_request -def favourite_package(request, category, package): - obj = get_object_or_404(Package, category=category, name=package) - get_profile(request.user).packages.add(obj) - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_package(request, category, package): - obj = get_object_or_404(Package, category=category, name=package) - get_profile(request.user).packages.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_herd(request, herd): - obj = get_object_or_404(Herd, herd=herd) - get_profile(request.user).herds.add(obj) - if "nojs" in request.POST: - return redirect(reverse("herd", args=(herd, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_herd(request, herd): - obj = get_object_or_404(Herd, herd=herd) - get_profile(request.user).herds.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("herd", args=(herd, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_maintainer(request, maintainer_id=None, maintainer_email=None): - obj = get_maintainer_or_404(maintainer_id, maintainer_email) - get_profile(request.user).maintainers.add(obj) - if "nojs" in request.POST: - return redirect(reverse("maintainer", args=(obj.email, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_maintainer(request, maintainer_id=None, maintainer_email=None): - obj = get_maintainer_or_404(maintainer_id, maintainer_email) - get_profile(request.user).maintainers.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("maintainer", args=(obj.email, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_category(request, category): - obj = Category.objects.get(name=category) - get_profile(request.user).categories.add(obj) - if "nojs" in request.POST: - return redirect(reverse("category", args=(category, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_category(request, category): - obj = Category.objects.get(name=category) - get_profile(request.user).categories.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("category", args=(category, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_overlay(request, overlay): - obj = Overlay.objects.get(name=overlay) - get_profile(request.user).overlays.add(obj) - if "nojs" in request.POST: - return redirect(reverse("overlay", args=(overlay, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_overlay(request, overlay): - obj = Overlay.objects.get(name=overlay) - get_profile(request.user).overlays.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("overlay", args=(overlay, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_world(request): - if not "packages[]" in request.POST: - return {"success": False} - packages = request.POST.getlist("packages[]") - objs = Package.objects.filter(id__in=packages) - get_profile(request.user).packages.add(*objs) - if "nojs" in request.POST: - return redirect(reverse("world")) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_world(request): - if not "packages[]" in request.POST: - return {"success": False} - packages = request.POST.getlist("packages[]") - objs = Package.objects.filter(id__in=packages) - get_profile(request.user).packages.remove(*objs) - if "nojs" in request.POST: - return redirect(reverse("world")) - return {"success": True} diff --git a/euscanwww/euscan_captcha/__init__.py b/euscanwww/euscan_captcha/__init__.py deleted file mode 100644 index cfb4ead..0000000 --- a/euscanwww/euscan_captcha/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -#from registration.backends.default import DefaultBackend -#from forms import RegistrationFormCaptcha -# -#class CaptchaDefaultBackend(DefaultBackend): -# def get_form_class(self, request): -# return RegistrationFormCaptcha diff --git a/euscanwww/euscan_captcha/forms.py b/euscanwww/euscan_captcha/forms.py deleted file mode 100644 index d5f1185..0000000 --- a/euscanwww/euscan_captcha/forms.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.conf import settings - -from captcha.fields import ReCaptchaField -from registration.forms import RegistrationForm - -class RecaptchaRegistrationForm(RegistrationForm): - captcha = ReCaptchaField( - public_key=settings.RECAPTCHA_PUBLIC_KEY, - private_key=settings.RECAPTCHA_PRIVATE_KEY, - use_ssl=True, - attrs={'theme': 'white'}) diff --git a/euscanwww/euscan_captcha/models.py b/euscanwww/euscan_captcha/models.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_captcha/urls.py b/euscanwww/euscan_captcha/urls.py deleted file mode 100644 index 435ba5c..0000000 --- a/euscanwww/euscan_captcha/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.conf.urls import patterns, url - -from views import RecaptchaRegistrationView - -urlpatterns = patterns( - '', url( - r'^register/$', - RecaptchaRegistrationView.as_view(), - name='registration_register'), -) diff --git a/euscanwww/euscan_captcha/views.py b/euscanwww/euscan_captcha/views.py deleted file mode 100644 index 45ff0be..0000000 --- a/euscanwww/euscan_captcha/views.py +++ /dev/null @@ -1,5 +0,0 @@ -from registration.backends.default.views import RegistrationView -from forms import RecaptchaRegistrationForm - -class RecaptchaRegistrationView(RegistrationView): - form_class = RecaptchaRegistrationForm diff --git a/euscanwww/euscanwww/__init__.py b/euscanwww/euscanwww/__init__.py deleted file mode 100644 index 8b13789..0000000 --- a/euscanwww/euscanwww/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/euscanwww/euscanwww/models.py b/euscanwww/euscanwww/models.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscanwww/sendmail.py b/euscanwww/euscanwww/sendmail.py deleted file mode 100644 index 691b05b..0000000 --- a/euscanwww/euscanwww/sendmail.py +++ /dev/null @@ -1,53 +0,0 @@ -"""sendmail email backend class.""" - -import threading - -from django.core.mail.backends.base import BaseEmailBackend -from subprocess import Popen, PIPE - - -class EmailBackend(BaseEmailBackend): - def __init__(self, fail_silently=False, **kwargs): - super(EmailBackend, self).__init__(fail_silently=fail_silently) - self._lock = threading.RLock() - - def open(self): - return True - - def close(self): - pass - - def send_messages(self, email_messages): - """ - Sends one or more EmailMessage objects and returns the number of email - messages sent. - """ - if not email_messages: - return - self._lock.acquire() - try: - num_sent = 0 - for message in email_messages: - sent = self._send(message) - if sent: - num_sent += 1 - finally: - self._lock.release() - return num_sent - - def _send(self, email_message): - """A helper method that does the actual sending.""" - if not email_message.recipients(): - return False - try: - ps = Popen(["sendmail"] + list(email_message.recipients()), \ - stdin=PIPE) - ps.stdin.write(email_message.message().as_string()) - ps.stdin.flush() - ps.stdin.close() - return not ps.wait() - except: - if not self.fail_silently: - raise - return False - return True diff --git a/euscanwww/euscanwww/settings.py b/euscanwww/euscanwww/settings.py deleted file mode 100644 index e1e752c..0000000 --- a/euscanwww/euscanwww/settings.py +++ /dev/null @@ -1,273 +0,0 @@ -# Django settings for euscanwww project. - -import os.path - -DEBUG = False -TEMPLATE_DEBUG = DEBUG - -ADMINS = ( - ('admin', 'admin@example.com'), -) - -MANAGERS = ADMINS - -""" -# MySQL Example: - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'euscan', - 'USER': 'euscan', - 'PASSWORD': 'password', - 'HOST': 'localhost', - 'PORT': '', - 'OPTIONS': { - 'init_command': 'SET storage_engine=INNODB', - } - }, - -# PostGreSQL Example: - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'euscan', - 'USER': 'euscan', - 'PASSWORD': '', - 'HOST': 'localhost', - 'PORT': '', - }, -""" - -SITE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# euscan specific config -EUSCAN_ROOT = SITE_ROOT -RRD_ROOT = os.path.join(EUSCAN_ROOT, 'var', 'rrd') - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(EUSCAN_ROOT, 'var', 'db', 'euscan.db') - }, -} - -CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', - 'LOCATION': os.path.join(EUSCAN_ROOT, 'var', 'cache'), - } -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = 'Europe/Paris' - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'en-us' - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = os.path.join(SITE_ROOT, 'var', 'uploads') - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash if there is a path component (optional in other cases). -# Examples: "http://media.lawrence.com", "http://example.com/media/" -MEDIA_URL = '/media/' - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = '/static/' - -# Additional locations of static files -STATICFILES_DIRS = ( - os.path.join(SITE_ROOT, 'htdocs'), -) - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', -) - -# Make this unique, and don't share it with anybody. -SECRET_KEY = '' - -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', -# 'django.template.loaders.eggs.Loader', -) - -MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', - # Cache middleware - 'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.cache.FetchFromCacheMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - # Disable Csrf for now - # 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - # Uncomment the next line for simple clickjacking protection: - # 'django.middleware.clickjacking.XFrameOptionsMiddleware', -) - -CACHE_MIDDLEWARE_SECONDS = 3600 -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True - -ROOT_URLCONF = 'euscanwww.urls' - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = 'euscanwww.wsgi.application' - -FORCE_SCRIPT_NAME = "" - -TEMPLATE_DIRS = ( - os.path.join(SITE_ROOT, 'templates'), -) - -TEMPLATE_CONTEXT_PROCESSORS = ( - "django.contrib.auth.context_processors.auth", - "django.core.context_processors.debug", - "django.core.context_processors.i18n", - "django.core.context_processors.media", - "django.core.context_processors.static", - "django.contrib.messages.context_processors.messages", - "django.core.context_processors.request", -) - -INSTALLED_APPS = ( - 'euscanwww', - 'djeuscan', - 'euscan_accounts', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.admin', - # Uncomment the next line to enable admin documentation: - # 'django.contrib.admindocs', - 'south', - 'djcelery', - 'registration', - 'captcha' -) - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'formatters': { - 'simple': { - 'format': '%(levelname)s %(asctime)s %(message)s' - }, - }, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } - }, - 'handlers': { - 'console': { - 'level': 'INFO', - 'class': 'logging.StreamHandler', - 'formatter': 'simple' - }, - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' - } - }, - 'loggers': { - 'django.request': { - 'handlers': ['mail_admins'], - 'level': 'ERROR', - 'propagate': True, - }, - 'djeuscan': { - 'handlers': ['console'], - 'level': 'INFO', - 'propagate': True - } - } -} - -# django-registration -ACCOUNT_ACTIVATION_DAYS = 7 -RECAPTCHA_PUBLIC_KEY = "" -RECAPTCHA_PRIVATE_KEY = "" -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - -# djeuscan tasks -PORTAGE_ROOT = "/" -PORTAGE_CONFIGROOT = "/" -EIX_CACHEFILE = os.path.join(PORTAGE_ROOT, 'var/cache/eix') -LAYMAN_CONFIG = "/etc/layman/layman.cfg" -MAKE_CONF = "/etc/make.conf" - -EGENCACHE_JOBS = 4 - -# Celery config -import djcelery -djcelery.setup_loader() -BROKER_URL = "amqp://guest:guest@localhost:5672//" -BROKER_CONNECTION_TIMEOUT = 3600 -CELERY_RESULT_BACKEND = "amqp" -CELERYD_CONCURRENCY = 4 -CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" - -TASKS_UPSTREAM_GROUPS = 32 -TASKS_EMAIL_GROUPS = 10 - -DAYS_TO_STABILIZATION = 30 - -# LDAP authentication -# TODO: Test data - change me! -AUTH_LDAP_SERVER_URI = "ldap://localhost" -AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,ou=users,dc=my-domain,dc=com" -AUTHENTICATION_BACKENDS = ( - 'django_auth_ldap.backend.LDAPBackend', - 'django.contrib.auth.backends.ModelBackend', -) - -AUTH_PROFILE_MODULE = 'euscan_accounts.UserProfile' - -try: - from local_settings import * -except ImportError, ex: - import sys - sys.stderr.write( - "settings.py: error importing local settings file:\n" - "\t%s\nDo you have a local_settings.py module?\n" % str(ex) - ) - -os.environ['ROOT'] = PORTAGE_ROOT -os.environ['PORTAGE_CONFIGROOT'] = PORTAGE_CONFIGROOT -os.environ['EIX_CACHEFILE'] = EIX_CACHEFILE -os.environ['http_proxy'] = '127.0.0.1:8123' diff --git a/euscanwww/euscanwww/templates/404.html b/euscanwww/euscanwww/templates/404.html deleted file mode 100644 index 03332b4..0000000 --- a/euscanwww/euscanwww/templates/404.html +++ /dev/null @@ -1 +0,0 @@ -

    Not Found

    diff --git a/euscanwww/euscanwww/urls.py b/euscanwww/euscanwww/urls.py deleted file mode 100644 index 524fe5e..0000000 --- a/euscanwww/euscanwww/urls.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.conf import settings -from django.conf.urls import patterns, include, url -from django.contrib import admin -admin.autodiscover() - - -urlpatterns = patterns('', - url(r'^', include('djeuscan.urls')), - - url(r'^admin/', include(admin.site.urls)), - url(r'^accounts/', include('euscan_accounts.urls')), - url(r'^accounts/', include('euscan_captcha.urls')), - url(r'^accounts/', include('registration.backends.default.urls')), -) - - -if settings.DEBUG: - import os - - urlpatterns += patterns('', - url(r'^static/(?P.*)$', 'django.views.static.serve', { - 'document_root': os.path.join(settings.EUSCAN_ROOT, 'htdocs'), - }), - ) diff --git a/euscanwww/euscanwww/wsgi.py b/euscanwww/euscanwww/wsgi.py deleted file mode 100644 index 3c37f1b..0000000 --- a/euscanwww/euscanwww/wsgi.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -WSGI config for {{ project_name }} project. - -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. - -""" -import os - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "euscanwww.settings") - -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() - -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) diff --git a/euscanwww/htdocs/css/bootstrap.min.css b/euscanwww/htdocs/css/bootstrap.min.css deleted file mode 100644 index b74b454..0000000 --- a/euscanwww/htdocs/css/bootstrap.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.127659574%;*margin-left:2.0744680846382977%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%}.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%}.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%}.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%}.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%}.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%}.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%}.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%}.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%}.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%}.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%}.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:""}.container-fluid:after{clear:both}p{margin:0 0 9px}p small{font-size:11px;color:#999}.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{font-size:18px;line-height:27px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.page-header h1{line-height:1}ul,ol{padding:0;margin:0 0 9px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:18px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:18px}dt,dd{line-height:18px}dt{font-weight:bold;line-height:17px}dd{margin-left:9px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}strong{font-weight:bold}em{font-style:italic}.muted{color:#999}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}blockquote small{display:block;line-height:18px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:18px;font-style:normal;line-height:18px}small{font-size:100%}cite{font-style:normal}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:18px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 18px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:13.5px;color:#999}label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555}input,textarea{width:210px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-ms-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer}input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}.uneditable-textarea{width:auto;height:auto}select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px}select{width:220px;border:1px solid #bbb}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:930px}input.span11,textarea.span11,.uneditable-input.span11{width:850px}input.span10,textarea.span10,.uneditable-input.span10{width:770px}input.span9,textarea.span9,.uneditable-input.span9{width:690px}input.span8,textarea.span8,.uneditable-input.span8{width:610px}input.span7,textarea.span7,.uneditable-input.span7{width:530px}input.span6,textarea.span6,.uneditable-input.span6{width:450px}input.span5,textarea.span5,.uneditable-input.span5{width:370px}input.span4,textarea.span4,.uneditable-input.span4{width:290px}input.span3,textarea.span3,.uneditable-input.span3{width:210px}input.span2,textarea.span2,.uneditable-input.span2{width:130px}input.span1,textarea.span1,.uneditable-input.span1{width:50px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;border-color:#ddd}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:""}.form-actions:after{clear:both}.uneditable-input{overflow:hidden;white-space:nowrap;cursor:not-allowed;background-color:#fff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}:-moz-placeholder{color:#999}:-ms-input-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.help-block,.help-inline{color:#555}.help-block{display:block;margin-bottom:9px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-prepend,.input-append{margin-bottom:5px}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:middle;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{z-index:2}.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc}.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;height:18px;min-width:16px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc}.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .uneditable-input{border-right-color:#ccc;border-left-color:#eee}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:9px}legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:18px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:9px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:18px}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";opacity:.3;filter:alpha(opacity=30)}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:4px 0;margin:1px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 10px 4px;margin-bottom:0;*margin-left:.3em;font-size:13px;line-height:18px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:1px}.btn-small{padding:5px 9px;font-size:11px;line-height:16px}.btn-small [class^="icon-"]{margin-top:-1px}.btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#ccc;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.btn-primary{background-color:#0074cc;*background-color:#05c;background-image:-ms-linear-gradient(top,#08c,#05c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#05c));background-image:-webkit-linear-gradient(top,#08c,#05c);background-image:-o-linear-gradient(top,#08c,#05c);background-image:-moz-linear-gradient(top,#08c,#05c);background-image:linear-gradient(top,#08c,#05c);background-repeat:repeat-x;border-color:#05c #05c #003580;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#05c;*background-color:#004ab3}.btn-primary:active,.btn-primary.active{background-color:#004099 \9}.btn-warning{background-color:#faa732;*background-color:#f89406;background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{background-color:#da4f49;*background-color:#bd362f;background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{background-color:#5bb75b;*background-color:#51a351;background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{background-color:#49afcd;*background-color:#2f96b4;background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{background-color:#414141;*background-color:#222;background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-group{position:relative;*margin-left:.3em;*zoom:1}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:9px;margin-bottom:9px}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-group>.btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.dropdown-toggle{*padding-top:4px;padding-right:8px;*padding-bottom:4px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini.dropdown-toggle{padding-right:5px;padding-left:5px}.btn-group>.btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.btn-group>.btn-large.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#05c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:7px;margin-left:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.btn-mini .caret{margin-top:5px}.btn-small .caret{margin-top:6px}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.alert{padding:8px 35px 8px 14px;margin-bottom:18px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert-heading{color:inherit}.alert .close{position:relative;top:-2px;right:-21px;line-height:18px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.navbar{*position:relative;*z-index:2;margin-bottom:18px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top,#333,#222);background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar{color:#999}.navbar .brand:hover{text-decoration:none}.navbar .brand{display:block;float:left;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#999}.navbar .navbar-text{margin-bottom:0;line-height:40px}.navbar .navbar-link{color:#999}.navbar .navbar-link:hover{color:#fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#fff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{display:block;float:left}.navbar .nav>li>a{float:none;padding:9px 10px 11px;line-height:19px;color:#999;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar .btn{display:inline-block;padding:4px 10px 4px;margin:5px 5px 6px;line-height:18px}.navbar .btn-group{padding:5px 5px 6px;margin:0}.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .divider-vertical{width:1px;height:40px;margin:0 9px;overflow:hidden;background-color:#222;border-right:1px solid #333}.navbar .nav.pull-right{margin-right:0;margin-left:10px}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;background-color:#2c2c2c;*background-color:#222;background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{background-color:#222;*background-color:#151515}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#080808 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown .dropdown-toggle .caret,.navbar .nav li.dropdown.open .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.active .caret{opacity:1;filter:alpha(opacity=100)}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:transparent}.navbar .nav li.dropdown.active>.dropdown-toggle:hover{color:#fff}.navbar .pull-right .dropdown-menu,.navbar .dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right .dropdown-menu:before,.navbar .dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right .dropdown-menu:after,.navbar .dropdown-menu.pull-right:after{right:13px;left:auto}.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-ms-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);background-repeat:repeat-x;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#999}.breadcrumb .active a{color:#333}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-bottom:18px;margin-left:0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-ms-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1020;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px}.popover.top{margin-top:-5px}.popover.right{margin-left:5px}.popover.bottom{margin-top:5px}.popover.left{margin-left:-5px}.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.popover .arrow{position:absolute;width:0;height:0}.popover-inner{width:280px;padding:3px;overflow:hidden;background:#000;background:rgba(0,0,0,0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3)}.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.popover-content{padding:14px;background-color:#fff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:18px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075)}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px}.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:18px;margin-bottom:18px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{width:0;height:18px;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:18px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:18px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-ms-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:10px 15px 5px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{color:#fff}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden} diff --git a/euscanwww/htdocs/css/style.css b/euscanwww/htdocs/css/style.css deleted file mode 100644 index b87877e..0000000 --- a/euscanwww/htdocs/css/style.css +++ /dev/null @@ -1,244 +0,0 @@ -body { - font-size: 0.8em; - font-family: Dejavu, Verdana, "Bitstream Vera Sans", "Lucida Grande", "Trebuchet MS", sans-serif; - color: #535353; - background: #D2D0D4; -} - -img { - border: none; -} - -h1 { - margin-top: 0; - color: #333; - font-size: 1.6em; - width: 20em; - margin-left: auto; - margin-right: auto; -} - -a:link, a:visited { - text-decoration: none; - font-weight: bold; - color: #ff8c00; -} - -a:hover, a:active { - font-weight: bold; - color: #ff4500; - text-decoration: underline; -} - -#header { - width: 100%; - height: 30px; - margin: 0; - padding: 0; - background: url(../img/gentoo-header-bar-bg.png) repeat-x; - margin-bottom: 20px; -} - -#header #logo { - float: left; -} - -#content { - border: 1px solid #67539B; - background: #FEFEFE; - - padding: 20px; - - min-height: 350px; -} - -.menu { - border: 1px solid #67539B; - background: #8076A1; - color: #FFF; - padding-top: 5px; - padding-bottom: 5px; -} - -.notfirst-menu { - margin-top: 10px; -} - -.menu a { - color: #fff; -} - -.menu li { - list-style-type: none; -} - -.submenu { - padding-left: 15px; -} - -.menu dl { - margin-left: 15px; -} - -.menu dd { - border: none; -} - -a { - color: #3F4C66; -} - -a:link, a:visited, a:active { - color: #3F4C66; - text-decoration: none; -} -a:hover { - color: #4C5C7B; - text-decoration: underline; -} - -abbr:hover { - text-decoration: underline; -} - -pre { - border-left:5px solid; - padding:0.5em 1em; - margin-left:2em; -} - -dt { - font-weight: bold; -} - -dd { - border-left: 1px solid #ccc; - margin: 5px; - padding: 5px; -} - -.table { - width: 60% !important; - margin: auto; -} - -td { - max-width: 350px; -} - -#footer { - background: #8076A1; - font-size: 0.8em; - width: 100%; - margin: 0; - margin-top: 20px; - color: #FFF; -} - -#footer p { - text-align: right; - margin: 5px; -} - -.err, .ok, .inf { - margin: 5px; - margin-left: auto; - margin-right: auto; - width: 70%; - font-weight:bold; - border: 1px dotted #5682AD; -} - -.added { - color: #262; -} - -.removed { - color: #F00; -} - -.err { - border-color: #F00; - color: #F00; -} - -.ok { - border-color: #262; - color: #262; -} - -.logo { - float: right; -} - -.clear { - clear: both; -} - -.package_stat { - width: 40px; - float: right; - height: 5px; - border: 1px solid #ccc; -} - -.package_stat div { - float: left; - height: 5px; -} - -.package_stat .packaged { - background: #85ACFF; -} - -.package_stat .overlay { - background: #C6D9FD; -} - -.package_stat .upstream { - background: #FDEADD; -} - -.log { - max-height: 100pt; - overflow: auto; -} - -.hide { - display: none; -} - -.rounded { - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; -} - -.padded { - padding: 10px; -} - -.cursor-pointer { - cursor: pointer; -} - -textarea { - width: inherit; -} - -.errorlist > li { - color: red; - list-style: none; -} - -.errorlist + input { - border: 1px solid red; -} - -.inline { - display: inline; -} - -.padding-bottom10 { - padding-bottom: 10px; -} diff --git a/euscanwww/htdocs/css/table.css b/euscanwww/htdocs/css/table.css deleted file mode 100644 index d59a217..0000000 --- a/euscanwww/htdocs/css/table.css +++ /dev/null @@ -1,336 +0,0 @@ -/* - * File: demo_table.css - * CVS: $Id$ - * Description: CSS descriptions for DataTables demo pages - * Author: Allan Jardine - * Created: Tue May 12 06:47:22 BST 2009 - * Modified: $Date$ by $Author$ - * Language: CSS - * Project: DataTables - * - * Copyright 2009 Allan Jardine. All Rights Reserved. - * - * *************************************************************************** - * DESCRIPTION - * - * The styles given here are suitable for the demos that are used with the standard DataTables - * distribution (see www.datatables.net). You will most likely wish to modify these styles to - * meet the layout requirements of your site. - * - * Common issues: - * 'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is - * no conflict between the two pagination types. If you want to use full_numbers pagination - * ensure that you either have "example_alt_pagination" as a body class name, or better yet, - * modify that selector. - * Note that the path used for Images is relative. All images are by default located in - * ../img/ - relative to this CSS file. - */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables features - */ - -.dataTables_wrapper { - position: relative; - min-height: 302px; - clear: both; - _height: 302px; - zoom: 1; /* Feeling sorry for IE */ -} - -.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 250px; - height: 30px; - margin-left: -125px; - margin-top: -15px; - padding: 14px 0 2px 0; - border: 1px solid #ddd; - text-align: center; - color: #999; - font-size: 14px; - background-color: white; -} - -.dataTables_length { - width: 40%; - float: left; -} - -.dataTables_filter { - width: 50%; - float: right; - text-align: right; -} - -.dataTables_info { - width: 60%; - float: left; -} - -.dataTables_paginate { - width: 44px; - * width: 50px; - float: right; - text-align: right; -} - -/* Pagination nested */ -.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next { - height: 19px; - width: 19px; - margin-left: 3px; - float: left; -} - -.paginate_disabled_previous { - background-image: url('../img/back_disabled.jpg'); -} - -.paginate_enabled_previous { - background-image: url('../img/back_enabled.jpg'); -} - -.paginate_disabled_next { - background-image: url('../img/forward_disabled.jpg'); -} - -.paginate_enabled_next { - background-image: url('../img/forward_enabled.jpg'); -} - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables display - */ -table.display { - margin: 0 auto; - clear: both; - width: 100%; - - /* Note Firefox 3.5 and before have a bug with border-collapse - * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) - * border-spacing: 0; is one possible option. Conditional-css.com is - * useful for this kind of thing - * - * Further note IE 6/7 has problems when calculating widths with border width. - * It subtracts one px relative to the other browsers from the first column, and - * adds one to the end... - * - * If you want that effect I'd suggest setting a border-top/left on th/td's and - * then filling in the gaps with other borders. - */ -} - -table.display thead th { - padding: 3px 18px 3px 10px; - border-bottom: 1px solid black; - font-weight: bold; - cursor: pointer; - * cursor: hand; -} - -table.display tfoot th { - padding: 3px 18px 3px 10px; - border-top: 1px solid black; - font-weight: bold; -} - -table.display tr.heading2 td { - border-bottom: 1px solid #aaa; -} - -table.display td { - padding: 3px 10px; -} - -table.display td.center { - text-align: center; -} - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables sorting - */ - -.sorting_asc { - background: url('../img/sort_asc.png') no-repeat center right; -} - -.sorting_desc { - background: url('../img/sort_desc.png') no-repeat center right; -} - -.sorting { - background: url('../img/sort_both.png') no-repeat center right; -} - -.sorting_asc_disabled { - background: url('../img/sort_asc_disabled.png') no-repeat center right; -} - -.sorting_desc_disabled { - background: url('../img/sort_desc_disabled.png') no-repeat center right; -} - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables row classes - */ -table.display td.bad { - background-color: #FFDFDF; -} - -table.display td.ugly { - background-color: #EDB9B9; -} - -tr { - background-color: #E2E4FF; -} - -tr.even { - background-color: white; -} - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Misc - */ -.dataTables_scroll { - clear: both; -} - -.dataTables_scrollBody { - *margin-top: -1px; -} - -.top, .bottom { - padding: 15px; - background-color: #F5F5F5; - border: 1px solid #CCCCCC; -} - -.top .dataTables_info { - float: none; -} - -.clear { - clear: both; -} - -.dataTables_empty { - text-align: center; -} - -tfoot input { - margin: 0.5em 0; - width: 100%; - color: #444; -} - -tfoot input.search_init { - color: #999; -} - -td.group { - background-color: #d1cfd0; - border-bottom: 2px solid #A19B9E; - border-top: 2px solid #A19B9E; -} - -td.details { - background-color: #d1cfd0; - border: 2px solid #A19B9E; -} - - -.example_alt_pagination div.dataTables_info { - width: 40%; -} - -.paging_full_numbers { - width: 400px; - height: 22px; - line-height: 22px; -} - -.paging_full_numbers span.paginate_button, - .paging_full_numbers span.paginate_active { - border: 1px solid #aaa; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - padding: 2px 5px; - margin: 0 3px; - cursor: pointer; - *cursor: hand; -} - -.paging_full_numbers span.paginate_button { - background-color: #ddd; -} - -.paging_full_numbers span.paginate_button:hover { - background-color: #ccc; -} - -.paging_full_numbers span.paginate_active { - background-color: #99B3FF; -} - -table.display tr.row_selected td { - background-color: #9FAFD1; -} - -/* - * Row highlighting example - */ -tbody tr:hover, #example tbody tr td.highlighted { - background-color: #E6FF99; -} - -tr:hover { - background-color: #ECFFB3; -} - -tr:hover td.sorting_1 { - background-color: #DDFF75; -} - -tr:hover td.sorting_2 { - background-color: #E7FF9E; -} - -tr:hover td.sorting_3 { - background-color: #E2FF89; -} - - -/* - * KeyTable - */ -table.KeyTable td { - border: 3px solid transparent; -} - -table.KeyTable td.focus { - border: 3px solid #3366FF; -} - -div.box { - height: 100px; - padding: 10px; - overflow: auto; - border: 1px solid #8080FF; - background-color: #E5E5FF; -} diff --git a/euscanwww/htdocs/css/toggle_buttons.css b/euscanwww/htdocs/css/toggle_buttons.css deleted file mode 100644 index c884ba4..0000000 --- a/euscanwww/htdocs/css/toggle_buttons.css +++ /dev/null @@ -1,155 +0,0 @@ -/* line 11, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button { - display: inline-block; - cursor: pointer; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - border: 1px solid; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - position: relative; - text-align: left; - overflow: hidden; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -/* line 29, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button.deactivate { - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); - opacity: 0.5; - cursor: default !important; -} -/* line 32, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button.deactivate label, .toggle-button.deactivate span { - cursor: default !important; -} -/* line 36, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button > div { - display: inline-block; - width: 150px; - position: absolute; - top: 0; -} -/* line 41, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button > div.disabled { - left: -50%; -} -/* line 45, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button input[type=checkbox] { - display: none; -} -/* line 53, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span, .toggle-button label { - cursor: pointer; - position: relative; - float: left; - display: inline-block; -} -/* line 60, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button label { - background: #fefefe; - margin-left: -4px; - margin-right: -4px; - border: 1px solid #E6E6E6; - margin-top: -1px; - z-index: 100; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6)); - background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -o-linear-gradient(top, #fefefe, #e6e6e6); - background-image: linear-gradient(top, #fefefe, #e6e6e6); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - -o-border-radius: 4px; - border-radius: 4px; -} -/* line 72, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span { - color: #fefefe; - text-align: center; - font-weight: bold; - z-index: 1; -} -/* line 78, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.labelLeft { - -moz-border-radius-topleft: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - padding-left: 3px; -} -/* line 83, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.labelRight { - -moz-border-radius-topright: 4px; - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - color: black; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6)); - background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -o-linear-gradient(top, #fefefe, #e6e6e6); - background-image: linear-gradient(top, #fefefe, #e6e6e6); - padding-right: 3px; -} -/* line 91, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.primary, .toggle-button span.labelLeft { - color: #fefefe; - background: #0088cc; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0088cc), color-stop(100%, #0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); -} -/* line 96, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.info { - color: #fefefe; - background: #5bc0de; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); -} -/* line 102, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.success { - color: #fefefe; - background: #62c462; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #62c462), color-stop(100%, #51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); -} -/* line 108, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.warning { - color: #fefefe; - background: #dbb450; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbb450), color-stop(100%, #f89406)); - background-image: -webkit-linear-gradient(top, #dbb450, #f89406); - background-image: -moz-linear-gradient(top, #dbb450, #f89406); - background-image: -o-linear-gradient(top, #dbb450, #f89406); - background-image: linear-gradient(top, #dbb450, #f89406); -} -/* line 114, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.danger { - color: #fefefe; - background: #ee5f5b; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); -} diff --git a/euscanwww/htdocs/favicon.ico b/euscanwww/htdocs/favicon.ico deleted file mode 100644 index 4d4e9fb2119bad9912e6d7ac2e7529e75be43f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3438 zcmbVN`BPJA7R}U5b=B1T(lviU|JZ-QR9DS7Zs;KB*sKvk0G&oaMUbt52(-weEQ;+? zf{F`>BrG=CY5_JjtE@Hznq4$NKt!O4fe@1S&fNR-VNjgulB&!1mV3@U_kQm?Q7HbP z_@mX12j?TScygBJt{j^V&3>tU^qIvCF}RZzSZEAu#T z$XY&ygRydt+|PO(tc%~R>49~S2FA+s<$KQKd9d~oe~om_d&a@NuHm43#tOBMR)hH* z=dg<7ejR$3HNTJNdC9fcn?K{^eUmsGYBQEGj(BPB<+`*ohWn6uVNGxGGM0Om@qGQU z{bL?kyCe2}{CXVkV>!n$9P7)^xi8lGv6^xouj}C*-~YdB#>+nNsq63cnOpzz$Ib0( zoZRk(bl)H;;+@3PXues3lC0A>b0`Wau6vNP;cFCbQ+>cw zvU4BmPMw3LuMfibI0WM)#OZ0+CMRKjZoo+OPpJI<0NZ;f}TD&C=uFL&YdmKbZ z%4t|BS6E(#oq|{4wHcy$5#nzPFg<;WHmwf%VNpohxC?oky;0_}7h2+I+;arYd*kq2 zTM6sZBJ2<;1lUFTZ?Qliyf8I|Wzy4ERSjM8ahz~b;?ia%%3b!M(I@f^$2ajXl-`Bi zY<|Zf5XbA+uybFdqp**SVXU4&623Yx3fk||&|F%M>7hZaEL&g~Y_QC{g!w7y9-`lX zU%Di$P*Vdth4FF`>inYcWKT4j5>8-B-woRe)dHm2mf;c9=NI61b}r0}ZEXc(ZBK`8J6{Wh>sqvV)Zc@c&v(+=GN=` zEqVeIV9?%ym1pI!e=GCzu#Y~2*wG0a)qZ*X7J4Jop;vv24xe}UUY}U#gOc#<_I+4s z_B=a*W*``i5NOusyZ145{whWzPlD@lboe^p>3&$Pfgv;%#`8rmH??EFsTJ1RddywZ z!l=o`L`W(I)d}zLj`iPiJ_|_1OmI5p!?Q4ZBpVA+r!adc6TgL?z-&kc`u*ZRz<;X0 z$hhC@GdG<4aCNH+8CyLOztaaXu1dsg+J(fgTySQC2l}+HOhvDd!-N@bGM(27jDqQ!WY==L2 z1^L@HfBfLKADwyEVe21+I5q)HzJNIS5;of7+1_4sS5%-lB^AkE`y%}x|3(q{;%(w6 zCoNjia&Py3bYh}kQ6CV4iK=?oZML`HI-O7YO|`Sn%*{h2jwOQu-9J_K+k@K5T@Y&o!MjJ}(0KjA$}ZKjfX{F)I@j82R}TuElC_f;hC!foSju zLyPATG`bzeT{WG%I}gb3=$uREg>+C)m@q;d7?ixiMm{szP>(C25wwRYJoX~2XE?68 z??+BhI7&0KG1E6d)!8pe2hGDy+C}mxv84qitHh!1NZR##*EQXy(Q51~^TjRwt07(1Vkr;)$2 z&xj(-{R3#ozk(lg&tZXlhHHy-*2R1Gut>j2U5CFzJ@wqBj74AC1z29qy`3BNY_nsb zyBj|j6p+u9!oogNR}b;Q11y&4Frvvqt9K-tJR;EJ6NiD|6inAN!bUi$XR2=}&$CR9 z!!|rb9@j>-tFct9#q)%0bgSaf<{gb@ntPur7K45ojK*Z+RYN;gq#i{2hL#}GehE*W zkiS*Kbh!`{QJLfwN73UOE8!on;*Y}MpN#SFOw8P<#A0VRmdWd_b&XgouE2ci1x$se z;hBFT)na_iD*jjBI1JGC5UDGKfoZ!!63{a%*-grz$D1XEXer(2tyUn z+02YUSHb}sD?0}l&^EXLguy7lz`(-H!phDIlVN0HVHIR%V-ON%S2Pq6HFFG{Xryc+ zmRQ($@S#&sld*HEn>dFcBLmQ_$YwDLDjGT#PW*q1fd^^;oX+iLI)z|@;wX;U8Xr> zT8Qgxn;R!Cottl}#(8Ri${a3d=J*$R5qBRbK9bRJe*4BYwq9(uIM4mLS9%TSY?*y6 zE==owYH)vf>dq6(Uzum+IyVJqc3N&dRPD57vW(=l(=(DZ-K_!LSx zwPk@>bN@4B-OI9gCf>Wc_;CDAS%c@BJZ}kBlbDz~@y-*&Y^_U+@};q`xNUthN} On^Cj9W}Eu@|2F})$f79# diff --git a/euscanwww/htdocs/img/back_enabled.jpg b/euscanwww/htdocs/img/back_enabled.jpg deleted file mode 100644 index a6d764c79c7a2047b6bf65bf9d96fcafd5161e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmex=C5UDGKfoZ!!63{a%*-grz$D1XEXer(2*U&h z1}0{pBN2d|gO!bok%5r~RhW^Pm5qg+Lx6#Sm5Gs^od+h%$i&RTD#*spplB#0EW!~u z(MZ`u)XXulu<_tSr=TWdXR%Z_aiE1jZ7eM8Fl&IpCkWK1$Y$s$#2&a&N#sM~M5iWU z<^Q)Bc$gW1&SMs2uxGfw`}E06etb^r9k|jMc@Dlk(IlSD-Wwx*G{%4ThHhR%HnTsw zbu3z!=BtbC=-In5f5nt;je{+vrKZdWckk$U`c^FEYC6}Jn=lG)17QB>6z3khm7PHhg<-pEGSO0F>VA}N6`w53!8pr$>MbUW| zMEsFn=(%w+^5v0yp7Lmb+~3PpI4(#G~bQ$y_;t)oo+U5`bnSHZcn){CH~m7Ys2rz z2!R@xgGrCtcPz?eOPOzKr2P26p~(mTGjR1-c3?psA>uUGsyt|R2Ts3~!B zN71DGSrW%W*`w8#2{O$LX)%%8*<4Ycyr;tN(Hm8|M=_HtvR>P P+Rcr(b5Xx$|NkZcT0jT? diff --git a/euscanwww/htdocs/img/bug.png b/euscanwww/htdocs/img/bug.png deleted file mode 100644 index c33bfb9cfd4a9d6d242c38dc8fe5d192fc3f831e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmV;O17iG%P)OpREm=>0CEf<6dKeK8bzA_NsB zJrK%*UWgS$StNn>A+R8%LLn$9=tB_}o&F>BMO<}*4jj(8_n!IPbIzP$7!i%A5Y>*V z5H8(WTBsv|oQO#)&BrO=CL#78YMwJcBuybxSN)1jYeb#8` zTjyg+78cU7!ZL z9uEWp^dKB=9yj=~q8xY>4AL=VYyz}ar=zC`y$36y1?pZ~Ru=Uo5_Hbt*gh^WgqteK zN3MiIbQi}@Q1UC)Lf-&(1wC(r_F&yvTugCEsv9p@GMmlyNw?=?5aqT2{19R7usvEW zb-}*~KZ2}N;Ygp=YQ_CbJ0=(-HzO1Z?O7&>4HGeL31ruZu)VO`06qhM3H$=QxJ?FS zGsdhHU|~#fG#X9j=H?zkFu#=JpCpl8J;K(*t^{}={B@|LR?rV+>TozPKo)0Ouqya~ z=7+=Kql%)K|9&*(OxwPVaf5XTU5g&CVBGf#rfpNtpq$ZYoZ|QUkH+KiNII|@v~c+E zNL^27tQ3EZb1{wPq=&I-Bg6<^uXo;X@PE*nX@<>%(Evasak<=^4p-QV7&s;ArC+}YdOEJHfi+1SN>FVj_=H)O(JuXB$6*Vby ze0WP+RC0WGNm)`yS5R(vb3|254KXAnJ~Rt2A_^}dB0Mr7JTV?RE{>IwjFXUylaDk> zKr=@_xV*bEM?P6*VHY+kR%Bj#gMYEMv{7JLrmU%@s;Hr+q@bpwpQNHGK{zNuHx4o+ z($&-@KQs(5BATF`BRw*ho|~4Onat15l9-jq%gV;d$ou^K#K*?@`uf7f#A9!2_4f9@ z!N9%2zw`9;H%dZYYh}B?y2Ut)YEW!cFoYv z%+Afr&dkcp%S2U9|Ns9&Q%wE+{rmg-KT%2g`})Ji#QFL8`1$x_ZfW)P_4D)d9y%}X z@9ymF>@-P1fQf}KMLZTZDtv{3EJHaIG$<1^CwPH>cMLEi3os&>o}39T zARs$1mYkZCnwO1~k&BX#JYlta00009a7bBm0000;0000;07l7cJ^%m$uSrBfR9M69 zmFZuMQ544?yGUf;C2dF{QA9!tPa5k`qGZXw%aSEzCtH@Nh>$JO*pl@aO9^8a;+N&$ zaGu#rqo)^nVfj4g#l7d;Ilu4Rd+xb20{x~53P1rU00r>>0m5`Tok*R%ywWNNhy$Re z=|Ize9N_5geyu_Pt=0fAo2asIMN5G>P^m>D;Mt|Bt6o*s1KPyLXOcGe^NEPLPD{Fz z_O{*oS)Rpxr|sA0x};R9wXMrlo7di?N)3&{<`)4Hpx;Xv%~*rW#&E4lZTbWWtbeq^ z6nW$q8Jq>)BzV1H=iczCKLJ+|75se$$37CEMu%fffVXLsA}K!1WYtjh26pERJOzBx z2=&DGf+qcV+A_E5J@5LQ53HnzqTjFquV(z&v3T@SxBV(8>u2Aqutv`0}uo zXt$K-&x0Fx&uL(`aE^nc;|9d)0e68!Z8hnD+E6QiREXv09hUMG{%|C4IOsxS_A`Wn zgXYUt(-gp-SUUfClywbAFz1C+vdL|qFObWwZYDsxVxSK7S%xx-NCkVg8`lenJWBN5 z$7uaqNNePFCL_fEB<1j0I#J=BHMTWVTWAib0s{jlaSQV_p7YKQcD|Vo9GCifVru>7 zwsl3TpS0Fe$CUs0dIO!xe9qE4lREB*D5LC?6vioe4S|9S diff --git a/euscanwww/htdocs/img/feed.png b/euscanwww/htdocs/img/feed.png deleted file mode 100644 index 207206f4871298d40f40a1925fff97b29d18cd9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)kSg<7Msw^-nF(yVsj7t_q zQW;~33nbN0TIjS>O#jThdH3GKV%i#nlbn2a^Sk#uU+xirsqxC#w(aF}29pSg7!V`v z77zohpH1y?v+Oa(sr!UFWcx9}&Z`VY+@BjpCEST6}Bf&hO#R|p>St#;Pb^55> z`Q(NBtTcL~@>6t;j1rdT3HNT|=l;N0eIhKTt+l&;K8hlnI3VsRvt{IMHcHp(w5nHd zH!dUEcno%FAlDHmMnP;WXtPfG`wzG~RR|s_mdGD`kK#L5uzf?1!9ESBSCP5XFRC;f zkIZa4w~^a>nB4HYNTC~o!(BTIw}0G(T^eYGJVr#Yk&x@(NB0Nc(Rt)N@iQa%o8ORr zIZBwF1QQXxbb?SmunGG#5WHf<(0)0NFg<-lgCi7P`;?BiE@Qe9+|`fJxk)gV_?6Rm zikp|9v>lj8(8XIczWtDFaso}4k)8o^Z+wm|4bZxJ5?xzFI=YFUAH$`AkSQT3hII#` z4RrQ8?$--sUyq`-KOrt+4xPcRuF|~r1ptMiBWQ^5nW6!V2%F)>``#pX=oFGG;(z`a zZ9G7>?!@eVo#t=fqgjd+IW1l@tH2gm9-#S_KD*&S1uad2- z(Yk#dfVl5DLZ+yK5rc{qBwd2m3IKj-2A>96fBgc0O`axXid&cgz-;X$I0Z#z_Os#p zrR~xyMlf9op|FGO?;E((6G9#{a1iy%>f}$D@*q*ULbh;^wOdtkJGacs)OcmAe}847 zkZ(TnNj5ZOiq90^T2J078kCM5C6*RvkIKe6mv$xR;(U}45cNv%?UXhAPf=AHYRe1t eV|y-6UwQ}$m0C5UDGKfoZ!!63{a%*-grz$D1XEXer(2tySE z1JEp>E8&2Nm4%I+g9~UMTnNHo6kuRrVP;|B;)Y2uGBL9Vva&GlzGLeh=CM*_u2I6%$1L~6;-1yGa|?*FvavCW+Av>{Flt>+*?d?iZ`9)^O?_H|D3t8;Og6lD<#WHQvW(mo1ETsD>A@mr8@sqg(?1R z%d@qrmWLWmIn1#pQuo}{brVW*C8t%EDXbOt_DabwXgGW3;wDX1;~7hWrYL+ZX=qre z&-y^2q0zm?-FJb#(AWJTHOJ-3`S`D|JEhzC{KvY_h0kZinXP-?w!g_L@p#JQO^!z$ mYCgVwS7#SryXs@?>&L&t^Z(SozHVt~@Z#>58}s)6zX<@qORf(9 diff --git a/euscanwww/htdocs/img/forward_enabled.jpg b/euscanwww/htdocs/img/forward_enabled.jpg deleted file mode 100644 index 598c075f13ab0e4bbe05a4eeea7cf777ba73cf03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 852 zcmex=C5UDGKfoZ!!63{a%*-grz$D1XEXer(2tywO z0~0eN(3Nn&%Fe>Z!NthH$ciG&$iU3P%Em6hz`z1zu=B#yGcqx=2(q#<2(fb*3M-3< zDh5t8G7&R#Oe}1C=oHjs?40T*F37+LbR`oj+(bq}CT0c}Rz*W0Hg?Cv#)(EB0yioN zi~PUEzyov)lOVGogFVA5dn3uE%Z<*rn&ugY^FIG9<<=87L*?mOy^~u`Rq(Eg+UDw^ z@^Uh}zJ$t~P2YpRT#sm2p`oEt8zJ-EBRfY;>b?DxZo!24Z)Q(O&}!Mbt}27`dKa(x zr)AHkZg5MjKa&4$syaupXWNXgp32dQs_rj-?|M=Q9pN^hZg^mV7=UWs>}D5 z$40(ME7Q1T4h8p}ZJ8O!G-Xk84;P~#ci!&o`A5I3kG@gLm*VlJbn%kvSqIh?3Y?HQ zAX0NL>XIkpf=MN83*!%}9-aN5)p7^py2Am>F9gW&pFSp#V0dxX#ZPW;UoD(gaI@8E z(rNQz1DBIiM13!LtZ|85lHB@$wW~n0fhRz-$?R&m{@z;uI}N|35As;}zdXB<I#+N1k=r*G-&mI78vJ_Ezs!yIV%J}l7d*c9>7Bn;xyLT84V&`$ z@9WMTAJ6DZyR)~=FS6P2e3MDv7lHB>{C&1H^7EJ9PIf=EdUwUYtGE9%$X9(m*ZWLf M_rC2^{;K~s0TRp{r2qf` diff --git a/euscanwww/htdocs/img/freshness-icon.png b/euscanwww/htdocs/img/freshness-icon.png deleted file mode 100644 index 6af3b72c65995ef92d55f15682856b492a6292d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3365 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 RwQK+Y002ovPDHLkV1iBEq^1A> diff --git a/euscanwww/htdocs/img/gentoo_org.png b/euscanwww/htdocs/img/gentoo_org.png deleted file mode 100644 index a790fe908135b91e65a4e080b104d94ca063aed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47830 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 JGPNf!{~tZwxoZFb diff --git a/euscanwww/htdocs/img/linux.png b/euscanwww/htdocs/img/linux.png deleted file mode 100644 index 2a4f2e475660b01a505c5804c4b14e8817a2d46b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2090 zcmV+_2-WwAP)q+fV=i2e(N? zK~z}7%~x$uROc0b?tAZrWfx%=7g$_S5Q8FWw0Ey{%)~60$TwH7&2pnL<7$5eWoxRLHQon4ZhGk{t002=GU@*jn-ixA$ zu_-A?N-}}5K6g%M)ALWA000<`qjCIr5mv5T3C0+-+9(the2C)WKV$ReO(6oUt*v+l z1Q@cjvr$=j2^%+VfIc<`vu4i3tXV(6ulM{0IXSN&Daix?kR%DMt*s+E2f|3hDC(3o@djo%sB3e?fV9IVvkFk(4wBO-;?;>1>UdfL?DvRaF&!xAS#O z)gDLs3Jy}x3tl*l==(a%of3;Z^>rb8yWReD37AZY5buABEOs5~<2f)LLy~?hc-Db! zn-z3AbCI6tL#?CFzPh^R=@OVUX;Qr)0D^`fYIs1S1xIbTT0{Cq@-ln z{lJeDys4@ACr+o+@{3&`!XrgNYHov1Ndh-+14dq6b*sI=U`yk!A)kwl)>w4nE%8W zno6}bH53T+lBxzN5b#kj=qFVThP0>W9^Jj$LUwyKRa8`v(U?G{L=#0uY6xJY(P(KT zT@jL!k`ilVq=sT+^>paaK~j`J7~q34Jg%}FpvFcA?cBMOG#U+=&E`-x)~$PUz#r9X*RE1>ax$4rCNdi131Bo~LI#bPz~sqOC@wCJ4j%lp zpY!f+@2~`9IY22XV+mjsAD<993rCI|wGKN8*R5M;z1!M?Kp==!t9~5z8xcWKXX<6vYT|90yf>NZ9A|4V?kI-40Cz(A;zzM&sxK z2q1Lz8cw`k38Ui-kmVp^Vn%`Ic{DXSZ9}f(qJ4|;Ty!y9_X2q5(=s$PTt`O6b73|d zH*^Mqo_Z+WQUpC$;Ocbu0SQ55O`eDZV@&ygA9Xffu(s5kwqE;e3VF}!=zgh|st#)? zBi&4;rRN?w-G1_VJwtYY``^3B`<0e{x+EfW`gvZU*A_;Rr*>IbD>9eklBMow21#En z%j>Dxm}iV}fEW90veFo~{K$pn%X9G2M}L5-5*TBMj@Atty~iWL)hWT(NtkLPL<#`o zfak{%@;0alIIF^ML_Y6ri%x7pd;$k>93Ic^`Wzl7{vN=N9lKFeQ;Wlg4?z$Hzec#- zUGRDX7{v%V^Ek{LFF*m1n!;hMnFq%L=(6v&8m50>1ppRfnu36z`)_UgJJfK%{$B|Y z1)!+t1S-lahOECv6N&bA38VsJk{L25F-)7xkZk6`3jkvT^=?s~=i5Rn0B`_McTh*E zX#{SNz+?ve_K!fL?`3@Q$pOU2#}7*2z=4m^dT|f7uO`IAGJxdKqzX2K4s&aO1`eeEH=+aNxklXlrW+V?dOM{)i8z zs0?&_HSkBywPQK)o~ydaNbtY*i49s5HW6?8Oh1X{kq}KomRLzn$h0XiT=vXHh0B4&DDRLT8 z=lv{y+xFZ+|9HAxZ435odEr9V=-Y^o9-~7F8pz;ph(;cmrKNaL! zVhy9;z2ED*IB&_C{J9I3+J@T!Xa8DcsjK`v&uECY1ZBlGW&Vo%`HNq(;r~(o13!0N U>+tKN=Kufz07*qoM6N<$f_RJHasU7T diff --git a/euscanwww/htdocs/img/metadata.png b/euscanwww/htdocs/img/metadata.png deleted file mode 100644 index 363f51b956addf5e12fa04caa969612bee95a2b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 798 zcmV+(1L6FMP)r&QYq-Vj$?wB)Sw<7;@3f9hZWu~-nU?#R}=*tHV%=TephVi zI49$yeyroi_dO(&NocyEvApXZ)i6>{S(b51a=O@dHc!WnsPgXa9!%4qz8I0)z<+Ad-304=(xV3bKG6Y3nt)Li z6G=@&EEYpv-Zi-0*c|bcEEV`dTNWWZvT9y9JDmy+U_S7#`0pG&R=4A812I zdk}5GAgZdW1(8J^&b(Ow^S6goUt^tfY3Tz7UcNwnK>-4k;3@QA?aLZIE-fM4+l!6$ zb&QXXVRLg6on2ihE%joS69l`Ssx7_-XC%^x&nqi<-q#PW*DF+yj*j9=P7cb-?h8%c z$Kwcxdr(w#2LpqHn4Wu^)}XDGizs1v`4fhRhM?0{CMPBliS%P+WCW^uh|0NJ=wzg1SUM>>3Gfl(5 z#OvAr3AlM=YCmysfM_&IT||W9hRKsmN;c@-5F`^*Giidh)(2-!6eIV8d}1j6Yxzwi zmT3ts1Q}tHcTiK`{HLzE!ezJH#32$Oi=G}PCQM}s`-(%wJ0OjCC-aLji(SpX*^)}> zd7P0-NZd^ll_pVXJaH!3nr0RSO^RExteE^97>4zYn^WS}CS(vYPmpl}1!?!|1dVX? c50X6g7io%4-DGQG*#H0l07*qoM6N<$g2}vW1poj5 diff --git a/euscanwww/htdocs/img/overlay-icon.png b/euscanwww/htdocs/img/overlay-icon.png deleted file mode 100644 index 8347aa896f4bce24b63288e45965e47bc44c1c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmV+}0@3}6P)ROJYbkCYcgM7=mIE7I%kPaeXSrd_&&W27Gt?T)0~^Iv}5i z(AFT9REUI50W^S6L~h7uH-gCHB1Few6Qc*h$r2dIud6&Z2iJrury6Oh91*51%sCtm zpDfGad`}cMpXD9mnD>=R&`Y40a#SM?X-&<%aHV=dlDtqZmwAt;i}^qx0J^S&a{sle zAWnrBWe$*MQsY1_4R!s5nkwMYJexr>+5A zEKapp)zl6tnM{J;@2A*evDm0+A(G4G>KZtm&R?2zIt_xVs*p;hz~ypTMbQq0LcyBN zX7MbFbq%QDUmBXzj%XJ}aSTWA#4)p)rX6GMl`S4G7$KUP5!AR)^N5;#%)L+p8=}>O wfY8lH^l{!zZZ*+j{(w|}BXG_B&YuDd09G^cEZ6iH5dZ)H07*qoM6N<$g0(*I5C8xG diff --git a/euscanwww/htdocs/img/python.png b/euscanwww/htdocs/img/python.png deleted file mode 100644 index 51c33850faacba87453f1f71ede4bb989048260d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3140 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 diff --git a/euscanwww/htdocs/img/refresh-inactive.png b/euscanwww/htdocs/img/refresh-inactive.png deleted file mode 100644 index 7e8585f65413e647a1a991e8fe946c513c481e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H0wnYHF4+L2SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIAngIhZYQ(t7#NrtJzX3_G|uNvj_n93m1v*;|L3gYXUVa- zY3}BikBX-G8aiuCx^SxL?IOJ>jwXSm;KeSRyJNn&8HDfR*!Z5eCn{=1>xGQH6DDxD zs0gKGxAT7UE|?@Rj6zvtM_uoWi{Y(G-HyJqEy<+abN+4X-Et=(|! zXMff^0Aaz*}H zyh_J|Ag73TnN$LZZ}TU*{X1A`gvi=7;V+BsG)UTxQBnAfy$ z%f9XA>R+F1<2N}ry`SI(6Y_i)wwi2DFr)sU4UT&Vb5A+Ub@AHTfyUJvlV0C5rzdbdTDNj~D zXO5b(y6N@QoCu%x@MrV*6n-aV&0qXZvF6I>%j(zbLo`f;mgjG`%I=&T{o`%w-keI^ zVzQq*!1h_=iS@f?{4^aV{^5d`BGjRp*6U)Z+G*(VDgKC*;&E?4P&1tHG|#=ag7ty25<|9+V672sPtx!e0@cRRn`5=oT| zCvjKjsgX)cE?E4%y6xPvBOA*!6&JiQ30(BsKP}Zs?dh^7Po_P2(spM;p=HG+jX>*O zArpa*pB@R>TwWPGss4~g;iDrvWc9kv70+dPR8=W>fx$%~IWt$yp66X${eupsUHxyO z>`gKjZB1SCo5kjV{7G}ai4Lz{X?O+hvbx~0r?TrwSNrK@4M7q??YbYQ|4RI^cB7HT zWQS=J>lx)wml!C8<`)MX5lF!N|bSNY}tz*T^Wuz|zXZ%*xPA o+rY@mz@TVV%pw#Gx%nxXX_dG&Fn@m{2h_me>FVdQ&MBb@0C)bw_W%F@ diff --git a/euscanwww/htdocs/img/sort_asc.png b/euscanwww/htdocs/img/sort_asc.png deleted file mode 100644 index a56d0e21902ce620cd57f87fa58a6d3e804135cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>l2Ka=y{`vF&J9*~+_wWBdfBFCW_y37A{>@tOZ^^2EJ(K_a|Nno&o$%d2jr=7+e!)O45@5J; zXU0OHl&hzUV@SoVE9Xw~GAQscA1s)^?0*rXqM}DeLv7?|BU8z@QCOGupVzP9Hek5&L+Gnl%BD>~0~tJB{an^LB{Ts5b0m7= diff --git a/euscanwww/htdocs/img/sort_asc_disabled.png b/euscanwww/htdocs/img/sort_asc_disabled.png deleted file mode 100644 index b7e621ef1c68da839ce077cec6e201a55c1ba168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=)2l#}z{`>du$&)AV-@pIyd9;k)4B*-rq$b|z2+ZRf0KnW*L z7srr_TUXBQ7GeV6G?@}f$7k6Jhw{qGm$-QDzD`qrDaZ3s$b2XF;fBBPU nqjNDy&Nw~puHFA+-v&m8`?>-yUFVHK{$ucT^>bP0l+XkKhw^g= diff --git a/euscanwww/htdocs/img/sort_both.png b/euscanwww/htdocs/img/sort_both.png deleted file mode 100644 index 839ac4bb5b0b414834c950de9deafff6dd94ed2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=)2l#}z{`>du$&)AV-@pIyd9;k)4B*-rq$b|z2+ZRf0K#2rT z7srr_TRjsz`4|*ASOSl%eg6Ob+(JtRwX|O@S}a^IESQCgTe~DWM4fR9b+X diff --git a/euscanwww/htdocs/img/sort_desc.png b/euscanwww/htdocs/img/sort_desc.png deleted file mode 100644 index 90b295159df995329b3a84340d32761f3d1dbade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>l2Ka=y{`vF&J9*~+_wWBdfBFCW_y37A{>@tOZ^^2EJ(K_a|Nno&o$%d2jr=7+e!)O45@5J; zXU0OHl#{26V@SoVqz8vtc$~v}dc~O{CLEF2anNavMpdMP)0v(X&o(k0opIq!LdvtJ wj~up7@0`wiSoe($&y07EkGxK6U|?nlJSz0{?wJWUfu=Edy85}Sb4q9e0C9MGu>b%7 diff --git a/euscanwww/htdocs/img/sort_desc_disabled.png b/euscanwww/htdocs/img/sort_desc_disabled.png deleted file mode 100644 index 2409653dc94cd21a281a31c0e3819323b84704b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=)2l#}z{`>du$&)AV-@pIyd9;k)4B*-rq$b|z2+ZRf0KnX`r z7srr_TS*TNvhX;E^>j)zMNBv%VR68zN24n8K+>5N&kUJbBQCy4c=qgBiu3mAQ)hD? n)_oJhGvi(If!Apb49pB3GXz|UGFKJ=4P)?h^>bP0l+XkK*57ji diff --git a/euscanwww/htdocs/img/unstable-icon.png b/euscanwww/htdocs/img/unstable-icon.png deleted file mode 100644 index f0323e56dde91bc0207e192f218fe708c8079213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 605 zcmV-j0;2tiP)Y`goF)^44yMGF&=&L`0-p;Wy`OI1P5uodG(6n$H z7cO0z_2R|zth&0ozXT1)NY9YY&dI*X&c?{QLKBxp)l- z3JhXQPfgp-#m(uoY4euY?w;gwuDii(OmR8&-5wY9Y(@fxsh&AMzu1N|v`_U`FT zO;0a@iCbD)^7HcYhV0t4Yc5U$PRx_c6)|1b{^-S@drOxuH=R3g-cM}muo|$Toi)M1 zTw>n4_um<}U)G7pZaAvU$dFINS7i;$aSDU+);WJSNr1&rh zWCrn^QB@RFe(>ly!^XpZ5^Lu$EWj5|ClX zL>aKShB3k2MtnZQzuydJuD<)VYtfe;Js7@=Q>5|DgCU5Q7Z<38nvly)dne-&vIR^PE|m{_Wm< rnqf6i=nD{oqV5|Me@D{v7uf{>CyUmhTzF(#00000NkvXXu0mjfGm$YO diff --git a/euscanwww/htdocs/img/unwatch-icon.png b/euscanwww/htdocs/img/unwatch-icon.png deleted file mode 100644 index c4f0b593ef687ef3f31d53826683bc6cb54cc067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmV-)1dIELP)$%p68DGqd=I@ec<~U|EKlE^4BNC6fdn_}CWF%xMfPB*Hc_ zzy~-L*qEC$3^&)ZNsBFyQC=$r#|DE@o-NN6ia;sty|?{(){BXYc2T#JeEU21ch32o z^ZVVKvVUs>xl6*Yi``BeE7m+bTNP)YHN_5(9o9T@TcGV9skrl)rpeQpjfE?@a30sR zbfv3Rw+tRF)Vw)e5eEbUpdU;dHes|#^WH5%2XfSRjTSB)7oBbR)1;}(1P-4Z$Wt%> z-(Y+G(!42CG6M3#4RY1I4SRn0*Z&D-O<~NoFD!DXaK+xSGf(^FnX3qhlL$zQB43{C z!?-RcFkJd*R$tB?YizrPzk@*P$_QK6lcoOHwqLF7J)j;PJoF%3&AT8@)x+-{f?phj zU%svZ_$69>Ll7q$;c9sw_QPw?o2_z2i=}n+`&}atcykIV6Xk;57ME73ANm=}v1PyMt2v8QODE?3$6F27;a?=xKP` zi&2w$AIvGLSA%zK*v1c3rmTR+vY+531V2IWGDu^mX(BB((9v{@a*-yr)c9veBV`2r zkxqLQ-phwz+!+aC9Rypn>McyrKF_~5ys;8qYZ}DPT!^*;NJHOJaWSOvBLpg;2}u)2 zs3Gk+zJoMS0I{b4Udt{RQdZ;47XE|zMRwySQlHGjO5=HDQ+gzPt*H<@_CT_w(L@=L z9iKrS$)aOtDXSwBVs{FB7vkYLyBy8CIZi}#lR25I**{ss>-_%8MDCrhi=v_g_%0^U z)oiAzHbUxMPmR{ma|C==0p13Ng(`-5y#V8O?x)%ab~7_?=R-4E0SlE3-g*XK8zUGa zD5;lG6H+ImQ&HT^;5G^{zs6mNya}}a1;%O<1-F}~plN7of^-nDpFtibjgjwIY;cLd zO$?q|0d+}SHoe4DA;Fc;3HO{&;_w&0(2`dd5Xb5L+d0x+m%yL<6vIHI~>1m z6;_1=S8QgFQxZHnrc7*6z@kHdy-L8KNr31SsF4EpHdCIF!SW%8K7p+d2|l-xZD`yn zVEz;f-m$wuz{RgPO5z1%uVU@{B3Nrtln}7yam=*{!FS-%Gg$WspxS3cf^{3%leNhj zIEpxaOQYlj<~td~j{X$Oo+x`o`NKLH%N{F@Vc(Q*Vjk-!0vshOG^Q>C)y9PeN3$j8 z-+ka0-80;*jb@*cLViLNyO;DqdA!PG+;+D?8^xCWHU0;q>Ns@54uCbApJ_inBL*kEwrkfWk zE0JIbEq~o1aZdJ5-;Q*T*mQ�z5f2gFtY+>2}rW%0vK_FHFPq`AUy~8H_ep50D<} z!CXA3d+ozILjY{sflgxoP>^#)>ajcu_wRyfOV|Klfms$j?lj2KN@&s(7ls8ytfUP9 zbdWI%?cILJvLx!~@hwNenWI^_tUbo1x(dgFLU0ALA|o0Jk^oQ&Fd2ilq(}f_Jz&@b zWAX!B8bh}C1VLp=PQ{Prx9A(4y_FZwfIb;iLR;q-0p{*=CzzCklWD_9PS1quE=Odv z8uLLLmTgDQJ?g1B`!Mc-4Z|?uJyslTA1{F*Om@NkSdWy#Log=lVd^QE3;ab}|5P;{ z3B^6&y)&7O_TD}bJ?f!K01c<6`>`b>A7*$CMp%WpWT3pjQ|qlcUK{s-XRypn?90m# z@fF&ZDY`{do?r;PYlXTk6`92ckY2DCV?BfTIq>Hb*UC{3s9m}#I>D!HNx0Xw8}~ai z@Vl%Rt$}>FbF%2PhN0$eeC`^3T5_%T{Avl@0}{G6r($t=7D>q(t`v& zUeV&8>5CZ{2P`ixbi8@rS>mj@2)vCtT)3#c#Db%Q4qyFNM%x3t+O>b8v~rzuY3;`P h!=(8&(QW)MzyMGUCjFEKVCVn<002ovPDHLkV1ka$R3`uc diff --git a/euscanwww/htdocs/img/watch-icon.png b/euscanwww/htdocs/img/watch-icon.png deleted file mode 100644 index 28ae542cff8cbfd6e0464e8cc5eb01b069290e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H0wnYHF4+L2SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIAngIhZYQ(tfGYGnT^vI+&i798^_UVU(l-D7z5Fzpo{#Bk zPM-9ddsKrhC_-XK!Nqf7jyF#&5c|94)|M5%x-AOIN+%SWj4lZ+Gz;7^L8EEWlGg5m zEk4{DHi`;@b2*G(>wLo1mFFa_rI$6hB@ zx+dpYg-K`5TF9TV{`%(I1k(cb$|Q9~v)~>FrI;HD1qB5sjC`9o&ounqnyPPl!$U-< z+2KiIucNYtx&vqa>?iY%{FoS(bHJf-(J{w`Cl;RgG~T46N7mi9BV_lLTDohag;QdAF>C>Ry5e!V7N1Da;&6v2G{a+P0PAIwI zuDAcSe$NhBiLMi&qBkx$cDgODIG{^XmWj*WGR|skn9O>XU{4cn;(= (iPages - iPageCountHalf)) - { - iStartButton = iPages - iPageCount + 1; - iEndButton = iPages; - } - else - { - iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1; - iEndButton = iStartButton + iPageCount - 1; - } - } - } - - /* Build the dynamic list */ - for ( i=iStartButton ; i<=iEndButton ; i++ ) - { - if ( iCurrentPage != i ) - { - sList += ''+i+''; - } - else - { - sList += ''+i+''; - } - } - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - var anButtons, anStatic, nPaginateList; - var fnClick = function() { - /* Use the information in the element to jump to the required page */ - var iTarget = (this.innerHTML * 1) - 1; - oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength; - fnCallbackDraw( oSettings ); - return false; - }; - var fnFalse = function () { return false; }; - - for ( i=0, iLen=an.length ; i y) ? 1 : 0)); - }, - - "string-desc": function ( a, b ) - { - var x = a.toLowerCase(); - var y = b.toLowerCase(); - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * html sorting (ignore html tags) - */ - "html-asc": function ( a, b ) - { - var x = a.replace( /<.*?>/g, "" ).toLowerCase(); - var y = b.replace( /<.*?>/g, "" ).toLowerCase(); - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "html-desc": function ( a, b ) - { - var x = a.replace( /<.*?>/g, "" ).toLowerCase(); - var y = b.replace( /<.*?>/g, "" ).toLowerCase(); - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * date sorting - */ - "date-asc": function ( a, b ) - { - var x = Date.parse( a ); - var y = Date.parse( b ); - - if ( isNaN(x) || x==="" ) - { - x = Date.parse( "01/01/1970 00:00:00" ); - } - if ( isNaN(y) || y==="" ) - { - y = Date.parse( "01/01/1970 00:00:00" ); - } - - return x - y; - }, - - "date-desc": function ( a, b ) - { - var x = Date.parse( a ); - var y = Date.parse( b ); - - if ( isNaN(x) || x==="" ) - { - x = Date.parse( "01/01/1970 00:00:00" ); - } - if ( isNaN(y) || y==="" ) - { - y = Date.parse( "01/01/1970 00:00:00" ); - } - - return y - x; - }, - - - /* - * numerical sorting - */ - "numeric-asc": function ( a, b ) - { - var x = (a=="-" || a==="") ? 0 : a*1; - var y = (b=="-" || b==="") ? 0 : b*1; - return x - y; - }, - - "numeric-desc": function ( a, b ) - { - var x = (a=="-" || a==="") ? 0 : a*1; - var y = (b=="-" || b==="") ? 0 : b*1; - return y - x; - } - }; - - - /* - * Variable: aTypes - * Purpose: Container for the various type of type detection that dataTables supports - * Scope: jQuery.fn.dataTableExt - * Notes: The functions in this array are expected to parse a string to see if it is a data - * type that it recognises. If so then the function should return the name of the type (a - * corresponding sort function should be defined!), if the type is not recognised then the - * function should return null such that the parser and move on to check the next type. - * Note that ordering is important in this array - the functions are processed linearly, - * starting at index 0. - * Note that the input for these functions is always a string! It cannot be any other data - * type - */ - _oExt.aTypes = [ - /* - * Function: - - * Purpose: Check to see if a string is numeric - * Returns: string:'numeric' or null - * Inputs: string:sText - string to check - */ - function ( sData ) - { - /* Allow zero length strings as a number */ - if ( sData.length === 0 ) - { - return 'numeric'; - } - - var sValidFirstChars = "0123456789-"; - var sValidChars = "0123456789."; - var Char; - var bDecimal = false; - - /* Check for a valid first char (no period and allow negatives) */ - Char = sData.charAt(0); - if (sValidFirstChars.indexOf(Char) == -1) - { - return null; - } - - /* Check all the other characters are valid */ - for ( var i=1 ; i') != -1 ) - { - return 'html'; - } - return null; - } - ]; - - /* - * Function: fnVersionCheck - * Purpose: Check a version string against this version of DataTables. Useful for plug-ins - * Returns: bool:true -this version of DataTables is greater or equal to the required version - * false -this version of DataTales is not suitable - * Inputs: string:sVersion - the version to check against. May be in the following formats: - * "a", "a.b" or "a.b.c" - * Notes: This function will only check the first three parts of a version string. It is - * assumed that beta and dev versions will meet the requirements. This might change in future - */ - _oExt.fnVersionCheck = function( sVersion ) - { - /* This is cheap, but very effective */ - var fnZPad = function (Zpad, count) - { - while(Zpad.length < count) { - Zpad += '0'; - } - return Zpad; - }; - var aThis = _oExt.sVersion.split('.'); - var aThat = sVersion.split('.'); - var sThis = '', sThat = ''; - - for ( var i=0, iLen=aThat.length ; i= parseInt(sThat, 10); - }; - - /* - * Variable: _oExternConfig - * Purpose: Store information for DataTables to access globally about other instances - * Scope: jQuery.fn.dataTableExt - */ - _oExt._oExternConfig = { - /* int:iNextUnique - next unique number for an instance */ - "iNextUnique": 0 - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Section - DataTables prototype - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Function: dataTable - * Purpose: DataTables information - * Returns: - - * Inputs: object:oInit - initalisation options for the table - */ - $.fn.dataTable = function( oInit ) - { - /* - * Function: classSettings - * Purpose: Settings container function for all 'class' properties which are required - * by dataTables - * Returns: - - * Inputs: - - */ - function classSettings () - { - this.fnRecordsTotal = function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsTotal, 10); - } else { - return this.aiDisplayMaster.length; - } - }; - - this.fnRecordsDisplay = function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsDisplay, 10); - } else { - return this.aiDisplay.length; - } - }; - - this.fnDisplayEnd = function () - { - if ( this.oFeatures.bServerSide ) { - if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) { - return this._iDisplayStart+this.aiDisplay.length; - } else { - return Math.min( this._iDisplayStart+this._iDisplayLength, - this._iRecordsDisplay ); - } - } else { - return this._iDisplayEnd; - } - }; - - /* - * Variable: oInstance - * Purpose: The DataTables object for this table - * Scope: jQuery.dataTable.classSettings - */ - this.oInstance = null; - - /* - * Variable: sInstance - * Purpose: Unique idendifier for each instance of the DataTables object - * Scope: jQuery.dataTable.classSettings - */ - this.sInstance = null; - - /* - * Variable: oFeatures - * Purpose: Indicate the enablement of key dataTable features - * Scope: jQuery.dataTable.classSettings - */ - this.oFeatures = { - "bPaginate": true, - "bLengthChange": true, - "bFilter": true, - "bSort": true, - "bInfo": true, - "bAutoWidth": true, - "bProcessing": false, - "bSortClasses": true, - "bStateSave": false, - "bServerSide": false - }; - - /* - * Variable: oScroll - * Purpose: Container for scrolling options - * Scope: jQuery.dataTable.classSettings - */ - this.oScroll = { - "sX": "", - "sXInner": "", - "sY": "", - "bCollapse": false, - "bInfinite": false, - "iLoadGap": 100, - "iBarWidth": 0, - "bAutoCss": true - }; - - /* - * Variable: aanFeatures - * Purpose: Array referencing the nodes which are used for the features - * Scope: jQuery.dataTable.classSettings - * Notes: The parameters of this object match what is allowed by sDom - i.e. - * 'l' - Length changing - * 'f' - Filtering input - * 't' - The table! - * 'i' - Information - * 'p' - Pagination - * 'r' - pRocessing - */ - this.aanFeatures = []; - - /* - * Variable: oLanguage - * Purpose: Store the language strings used by dataTables - * Scope: jQuery.dataTable.classSettings - * Notes: The words in the format _VAR_ are variables which are dynamically replaced - * by javascript - */ - this.oLanguage = { - "sProcessing": "Processing...", - "sLengthMenu": "Show _MENU_ entries", - "sZeroRecords": "No matching records found", - "sEmptyTable": "No data available in table", - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - "sInfoFiltered": "(filtered from _MAX_ total entries)", - "sInfoPostFix": "", - "sSearch": "Search:", - "sUrl": "", - "oPaginate": { - "sFirst": "First", - "sPrevious": "Previous", - "sNext": "Next", - "sLast": "Last" - }, - "fnInfoCallback": null - }; - - /* - * Variable: aoData - * Purpose: Store data information - * Scope: jQuery.dataTable.classSettings - * Notes: This is an array of objects with the following parameters: - * int: _iId - internal id for tracking - * array: _aData - internal data - used for sorting / filtering etc - * node: nTr - display node - * array node: _anHidden - hidden TD nodes - * string: _sRowStripe - */ - this.aoData = []; - - /* - * Variable: aiDisplay - * Purpose: Array of indexes which are in the current display (after filtering etc) - * Scope: jQuery.dataTable.classSettings - */ - this.aiDisplay = []; - - /* - * Variable: aiDisplayMaster - * Purpose: Array of indexes for display - no filtering - * Scope: jQuery.dataTable.classSettings - */ - this.aiDisplayMaster = []; - - /* - * Variable: aoColumns - * Purpose: Store information about each column that is in use - * Scope: jQuery.dataTable.classSettings - */ - this.aoColumns = []; - - /* - * Variable: iNextId - * Purpose: Store the next unique id to be used for a new row - * Scope: jQuery.dataTable.classSettings - */ - this.iNextId = 0; - - /* - * Variable: asDataSearch - * Purpose: Search data array for regular expression searching - * Scope: jQuery.dataTable.classSettings - */ - this.asDataSearch = []; - - /* - * Variable: oPreviousSearch - * Purpose: Store the previous search incase we want to force a re-search - * or compare the old search to a new one - * Scope: jQuery.dataTable.classSettings - */ - this.oPreviousSearch = { - "sSearch": "", - "bRegex": false, - "bSmart": true - }; - - /* - * Variable: aoPreSearchCols - * Purpose: Store the previous search for each column - * Scope: jQuery.dataTable.classSettings - */ - this.aoPreSearchCols = []; - - /* - * Variable: aaSorting - * Purpose: Sorting information - * Scope: jQuery.dataTable.classSettings - * Notes: Index 0 - column number - * Index 1 - current sorting direction - * Index 2 - index of asSorting for this column - */ - this.aaSorting = [ [0, 'asc', 0] ]; - - /* - * Variable: aaSortingFixed - * Purpose: Sorting information that is always applied - * Scope: jQuery.dataTable.classSettings - */ - this.aaSortingFixed = null; - - /* - * Variable: asStripClasses - * Purpose: Classes to use for the striping of a table - * Scope: jQuery.dataTable.classSettings - */ - this.asStripClasses = []; - - /* - * Variable: asDestoryStrips - * Purpose: If restoring a table - we should restore it's striping classes as well - * Scope: jQuery.dataTable.classSettings - */ - this.asDestoryStrips = []; - - /* - * Variable: sDestroyWidth - * Purpose: If restoring a table - we should restore it's width - * Scope: jQuery.dataTable.classSettings - */ - this.sDestroyWidth = 0; - - /* - * Variable: fnRowCallback - * Purpose: Call this function every time a row is inserted (draw) - * Scope: jQuery.dataTable.classSettings - */ - this.fnRowCallback = null; - - /* - * Variable: fnHeaderCallback - * Purpose: Callback function for the header on each draw - * Scope: jQuery.dataTable.classSettings - */ - this.fnHeaderCallback = null; - - /* - * Variable: fnFooterCallback - * Purpose: Callback function for the footer on each draw - * Scope: jQuery.dataTable.classSettings - */ - this.fnFooterCallback = null; - - /* - * Variable: aoDrawCallback - * Purpose: Array of callback functions for draw callback functions - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call - * string:sName - name callback (feature). useful for arranging array - */ - this.aoDrawCallback = []; - - /* - * Variable: fnInitComplete - * Purpose: Callback function for when the table has been initalised - * Scope: jQuery.dataTable.classSettings - */ - this.fnInitComplete = null; - - /* - * Variable: sTableId - * Purpose: Cache the table ID for quick access - * Scope: jQuery.dataTable.classSettings - */ - this.sTableId = ""; - - /* - * Variable: nTable - * Purpose: Cache the table node for quick access - * Scope: jQuery.dataTable.classSettings - */ - this.nTable = null; - - /* - * Variable: nTHead - * Purpose: Permanent ref to the thead element - * Scope: jQuery.dataTable.classSettings - */ - this.nTHead = null; - - /* - * Variable: nTFoot - * Purpose: Permanent ref to the tfoot element - if it exists - * Scope: jQuery.dataTable.classSettings - */ - this.nTFoot = null; - - /* - * Variable: nTBody - * Purpose: Permanent ref to the tbody element - * Scope: jQuery.dataTable.classSettings - */ - this.nTBody = null; - - /* - * Variable: nTableWrapper - * Purpose: Cache the wrapper node (contains all DataTables controlled elements) - * Scope: jQuery.dataTable.classSettings - */ - this.nTableWrapper = null; - - /* - * Variable: bInitialised - * Purpose: Indicate if all required information has been read in - * Scope: jQuery.dataTable.classSettings - */ - this.bInitialised = false; - - /* - * Variable: aoOpenRows - * Purpose: Information about open rows - * Scope: jQuery.dataTable.classSettings - * Notes: Has the parameters 'nTr' and 'nParent' - */ - this.aoOpenRows = []; - - /* - * Variable: sDom - * Purpose: Dictate the positioning that the created elements will take - * Scope: jQuery.dataTable.classSettings - * Notes: - * The following options are allowed: - * 'l' - Length changing - * 'f' - Filtering input - * 't' - The table! - * 'i' - Information - * 'p' - Pagination - * 'r' - pRocessing - * The following constants are allowed: - * 'H' - jQueryUI theme "header" classes - * 'F' - jQueryUI theme "footer" classes - * The following syntax is expected: - * '<' and '>' - div elements - * '<"class" and '>' - div with a class - * Examples: - * '<"wrapper"flipt>', 'ip>' - */ - this.sDom = 'lfrtip'; - - /* - * Variable: sPaginationType - * Purpose: Note which type of sorting should be used - * Scope: jQuery.dataTable.classSettings - */ - this.sPaginationType = "two_button"; - - /* - * Variable: iCookieDuration - * Purpose: The cookie duration (for bStateSave) in seconds - default 2 hours - * Scope: jQuery.dataTable.classSettings - */ - this.iCookieDuration = 60 * 60 * 2; - - /* - * Variable: sCookiePrefix - * Purpose: The cookie name prefix - * Scope: jQuery.dataTable.classSettings - */ - this.sCookiePrefix = "SpryMedia_DataTables_"; - - /* - * Variable: fnCookieCallback - * Purpose: Callback function for cookie creation - * Scope: jQuery.dataTable.classSettings - */ - this.fnCookieCallback = null; - - /* - * Variable: aoStateSave - * Purpose: Array of callback functions for state saving - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call. Takes two parameters, oSettings and the JSON string to - * save that has been thus far created. Returns a JSON string to be inserted into a - * json object (i.e. '"param": [ 0, 1, 2]') - * string:sName - name of callback - */ - this.aoStateSave = []; - - /* - * Variable: aoStateLoad - * Purpose: Array of callback functions for state loading - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call. Takes two parameters, oSettings and the object stored. - * May return false to cancel state loading. - * string:sName - name of callback - */ - this.aoStateLoad = []; - - /* - * Variable: oLoadedState - * Purpose: State that was loaded from the cookie. Useful for back reference - * Scope: jQuery.dataTable.classSettings - */ - this.oLoadedState = null; - - /* - * Variable: sAjaxSource - * Purpose: Source url for AJAX data for the table - * Scope: jQuery.dataTable.classSettings - */ - this.sAjaxSource = null; - - /* - * Variable: bAjaxDataGet - * Purpose: Note if draw should be blocked while getting data - * Scope: jQuery.dataTable.classSettings - */ - this.bAjaxDataGet = true; - - /* - * Variable: fnServerData - * Purpose: Function to get the server-side data - can be overruled by the developer - * Scope: jQuery.dataTable.classSettings - */ - this.fnServerData = function ( url, data, callback ) { - $.ajax( { - "url": url, - "data": data, - "success": callback, - "dataType": "json", - "cache": false, - "error": function (xhr, error, thrown) { - if ( error == "parsererror" ) { - alert( "DataTables warning: JSON data from server could not be parsed. "+ - "This is caused by a JSON formatting error." ); - } - } - } ); - }; - - /* - * Variable: fnFormatNumber - * Purpose: Format numbers for display - * Scope: jQuery.dataTable.classSettings - */ - this.fnFormatNumber = function ( iIn ) - { - if ( iIn < 1000 ) - { - /* A small optimisation for what is likely to be the vast majority of use cases */ - return iIn; - } - else - { - var s=(iIn+""), a=s.split(""), out="", iLen=s.length; - - for ( var i=0 ; i