summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-10-02 20:52:06 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-10-02 20:52:06 -0400
commitdceadbebbe0b196278573ed294be8c631d45ecef (patch)
tree5274fc4e0397a705dcf1d488074bea9503b3f2c7
parent724f8c309c97aa9af7f963687342e8f37e682204 (diff)
parent355087ebe2e3fbd5f860e4655888a89d9df52e34 (diff)
Merge branch 'master-nomake'parabolaweb-2014-10-03
-rw-r--r--README.md1
-rw-r--r--__init__.py0
-rw-r--r--archweb.wsgi4
-rw-r--r--devel/fields.py2
-rw-r--r--devel/forms.py18
-rw-r--r--devel/migrations/0001_initial.py109
-rw-r--r--devel/migrations/0002_auto__add_masterkey.py76
-rw-r--r--devel/migrations/0003_auto__add_pgpsignature.py81
-rw-r--r--devel/migrations/0004_masterkey_dates.py74
-rw-r--r--devel/migrations/0005_auto__add_userprofile.py113
-rw-r--r--devel/migrations/0006_auto__add_field_userprofile_country.py107
-rw-r--r--devel/migrations/0007_auto_assign_countries.py157
-rw-r--r--devel/migrations/0008_auto__add_field_userprofile_last_modified.py110
-rw-r--r--devel/migrations/0009_auto__add_developerkey.py126
-rw-r--r--devel/migrations/0010_auto__add_index_pgpsignature_signee__add_index_pgpsignature_signer.py119
-rw-r--r--devel/migrations/0011_auto__del_field_pgpsignature_valid__add_field_pgpsignature_revoked.py125
-rw-r--r--devel/views.py2
-rw-r--r--main/fields.py2
-rw-r--r--main/migrations/0001_initial.py557
-rw-r--r--main/migrations/0002_make_maintainer_nullable.py190
-rw-r--r--main/migrations/0003_migrate_maintainer.py193
-rw-r--r--main/migrations/0004_add_pkgname_index.py193
-rw-r--r--main/migrations/0005_fix_empty_url_pkgdesc.py207
-rw-r--r--main/migrations/0006_add_more_info_to_packages.py201
-rw-r--r--main/migrations/0007_add_files_last_update.py193
-rw-r--r--main/migrations/0008_mirror_tiering.py199
-rw-r--r--main/migrations/0009_mirror_rsync_credentials.py201
-rw-r--r--main/migrations/0010_kill_rsync_ip_hostname.py196
-rw-r--r--main/migrations/0011_mirror_notes_text_field.py198
-rw-r--r--main/migrations/0012_is_repo_testing.py194
-rw-r--r--main/migrations/0013_mark_repos_testing.py194
-rw-r--r--main/migrations/0014_mirror_notes_rsync_optional.py201
-rw-r--r--main/migrations/0015_auto__del_field_package_maintainer.py211
-rw-r--r--main/migrations/0016_always_fill_pkgbase.py206
-rw-r--r--main/migrations/0017_auto__chg_field_package_pkgbase.py211
-rw-r--r--main/migrations/0018_auto__del_press.py210
-rw-r--r--main/migrations/0019_auto__del_altforum.py204
-rw-r--r--main/migrations/0020_auto__del_externalproject.py197
-rw-r--r--main/migrations/0021_mark_package_fields_nullable.py203
-rw-r--r--main/migrations/0022_auto__add_field_package_filename.py192
-rw-r--r--main/migrations/0023_auto__add_field_package_flag_date.py193
-rw-r--r--main/migrations/0024_set_initial_flag_date.py190
-rw-r--r--main/migrations/0025_auto__del_field_package_needupdate.py192
-rw-r--r--main/migrations/0026_auto__add_field_package_packager_str__add_field_package_packager.py200
-rw-r--r--main/migrations/0027_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py198
-rw-r--r--main/migrations/0028_auto__add_field_repo_bugs_project__add_field_repo_svn_root.py200
-rw-r--r--main/migrations/0029_fill_in_repo_data.py193
-rw-r--r--main/migrations/0030_move_mirror_models.py157
-rw-r--r--main/migrations/0031_move_news_out.py149
-rw-r--r--main/migrations/0032_auto__add_field_arch_agnostic.py152
-rw-r--r--main/migrations/0033_mark_any_agnostic.py150
-rw-r--r--main/migrations/0034_update_content_type.py153
-rw-r--r--main/migrations/0035_auto__add_field_donor_visible.py151
-rw-r--r--main/migrations/0036_auto__chg_field_userprofile_user.py151
-rw-r--r--main/migrations/0037_auto__add_field_userprofile_time_zone.py154
-rw-r--r--main/migrations/0038_add_depends_optional_description.py156
-rw-r--r--main/migrations/0039_auto__del_field_package_license.py157
-rw-r--r--main/migrations/0040_split_package_files.py166
-rw-r--r--main/migrations/0041_move_package_files_data.py186
-rw-r--r--main/migrations/0042_auto__del_field_packagefile_path.py158
-rw-r--r--main/migrations/0043_auto__add_field_package_epoch.py162
-rw-r--r--main/migrations/0044_auto__chg_field_todolist_date_added.py156
-rw-r--r--main/migrations/0045_add_todolist_date_added_index.py156
-rw-r--r--main/migrations/0046_auto__add_field_repo_staging.py157
-rw-r--r--main/migrations/0047_utc_datetimes.py180
-rw-r--r--main/migrations/0048_auto__add_field_repo_bugs_category.py158
-rw-r--r--main/migrations/0049_auto__add_field_userprofile_pgp_key.py160
-rw-r--r--main/migrations/0050_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py166
-rw-r--r--main/migrations/0051_auto__chg_field_userprofile_pgp_key.py160
-rw-r--r--main/migrations/0052_auto__del_signoff.py166
-rw-r--r--main/migrations/0053_auto__add_field_package_pgp_signature.py152
-rw-r--r--main/migrations/0054_auto__add_field_donor_created.py160
-rw-r--r--main/migrations/0055_unique_package_in_repo.py160
-rw-r--r--main/migrations/0056_auto__chg_field_package_pkgdesc.py153
-rw-r--r--main/migrations/0057_auto__add_field_userprofile_latin_name.py153
-rw-r--r--main/migrations/0058_auto__add_on_delete_attributes.py160
-rw-r--r--main/migrations/0059_auto__del_userprofile.py137
-rw-r--r--main/migrations/0060_add_packages_last_update_index.py131
-rw-r--r--main/migrations/0061_auto__del_packagedepend.py135
-rw-r--r--main/migrations/0062_remove_old_todolist_models.py133
-rw-r--r--main/migrations/0063_auto__add_field_package_created.py116
-rw-r--r--main/migrations/0064_auto__add_field_arch_required_signoffs.py112
-rw-r--r--main/migrations/0065_auto__add_field_package_signature_bytes.py114
-rw-r--r--main/migrations/0066_move_signature_data.py125
-rw-r--r--main/migrations/0067_auto__del_field_package_pgp_signature.py113
-rw-r--r--main/migrations/0068_auto__chg_field_packagefile_directory__chg_field_packagefile_filename.py112
-rw-r--r--mirrors/admin.py10
-rw-r--r--mirrors/fields.py4
-rw-r--r--mirrors/management/commands/mirrorcheck.py2
-rw-r--r--mirrors/migrations/0001_initial.py130
-rw-r--r--mirrors/migrations/0002_rename_model_tables.py80
-rw-r--r--mirrors/migrations/0003_auto__add_mirrorlog.py72
-rw-r--r--mirrors/migrations/0004_auto__add_field_mirrorprotocol_is_download.py62
-rw-r--r--mirrors/migrations/0005_populate_protocol_is_download.py64
-rw-r--r--mirrors/migrations/0006_auto__add_field_mirrorurl_has_ipv4__add_field_mirrorurl_has_ipv6.py66
-rw-r--r--mirrors/migrations/0007_unique_names_urls.py66
-rw-r--r--mirrors/migrations/0008_auto__add_field_mirrorurl_country.py67
-rw-r--r--mirrors/migrations/0009_auto__chg_field_mirrorurl_country.py66
-rw-r--r--mirrors/migrations/0010_auto__add_field_mirrorprotocol_default.py66
-rw-r--r--mirrors/migrations/0011_adjust_protocol_defaults.py67
-rw-r--r--mirrors/migrations/0012_auto__add_on_delete_attribute.py68
-rw-r--r--mirrors/migrations/0013_rename_country_fields.py68
-rw-r--r--mirrors/migrations/0014_add_country_code_fields.py74
-rw-r--r--mirrors/migrations/0015_assign_country_codes.py93
-rw-r--r--mirrors/migrations/0016_auto__del_field_mirror_country_old__del_field_mirrorurl_country_old.py76
-rw-r--r--mirrors/migrations/0017_auto__chg_field_mirrorlog_error.py66
-rw-r--r--mirrors/migrations/0018_auto__add_field_mirror_alternate_email.py68
-rw-r--r--mirrors/migrations/0019_move_country_data_to_url.py74
-rw-r--r--mirrors/migrations/0020_auto__del_field_mirror_country.py70
-rw-r--r--mirrors/migrations/0021_auto__chg_field_mirrorrsync_ip.py66
-rw-r--r--mirrors/migrations/0022_auto__add_checklocation.py83
-rw-r--r--mirrors/migrations/0023_auto__add_field_mirrorurl_created__add_field_mirrorrsync_created__add_.py97
-rw-r--r--mirrors/migrations/0024_auto__add_field_mirrorlog_location.py83
-rw-r--r--mirrors/migrations/0025_auto__chg_field_mirrorrsync_ip.py85
-rw-r--r--mirrors/migrations/0026_auto__add_field_mirrorurl_active.py83
-rw-r--r--mirrors/migrations/0027_auto__add_field_mirror_bug.py91
-rw-r--r--mirrors/models.py18
-rw-r--r--news/migrations/0001_initial.py48
-rw-r--r--news/migrations/0002_move_news_in.py71
-rw-r--r--news/migrations/0003_new_date_columns_precision.py73
-rw-r--r--news/migrations/0004_auto__add_field_news_slug.py66
-rw-r--r--news/migrations/0005_add_slugs.py78
-rw-r--r--news/migrations/0006_auto__chg_field_news_slug.py66
-rw-r--r--news/migrations/0007_add_guid.py65
-rw-r--r--news/migrations/0008_set_prior_guids.py83
-rw-r--r--news/migrations/0009_utc_datetimes.py85
-rw-r--r--news/migrations/0010_auto__chg_field_news_author.py65
-rw-r--r--news/migrations/0011_auto__add_field_news_safe_mode.py68
-rw-r--r--news/migrations/0012_mark_old_news_safe_exempt.py73
-rw-r--r--packages/migrations/0001_initial.py269
-rw-r--r--packages/migrations/0002_populate_package_relation.py233
-rw-r--r--packages/migrations/0003_auto__add_packagegroup.py109
-rw-r--r--packages/migrations/0004_auto__add_license.py118
-rw-r--r--packages/migrations/0005_move_license_data.py120
-rw-r--r--packages/migrations/0006_auto__add_provision__add_conflict__add_replacement.py167
-rw-r--r--packages/migrations/0007_auto__add_field_packagerelation_created.py138
-rw-r--r--packages/migrations/0008_add_signoff_model.py166
-rw-r--r--packages/migrations/0009_add_packagegroup_name_index.py149
-rw-r--r--packages/migrations/0010_auto__add_signoffspecification.py183
-rw-r--r--packages/migrations/0011_auto__chg_field_signoffspecification_user.py165
-rw-r--r--packages/migrations/0012_auto__add_flagrequest.py201
-rw-r--r--packages/migrations/0013_auto__add_field_flagrequest_version.py180
-rw-r--r--packages/migrations/0014_auto__chg_field_flagrequest_ip_address.py181
-rw-r--r--packages/migrations/0015_auto__add_depend.py199
-rw-r--r--packages/migrations/0016_copy_depends_data.py246
-rw-r--r--packages/migrations/0017_auto__add_update.py226
-rw-r--r--packages/migrations/0018_create_created_indexes.py214
-rw-r--r--packages/migrations/0019_package_update_pkgname_index.py208
-rw-r--r--packages/migrations/0020_auto__add_field_depend_deptype.py212
-rw-r--r--packages/migrations/0021_migrate_optional_deps.py210
-rw-r--r--packages/migrations/0022_auto__del_field_depend_optional.py211
-rw-r--r--packages/migrations/0023_split_flag_req_version_field.py222
-rw-r--r--packages/migrations/0024_move_flag_req_version_info.py218
-rw-r--r--packages/migrations/0025_auto__del_field_flagrequest_version.py213
-rw-r--r--packages/models.py4
-rw-r--r--packages/views/__init__.py5
-rw-r--r--public/models.py1
-rw-r--r--releng/migrations/0001_initial.py443
-rw-r--r--releng/migrations/0002_auto__add_field_iso_removed.py99
-rw-r--r--releng/migrations/0003_auto__chg_field_test_ip_address.py99
-rw-r--r--releng/migrations/0004_auto__add_release.py121
-rw-r--r--releng/migrations/0005_auto__add_field_release_file_size__add_field_release_torrent_data.py127
-rw-r--r--releng/migrations/0006_auto__add_unique_release_version.py117
-rw-r--r--releng/migrations/0007_auto__add_field_release_md5__add_field_release_sha1.py122
-rw-r--r--releng/migrations/0008_auto__del_field_release_torrent_infohash__del_field_release_file_size.py118
-rw-r--r--releng/models.py6
-rw-r--r--requirements.txt11
-rw-r--r--requirements_prod.txt13
-rw-r--r--retro/models.py0
-rw-r--r--settings.py4
-rw-r--r--sitemaps.py2
-rw-r--r--sitestatic/bootstrap-typeahead.min.js4
-rw-r--r--sitestatic/jquery-1.8.3.js3364
-rw-r--r--sitestatic/jquery-1.8.3.min.js38
-rw-r--r--sitestatic/jquery.tablesorter-2.7.min.js14
-rw-r--r--sitestatic/konami.js182
-rw-r--r--sitestatic/konami.min.js29
-rw-r--r--templates/admin/index.html6
-rw-r--r--templates/mirrors/mirror_details.html8
-rw-r--r--templates/mirrors/status.html4
-rw-r--r--templates/mirrors/status_table.html6
-rw-r--r--templates/mirrors/url_details.html6
-rw-r--r--templates/public/index.html6
-rw-r--r--todolists/migrations/0001_initial.py68
-rw-r--r--todolists/migrations/0002_add_todolist_and_todolistpackage.py155
-rw-r--r--todolists/migrations/0003_migrate_todolist_data.py184
-rw-r--r--todolists/migrations/0004_auto__add_field_todolist_slug.py123
-rw-r--r--todolists/migrations/0005_add_slugs.py133
-rw-r--r--todolists/migrations/0006_auto__chg_field_todolist_slug.py119
-rw-r--r--todolists/migrations/0007_auto__add_field_todolistpackage_removed.py124
-rw-r--r--todolists/migrations/0008_auto__add_field_todolistpackage_last_modified.py129
-rw-r--r--todolists/migrations/0009_update_last_modified_todolist_package.py122
-rw-r--r--urls.py3
-rw-r--r--visualize/models.py0
-rw-r--r--visualize/static/d3-3.0.6.min.js487
195 files changed, 2944 insertions, 24516 deletions
diff --git a/README.md b/README.md
index df7c2ceb..b2a45c47 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,6 @@ packages, you will probably want the following:
- django
- python2-psycopg2
- python2-markdown
-- python2-south
- python2-memcached
# Testing Installation
diff --git a/__init__.py b/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/__init__.py
+++ /dev/null
diff --git a/archweb.wsgi b/archweb.wsgi
index f8de2b49..a0d969e7 100644
--- a/archweb.wsgi
+++ b/archweb.wsgi
@@ -30,8 +30,8 @@ try:
except ImportError:
pass
-import django.core.handlers.wsgi
-application = django.core.handlers.wsgi.WSGIHandler()
+from django.core.wsgi import get_wsgi_application
+application = get_wsgi_application()
if using_newrelic:
application = newrelic.agent.wsgi_application()(application)
diff --git a/devel/fields.py b/devel/fields.py
index 606ca63c..dd22a92e 100644
--- a/devel/fields.py
+++ b/devel/fields.py
@@ -3,8 +3,6 @@ from django.core.validators import RegexValidator
class PGPKeyField(models.CharField):
- _south_introspects = True
-
def __init__(self, *args, **kwargs):
super(PGPKeyField, self).__init__(*args, **kwargs)
self.validators.append(RegexValidator(r'^[0-9A-F]{40}$',
diff --git a/devel/forms.py b/devel/forms.py
index 7f7c281e..d953c614 100644
--- a/devel/forms.py
+++ b/devel/forms.py
@@ -1,4 +1,5 @@
import random
+from collections import OrderedDict
from string import ascii_letters, digits
from django import forms
@@ -52,13 +53,16 @@ class NewUserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewUserForm, self).__init__(*args, **kwargs)
- # Hack ourself so certain fields appear first. self.fields is a
- # SortedDict object where we can manipulate the keyOrder list.
- order = self.fields.keyOrder
- keys = ('username', 'private_email', 'first_name', 'last_name')
- for key in reversed(keys):
- order.remove(key)
- order.insert(0, key)
+ # Hack ourself so certain fields appear first
+ old = self.fields
+ self.fields = OrderedDict()
+ keys = ('username', 'private_email', 'first_name', 'last_name',
+ 'alias', 'public_email')
+ for key in keys:
+ self.fields[key] = old[key]
+ for key, val in old.items():
+ if key not in keys:
+ self.fields[key] = old[key]
def clean_username(self):
username = self.cleaned_data['username']
diff --git a/devel/migrations/0001_initial.py b/devel/migrations/0001_initial.py
index c28fc20f..3dd3582b 100644
--- a/devel/migrations/0001_initial.py
+++ b/devel/migrations/0001_initial.py
@@ -1,18 +1,101 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+import pytz
-class Migration(SchemaMigration):
+from django.db import models, migrations
+import django_countries.fields
+import django.db.models.deletion
+from django.conf import settings
+import devel.fields
- def forwards(self, orm):
- pass
+class Migration(migrations.Migration):
- def backwards(self, orm):
- pass
+ dependencies = [
+ ('main', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
-
- models = {}
-
- complete_apps = ['devel']
+ operations = [
+ migrations.CreateModel(
+ name='DeveloperKey',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('key', devel.fields.PGPKeyField(unique=True, max_length=40, verbose_name=b'PGP key fingerprint')),
+ ('created', models.DateTimeField()),
+ ('expires', models.DateTimeField(null=True, blank=True)),
+ ('revoked', models.DateTimeField(null=True, blank=True)),
+ ('owner', models.ForeignKey(related_name=b'all_keys', to=settings.AUTH_USER_MODEL, help_text=b'The developer this key belongs to', null=True)),
+ ('parent', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='devel.DeveloperKey', null=True)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MasterKey',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pgp_key', devel.fields.PGPKeyField(help_text=b'consists of 40 hex digits; use `gpg --fingerprint`', max_length=40, verbose_name=b'PGP key fingerprint')),
+ ('created', models.DateField()),
+ ('revoked', models.DateField(null=True, blank=True)),
+ ('owner', models.ForeignKey(related_name=b'masterkey_owner', to=settings.AUTH_USER_MODEL, help_text=b'The developer holding this master key')),
+ ('revoker', models.ForeignKey(related_name=b'masterkey_revoker', to=settings.AUTH_USER_MODEL, help_text=b'The developer holding the revocation certificate')),
+ ],
+ options={
+ 'ordering': ('created',),
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='PGPSignature',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('signer', devel.fields.PGPKeyField(max_length=40, verbose_name=b'Signer key fingerprint', db_index=True)),
+ ('signee', devel.fields.PGPKeyField(max_length=40, verbose_name=b'Signee key fingerprint', db_index=True)),
+ ('created', models.DateField()),
+ ('expires', models.DateField(null=True, blank=True)),
+ ('revoked', models.DateField(null=True, blank=True)),
+ ],
+ options={
+ 'ordering': ('signer', 'signee'),
+ 'get_latest_by': 'created',
+ 'verbose_name': 'PGP signature',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='UserProfile',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('notify', models.BooleanField(default=True, help_text=b"When enabled, send user 'flag out-of-date' notifications", verbose_name=b'Send notifications')),
+ ('time_zone', models.CharField(default=b'UTC', help_text=b'Used for developer clock page', max_length=100, choices=[(z, z) for z in pytz.common_timezones])),
+ ('alias', models.CharField(help_text=b'Required field', max_length=50)),
+ ('public_email', models.CharField(help_text=b'Required field', max_length=50)),
+ ('other_contact', models.CharField(max_length=100, null=True, blank=True)),
+ ('pgp_key', devel.fields.PGPKeyField(help_text=b'consists of 40 hex digits; use `gpg --fingerprint`', max_length=40, null=True, verbose_name=b'PGP key fingerprint', blank=True)),
+ ('website', models.CharField(max_length=200, null=True, blank=True)),
+ ('yob', models.IntegerField(null=True, verbose_name=b'Year of birth', blank=True)),
+ ('country', django_countries.fields.CountryField(blank=True, max_length=2)),
+ ('location', models.CharField(max_length=50, null=True, blank=True)),
+ ('languages', models.CharField(max_length=50, null=True, blank=True)),
+ ('interests', models.CharField(max_length=255, null=True, blank=True)),
+ ('occupation', models.CharField(max_length=50, null=True, blank=True)),
+ ('roles', models.CharField(max_length=255, null=True, blank=True)),
+ ('favorite_distros', models.CharField(max_length=255, null=True, blank=True)),
+ ('picture', models.FileField(default=b'devs/silhouette.png', help_text=b'Ideally 125px by 125px', upload_to=b'devs')),
+ ('latin_name', models.CharField(help_text=b'Latin-form name; used only for non-Latin full names', max_length=255, null=True, blank=True)),
+ ('last_modified', models.DateTimeField(editable=False)),
+ ('allowed_repos', models.ManyToManyField(to='main.Repo', blank=True)),
+ ('user', models.OneToOneField(related_name=b'userprofile', to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'get_latest_by': 'last_modified',
+ 'verbose_name': 'additional profile data',
+ 'verbose_name_plural': 'additional profile data',
+ 'db_table': 'user_profiles',
+ },
+ bases=(models.Model,),
+ ),
+ ]
diff --git a/devel/migrations/0002_auto__add_masterkey.py b/devel/migrations/0002_auto__add_masterkey.py
deleted file mode 100644
index ba9a3e5f..00000000
--- a/devel/migrations/0002_auto__add_masterkey.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- depends_on = (
- ("main", "0051_auto__chg_field_userprofile_pgp_key"),
- )
-
- def forwards(self, orm):
- # Adding model 'MasterKey'
- db.create_table('devel_masterkey', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='masterkey_owner', to=orm['auth.User'])),
- ('revoker', self.gf('django.db.models.fields.related.ForeignKey')(related_name='masterkey_revoker', to=orm['auth.User'])),
- ('pgp_key', self.gf('devel.fields.PGPKeyField')(max_length=40)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('revoked', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ))
- db.send_create_signal('devel', ['MasterKey'])
-
- def backwards(self, orm):
- db.delete_table('devel_masterkey')
-
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0003_auto__add_pgpsignature.py b/devel/migrations/0003_auto__add_pgpsignature.py
deleted file mode 100644
index e16de1ca..00000000
--- a/devel/migrations/0003_auto__add_pgpsignature.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_table('devel_pgpsignature', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('signer', self.gf('devel.fields.PGPKeyField')(max_length=40)),
- ('signee', self.gf('devel.fields.PGPKeyField')(max_length=40)),
- ('created', self.gf('django.db.models.fields.DateField')()),
- ('expires', self.gf('django.db.models.fields.DateField')(null=True)),
- ('valid', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ))
- db.send_create_signal('devel', ['PGPSignature'])
-
-
- def backwards(self, orm):
- db.delete_table('devel_pgpsignature')
-
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0004_masterkey_dates.py b/devel/migrations/0004_masterkey_dates.py
deleted file mode 100644
index f2020dd7..00000000
--- a/devel/migrations/0004_masterkey_dates.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('devel_masterkey', 'revoked', self.gf('django.db.models.fields.DateField')(null=True))
- db.alter_column('devel_masterkey', 'created', self.gf('django.db.models.fields.DateField')())
-
- def backwards(self, orm):
- db.alter_column('devel_masterkey', 'revoked', self.gf('django.db.models.fields.DateTimeField')(null=True))
- db.alter_column('devel_masterkey', 'created', self.gf('django.db.models.fields.DateTimeField')())
-
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0005_auto__add_userprofile.py b/devel/migrations/0005_auto__add_userprofile.py
deleted file mode 100644
index ff6f9785..00000000
--- a/devel/migrations/0005_auto__add_userprofile.py
+++ /dev/null
@@ -1,113 +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):
-
- depends_on = (
- ('main', '0059_auto__del_userprofile'),
- )
-
- def forwards(self, orm):
- if not db.dry_run:
- db.send_create_signal('devel', ['UserProfile'])
- orm['contenttypes.ContentType'].objects.filter(
- app_label='main', model='userprofile').update(
- app_label='devel')
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0006_auto__add_field_userprofile_country.py b/devel/migrations/0006_auto__add_field_userprofile_country.py
deleted file mode 100644
index 1b3b182c..00000000
--- a/devel/migrations/0006_auto__add_field_userprofile_country.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('user_profiles', 'country',
- self.gf('django_countries.fields.CountryField')(default='', max_length=2, blank=True),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('user_profiles', 'country')
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0007_auto_assign_countries.py b/devel/migrations/0007_auto_assign_countries.py
deleted file mode 100644
index 2bad95a2..00000000
--- a/devel/migrations/0007_auto_assign_countries.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- # This is by no means an exhaustive list, but covered most of the time
- # zones selected by existing developers at the time I wrote this
- # migration.
- tz_map = {
- 'America/Argentina/Buenos_Aires': 'AR',
- 'America/Chicago': 'US',
- 'America/Los_Angeles': 'US',
- 'America/Maceio': 'BR',
- 'America/Montreal': 'CA',
- 'America/New_York': 'US',
- 'America/Puerto_Rico': 'PR',
- 'America/Sao_Paulo': 'BR',
- 'America/Toronto': 'CA',
- 'America/Vancouver': 'CA',
- 'Asia/Kolkata': 'IN',
- 'Asia/Singapore': 'SG',
- 'Australia/Brisbane': 'AU',
- 'Australia/Melbourne': 'AU',
- 'Australia/Sydney': 'AU',
- 'Canada/Central': 'CA',
- 'Canada/Eastern': 'CA',
- 'Europe/Amsterdam': 'NL',
- 'Europe/Athens': 'GR',
- 'Europe/Berlin': 'DE',
- 'Europe/Brussels': 'BE',
- 'Europe/Bucharest': 'RO',
- 'Europe/Budapest': 'HU',
- 'Europe/Copenhagen': 'DK',
- 'Europe/Dublin': 'IE',
- 'Europe/Helsinki': 'FI',
- 'Europe/Kiev': 'UA',
- 'Europe/London': 'GB',
- 'Europe/Madrid': 'ES',
- 'Europe/Moscow': 'RU',
- 'Europe/Oslo': 'NO',
- 'Europe/Paris': 'FR',
- 'Europe/Prague': 'CZ',
- 'Europe/Rome': 'IT',
- 'Europe/Vienna': 'AT',
- 'Europe/Warsaw': 'PL',
- 'Europe/Zurich': 'CH',
- 'Pacific/Auckland': 'NZ',
- 'US/Central': 'US',
- 'US/Eastern': 'US',
- 'US/Mountain': 'US',
- 'US/Pacific': 'US',
- }
- empty_loc = models.Q(location__isnull=True) | models.Q(location='')
- for tz, code in tz_map.items():
- orm.UserProfile.objects.filter(time_zone=tz, country='').exclude(
- empty_loc).update(country=code)
-
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
- symmetrical = True
diff --git a/devel/migrations/0008_auto__add_field_userprofile_last_modified.py b/devel/migrations/0008_auto__add_field_userprofile_last_modified.py
deleted file mode 100644
index 08972e1b..00000000
--- a/devel/migrations/0008_auto__add_field_userprofile_last_modified.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from pytz import utc
-
-
-class Migration(SchemaMigration):
- def forwards(self, orm):
- default = datetime.datetime(2000, 1, 1, 0, 0).replace(tzinfo=utc)
- db.add_column('user_profiles', 'last_modified',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('user_profiles', 'last_modified')
-
- 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'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0009_auto__add_developerkey.py b/devel/migrations/0009_auto__add_developerkey.py
deleted file mode 100644
index 60d3f7b8..00000000
--- a/devel/migrations/0009_auto__add_developerkey.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_table('devel_developerkey', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='all_keys', null=True, to=orm['auth.User'])),
- ('key', self.gf('devel.fields.PGPKeyField')(unique=True, max_length=40)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('expires', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('revoked', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('parent', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['devel.DeveloperKey'], null=True, on_delete=models.SET_NULL)),
- ))
- db.send_create_signal('devel', ['DeveloperKey'])
-
- def backwards(self, orm):
- db.delete_table('devel_developerkey')
-
-
- 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'})
- },
- 'devel.developerkey': {
- 'Meta': {'object_name': 'DeveloperKey'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'key': ('devel.fields.PGPKeyField', [], {'unique': 'True', 'max_length': '40'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'all_keys'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['devel.DeveloperKey']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
- },
- 'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': "orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': "orm['auth.User']"})
- },
- 'devel.pgpsignature': {
- 'Meta': {'ordering': "('signer', 'signee')", 'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0010_auto__add_index_pgpsignature_signee__add_index_pgpsignature_signer.py b/devel/migrations/0010_auto__add_index_pgpsignature_signee__add_index_pgpsignature_signer.py
deleted file mode 100644
index 55f8c800..00000000
--- a/devel/migrations/0010_auto__add_index_pgpsignature_signee__add_index_pgpsignature_signer.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_index(u'devel_pgpsignature', ['signee'])
- db.create_index(u'devel_pgpsignature', ['signer'])
-
- def backwards(self, orm):
- db.delete_index(u'devel_pgpsignature', ['signer'])
- db.delete_index(u'devel_pgpsignature', ['signee'])
-
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'devel.developerkey': {
- 'Meta': {'object_name': 'DeveloperKey'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'key': ('devel.fields.PGPKeyField', [], {'unique': 'True', 'max_length': '40'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'all_keys'", 'null': 'True', 'to': u"orm['auth.User']"}),
- 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['devel.DeveloperKey']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
- },
- u'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': u"orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': u"orm['auth.User']"})
- },
- u'devel.pgpsignature': {
- 'Meta': {'ordering': "('signer', 'signee')", 'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'db_index': 'True'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'db_index': 'True'}),
- 'valid': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': u"orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/migrations/0011_auto__del_field_pgpsignature_valid__add_field_pgpsignature_revoked.py b/devel/migrations/0011_auto__del_field_pgpsignature_valid__add_field_pgpsignature_revoked.py
deleted file mode 100644
index a2df917f..00000000
--- a/devel/migrations/0011_auto__del_field_pgpsignature_valid__add_field_pgpsignature_revoked.py
+++ /dev/null
@@ -1,125 +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):
- db.delete_column(u'devel_pgpsignature', 'valid')
- db.add_column(u'devel_pgpsignature', 'revoked',
- self.gf('django.db.models.fields.DateField')(null=True, blank=True),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.add_column(u'devel_pgpsignature', 'valid',
- self.gf('django.db.models.fields.BooleanField')(default=True),
- keep_default=True)
- db.delete_column(u'devel_pgpsignature', 'revoked')
-
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'devel.developerkey': {
- 'Meta': {'object_name': 'DeveloperKey'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'key': ('devel.fields.PGPKeyField', [], {'unique': 'True', 'max_length': '40'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'all_keys'", 'null': 'True', 'to': u"orm['auth.User']"}),
- 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['devel.DeveloperKey']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
- },
- u'devel.masterkey': {
- 'Meta': {'ordering': "('created',)", 'object_name': 'MasterKey'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_owner'", 'to': u"orm['auth.User']"}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'revoker': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'masterkey_revoker'", 'to': u"orm['auth.User']"})
- },
- u'devel.pgpsignature': {
- 'Meta': {'ordering': "('signer', 'signee')", 'object_name': 'PGPSignature'},
- 'created': ('django.db.models.fields.DateField', [], {}),
- 'expires': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'revoked': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'signee': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'db_index': 'True'}),
- 'signer': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'db_index': 'True'})
- },
- u'devel.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': u"orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['devel']
diff --git a/devel/views.py b/devel/views.py
index 972d0abb..92cb098e 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -5,6 +5,7 @@ import time
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import \
login_required, permission_required, user_passes_test
+from django.contrib import admin
from django.contrib.admin.models import LogEntry, ADDITION
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
@@ -259,6 +260,7 @@ def admin_log(request, username=None):
'title': "Admin Action Log",
'log_user': user,
}
+ context.update(admin.site.each_context())
return render(request, 'devel/admin_log.html', context)
# vim: set ts=4 sw=4 et:
diff --git a/main/fields.py b/main/fields.py
index 2d5703ef..53494772 100644
--- a/main/fields.py
+++ b/main/fields.py
@@ -2,8 +2,6 @@ from django.db import models
class PositiveBigIntegerField(models.BigIntegerField):
- _south_introspects = True
-
def get_internal_type(self):
return "BigIntegerField"
diff --git a/main/migrations/0001_initial.py b/main/migrations/0001_initial.py
index bc8bb492..8349d4b9 100644
--- a/main/migrations/0001_initial.py
+++ b/main/migrations/0001_initial.py
@@ -1,440 +1,119 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-
- # Adding model 'PackageDepend'
- db.create_table('package_depends', (
- ('id', orm['main.PackageDepend:id']),
- ('pkg', orm['main.PackageDepend:pkg']),
- ('depname', orm['main.PackageDepend:depname']),
- ('depvcmp', orm['main.PackageDepend:depvcmp']),
- ))
- db.send_create_signal('main', ['PackageDepend'])
-
- # Adding model 'Press'
- db.create_table('press', (
- ('id', orm['main.Press:id']),
- ('name', orm['main.Press:name']),
- ('url', orm['main.Press:url']),
- ))
- db.send_create_signal('main', ['Press'])
-
- # Adding model 'MirrorUrl'
- db.create_table('main_mirrorurl', (
- ('id', orm['main.MirrorUrl:id']),
- ('url', orm['main.MirrorUrl:url']),
- ('protocol', orm['main.MirrorUrl:protocol']),
- ('mirror', orm['main.MirrorUrl:mirror']),
- ))
- db.send_create_signal('main', ['MirrorUrl'])
-
- # Adding model 'MirrorRsync'
- db.create_table('main_mirrorrsync', (
- ('id', orm['main.MirrorRsync:id']),
- ('hostname', orm['main.MirrorRsync:hostname']),
- ('ip', orm['main.MirrorRsync:ip']),
- ('mirror', orm['main.MirrorRsync:mirror']),
- ))
- db.send_create_signal('main', ['MirrorRsync'])
-
- # Adding model 'AltForum'
- db.create_table('alt_forums', (
- ('id', orm['main.AltForum:id']),
- ('language', orm['main.AltForum:language']),
- ('url', orm['main.AltForum:url']),
- ('name', orm['main.AltForum:name']),
- ))
- db.send_create_signal('main', ['AltForum'])
-
- # Adding model 'Signoff'
- db.create_table('main_signoff', (
- ('id', orm['main.Signoff:id']),
- ('pkg', orm['main.Signoff:pkg']),
- ('pkgver', orm['main.Signoff:pkgver']),
- ('pkgrel', orm['main.Signoff:pkgrel']),
- ('packager', orm['main.Signoff:packager']),
- ))
- db.send_create_signal('main', ['Signoff'])
-
- # Adding model 'UserProfile'
- db.create_table('user_profiles', (
- ('id', orm['main.UserProfile:id']),
- ('notify', orm['main.UserProfile:notify']),
- ('alias', orm['main.UserProfile:alias']),
- ('public_email', orm['main.UserProfile:public_email']),
- ('other_contact', orm['main.UserProfile:other_contact']),
- ('website', orm['main.UserProfile:website']),
- ('yob', orm['main.UserProfile:yob']),
- ('location', orm['main.UserProfile:location']),
- ('languages', orm['main.UserProfile:languages']),
- ('interests', orm['main.UserProfile:interests']),
- ('occupation', orm['main.UserProfile:occupation']),
- ('roles', orm['main.UserProfile:roles']),
- ('favorite_distros', orm['main.UserProfile:favorite_distros']),
- ('picture', orm['main.UserProfile:picture']),
- ('user', orm['main.UserProfile:user']),
- ))
- db.send_create_signal('main', ['UserProfile'])
-
- # Adding model 'Arch'
- db.create_table('arches', (
- ('id', orm['main.Arch:id']),
- ('name', orm['main.Arch:name']),
- ))
- db.send_create_signal('main', ['Arch'])
-
- # Adding model 'PackageFile'
- db.create_table('package_files', (
- ('id', orm['main.PackageFile:id']),
- ('pkg', orm['main.PackageFile:pkg']),
- ('path', orm['main.PackageFile:path']),
- ))
- db.send_create_signal('main', ['PackageFile'])
-
- # Adding model 'Todolist'
- db.create_table('todolists', (
- ('id', orm['main.Todolist:id']),
- ('creator', orm['main.Todolist:creator']),
- ('name', orm['main.Todolist:name']),
- ('description', orm['main.Todolist:description']),
- ('date_added', orm['main.Todolist:date_added']),
- ))
- db.send_create_signal('main', ['Todolist'])
-
- # Adding model 'TodolistPkg'
- db.create_table('todolist_pkgs', (
- ('id', orm['main.TodolistPkg:id']),
- ('list', orm['main.TodolistPkg:list']),
- ('pkg', orm['main.TodolistPkg:pkg']),
- ('complete', orm['main.TodolistPkg:complete']),
- ))
- db.send_create_signal('main', ['TodolistPkg'])
-
- # Adding model 'Donor'
- db.create_table('donors', (
- ('id', orm['main.Donor:id']),
- ('name', orm['main.Donor:name']),
- ))
- db.send_create_signal('main', ['Donor'])
-
- # Adding model 'Package'
- db.create_table('packages', (
- ('id', orm['main.Package:id']),
- ('repo', orm['main.Package:repo']),
- ('arch', orm['main.Package:arch']),
- ('maintainer', orm['main.Package:maintainer']),
- ('needupdate', orm['main.Package:needupdate']),
- ('pkgname', orm['main.Package:pkgname']),
- ('pkgbase', orm['main.Package:pkgbase']),
- ('pkgver', orm['main.Package:pkgver']),
- ('pkgrel', orm['main.Package:pkgrel']),
- ('pkgdesc', orm['main.Package:pkgdesc']),
- ('url', orm['main.Package:url']),
- ('last_update', orm['main.Package:last_update']),
- ('license', orm['main.Package:license']),
- ))
- db.send_create_signal('main', ['Package'])
-
- # Adding model 'Repo'
- db.create_table('repos', (
- ('id', orm['main.Repo:id']),
- ('name', orm['main.Repo:name']),
- ))
- db.send_create_signal('main', ['Repo'])
-
- # Adding model 'Mirror'
- db.create_table('main_mirror', (
- ('id', orm['main.Mirror:id']),
- ('name', orm['main.Mirror:name']),
- ('country', orm['main.Mirror:country']),
- ('admin_email', orm['main.Mirror:admin_email']),
- ('notes', orm['main.Mirror:notes']),
- ('public', orm['main.Mirror:public']),
- ('active', orm['main.Mirror:active']),
- ('isos', orm['main.Mirror:isos']),
- ))
- db.send_create_signal('main', ['Mirror'])
-
- # Adding model 'MirrorProtocol'
- db.create_table('main_mirrorprotocol', (
- ('id', orm['main.MirrorProtocol:id']),
- ('protocol', orm['main.MirrorProtocol:protocol']),
- ))
- db.send_create_signal('main', ['MirrorProtocol'])
-
- # Adding model 'ExternalProject'
- db.create_table('main_externalproject', (
- ('id', orm['main.ExternalProject:id']),
- ('url', orm['main.ExternalProject:url']),
- ('name', orm['main.ExternalProject:name']),
- ('description', orm['main.ExternalProject:description']),
- ))
- db.send_create_signal('main', ['ExternalProject'])
-
- # Adding model 'News'
- db.create_table('news', (
- ('id', orm['main.News:id']),
- ('author', orm['main.News:author']),
- ('postdate', orm['main.News:postdate']),
- ('title', orm['main.News:title']),
- ('content', orm['main.News:content']),
- ))
- db.send_create_signal('main', ['News'])
-
- # Adding ManyToManyField 'UserProfile.allowed_repos'
- db.create_table('user_profiles_allowed_repos', (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('userprofile', models.ForeignKey(orm.UserProfile, null=False)),
- ('repo', models.ForeignKey(orm.Repo, null=False))
- ))
-
- # Creating unique_together for [list, pkg] on TodolistPkg.
- db.create_unique('todolist_pkgs', ['list_id', 'pkg_id'])
-
-
-
- def backwards(self, orm):
-
- # Deleting unique_together for [list, pkg] on TodolistPkg.
- db.delete_unique('todolist_pkgs', ['list_id', 'pkg_id'])
-
- # Deleting model 'PackageDepend'
- db.delete_table('package_depends')
-
- # Deleting model 'Press'
- db.delete_table('press')
-
- # Deleting model 'MirrorUrl'
- db.delete_table('main_mirrorurl')
-
- # Deleting model 'MirrorRsync'
- db.delete_table('main_mirrorrsync')
-
- # Deleting model 'AltForum'
- db.delete_table('alt_forums')
-
- # Deleting model 'Signoff'
- db.delete_table('main_signoff')
-
- # Deleting model 'UserProfile'
- db.delete_table('user_profiles')
-
- # Deleting model 'Arch'
- db.delete_table('arches')
-
- # Deleting model 'PackageFile'
- db.delete_table('package_files')
-
- # Deleting model 'Todolist'
- db.delete_table('todolists')
-
- # Deleting model 'TodolistPkg'
- db.delete_table('todolist_pkgs')
-
- # Deleting model 'Donor'
- db.delete_table('donors')
-
- # Deleting model 'Package'
- db.delete_table('packages')
-
- # Deleting model 'Repo'
- db.delete_table('repos')
-
- # Deleting model 'Mirror'
- db.delete_table('main_mirror')
-
- # Deleting model 'MirrorProtocol'
- db.delete_table('main_mirrorprotocol')
-
- # Deleting model 'ExternalProject'
- db.delete_table('main_externalproject')
-
- # Deleting model 'News'
- db.delete_table('news')
-
- # Dropping ManyToManyField 'UserProfile.allowed_repos'
- db.delete_table('user_profiles_allowed_repos')
-
-
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'maintained_packages'", 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
+from django.db import models, migrations
+import main.fields
+import django.db.models.deletion
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Arch',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=255)),
+ ('agnostic', models.BooleanField(default=False, help_text=b'Is this architecture non-platform specific?')),
+ ('required_signoffs', models.PositiveIntegerField(default=2, help_text=b'Number of signoffs required for packages of this architecture')),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'db_table': 'arches',
+ 'verbose_name_plural': 'arches',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Donor',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=255)),
+ ('visible', models.BooleanField(default=True, help_text=b'Should we show this donor on the public page?')),
+ ('created', models.DateTimeField()),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'db_table': 'donors',
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Package',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgname', models.CharField(max_length=255)),
+ ('pkgbase', models.CharField(max_length=255, db_index=True)),
+ ('pkgver', models.CharField(max_length=255)),
+ ('pkgrel', models.CharField(max_length=255)),
+ ('epoch', models.PositiveIntegerField(default=0)),
+ ('pkgdesc', models.TextField(null=True, verbose_name=b'description')),
+ ('url', models.CharField(max_length=255, null=True, verbose_name=b'URL')),
+ ('filename', models.CharField(max_length=255)),
+ ('compressed_size', main.fields.PositiveBigIntegerField()),
+ ('installed_size', main.fields.PositiveBigIntegerField()),
+ ('build_date', models.DateTimeField(null=True)),
+ ('last_update', models.DateTimeField(db_index=True)),
+ ('files_last_update', models.DateTimeField(null=True, blank=True)),
+ ('created', models.DateTimeField()),
+ ('packager_str', models.CharField(max_length=255, verbose_name=b'packager string')),
+ ('signature_bytes', models.BinaryField(verbose_name=b'PGP signature', null=True)),
+ ('flag_date', models.DateTimeField(null=True, blank=True)),
+ ('arch', models.ForeignKey(related_name=b'packages', on_delete=django.db.models.deletion.PROTECT, to='main.Arch')),
+ ('packager', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
+ ],
+ options={
+ 'ordering': ('pkgname',),
+ 'db_table': 'packages',
+ 'get_latest_by': 'last_update',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='PackageFile',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('is_directory', models.BooleanField(default=False)),
+ ('directory', models.CharField(max_length=1024)),
+ ('filename', models.CharField(max_length=1024, null=True, blank=True)),
+ ('pkg', models.ForeignKey(to='main.Package')),
+ ],
+ options={
+ 'db_table': 'package_files',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Repo',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=255)),
+ ('testing', models.BooleanField(default=False, help_text=b'Is this repo meant for package testing?')),
+ ('staging', models.BooleanField(default=False, help_text=b'Is this repo meant for package staging?')),
+ ('bugs_project', models.SmallIntegerField(default=1, help_text=b'Flyspray project ID for this repository.')),
+ ('bugs_category', models.SmallIntegerField(default=2, help_text=b'Flyspray category ID for this repository.')),
+ ('svn_root', models.CharField(help_text=b'SVN root (e.g. path) for this repository.', max_length=64)),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'db_table': 'repos',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AddField(
+ model_name='package',
+ name='repo',
+ field=models.ForeignKey(related_name=b'packages', on_delete=django.db.models.deletion.PROTECT, to='main.Repo'),
+ preserve_default=True,
+ ),
+ migrations.AlterUniqueTogether(
+ name='package',
+ unique_together=set([('pkgname', 'repo', 'arch')]),
+ ),
+ ]
diff --git a/main/migrations/0002_make_maintainer_nullable.py b/main/migrations/0002_make_maintainer_nullable.py
deleted file mode 100644
index 675635df..00000000
--- a/main/migrations/0002_make_maintainer_nullable.py
+++ /dev/null
@@ -1,190 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages', 'maintainer_id', orm['main.package:maintainer'])
-
- def backwards(self, orm):
- db.alter_column('packages', 'maintainer_id', orm['main.package:maintainer'])
-
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0003_migrate_maintainer.py b/main/migrations/0003_migrate_maintainer.py
deleted file mode 100644
index 4169a5c9..00000000
--- a/main/migrations/0003_migrate_maintainer.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Package.objects.filter(maintainer=0).update(maintainer=None)
-
-
- def backwards(self, orm):
- # This will fail if foreign keys are in effect. Let's hope we'll
- # never have to go backwards. :P
- orm.Package.objects.filter(maintainer=None).update(maintainer=0)
-
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0004_add_pkgname_index.py b/main/migrations/0004_add_pkgname_index.py
deleted file mode 100644
index 6e23adac..00000000
--- a/main/migrations/0004_add_pkgname_index.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages', 'maintainer_id', orm['main.package:maintainer'])
- db.create_index('packages', ['pkgname'])
-
-
- def backwards(self, orm):
- db.alter_column('packages', 'maintainer_id', orm['main.package:maintainer'])
- db.delete_index('packages', ['pkgname'])
-
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0005_fix_empty_url_pkgdesc.py b/main/migrations/0005_fix_empty_url_pkgdesc.py
deleted file mode 100644
index 54658c17..00000000
--- a/main/migrations/0005_fix_empty_url_pkgdesc.py
+++ /dev/null
@@ -1,207 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- for p in orm.Package.objects.filter(pkgdesc=''):
- p.pkgdesc = None
- p.save()
- for p in orm.Package.objects.filter(pkgdesc='None'):
- p.pkgdesc = None
- p.save()
- for p in orm.Package.objects.filter(url=''):
- p.url = None
- p.save()
- for p in orm.Package.objects.filter(url='None'):
- p.url= None
- p.save()
-
-
- def backwards(self, orm):
- for p in orm.Package.objects.filter(pkgdesc=None):
- p.pkgdesc = ''
- p.save()
- for p in orm.Package.objects.filter(url=None):
- p.url = ''
- p.save()
-
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0006_add_more_info_to_packages.py b/main/migrations/0006_add_more_info_to_packages.py
deleted file mode 100644
index 5a2a1cd0..00000000
--- a/main/migrations/0006_add_more_info_to_packages.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
-
- def forwards(self, orm):
- # Adding field 'Package.compressed_size'
- db.add_column('packages', 'compressed_size', orm['main.package:compressed_size'])
- # Adding field 'Package.installed_size'
- db.add_column('packages', 'installed_size', orm['main.package:installed_size'])
- # Adding field 'Package.build_date'
- db.add_column('packages', 'build_date', orm['main.package:build_date'])
-
- def backwards(self, orm):
- # Deleting field 'Package.compressed_size'
- db.delete_column('packages', 'compressed_size')
- # Deleting field 'Package.installed_size'
- db.delete_column('packages', 'installed_size')
- # Deleting field 'Package.build_date'
- db.delete_column('packages', 'build_date')
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0007_add_files_last_update.py b/main/migrations/0007_add_files_last_update.py
deleted file mode 100644
index 36f99c26..00000000
--- a/main/migrations/0007_add_files_last_update.py
+++ /dev/null
@@ -1,193 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Adding field 'Package.files_last_update'
- db.add_column('packages', 'files_last_update', orm['main.package:files_last_update'])
-
- def backwards(self, orm):
- # Deleting field 'Package.files_last_update'
- db.delete_column('packages', 'files_last_update')
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0008_mirror_tiering.py b/main/migrations/0008_mirror_tiering.py
deleted file mode 100644
index 3993289e..00000000
--- a/main/migrations/0008_mirror_tiering.py
+++ /dev/null
@@ -1,199 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Adding field 'Mirror.tier'
- db.add_column('main_mirror', 'tier', orm['main.mirror:tier'])
- # Adding field 'Mirror.upstream'
- db.add_column('main_mirror', 'upstream', orm['main.mirror:upstream'])
-
- def backwards(self, orm):
- # Deleting field 'Mirror.tier'
- db.delete_column('main_mirror', 'tier')
- # Deleting field 'Mirror.upstream'
- db.delete_column('main_mirror', 'upstream_id')
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0009_mirror_rsync_credentials.py b/main/migrations/0009_mirror_rsync_credentials.py
deleted file mode 100644
index bbfc9d61..00000000
--- a/main/migrations/0009_mirror_rsync_credentials.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Adding field 'Mirror.rsync_user'
- db.add_column('main_mirror', 'rsync_user', orm['main.mirror:rsync_user'])
- # Adding field 'Mirror.rsync_password'
- db.add_column('main_mirror', 'rsync_password', orm['main.mirror:rsync_password'])
-
- def backwards(self, orm):
- # Deleting field 'Mirror.rsync_user'
- db.delete_column('main_mirror', 'rsync_user')
- # Deleting field 'Mirror.rsync_password'
- db.delete_column('main_mirror', 'rsync_password')
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0010_kill_rsync_ip_hostname.py b/main/migrations/0010_kill_rsync_ip_hostname.py
deleted file mode 100644
index 105fcede..00000000
--- a/main/migrations/0010_kill_rsync_ip_hostname.py
+++ /dev/null
@@ -1,196 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Deleting field 'MirrorRsync.hostname'
- db.delete_column('main_mirrorrsync', 'hostname')
-
- def backwards(self, orm):
- # Adding field 'MirrorRsync.hostname'
- db.add_column('main_mirrorrsync', 'hostname', orm['main.mirrorrsync:hostname'])
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0011_mirror_notes_text_field.py b/main/migrations/0011_mirror_notes_text_field.py
deleted file mode 100644
index cb6347de..00000000
--- a/main/migrations/0011_mirror_notes_text_field.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Changing field 'Mirror.notes'
- # (to signature: django.db.models.fields.TextField(blank=True))
- db.alter_column('main_mirror', 'notes', orm['main.mirror:notes'])
-
- def backwards(self, orm):
- # Changing field 'Mirror.notes'
- # (to signature: django.db.models.fields.CharField(max_length=255, blank=True))
- db.alter_column('main_mirror', 'notes', orm['main.mirror:notes'])
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0012_is_repo_testing.py b/main/migrations/0012_is_repo_testing.py
deleted file mode 100644
index b7a98b4a..00000000
--- a/main/migrations/0012_is_repo_testing.py
+++ /dev/null
@@ -1,194 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Adding field 'Repo.testing'
- db.add_column('repos', 'testing', orm['main.repo:testing'])
-
- def backwards(self, orm):
- # Deleting field 'Repo.testing'
- db.delete_column('repos', 'testing')
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0013_mark_repos_testing.py b/main/migrations/0013_mark_repos_testing.py
deleted file mode 100644
index e50010b2..00000000
--- a/main/migrations/0013_mark_repos_testing.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Repo.objects.filter(name__endswith="Testing").update(testing=True)
-
- def backwards(self, orm):
- pass
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0014_mirror_notes_rsync_optional.py b/main/migrations/0014_mirror_notes_rsync_optional.py
deleted file mode 100644
index 21d13627..00000000
--- a/main/migrations/0014_mirror_notes_rsync_optional.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from south.db import db
-from django.db import models
-from main.models import *
-
-class Migration:
- def forwards(self, orm):
- # Changing field field 'Mirror.rsync_user'
- db.alter_column('main_mirror', 'rsync_user', orm['main.mirror:rsync_user'])
- # Changing field 'Mirror.rsync_password'
- db.alter_column('main_mirror', 'rsync_password', orm['main.mirror:rsync_password'])
-
- def backwards(self, orm):
- # Changing field field 'Mirror.rsync_user'
- db.alter_column('main_mirror', 'rsync_user', orm['main.mirror:rsync_user'])
- # Changing field 'Mirror.rsync_password'
- db.alter_column('main_mirror', 'rsync_password', orm['main.mirror:rsync_password'])
-
- models = {
- 'auth.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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'unique_together': "(('content_type', 'codename'),)"},
- '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': {
- '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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'unique_together': "(('app_label', 'model'),)", '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'})
- },
- 'main.altforum': {
- 'Meta': {'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0015_auto__del_field_package_maintainer.py b/main/migrations/0015_auto__del_field_package_maintainer.py
deleted file mode 100644
index 48aa9244..00000000
--- a/main/migrations/0015_auto__del_field_package_maintainer.py
+++ /dev/null
@@ -1,211 +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):
-
- depends_on = (
- ("packages", "0002_populate_package_relation"),
- )
-
- def forwards(self, orm):
- # Deleting field 'package.maintainer'
- db.delete_column('packages', 'maintainer_id')
-
- def backwards(self, orm):
- # Adding field 'package.maintainer'
- db.add_column('packages', 'maintainer', self.gf('django.db.models.fields.related.ForeignKey')(related_name='maintained_packages', null=True, to=orm['auth.User'], blank=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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.altforum': {
- 'Meta': {'object_name': 'AltForum', 'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'object_name': 'Press', 'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0016_always_fill_pkgbase.py b/main/migrations/0016_always_fill_pkgbase.py
deleted file mode 100644
index 8f556593..00000000
--- a/main/migrations/0016_always_fill_pkgbase.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Package.objects.filter(pkgbase=None).update(pkgbase=models.F('pkgname'))
-
- def backwards(self, orm):
- if not db.dry_run:
- orm.Package.objects.filter(pkgbase=models.F('pkgname')).update(pkgbase=None)
-
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.altforum': {
- 'Meta': {'object_name': 'AltForum', 'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'object_name': 'Press', 'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0017_auto__chg_field_package_pkgbase.py b/main/migrations/0017_auto__chg_field_package_pkgbase.py
deleted file mode 100644
index 1dccce40..00000000
--- a/main/migrations/0017_auto__chg_field_package_pkgbase.py
+++ /dev/null
@@ -1,211 +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.pkgbase'
- db.alter_column('packages', 'pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255))
- # Adding index on 'Package', fields ['pkgbase']
- db.create_index('packages', ['pkgbase'])
-
- def backwards(self, orm):
- # Removing index on 'Package', fields ['pkgbase']
- db.delete_index('packages', ['pkgbase'])
- # Changing field 'Package.pkgbase'
- db.alter_column('packages', 'pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True))
-
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.altforum': {
- 'Meta': {'object_name': 'AltForum', 'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'object_name': 'Press', 'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0018_auto__del_press.py b/main/migrations/0018_auto__del_press.py
deleted file mode 100644
index 6cb7a7b0..00000000
--- a/main/migrations/0018_auto__del_press.py
+++ /dev/null
@@ -1,210 +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):
-
- # Deleting model 'Press'
- db.delete_table('press')
-
-
- def backwards(self, orm):
-
- # Adding model 'Press'
- db.create_table('press', (
- ('url', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('main', ['Press'])
-
-
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.altforum': {
- 'Meta': {'object_name': 'AltForum', 'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0019_auto__del_altforum.py b/main/migrations/0019_auto__del_altforum.py
deleted file mode 100644
index 52a090a9..00000000
--- a/main/migrations/0019_auto__del_altforum.py
+++ /dev/null
@@ -1,204 +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):
-
- # Deleting model 'AltForum'
- db.delete_table('alt_forums')
-
-
- def backwards(self, orm):
-
- # Adding model 'AltForum'
- db.create_table('alt_forums', (
- ('url', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('language', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('main', ['AltForum'])
-
-
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0020_auto__del_externalproject.py b/main/migrations/0020_auto__del_externalproject.py
deleted file mode 100644
index 90fa0b16..00000000
--- a/main/migrations/0020_auto__del_externalproject.py
+++ /dev/null
@@ -1,197 +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):
-
- # Deleting model 'ExternalProject'
- db.delete_table('main_externalproject')
-
-
- def backwards(self, orm):
-
- # Adding model 'ExternalProject'
- db.create_table('main_externalproject', (
- ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('description', self.gf('django.db.models.fields.CharField')(max_length=128)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
- ))
- db.send_create_signal('main', ['ExternalProject'])
-
-
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0021_mark_package_fields_nullable.py b/main/migrations/0021_mark_package_fields_nullable.py
deleted file mode 100644
index 4258b54c..00000000
--- a/main/migrations/0021_mark_package_fields_nullable.py
+++ /dev/null
@@ -1,203 +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.license'
- db.alter_column('packages', 'license', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
-
- # Changing field 'Package.pkgdesc'
- db.alter_column('packages', 'pkgdesc', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
-
- # Changing field 'Package.url'
- db.alter_column('packages', 'url', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
-
-
- def backwards(self, orm):
-
- # Changing field 'Package.license'
- db.alter_column('packages', 'license', self.gf('django.db.models.fields.CharField')(max_length=255))
-
- # Changing field 'Package.pkgdesc'
- db.alter_column('packages', 'pkgdesc', self.gf('django.db.models.fields.CharField')(max_length=255))
-
- # Changing field 'Package.url'
- db.alter_column('packages', 'url', self.gf('django.db.models.fields.CharField')(max_length=255))
-
-
- 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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0022_auto__add_field_package_filename.py b/main/migrations/0022_auto__add_field_package_filename.py
deleted file mode 100644
index 16440170..00000000
--- a/main/migrations/0022_auto__add_field_package_filename.py
+++ /dev/null
@@ -1,192 +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 field 'Package.filename'
- db.add_column('packages', 'filename', self.gf('django.db.models.fields.CharField')(default='package.pkg.tar.gz', max_length=255), keep_default=False)
-
-
- def backwards(self, orm):
-
- # Deleting field 'Package.filename'
- db.delete_column('packages', 'filename')
-
-
- 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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0023_auto__add_field_package_flag_date.py b/main/migrations/0023_auto__add_field_package_flag_date.py
deleted file mode 100644
index dcc10606..00000000
--- a/main/migrations/0023_auto__add_field_package_flag_date.py
+++ /dev/null
@@ -1,193 +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 field 'Package.flag_date'
- db.add_column('packages', 'flag_date', self.gf('django.db.models.fields.DateTimeField')(null=True), keep_default=False)
-
-
- def backwards(self, orm):
-
- # Deleting field 'Package.flag_date'
- db.delete_column('packages', 'flag_date')
-
-
- 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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0024_set_initial_flag_date.py b/main/migrations/0024_set_initial_flag_date.py
deleted file mode 100644
index bd008792..00000000
--- a/main/migrations/0024_set_initial_flag_date.py
+++ /dev/null
@@ -1,190 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from django.utils.timezone import now
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Package.objects.filter(needupdate=False).update(flag_date=None)
- orm.Package.objects.filter(needupdate=True).update(flag_date=now())
-
- def backwards(self, orm):
- orm.Package.objects.filter(flag_date__isnull=True).update(needupdate=False)
- orm.Package.objects.filter(flag_date__isnull=False).update(needupdate=True)
-
-
- 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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0025_auto__del_field_package_needupdate.py b/main/migrations/0025_auto__del_field_package_needupdate.py
deleted file mode 100644
index 3cf0cf3c..00000000
--- a/main/migrations/0025_auto__del_field_package_needupdate.py
+++ /dev/null
@@ -1,192 +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):
-
- # Deleting field 'Package.needupdate'
- db.delete_column('packages', 'needupdate')
-
-
- def backwards(self, orm):
-
- # Adding field 'Package.needupdate'
- db.add_column('packages', 'needupdate', self.gf('django.db.models.fields.BooleanField')(default=False, blank=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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0026_auto__add_field_package_packager_str__add_field_package_packager.py b/main/migrations/0026_auto__add_field_package_packager_str__add_field_package_packager.py
deleted file mode 100644
index 21b66842..00000000
--- a/main/migrations/0026_auto__add_field_package_packager_str__add_field_package_packager.py
+++ /dev/null
@@ -1,200 +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 field 'Package.packager_str'
- db.add_column('packages', 'packager_str', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
-
- # Adding field 'Package.packager'
- db.add_column('packages', 'packager', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True), keep_default=False)
-
-
- def backwards(self, orm):
-
- # Deleting field 'Package.packager_str'
- db.delete_column('packages', 'packager_str')
-
- # Deleting field 'Package.packager'
- db.delete_column('packages', 'packager_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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0027_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py b/main/migrations/0027_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py
deleted file mode 100644
index 9368e148..00000000
--- a/main/migrations/0027_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py
+++ /dev/null
@@ -1,198 +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.compressed_size'
- db.alter_column('packages', 'compressed_size', self.gf('django.db.models.fields.BigIntegerField')(null=True))
-
- # Changing field 'Package.installed_size'
- db.alter_column('packages', 'installed_size', self.gf('django.db.models.fields.BigIntegerField')(null=True))
-
-
- def backwards(self, orm):
- # Changing field 'Package.compressed_size'
- db.alter_column('packages', 'compressed_size', self.gf('django.db.models.fields.PositiveIntegerField')(null=True))
-
- # Changing field 'Package.installed_size'
- db.alter_column('packages', 'installed_size', self.gf('django.db.models.fields.PositiveIntegerField')(null=True))
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0028_auto__add_field_repo_bugs_project__add_field_repo_svn_root.py b/main/migrations/0028_auto__add_field_repo_bugs_project__add_field_repo_svn_root.py
deleted file mode 100644
index 92e8499d..00000000
--- a/main/migrations/0028_auto__add_field_repo_bugs_project__add_field_repo_svn_root.py
+++ /dev/null
@@ -1,200 +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 field 'Repo.bugs_project'
- db.add_column('repos', 'bugs_project', self.gf('django.db.models.fields.SmallIntegerField')(default=1), keep_default=False)
-
- # Adding field 'Repo.svn_root'
- db.add_column('repos', 'svn_root', self.gf('django.db.models.fields.CharField')(default='packages', max_length=64), keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Repo.bugs_project'
- db.delete_column('repos', 'bugs_project')
-
- # Deleting field 'Repo.svn_root'
- db.delete_column('repos', 'svn_root')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0029_fill_in_repo_data.py b/main/migrations/0029_fill_in_repo_data.py
deleted file mode 100644
index 7da6b1c4..00000000
--- a/main/migrations/0029_fill_in_repo_data.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Repo.objects.filter(name__istartswith='community').update(bugs_project=5, svn_root='community')
- orm.Repo.objects.filter(name__iexact='multilib').update(bugs_project=5, svn_root='community')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0030_move_mirror_models.py b/main/migrations/0030_move_mirror_models.py
deleted file mode 100644
index 1fe0c7e9..00000000
--- a/main/migrations/0030_move_mirror_models.py
+++ /dev/null
@@ -1,157 +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):
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0031_move_news_out.py b/main/migrations/0031_move_news_out.py
deleted file mode 100644
index 28f4b750..00000000
--- a/main/migrations/0031_move_news_out.py
+++ /dev/null
@@ -1,149 +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):
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0032_auto__add_field_arch_agnostic.py b/main/migrations/0032_auto__add_field_arch_agnostic.py
deleted file mode 100644
index 9ccf059d..00000000
--- a/main/migrations/0032_auto__add_field_arch_agnostic.py
+++ /dev/null
@@ -1,152 +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 field 'Arch.agnostic'
- db.add_column('arches', 'agnostic', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=True)
-
- def backwards(self, orm):
- # Deleting field 'Arch.agnostic'
- db.delete_column('arches', 'agnostic')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0033_mark_any_agnostic.py b/main/migrations/0033_mark_any_agnostic.py
deleted file mode 100644
index 4f429a2b..00000000
--- a/main/migrations/0033_mark_any_agnostic.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.Arch.objects.filter(name='any').update(agnostic=True)
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0034_update_content_type.py b/main/migrations/0034_update_content_type.py
deleted file mode 100644
index 59c6f6ad..00000000
--- a/main/migrations/0034_update_content_type.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
- '''This is a defunct migration now, things have been moved to their proper
- places, but removing it would cause all existing setups migrated past this
- to complain.'''
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0035_auto__add_field_donor_visible.py b/main/migrations/0035_auto__add_field_donor_visible.py
deleted file mode 100644
index 1f1c82e5..00000000
--- a/main/migrations/0035_auto__add_field_donor_visible.py
+++ /dev/null
@@ -1,151 +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):
- db.add_column('donors', 'visible', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('donors', 'visible')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0036_auto__chg_field_userprofile_user.py b/main/migrations/0036_auto__chg_field_userprofile_user.py
deleted file mode 100644
index 0c4e9a48..00000000
--- a/main/migrations/0036_auto__chg_field_userprofile_user.py
+++ /dev/null
@@ -1,151 +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):
- db.alter_column('user_profiles', 'user_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, to=orm['auth.User']))
-
- def backwards(self, orm):
- db.alter_column('user_profiles', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, to=orm['auth.User']))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0037_auto__add_field_userprofile_time_zone.py b/main/migrations/0037_auto__add_field_userprofile_time_zone.py
deleted file mode 100644
index 3a65eacc..00000000
--- a/main/migrations/0037_auto__add_field_userprofile_time_zone.py
+++ /dev/null
@@ -1,154 +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 field 'UserProfile.time_zone'
- db.add_column('user_profiles', 'time_zone', self.gf('django.db.models.fields.CharField')(default='UTC', max_length=100), keep_default=True)
-
- def backwards(self, orm):
- # Deleting field 'UserProfile.time_zone'
- db.delete_column('user_profiles', 'time_zone')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0038_add_depends_optional_description.py b/main/migrations/0038_add_depends_optional_description.py
deleted file mode 100644
index ab3b3381..00000000
--- a/main/migrations/0038_add_depends_optional_description.py
+++ /dev/null
@@ -1,156 +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):
- db.add_column('package_depends', 'optional', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
- db.add_column('package_depends', 'description', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('package_depends', 'optional')
- db.delete_column('package_depends', 'description')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0039_auto__del_field_package_license.py b/main/migrations/0039_auto__del_field_package_license.py
deleted file mode 100644
index 2860bc47..00000000
--- a/main/migrations/0039_auto__del_field_package_license.py
+++ /dev/null
@@ -1,157 +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):
-
- depends_on = (
- ('packages', '0005_move_license_data'),
- )
-
- def forwards(self, orm):
- db.delete_column('packages', 'license')
-
- def backwards(self, orm):
- db.add_column('packages', 'license', self.gf('django.db.models.fields.CharField')(max_length=255, null=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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0040_split_package_files.py b/main/migrations/0040_split_package_files.py
deleted file mode 100644
index 42e96d01..00000000
--- a/main/migrations/0040_split_package_files.py
+++ /dev/null
@@ -1,166 +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 field 'PackageFile.is_directory'
- db.add_column('package_files', 'is_directory', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=True)
- # Adding field 'PackageFile.directory'
- db.add_column('package_files', 'directory', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
- # Adding field 'PackageFile.filename'
- db.add_column('package_files', 'filename', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- # Deleting field 'PackageFile.is_directory'
- db.delete_column('package_files', 'is_directory')
- # Deleting field 'PackageFile.directory'
- db.delete_column('package_files', 'directory')
- # Deleting field 'PackageFile.filename'
- db.delete_column('package_files', 'filename')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0041_move_package_files_data.py b/main/migrations/0041_move_package_files_data.py
deleted file mode 100644
index 31eecaa5..00000000
--- a/main/migrations/0041_move_package_files_data.py
+++ /dev/null
@@ -1,186 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from django.db.models import F
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- # Handle the paths that are directories first
- orm.PackageFile.objects.filter(path__endswith='/').update(
- is_directory=True, directory=F('path'))
-
- if db.backend_name == 'mysql':
- db.execute("UPDATE package_files "
- "SET filename = SUBSTRING_INDEX(path, '/', -1), "
- "directory = SUBSTRING(path, 1, LENGTH(path) - INSTR(REVERSE(path), '/') + 1) "
- "WHERE is_directory = 0")
- elif db.backend_name == 'postgresql':
- db.execute("UPDATE package_files "
- "SET filename = substring(filename, '.*/(.*?)$'), "
- "directory = substring(filename, '.*/') "
- "WHERE is_directory = 0")
- else:
- # Sucks that we can't always do this in one query at the DB level...
- files = orm.PackageFile.objects.filter(is_directory=False)
- for f in files:
- parts = f.path.rsplit('/', 1)
- db.execute("UPDATE package_files "
- "SET filename = %s, "
- "directory = %s "
- "WHERE id = %s",
- (parts[1], parts[0] + '/', f.id))
- # We could do this, but then Django takes forever to generate
- # basically the same query for every row.
- #f.filename = parts[1]
- #f.directory = parts[0] + '/'
- #f.save()
-
- def backwards(self, orm):
- orm.PackageFile.objects.all().update(is_directory=False,
- directory='', filename=None)
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0042_auto__del_field_packagefile_path.py b/main/migrations/0042_auto__del_field_packagefile_path.py
deleted file mode 100644
index 837a6a7f..00000000
--- a/main/migrations/0042_auto__del_field_packagefile_path.py
+++ /dev/null
@@ -1,158 +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):
- # Deleting field 'PackageFile.path'
- db.delete_column('package_files', 'path')
-
- def backwards(self, orm):
- # Adding field 'PackageFile.path'
- db.add_column('package_files', 'path', self.gf('django.db.models.fields.CharField')(default='', max_length=255), 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0043_auto__add_field_package_epoch.py b/main/migrations/0043_auto__add_field_package_epoch.py
deleted file mode 100644
index 1c6ae9db..00000000
--- a/main/migrations/0043_auto__add_field_package_epoch.py
+++ /dev/null
@@ -1,162 +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 field 'Package.epoch'
- db.add_column('packages', 'epoch', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=True)
-
-
- def backwards(self, orm):
-
- # Deleting field 'Package.epoch'
- db.delete_column('packages', 'epoch')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0044_auto__chg_field_todolist_date_added.py b/main/migrations/0044_auto__chg_field_todolist_date_added.py
deleted file mode 100644
index d4099891..00000000
--- a/main/migrations/0044_auto__chg_field_todolist_date_added.py
+++ /dev/null
@@ -1,156 +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):
- db.alter_column('todolists', 'date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True))
-
- def backwards(self, orm):
- db.alter_column('todolists', 'date_added', self.gf('django.db.models.fields.DateField')(auto_now_add=True))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0045_add_todolist_date_added_index.py b/main/migrations/0045_add_todolist_date_added_index.py
deleted file mode 100644
index 985f1c2d..00000000
--- a/main/migrations/0045_add_todolist_date_added_index.py
+++ /dev/null
@@ -1,156 +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):
- db.create_index('todolists', ['date_added'])
-
- def backwards(self, orm):
- db.delete_index('todolists', ['date_added'])
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0046_auto__add_field_repo_staging.py b/main/migrations/0046_auto__add_field_repo_staging.py
deleted file mode 100644
index 0daaf69b..00000000
--- a/main/migrations/0046_auto__add_field_repo_staging.py
+++ /dev/null
@@ -1,157 +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):
- db.add_column('repos', 'staging', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('repos', 'staging')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0047_utc_datetimes.py b/main/migrations/0047_utc_datetimes.py
deleted file mode 100644
index 83153b78..00000000
--- a/main/migrations/0047_utc_datetimes.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from django.utils.tzinfo import LocalTimezone
-
-def new_date(old_date, reverse=False):
- if old_date is None:
- return None
- tz = LocalTimezone(old_date)
- offset = tz.utcoffset(old_date)
- if reverse:
- offset = -offset
- return old_date - offset
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- all_pkgs = orm.Package.objects.all()
- for package in all_pkgs:
- # prevents full object updates
- orm.Package.objects.filter(pk=package.pk).update(
- last_update=new_date(package.last_update),
- files_last_update=new_date(package.files_last_update),
- flag_date=new_date(package.flag_date))
- # We could do todolists, but they just don't matter that much.
-
- def backwards(self, orm):
- all_pkgs = orm.Package.objects.all()
- for package in all_pkgs:
- # prevents full object updates
- orm.Package.objects.filter(pk=package.pk).update(
- last_update=new_date(package.last_update, True),
- files_last_update=new_date(package.files_last_update, True),
- flag_date=new_date(package.flag_date, True))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0048_auto__add_field_repo_bugs_category.py b/main/migrations/0048_auto__add_field_repo_bugs_category.py
deleted file mode 100644
index 3e61f7ed..00000000
--- a/main/migrations/0048_auto__add_field_repo_bugs_category.py
+++ /dev/null
@@ -1,158 +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):
- db.add_column('repos', 'bugs_category', self.gf('django.db.models.fields.SmallIntegerField')(default=2), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('repos', 'bugs_category')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0049_auto__add_field_userprofile_pgp_key.py b/main/migrations/0049_auto__add_field_userprofile_pgp_key.py
deleted file mode 100644
index 10fb9390..00000000
--- a/main/migrations/0049_auto__add_field_userprofile_pgp_key.py
+++ /dev/null
@@ -1,160 +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):
- db.add_column('user_profiles', 'pgp_key', self.gf('django.db.models.fields.CharField')(max_length=40, null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('user_profiles', 'pgp_key')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0050_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py b/main/migrations/0050_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py
deleted file mode 100644
index 8368ae2e..00000000
--- a/main/migrations/0050_auto__chg_field_package_compressed_size__chg_field_package_installed_s.py
+++ /dev/null
@@ -1,166 +0,0 @@
-# encoding: utf-8
-import datetime
-from pytz import utc
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages', 'compressed_size', self.gf('main.models.PositiveBigIntegerField')(default=0))
- db.alter_column('packages', 'installed_size', self.gf('main.models.PositiveBigIntegerField')(default=0))
- old_date = datetime.datetime(2000, 1, 1)
- old_date = old_date.replace(tzinfo=utc)
- db.alter_column('packages', 'last_update', self.gf('django.db.models.fields.DateTimeField')(default=old_date))
-
- def backwards(self, orm):
- db.alter_column('packages', 'compressed_size', self.gf('django.db.models.fields.BigIntegerField')(null=True))
- db.alter_column('packages', 'installed_size', self.gf('django.db.models.fields.BigIntegerField')(null=True))
- db.alter_column('packages', 'last_update', self.gf('django.db.models.fields.DateTimeField')(null=True))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0051_auto__chg_field_userprofile_pgp_key.py b/main/migrations/0051_auto__chg_field_userprofile_pgp_key.py
deleted file mode 100644
index 4905eb80..00000000
--- a/main/migrations/0051_auto__chg_field_userprofile_pgp_key.py
+++ /dev/null
@@ -1,160 +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):
- db.alter_column('user_profiles', 'pgp_key', self.gf('devel.fields.PGPKeyField')(max_length=40, null=True))
-
-
- def backwards(self, orm):
- db.alter_column('user_profiles', 'pgp_key', self.gf('django.db.models.fields.CharField')(max_length=40, null=True))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0052_auto__del_signoff.py b/main/migrations/0052_auto__del_signoff.py
deleted file mode 100644
index a9ee633e..00000000
--- a/main/migrations/0052_auto__del_signoff.py
+++ /dev/null
@@ -1,166 +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):
-
- depends_on = (
- ('packages', '0008_add_signoff_model'),
- )
-
- def forwards(self, orm):
- # Deleting model 'Signoff'
- db.delete_table('main_signoff')
-
-
- def backwards(self, orm):
- # Adding model 'Signoff'
- db.create_table('main_signoff', (
- ('pkgrel', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('packager', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Package'])),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkgver', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('main', ['Signoff'])
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0053_auto__add_field_package_pgp_signature.py b/main/migrations/0053_auto__add_field_package_pgp_signature.py
deleted file mode 100644
index a3df5266..00000000
--- a/main/migrations/0053_auto__add_field_package_pgp_signature.py
+++ /dev/null
@@ -1,152 +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):
- db.add_column('packages', 'pgp_signature', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('packages', 'pgp_signature')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0054_auto__add_field_donor_created.py b/main/migrations/0054_auto__add_field_donor_created.py
deleted file mode 100644
index 81946c36..00000000
--- a/main/migrations/0054_auto__add_field_donor_created.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# encoding: utf-8
-import datetime
-from pytz import utc
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'Donor.created'
- old_date = datetime.datetime(2000, 1, 1)
- old_date = old_date.replace(tzinfo=utc)
- db.add_column('donors', 'created', self.gf('django.db.models.fields.DateTimeField')(default=old_date), keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Donor.created'
- db.delete_column('donors', 'created')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0055_unique_package_in_repo.py b/main/migrations/0055_unique_package_in_repo.py
deleted file mode 100644
index 9ae33719..00000000
--- a/main/migrations/0055_unique_package_in_repo.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from django.db.utils import DatabaseError
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- try:
- db.delete_index('packages', ['pkgname'])
- except DatabaseError as e:
- if not 'no such index' in str(e):
- raise e
- db.create_unique('packages', ['pkgname', 'repo_id', 'arch_id'])
-
- def backwards(self, orm):
- db.delete_unique('packages', ['pkgname', 'repo_id', 'arch_id'])
- db.create_index('packages', ['pkgname'])
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0056_auto__chg_field_package_pkgdesc.py b/main/migrations/0056_auto__chg_field_package_pkgdesc.py
deleted file mode 100644
index 90856fab..00000000
--- a/main/migrations/0056_auto__chg_field_package_pkgdesc.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages', 'pkgdesc', self.gf('django.db.models.fields.TextField')(null=True))
-
- def backwards(self, orm):
- db.alter_column('packages', 'pkgdesc', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0057_auto__add_field_userprofile_latin_name.py b/main/migrations/0057_auto__add_field_userprofile_latin_name.py
deleted file mode 100644
index b9328af0..00000000
--- a/main/migrations/0057_auto__add_field_userprofile_latin_name.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('user_profiles', 'latin_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('user_profiles', 'latin_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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0058_auto__add_on_delete_attributes.py b/main/migrations/0058_auto__add_on_delete_attributes.py
deleted file mode 100644
index e66e4da2..00000000
--- a/main/migrations/0058_auto__add_on_delete_attributes.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('todolists', 'creator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], on_delete=models.PROTECT))
- db.alter_column('packages', 'repo_id', self.gf('django.db.models.fields.related.ForeignKey')(on_delete=models.PROTECT, to=orm['main.Repo']))
- db.alter_column('packages', 'packager_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, on_delete=models.SET_NULL))
- db.alter_column('packages', 'arch_id', self.gf('django.db.models.fields.related.ForeignKey')(on_delete=models.PROTECT, to=orm['main.Arch']))
-
- def backwards(self, orm):
- db.alter_column('todolists', 'creator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User']))
- db.alter_column('packages', 'repo_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Repo']))
- db.alter_column('packages', 'packager_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True))
- db.alter_column('packages', 'arch_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Arch']))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'latin_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'pgp_key': ('devel.fields.PGPKeyField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
- 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0059_auto__del_userprofile.py b/main/migrations/0059_auto__del_userprofile.py
deleted file mode 100644
index 2db87eeb..00000000
--- a/main/migrations/0059_auto__del_userprofile.py
+++ /dev/null
@@ -1,137 +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):
- pass
-
- def backwards(self, orm):
- if not db.dry_run:
- db.send_create_signal('main', ['UserProfile'])
- orm['contenttypes.ContentType'].objects.filter(
- app_label='devel', model='userprofile').update(
- app_label='main')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0060_add_packages_last_update_index.py b/main/migrations/0060_add_packages_last_update_index.py
deleted file mode 100644
index 8e3bb892..00000000
--- a/main/migrations/0060_add_packages_last_update_index.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
- def forwards(self, orm):
- db.create_index('packages', ['last_update'])
-
- def backwards(self, orm):
- db.delete_index('packages', ['last_update'])
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0061_auto__del_packagedepend.py b/main/migrations/0061_auto__del_packagedepend.py
deleted file mode 100644
index 6cb1f68f..00000000
--- a/main/migrations/0061_auto__del_packagedepend.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- depends_on = (
- ('packages', '0016_copy_depends_data.py'),
- )
-
- def forwards(self, orm):
- db.delete_table('package_depends')
-
- def backwards(self, orm):
- db.create_table('package_depends', (
- ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ('depvcmp', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='depends', to=orm['main.Package'])),
- ('depname', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('optional', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ))
- db.send_create_signal('main', ['PackageDepend'])
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0062_remove_old_todolist_models.py b/main/migrations/0062_remove_old_todolist_models.py
deleted file mode 100644
index 46b2a4fc..00000000
--- a/main/migrations/0062_remove_old_todolist_models.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- depends_on = (
- ('todolists', '0003_migrate_todolist_data'),
- )
-
- def forwards(self, orm):
- db.delete_unique('todolist_pkgs', ['list_id', 'pkg_id'])
- db.delete_table('todolists')
- db.delete_table('todolist_pkgs')
-
-
- def backwards(self, orm):
- db.create_table('todolists', (
- ('description', self.gf('django.db.models.fields.TextField')()),
- ('creator', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], on_delete=models.PROTECT)),
- ('date_added', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('main', ['Todolist'])
-
- db.create_table('todolist_pkgs', (
- ('list', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Todolist'])),
- ('complete', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Package'])),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ))
- db.send_create_signal('main', ['TodolistPkg'])
-
- db.create_unique('todolist_pkgs', ['list_id', 'pkg_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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0063_auto__add_field_package_created.py b/main/migrations/0063_auto__add_field_package_created.py
deleted file mode 100644
index e5a990c3..00000000
--- a/main/migrations/0063_auto__add_field_package_created.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from pytz import utc
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- old_date = datetime.datetime(2000, 1, 1)
- old_date = old_date.replace(tzinfo=utc)
- db.add_column('packages', 'created',
- self.gf('django.db.models.fields.DateTimeField')(default=old_date), keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column('packages', 'created')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0064_auto__add_field_arch_required_signoffs.py b/main/migrations/0064_auto__add_field_arch_required_signoffs.py
deleted file mode 100644
index 1846378f..00000000
--- a/main/migrations/0064_auto__add_field_arch_required_signoffs.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('arches', 'required_signoffs',
- self.gf('django.db.models.fields.PositiveIntegerField')(default=2),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('arches', 'required_signoffs')
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'required_signoffs': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'})
- },
- u'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- u'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['main.Package']"})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0065_auto__add_field_package_signature_bytes.py b/main/migrations/0065_auto__add_field_package_signature_bytes.py
deleted file mode 100644
index a954166e..00000000
--- a/main/migrations/0065_auto__add_field_package_signature_bytes.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('packages', 'signature_bytes',
- self.gf('django.db.models.fields.BinaryField')(null=True),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('packages', 'signature_bytes')
-
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'required_signoffs': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'})
- },
- u'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Repo']"}),
- 'signature_bytes': ('django.db.models.fields.BinaryField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- u'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['main.Package']"})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0066_move_signature_data.py b/main/migrations/0066_move_signature_data.py
deleted file mode 100644
index 75fcfa92..00000000
--- a/main/migrations/0066_move_signature_data.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from base64 import b64decode, b64encode
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- pkgs = orm.Package.objects.only(
- 'id', 'pgp_signature', 'signature_bytes').all()
- for pkg in pkgs:
- if not pkg.pgp_signature:
- continue
- pkg.signature_bytes = b64decode(pkg.pgp_signature.encode('utf-8'))
- pkg.save()
-
- def backwards(self, orm):
- pkgs = orm.Package.objects.only(
- 'id', 'pgp_signature', 'signature_bytes').all()
- for pkg in pkgs:
- if not pkg.signature_bytes:
- continue
- pkg.pgp_signature = b64encode(pkg.signature_bytes).decode('utf-8')
- pkg.save()
-
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'required_signoffs': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'})
- },
- u'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Repo']"}),
- 'signature_bytes': ('django.db.models.fields.BinaryField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- u'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['main.Package']"})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
- symmetrical = True
diff --git a/main/migrations/0067_auto__del_field_package_pgp_signature.py b/main/migrations/0067_auto__del_field_package_pgp_signature.py
deleted file mode 100644
index 8c1d9b7a..00000000
--- a/main/migrations/0067_auto__del_field_package_pgp_signature.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column('packages', 'pgp_signature')
-
- def backwards(self, orm):
- db.add_column('packages', 'pgp_signature',
- self.gf('django.db.models.fields.TextField')(null=True, blank=True),
- keep_default=True)
-
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'required_signoffs': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'})
- },
- u'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Repo']"}),
- 'signature_bytes': ('django.db.models.fields.BinaryField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- u'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['main.Package']"})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/main/migrations/0068_auto__chg_field_packagefile_directory__chg_field_packagefile_filename.py b/main/migrations/0068_auto__chg_field_packagefile_directory__chg_field_packagefile_filename.py
deleted file mode 100644
index 5e359806..00000000
--- a/main/migrations/0068_auto__chg_field_packagefile_directory__chg_field_packagefile_filename.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('package_files', 'directory', self.gf('django.db.models.fields.CharField')(max_length=1024))
- db.alter_column('package_files', 'filename', self.gf('django.db.models.fields.CharField')(max_length=1024, null=True))
-
- def backwards(self, orm):
- db.alter_column('package_files', 'directory', self.gf('django.db.models.fields.CharField')(max_length=255))
- db.alter_column('package_files', 'filename', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
-
- models = {
- u'auth.group': {
- 'Meta': {'object_name': 'Group'},
- u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- u'auth.permission': {
- 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
- u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- u'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'}),
- u'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'})
- },
- u'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'required_signoffs': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'})
- },
- u'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- u'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': u"orm['main.Repo']"}),
- 'signature_bytes': ('django.db.models.fields.BinaryField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- u'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['main.Package']"})
- },
- u'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- }
- }
-
- complete_apps = ['main']
diff --git a/mirrors/admin.py b/mirrors/admin.py
index 17365486..d5c89c2a 100644
--- a/mirrors/admin.py
+++ b/mirrors/admin.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from urlparse import urlparse, urlunsplit
from django import forms
@@ -67,12 +68,19 @@ class MirrorAdmin(admin.ModelAdmin):
'isos', 'admin_email', 'alternate_email')
list_filter = ('tier', 'active', 'public')
search_fields = ('name', 'admin_email', 'alternate_email')
- readonly_fields = ('created',)
+ readonly_fields = ('created', 'last_modified')
inlines = [
MirrorUrlInlineAdmin,
MirrorRsyncInlineAdmin,
]
+ def save_model(self, request, obj, form, change):
+ if '~~~' in obj.notes:
+ date = datetime.utcnow().strftime('%Y-%m-%d')
+ usertext = request.user.get_full_name()
+ obj.notes = obj.notes.replace('~~~', '%s (%s)' % (date, usertext))
+ obj.save()
+
class MirrorProtocolAdmin(admin.ModelAdmin):
list_display = ('protocol', 'is_download', 'default')
diff --git a/mirrors/fields.py b/mirrors/fields.py
index 206c9d7d..e8963edf 100644
--- a/mirrors/fields.py
+++ b/mirrors/fields.py
@@ -4,7 +4,6 @@ from django import forms
from django.core import validators
from django.core.exceptions import ValidationError
from django.db import models
-from south.modelsinspector import add_introspection_rules
class IPNetworkFormField(forms.Field):
@@ -44,6 +43,3 @@ class IPNetworkField(models.Field):
defaults = {'form_class': IPNetworkFormField}
defaults.update(kwargs)
return super(IPNetworkField, self).formfield(**defaults)
-
-
-add_introspection_rules([], ["^mirrors\.fields\.IPNetworkField"])
diff --git a/mirrors/management/commands/mirrorcheck.py b/mirrors/management/commands/mirrorcheck.py
index e48aa42e..d2a27bee 100644
--- a/mirrors/management/commands/mirrorcheck.py
+++ b/mirrors/management/commands/mirrorcheck.py
@@ -139,7 +139,7 @@ def check_mirror_url(mirror_url, location, timeout):
if isinstance(e.reason, socket.timeout):
log.error = "Connection timed out."
elif isinstance(e.reason, socket.error):
- log.error = e.reason.args[1]
+ log.error = e.reason.args[-1]
logger.debug("failed: %s, %s", url, log.error)
except HTTPException:
# e.g., BadStatusLine
diff --git a/mirrors/migrations/0001_initial.py b/mirrors/migrations/0001_initial.py
index 4a3173c5..6f36c9eb 100644
--- a/mirrors/migrations/0001_initial.py
+++ b/mirrors/migrations/0001_initial.py
@@ -1,17 +1,123 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
-class Migration(SchemaMigration):
+from django.db import models, migrations
+import django_countries.fields
+import django.db.models.deletion
+import mirrors.fields
- def forwards(self, orm):
- pass
- def backwards(self, orm):
- pass
+class Migration(migrations.Migration):
- models = {}
+ dependencies = [
+ ]
- complete_apps = ['mirrors']
+ operations = [
+ migrations.CreateModel(
+ name='CheckLocation',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('hostname', models.CharField(max_length=255)),
+ ('source_ip', models.GenericIPAddressField(unique=True, verbose_name=b'source IP', unpack_ipv4=True)),
+ ('country', django_countries.fields.CountryField(max_length=2)),
+ ('created', models.DateTimeField(editable=False)),
+ ],
+ options={
+ 'ordering': ('hostname', 'source_ip'),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Mirror',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=255)),
+ ('tier', models.SmallIntegerField(default=2, choices=[(0, b'Tier 0'), (1, b'Tier 1'), (2, b'Tier 2'), (-1, b'Untiered')])),
+ ('admin_email', models.EmailField(max_length=255, blank=True)),
+ ('alternate_email', models.EmailField(max_length=255, blank=True)),
+ ('public', models.BooleanField(default=True)),
+ ('active', models.BooleanField(default=True)),
+ ('isos', models.BooleanField(default=True, verbose_name=b'ISOs')),
+ ('rsync_user', models.CharField(default=b'', max_length=50, blank=True)),
+ ('rsync_password', models.CharField(default=b'', max_length=50, blank=True)),
+ ('bug', models.PositiveIntegerField(null=True, verbose_name=b'Flyspray bug', blank=True)),
+ ('notes', models.TextField(blank=True)),
+ ('created', models.DateTimeField(editable=False)),
+ ('last_modified', models.DateTimeField(editable=False)),
+ ('upstream', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='mirrors.Mirror', null=True)),
+ ],
+ options={
+ 'ordering': ('name',),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MirrorLog',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('check_time', models.DateTimeField(db_index=True)),
+ ('last_sync', models.DateTimeField(null=True)),
+ ('duration', models.FloatField(null=True)),
+ ('is_success', models.BooleanField(default=True)),
+ ('error', models.TextField(default=b'', blank=True)),
+ ('location', models.ForeignKey(related_name=b'logs', to='mirrors.CheckLocation', null=True)),
+ ],
+ options={
+ 'get_latest_by': 'check_time',
+ 'verbose_name': 'mirror check log',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MirrorProtocol',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('protocol', models.CharField(unique=True, max_length=10)),
+ ('is_download', models.BooleanField(default=True, help_text=b'Is protocol useful for end-users, e.g. HTTP')),
+ ('default', models.BooleanField(default=True, help_text=b'Included by default when building mirror list?')),
+ ('created', models.DateTimeField(editable=False)),
+ ],
+ options={
+ 'ordering': ('protocol',),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MirrorRsync',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('ip', mirrors.fields.IPNetworkField(max_length=44, verbose_name=b'IP')),
+ ('created', models.DateTimeField(editable=False)),
+ ('mirror', models.ForeignKey(related_name=b'rsync_ips', to='mirrors.Mirror')),
+ ],
+ options={
+ 'ordering': ('ip',),
+ 'verbose_name': 'mirror rsync IP',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MirrorUrl',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('url', models.CharField(unique=True, max_length=255, verbose_name=b'URL')),
+ ('country', django_countries.fields.CountryField(blank=True, max_length=2, db_index=True)),
+ ('has_ipv4', models.BooleanField(default=True, verbose_name=b'IPv4 capable', editable=False)),
+ ('has_ipv6', models.BooleanField(default=False, verbose_name=b'IPv6 capable', editable=False)),
+ ('created', models.DateTimeField(editable=False)),
+ ('active', models.BooleanField(default=True)),
+ ('mirror', models.ForeignKey(related_name=b'urls', to='mirrors.Mirror')),
+ ('protocol', models.ForeignKey(related_name=b'urls', on_delete=django.db.models.deletion.PROTECT, editable=False, to='mirrors.MirrorProtocol')),
+ ],
+ options={
+ 'verbose_name': 'mirror URL',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AddField(
+ model_name='mirrorlog',
+ name='url',
+ field=models.ForeignKey(related_name=b'logs', to='mirrors.MirrorUrl'),
+ preserve_default=True,
+ ),
+ ]
diff --git a/mirrors/migrations/0002_rename_model_tables.py b/mirrors/migrations/0002_rename_model_tables.py
deleted file mode 100644
index 087edd68..00000000
--- a/mirrors/migrations/0002_rename_model_tables.py
+++ /dev/null
@@ -1,80 +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):
-
- depends_on = (
- ('main', '0030_move_mirror_models'),
- )
-
- mirror_apps = [ 'mirror', 'mirrorprotocol', 'mirrorurl', 'mirrorrsync' ]
-
- def forwards(self, orm):
- db.rename_table('main_mirror', 'mirrors_mirror')
- db.rename_table('main_mirrorurl', 'mirrors_mirrorurl')
- db.rename_table('main_mirrorrsync', 'mirrors_mirrorrsync')
- db.rename_table('main_mirrorprotocol', 'mirrors_mirrorprotocol')
-
- if not db.dry_run:
- ct = orm['contenttypes.ContentType'].objects
- ct.filter(app_label='main', model__in=self.mirror_apps).update(
- app_label='mirrors')
-
- def backwards(self, orm):
- db.rename_table('mirrors_mirror', 'main_mirror')
- db.rename_table('mirrors_mirrorurl', 'main_mirrorurl')
- db.rename_table('mirrors_mirrorrsync', 'main_mirrorrsync')
- db.rename_table('mirrors_mirrorprotocol', 'main_mirrorprotocol')
-
- if not db.dry_run:
- ct = orm['contenttypes.ContentType'].objects
- ct.filter(app_label='mirrors', model__in=self.mirror_apps).update(
- app_label='main')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- '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'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0003_auto__add_mirrorlog.py b/mirrors/migrations/0003_auto__add_mirrorlog.py
deleted file mode 100644
index 5b4c225b..00000000
--- a/mirrors/migrations/0003_auto__add_mirrorlog.py
+++ /dev/null
@@ -1,72 +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 'MirrorLog'
- db.create_table('mirrors_mirrorlog', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('url', self.gf('django.db.models.fields.related.ForeignKey')(related_name='logs', to=orm['mirrors.MirrorUrl'])),
- ('check_time', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
- ('last_sync', self.gf('django.db.models.fields.DateTimeField')(null=True)),
- ('duration', self.gf('django.db.models.fields.FloatField')(null=True)),
- ('is_success', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ('error', self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True)),
- ))
- db.send_create_signal('mirrors', ['MirrorLog'])
-
- def backwards(self, orm):
- # Deleting model 'MirrorLog'
- db.delete_table('mirrors_mirrorlog')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0004_auto__add_field_mirrorprotocol_is_download.py b/mirrors/migrations/0004_auto__add_field_mirrorprotocol_is_download.py
deleted file mode 100644
index 0506e2cd..00000000
--- a/mirrors/migrations/0004_auto__add_field_mirrorprotocol_is_download.py
+++ /dev/null
@@ -1,62 +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):
- db.add_column('mirrors_mirrorprotocol', 'is_download', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('mirrors_mirrorprotocol', 'is_download')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0005_populate_protocol_is_download.py b/mirrors/migrations/0005_populate_protocol_is_download.py
deleted file mode 100644
index 6d488388..00000000
--- a/mirrors/migrations/0005_populate_protocol_is_download.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.MirrorProtocol.objects.filter(protocol__iexact='ftp').update(is_download=True)
- orm.MirrorProtocol.objects.filter(protocol__iexact='http').update(is_download=True)
- orm.MirrorProtocol.objects.filter(protocol__iexact='rsync').update(is_download=False)
-
- def backwards(self, orm):
- pass
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0006_auto__add_field_mirrorurl_has_ipv4__add_field_mirrorurl_has_ipv6.py b/mirrors/migrations/0006_auto__add_field_mirrorurl_has_ipv4__add_field_mirrorurl_has_ipv6.py
deleted file mode 100644
index 5a40207d..00000000
--- a/mirrors/migrations/0006_auto__add_field_mirrorurl_has_ipv4__add_field_mirrorurl_has_ipv6.py
+++ /dev/null
@@ -1,66 +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):
- db.add_column('mirrors_mirrorurl', 'has_ipv4', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=True)
- db.add_column('mirrors_mirrorurl', 'has_ipv6', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('mirrors_mirrorurl', 'has_ipv4')
- db.delete_column('mirrors_mirrorurl', 'has_ipv6')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0007_unique_names_urls.py b/mirrors/migrations/0007_unique_names_urls.py
deleted file mode 100644
index 49c0fbb7..00000000
--- a/mirrors/migrations/0007_unique_names_urls.py
+++ /dev/null
@@ -1,66 +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):
- db.create_unique('mirrors_mirror', ['name'])
- db.create_unique('mirrors_mirrorurl', ['url'])
-
- def backwards(self, orm):
- db.delete_unique('mirrors_mirrorurl', ['url'])
- db.delete_unique('mirrors_mirror', ['name'])
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0008_auto__add_field_mirrorurl_country.py b/mirrors/migrations/0008_auto__add_field_mirrorurl_country.py
deleted file mode 100644
index 660ac080..00000000
--- a/mirrors/migrations/0008_auto__add_field_mirrorurl_country.py
+++ /dev/null
@@ -1,67 +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 field 'MirrorUrl.country'
- db.add_column('mirrors_mirrorurl', 'country', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=255, null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- # Deleting field 'MirrorUrl.country'
- db.delete_column('mirrors_mirrorurl', 'country')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0009_auto__chg_field_mirrorurl_country.py b/mirrors/migrations/0009_auto__chg_field_mirrorurl_country.py
deleted file mode 100644
index bca6b6fb..00000000
--- a/mirrors/migrations/0009_auto__chg_field_mirrorurl_country.py
+++ /dev/null
@@ -1,66 +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):
- pass
-
-
- def backwards(self, orm):
- pass
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0010_auto__add_field_mirrorprotocol_default.py b/mirrors/migrations/0010_auto__add_field_mirrorprotocol_default.py
deleted file mode 100644
index 66e60090..00000000
--- a/mirrors/migrations/0010_auto__add_field_mirrorprotocol_default.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('mirrors_mirrorprotocol', 'default', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('mirrors_mirrorprotocol', 'default')
-
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0011_adjust_protocol_defaults.py b/mirrors/migrations/0011_adjust_protocol_defaults.py
deleted file mode 100644
index a5ffafb4..00000000
--- a/mirrors/migrations/0011_adjust_protocol_defaults.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.MirrorProtocol.objects.all().update(default=False)
- orm.MirrorProtocol.objects.filter(protocol='http').update(default=True)
-
- def backwards(self, orm):
- pass
-
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0012_auto__add_on_delete_attribute.py b/mirrors/migrations/0012_auto__add_on_delete_attribute.py
deleted file mode 100644
index f81fe0ae..00000000
--- a/mirrors/migrations/0012_auto__add_on_delete_attribute.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('mirrors_mirror', 'upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mirrors.Mirror'], null=True, on_delete=models.SET_NULL))
- db.alter_column('mirrors_mirrorurl', 'protocol_id', self.gf('django.db.models.fields.related.ForeignKey')(on_delete=models.PROTECT, to=orm['mirrors.MirrorProtocol']))
-
- def backwards(self, orm):
- db.alter_column('mirrors_mirror', 'upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mirrors.Mirror'], null=True))
- db.alter_column('mirrors_mirrorurl', 'protocol_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mirrors.MirrorProtocol']))
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0013_rename_country_fields.py b/mirrors/migrations/0013_rename_country_fields.py
deleted file mode 100644
index 8a9bc34a..00000000
--- a/mirrors/migrations/0013_rename_country_fields.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.rename_column('mirrors_mirror', 'country', 'country_old')
- db.rename_column('mirrors_mirrorurl', 'country', 'country_old')
-
- def backwards(self, orm):
- db.rename_column('mirrors_mirror', 'country_old', 'country')
- db.rename_column('mirrors_mirrorurl', 'country_old', 'country')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country_old', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country_old': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country_old': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0014_add_country_code_fields.py b/mirrors/migrations/0014_add_country_code_fields.py
deleted file mode 100644
index 010194d7..00000000
--- a/mirrors/migrations/0014_add_country_code_fields.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('mirrors_mirror', 'country',
- self.gf('django_countries.fields.CountryField')(default='', max_length=2, blank=True),
- keep_default=False)
- db.add_column('mirrors_mirrorurl', 'country',
- self.gf('django_countries.fields.CountryField')(default='', max_length=2, blank=True),
- keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('mirrors_mirror', 'country')
- db.delete_column('mirrors_mirrorurl', 'country')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'country_old': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'country_old': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0015_assign_country_codes.py b/mirrors/migrations/0015_assign_country_codes.py
deleted file mode 100644
index 5d83e02c..00000000
--- a/mirrors/migrations/0015_assign_country_codes.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-from django_countries.data import COUNTRIES
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- reverse_map = dict((v.upper(), k) for k, v in COUNTRIES.items())
- # add a few special cases to the list that we know might exist
- reverse_map['GREAT BRITAIN'] = 'GB'
- reverse_map['KOREA'] = 'KR'
- reverse_map['MACEDONIA'] = 'MK'
- reverse_map['RUSSIA'] = 'RU'
- reverse_map['SOUTH KOREA'] = 'KR'
- reverse_map['TAIWAN'] = 'TW'
- reverse_map['VIETNAM'] = 'VN'
-
- for country_name in orm.Mirror.objects.values_list(
- 'country_old', flat=True).order_by().distinct():
- code = reverse_map.get(country_name.upper(), '')
- orm.Mirror.objects.filter(
- country_old=country_name).update(country=code)
-
- for country_name in orm.MirrorUrl.objects.filter(
- country_old__isnull=False).values_list(
- 'country_old', flat=True).order_by().distinct():
- code = reverse_map.get(country_name.upper(), '')
- orm.MirrorUrl.objects.filter(
- country_old=country_name).update(country=code)
-
- def backwards(self, orm):
- orm.MirrorUrl.objects.all().update(country='')
- orm.Mirror.objects.all().update(country='')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'country_old': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'country_old': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
- symmetrical = True
diff --git a/mirrors/migrations/0016_auto__del_field_mirror_country_old__del_field_mirrorurl_country_old.py b/mirrors/migrations/0016_auto__del_field_mirror_country_old__del_field_mirrorurl_country_old.py
deleted file mode 100644
index b296d7ae..00000000
--- a/mirrors/migrations/0016_auto__del_field_mirror_country_old__del_field_mirrorurl_country_old.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column('mirrors_mirror', 'country_old')
- db.delete_column('mirrors_mirrorurl', 'country_old')
- db.create_index('mirrors_mirror', ['country'])
- db.create_index('mirrors_mirrorurl', ['country'])
-
- def backwards(self, orm):
- db.delete_index('mirrors_mirrorurl', ['country'])
- db.delete_index('mirrors_mirror', ['country'])
- db.add_column('mirrors_mirror', 'country_old',
- self.gf('django.db.models.fields.CharField')(default='Any', max_length=255, db_index=True),
- keep_default=False)
- db.add_column('mirrors_mirrorurl', 'country_old',
- self.gf('django.db.models.fields.CharField')(blank=True, max_length=255, null=True, db_index=True),
- keep_default=False)
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0017_auto__chg_field_mirrorlog_error.py b/mirrors/migrations/0017_auto__chg_field_mirrorlog_error.py
deleted file mode 100644
index 60c4ec26..00000000
--- a/mirrors/migrations/0017_auto__chg_field_mirrorlog_error.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('mirrors_mirrorlog', 'error', self.gf('django.db.models.fields.TextField')(default=''))
-
- def backwards(self, orm):
- db.alter_column('mirrors_mirrorlog', 'error', self.gf('django.db.models.fields.CharField')(max_length=255))
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0018_auto__add_field_mirror_alternate_email.py b/mirrors/migrations/0018_auto__add_field_mirror_alternate_email.py
deleted file mode 100644
index a08699e8..00000000
--- a/mirrors/migrations/0018_auto__add_field_mirror_alternate_email.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
- def forwards(self, orm):
- db.add_column('mirrors_mirror', 'alternate_email',
- self.gf('django.db.models.fields.EmailField')(default='', max_length=255, blank=True),
- keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('mirrors_mirror', 'alternate_email')
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0019_move_country_data_to_url.py b/mirrors/migrations/0019_move_country_data_to_url.py
deleted file mode 100644
index 81b7bb3e..00000000
--- a/mirrors/migrations/0019_move_country_data_to_url.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- for url in orm.MirrorUrl.objects.select_related('mirror').all():
- # set the country field on the URL if we have one,
- # and it isn't already set to anything.
- if url.country or not url.mirror.country:
- continue
- orm.MirrorUrl.objects.filter(pk=url.pk).update(
- country=url.mirror.country)
-
- def backwards(self, orm):
- pass
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('country', 'name')", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
- symmetrical = True
diff --git a/mirrors/migrations/0020_auto__del_field_mirror_country.py b/mirrors/migrations/0020_auto__del_field_mirror_country.py
deleted file mode 100644
index c2220a50..00000000
--- a/mirrors/migrations/0020_auto__del_field_mirror_country.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column('mirrors_mirror', 'country')
-
-
- def backwards(self, orm):
- db.add_column('mirrors_mirror', 'country',
- self.gf('django_countries.fields.CountryField')(blank=True, default='', max_length=2, db_index=True),
- keep_default=False)
-
-
- models = {
- 'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- 'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mirrors.MirrorUrl']"})
- },
- 'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['mirrors.Mirror']"})
- },
- 'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': "orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0021_auto__chg_field_mirrorrsync_ip.py b/mirrors/migrations/0021_auto__chg_field_mirrorrsync_ip.py
deleted file mode 100644
index bbf14bb0..00000000
--- a/mirrors/migrations/0021_auto__chg_field_mirrorrsync_ip.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column(u'mirrors_mirrorrsync', 'ip', self.gf('django.db.models.fields.CharField')(max_length=44))
-
- def backwards(self, orm):
- db.alter_column(u'mirrors_mirrorrsync', 'ip', self.gf('django.db.models.fields.CharField')(max_length=24))
-
- models = {
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0022_auto__add_checklocation.py b/mirrors/migrations/0022_auto__add_checklocation.py
deleted file mode 100644
index 896b2dab..00000000
--- a/mirrors/migrations/0022_auto__add_checklocation.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_table(u'mirrors_checklocation', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('hostname', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('source_ip', self.gf('django.db.models.fields.GenericIPAddressField')(unique=True, max_length=39)),
- ('country', self.gf('django_countries.fields.CountryField')(max_length=2)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ))
- db.send_create_signal(u'mirrors', ['CheckLocation'])
-
-
- def backwards(self, orm):
- db.delete_table(u'mirrors_checklocation')
-
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0023_auto__add_field_mirrorurl_created__add_field_mirrorrsync_created__add_.py b/mirrors/migrations/0023_auto__add_field_mirrorurl_created__add_field_mirrorrsync_created__add_.py
deleted file mode 100644
index 1a1f48a0..00000000
--- a/mirrors/migrations/0023_auto__add_field_mirrorurl_created__add_field_mirrorrsync_created__add_.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from pytz import utc
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- default = datetime.datetime(2000, 1, 1, 0, 0).replace(tzinfo=utc)
- db.add_column(u'mirrors_mirrorurl', 'created',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
- db.add_column(u'mirrors_mirrorrsync', 'created',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
- db.add_column(u'mirrors_mirrorprotocol', 'created',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
- db.add_column(u'mirrors_mirror', 'created',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column(u'mirrors_mirrorurl', 'created')
- db.delete_column(u'mirrors_mirrorrsync', 'created')
- db.delete_column(u'mirrors_mirrorprotocol', 'created')
- db.delete_column(u'mirrors_mirror', 'created')
-
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0024_auto__add_field_mirrorlog_location.py b/mirrors/migrations/0024_auto__add_field_mirrorlog_location.py
deleted file mode 100644
index acf8df17..00000000
--- a/mirrors/migrations/0024_auto__add_field_mirrorlog_location.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column(u'mirrors_mirrorlog', 'location',
- self.gf('django.db.models.fields.related.ForeignKey')(related_name='logs', null=True, to=orm['mirrors.CheckLocation']),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column(u'mirrors_mirrorlog', 'location_id')
-
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'null': 'True', 'to': u"orm['mirrors.CheckLocation']"}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0025_auto__chg_field_mirrorrsync_ip.py b/mirrors/migrations/0025_auto__chg_field_mirrorrsync_ip.py
deleted file mode 100644
index b359b637..00000000
--- a/mirrors/migrations/0025_auto__chg_field_mirrorrsync_ip.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- if db.backend_name == 'postgres':
- # For PostgreSQL, because it uses the 'inet' type and not a varchar
- # column, we need to add an explict 'USING' cast to the SQL
- # statement. We then execute the alter_column as well to ensure any
- # of the other side-effects happen.
- db.execute('ALTER TABLE "mirrors_mirrorrsync" ALTER COLUMN "ip" TYPE inet USING "ip"::inet')
- db.alter_column(u'mirrors_mirrorrsync', 'ip', self.gf('mirrors.fields.IPNetworkField')(max_length=44))
-
- def backwards(self, orm):
- db.alter_column(u'mirrors_mirrorrsync', 'ip', self.gf('django.db.models.fields.CharField')(max_length=44))
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'null': 'True', 'to': u"orm['mirrors.CheckLocation']"}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('mirrors.fields.IPNetworkField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0026_auto__add_field_mirrorurl_active.py b/mirrors/migrations/0026_auto__add_field_mirrorurl_active.py
deleted file mode 100644
index f989435f..00000000
--- a/mirrors/migrations/0026_auto__add_field_mirrorurl_active.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column(u'mirrors_mirrorurl', 'active',
- self.gf('django.db.models.fields.BooleanField')(default=True),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column(u'mirrors_mirrorurl', 'active')
-
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'null': 'True', 'to': u"orm['mirrors.CheckLocation']"}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('mirrors.fields.IPNetworkField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/migrations/0027_auto__add_field_mirror_bug.py b/mirrors/migrations/0027_auto__add_field_mirror_bug.py
deleted file mode 100644
index f7304ba8..00000000
--- a/mirrors/migrations/0027_auto__add_field_mirror_bug.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
- def forwards(self, orm):
- db.add_column(u'mirrors_mirror', 'bug',
- self.gf('django.db.models.fields.PositiveIntegerField')(null=True),
- keep_default=False)
- # UPDATE mirrors_mirror m
- # SET bug = (
- # SELECT extracted::int FROM (
- # SELECT id, substring(notes from 'FS#([\d]+)') AS extracted FROM mirrors_mirror
- # ) a
- # WHERE extracted IS NOT NULL AND a.id = m.id
- # )
- # WHERE notes LIKE '%FS#%';
-
- def backwards(self, orm):
- db.delete_column(u'mirrors_mirror', 'bug')
-
-
- models = {
- u'mirrors.checklocation': {
- 'Meta': {'ordering': "('hostname', 'source_ip')", 'object_name': 'CheckLocation'},
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'source_ip': ('django.db.models.fields.GenericIPAddressField', [], {'unique': 'True', 'max_length': '39'})
- },
- u'mirrors.mirror': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'alternate_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'bug': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['mirrors.Mirror']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- },
- u'mirrors.mirrorlog': {
- 'Meta': {'object_name': 'MirrorLog'},
- 'check_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'duration': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'error': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_success': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'last_sync': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'null': 'True', 'to': u"orm['mirrors.CheckLocation']"}),
- 'url': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['mirrors.MirrorUrl']"})
- },
- u'mirrors.mirrorprotocol': {
- 'Meta': {'ordering': "('protocol',)", 'object_name': 'MirrorProtocol'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_download': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- u'mirrors.mirrorrsync': {
- 'Meta': {'ordering': "('ip',)", 'object_name': 'MirrorRsync'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('mirrors.fields.IPNetworkField', [], {'max_length': '44'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': u"orm['mirrors.Mirror']"})
- },
- u'mirrors.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'country': ('django_countries.fields.CountryField', [], {'db_index': 'True', 'max_length': '2', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'has_ipv4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'has_ipv6': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': u"orm['mirrors.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'on_delete': 'models.PROTECT', 'to': u"orm['mirrors.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- }
- }
-
- complete_apps = ['mirrors']
diff --git a/mirrors/models.py b/mirrors/models.py
index 0b053043..641a6b97 100644
--- a/mirrors/models.py
+++ b/mirrors/models.py
@@ -32,6 +32,7 @@ class Mirror(models.Model):
bug = models.PositiveIntegerField("Flyspray bug", null=True, blank=True)
notes = models.TextField(blank=True)
created = models.DateTimeField(editable=False)
+ last_modified = models.DateTimeField(editable=False)
class Meta:
ordering = ('name',)
@@ -74,6 +75,12 @@ class MirrorUrl(models.Model):
created = models.DateTimeField(editable=False)
active = models.BooleanField(default=True)
+ class Meta:
+ verbose_name = 'mirror URL'
+
+ def __unicode__(self):
+ return self.url
+
def address_families(self):
hostname = urlparse(self.url).hostname
info = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)
@@ -100,11 +107,8 @@ class MirrorUrl(models.Model):
self.has_ipv4 = False
self.has_ipv6 = False
- def __unicode__(self):
- return self.url
-
- class Meta:
- verbose_name = 'mirror URL'
+ def get_absolute_url(self):
+ return '/mirrors/%s/%d/' % (self.mirror.name, self.pk)
class MirrorRsync(models.Model):
@@ -114,7 +118,7 @@ class MirrorRsync(models.Model):
created = models.DateTimeField(editable=False)
def __unicode__(self):
- return self.ip
+ return unicode(self.ip)
class Meta:
verbose_name = 'mirror rsync IP'
@@ -123,7 +127,7 @@ class MirrorRsync(models.Model):
class CheckLocation(models.Model):
hostname = models.CharField(max_length=255)
- source_ip = models.GenericIPAddressField(verbose_name='source IP',
+ source_ip = models.GenericIPAddressField('source IP',
unpack_ipv4=True, unique=True)
country = CountryField()
created = models.DateTimeField(editable=False)
diff --git a/news/migrations/0001_initial.py b/news/migrations/0001_initial.py
index e30bf5c9..fc6b6cfb 100644
--- a/news/migrations/0001_initial.py
+++ b/news/migrations/0001_initial.py
@@ -1,21 +1,37 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
-class Migration(SchemaMigration):
+from django.db import models, migrations
+import django.db.models.deletion
+from django.conf import settings
- def forwards(self, orm):
- pass
+class Migration(migrations.Migration):
- def backwards(self, orm):
- pass
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
-
- models = {
-
- }
-
- complete_apps = ['news']
+ operations = [
+ migrations.CreateModel(
+ name='News',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('slug', models.SlugField(unique=True, max_length=255)),
+ ('postdate', models.DateTimeField(verbose_name=b'post date', db_index=True)),
+ ('last_modified', models.DateTimeField(editable=False, db_index=True)),
+ ('title', models.CharField(max_length=255)),
+ ('guid', models.CharField(max_length=255, editable=False)),
+ ('content', models.TextField()),
+ ('safe_mode', models.BooleanField(default=True)),
+ ('author', models.ForeignKey(related_name=b'news_author', on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'ordering': ('-postdate',),
+ 'db_table': 'news',
+ 'verbose_name_plural': 'news',
+ 'get_latest_by': 'postdate',
+ },
+ bases=(models.Model,),
+ ),
+ ]
diff --git a/news/migrations/0002_move_news_in.py b/news/migrations/0002_move_news_in.py
deleted file mode 100644
index 43d68df4..00000000
--- a/news/migrations/0002_move_news_in.py
+++ /dev/null
@@ -1,71 +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):
-
- depends_on = (
- ('main', '0031_move_news_out'),
- )
-
- def forwards(self, orm):
- db.send_create_signal('news', ['News'])
- if not db.dry_run:
- ct = orm['contenttypes.ContentType'].objects
- ct.filter(app_label='main', model='news').update(app_label='news')
-
- def backwards(self, orm):
- if not db.dry_run:
- ct = orm['contenttypes.ContentType'].objects
- ct.filter(app_label='news', model='news').update(app_label='main')
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0003_new_date_columns_precision.py b/news/migrations/0003_new_date_columns_precision.py
deleted file mode 100644
index 1c97f488..00000000
--- a/news/migrations/0003_new_date_columns_precision.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from django.utils.timezone import now
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'News.last_modified'
- db.add_column('news', 'last_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, default=now(), db_index=True, blank=True), keep_default=False)
- # Changing field 'News.postdate'
- db.alter_column('news', 'postdate', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True))
- # Adding index on 'News', fields ['postdate']
- db.create_index('news', ['postdate'])
-
- def backwards(self, orm):
- # Removing index on 'News', fields ['postdate']
- db.delete_index('news', ['postdate'])
- # Deleting field 'News.last_modified'
- db.delete_column('news', 'last_modified')
- # Changing field 'News.postdate'
- db.alter_column('news', 'postdate', self.gf('django.db.models.fields.DateField')(auto_now_add=True))
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate', '-id']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0004_auto__add_field_news_slug.py b/news/migrations/0004_auto__add_field_news_slug.py
deleted file mode 100644
index 7e5dcb79..00000000
--- a/news/migrations/0004_auto__add_field_news_slug.py
+++ /dev/null
@@ -1,66 +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 field 'News.slug'
- db.add_column('news', 'slug', self.gf('django.db.models.fields.SlugField')(max_length=255, unique=True, null=True, db_index=True), keep_default=False)
-
- def backwards(self, orm):
- # Deleting field 'News.slug'
- db.delete_column('news', 'slug')
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0005_add_slugs.py b/news/migrations/0005_add_slugs.py
deleted file mode 100644
index 96bd5213..00000000
--- a/news/migrations/0005_add_slugs.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-from django.template.defaultfilters import slugify
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- existing = list(orm.News.objects.values_list(
- 'slug', flat=True).distinct())
- for item in orm.News.objects.defer('content').filter(slug=None):
- suffixed = slug = slugify(item.title)
- suffix = 1
- while suffixed in existing:
- suffix += 1
- suffixed = "%s-%d" % (slug, suffix)
-
- item.slug = suffixed
- existing.append(suffixed)
-
- item.save()
-
- def backwards(self, orm):
- orm.News.objects.all.update(slug=None)
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0006_auto__chg_field_news_slug.py b/news/migrations/0006_auto__chg_field_news_slug.py
deleted file mode 100644
index c6c61e84..00000000
--- a/news/migrations/0006_auto__chg_field_news_slug.py
+++ /dev/null
@@ -1,66 +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 'News.slug'
- db.alter_column('news', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255))
-
- def backwards(self, orm):
- # Changing field 'News.slug'
- db.alter_column('news', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255, null=True))
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0007_add_guid.py b/news/migrations/0007_add_guid.py
deleted file mode 100644
index 5fa8193e..00000000
--- a/news/migrations/0007_add_guid.py
+++ /dev/null
@@ -1,65 +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):
- db.add_column('news', 'guid', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('news', 'guid')
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0008_set_prior_guids.py b/news/migrations/0008_set_prior_guids.py
deleted file mode 100644
index 704b11c9..00000000
--- a/news/migrations/0008_set_prior_guids.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.conf import settings
-from django.db import models
-
-class Migration(DataMigration):
- '''The point of this migration is to not mark every news item as 'new' in
- people's feed readers, and store the GUID perminantly with the news item.
- All previously published news items will get their former auto-assigned
- GUID; new ones will get a generated tag: URI and this won't apply to
- them.'''
-
- def forwards(self, orm):
- all_news = orm.News.objects.all().defer('content')
- site = orm['sites.site'].objects.get(pk=settings.SITE_ID).domain
- for news in all_news:
- new_guid = 'http://%s/news/%s/' % (site, news.slug)
- # looks totally silly, but prevents full updates of all fields,
- # including content and last_modified which we want to leave alone
- orm.News.objects.filter(pk=news.pk).update(guid=new_guid)
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'sites.site': {
- 'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
- 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- }
- }
-
- complete_apps = ['sites', 'news']
diff --git a/news/migrations/0009_utc_datetimes.py b/news/migrations/0009_utc_datetimes.py
deleted file mode 100644
index 6cddf783..00000000
--- a/news/migrations/0009_utc_datetimes.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from django.utils.tzinfo import LocalTimezone
-
-def new_date(old_date, reverse=False):
- if old_date is None:
- return None
- tz = LocalTimezone(old_date)
- offset = tz.utcoffset(old_date)
- if reverse:
- offset = -offset
- return old_date - offset
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- all_news = orm.News.objects.all().defer('content')
- for news in all_news:
- # prevents full object updates
- orm.News.objects.filter(pk=news.pk).update(
- postdate=new_date(news.postdate),
- last_modified=new_date(news.last_modified))
-
- def backwards(self, orm):
- all_news = orm.News.objects.all().defer('content')
- for news in all_news:
- # prevents full object updates
- orm.News.objects.filter(pk=news.pk).update(
- postdate=new_date(news.postdate, True),
- last_modified=new_date(news.last_modified, True))
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0010_auto__chg_field_news_author.py b/news/migrations/0010_auto__chg_field_news_author.py
deleted file mode 100644
index 64fdc580..00000000
--- a/news/migrations/0010_auto__chg_field_news_author.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('news', 'author_id', self.gf('django.db.models.fields.related.ForeignKey')(on_delete=models.PROTECT, to=orm['auth.User']))
-
- def backwards(self, orm):
- db.alter_column('news', 'author_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User']))
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "['-postdate']", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0011_auto__add_field_news_safe_mode.py b/news/migrations/0011_auto__add_field_news_safe_mode.py
deleted file mode 100644
index 565c7adb..00000000
--- a/news/migrations/0011_auto__add_field_news_safe_mode.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('news', 'safe_mode',
- self.gf('django.db.models.fields.BooleanField')(default=True),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('news', 'safe_mode')
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "('-postdate',)", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'safe_mode': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
diff --git a/news/migrations/0012_mark_old_news_safe_exempt.py b/news/migrations/0012_mark_old_news_safe_exempt.py
deleted file mode 100644
index b2661cd8..00000000
--- a/news/migrations/0012_mark_old_news_safe_exempt.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# -*- coding: utf-8 -*-
-import markdown
-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- md = markdown.Markdown(safe_mode=True, enable_attributes=False)
- magic = md.html_replacement_text
- items = orm.News.objects.all()
- has_html = [item.pk for item in items if magic in md.convert(item.content)]
- for pk in has_html:
- orm.News.objects.filter(pk=pk).update(safe_mode=False)
-
- def backwards(self, orm):
- orm.News.objects.all().update(safe_mode=True)
-
- 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'})
- },
- 'news.news': {
- 'Meta': {'ordering': "('-postdate',)", 'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'news_author'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'guid': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'postdate': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'safe_mode': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['news']
- symmetrical = True
diff --git a/packages/migrations/0001_initial.py b/packages/migrations/0001_initial.py
index 76e97340..5ecac84a 100644
--- a/packages/migrations/0001_initial.py
+++ b/packages/migrations/0001_initial.py
@@ -1,72 +1,205 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
-class Migration(SchemaMigration):
- def forwards(self, orm):
- # Adding model 'PackageRelation'
- db.create_table('packages_packagerelation', (
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('type', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='package_relations', to=orm['auth.User'])),
- ))
- db.send_create_signal('packages', ['PackageRelation'])
- # Adding unique constraint on 'PackageRelation', fields ['pkgbase', 'user', 'type']
- db.create_unique('packages_packagerelation', ['pkgbase', 'user_id', 'type'])
+from django.db import models, migrations
+import django.db.models.deletion
+from django.conf import settings
- def backwards(self, orm):
- # Deleting model 'PackageRelation'
- db.delete_table('packages_packagerelation')
- # Removing unique constraint on 'PackageRelation', fields ['pkgbase', 'user', 'type']
- db.delete_unique('packages_packagerelation', ['pkgbase', 'user_id', 'type'])
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- }
- }
+class Migration(migrations.Migration):
- complete_apps = ['packages']
+ dependencies = [
+ ('main', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Conflict',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255, db_index=True)),
+ ('version', models.CharField(default=b'', max_length=255)),
+ ('comparison', models.CharField(default=b'', max_length=255)),
+ ('pkg', models.ForeignKey(related_name=b'conflicts', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Depend',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255, db_index=True)),
+ ('version', models.CharField(default=b'', max_length=255)),
+ ('comparison', models.CharField(default=b'', max_length=255)),
+ ('description', models.TextField(null=True, blank=True)),
+ ('deptype', models.CharField(default=b'D', max_length=1, choices=[(b'D', b'Depend'), (b'O', b'Optional Depend'), (b'M', b'Make Depend'), (b'C', b'Check Depend')])),
+ ('pkg', models.ForeignKey(related_name=b'depends', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='FlagRequest',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('user_email', models.EmailField(max_length=75, verbose_name=b'email address')),
+ ('created', models.DateTimeField(editable=False, db_index=True)),
+ ('ip_address', models.GenericIPAddressField(verbose_name=b'IP address', unpack_ipv4=True)),
+ ('pkgbase', models.CharField(max_length=255, db_index=True)),
+ ('pkgver', models.CharField(max_length=255)),
+ ('pkgrel', models.CharField(max_length=255)),
+ ('epoch', models.PositiveIntegerField(default=0)),
+ ('num_packages', models.PositiveIntegerField(default=1, verbose_name=b'number of packages')),
+ ('message', models.TextField(verbose_name=b'message to developer', blank=True)),
+ ('is_spam', models.BooleanField(default=False, help_text=b'Is this comment from a real person?')),
+ ('is_legitimate', models.BooleanField(default=True, help_text=b'Is this actually an out-of-date flag request?')),
+ ('repo', models.ForeignKey(to='main.Repo')),
+ ('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
+ ],
+ options={
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='License',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255)),
+ ('pkg', models.ForeignKey(related_name=b'licenses', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='PackageGroup',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255, db_index=True)),
+ ('pkg', models.ForeignKey(related_name=b'groups', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='PackageRelation',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgbase', models.CharField(max_length=255)),
+ ('type', models.PositiveIntegerField(default=1, choices=[(1, b'Maintainer'), (2, b'Watcher')])),
+ ('created', models.DateTimeField(editable=False)),
+ ('user', models.ForeignKey(related_name=b'package_relations', to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Provision',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255, db_index=True)),
+ ('version', models.CharField(default=b'', max_length=255)),
+ ('pkg', models.ForeignKey(related_name=b'provides', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Replacement',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255, db_index=True)),
+ ('version', models.CharField(default=b'', max_length=255)),
+ ('comparison', models.CharField(default=b'', max_length=255)),
+ ('pkg', models.ForeignKey(related_name=b'replaces', to='main.Package')),
+ ],
+ options={
+ 'ordering': ('name',),
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Signoff',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgbase', models.CharField(max_length=255, db_index=True)),
+ ('pkgver', models.CharField(max_length=255)),
+ ('pkgrel', models.CharField(max_length=255)),
+ ('epoch', models.PositiveIntegerField(default=0)),
+ ('created', models.DateTimeField(editable=False, db_index=True)),
+ ('revoked', models.DateTimeField(null=True)),
+ ('comments', models.TextField(null=True, blank=True)),
+ ('arch', models.ForeignKey(to='main.Arch')),
+ ('repo', models.ForeignKey(to='main.Repo')),
+ ('user', models.ForeignKey(related_name=b'package_signoffs', to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='SignoffSpecification',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgbase', models.CharField(max_length=255, db_index=True)),
+ ('pkgver', models.CharField(max_length=255)),
+ ('pkgrel', models.CharField(max_length=255)),
+ ('epoch', models.PositiveIntegerField(default=0)),
+ ('created', models.DateTimeField(editable=False)),
+ ('required', models.PositiveIntegerField(default=2, help_text=b'How many signoffs are required for this package?')),
+ ('enabled', models.BooleanField(default=True, help_text=b'Is this package eligible for signoffs?')),
+ ('known_bad', models.BooleanField(default=False, help_text=b'Is package is known to be broken in some way?')),
+ ('comments', models.TextField(null=True, blank=True)),
+ ('arch', models.ForeignKey(to='main.Arch')),
+ ('repo', models.ForeignKey(to='main.Repo')),
+ ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Update',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgname', models.CharField(max_length=255, db_index=True)),
+ ('pkgbase', models.CharField(max_length=255)),
+ ('action_flag', models.PositiveSmallIntegerField(verbose_name=b'action flag', choices=[(1, b'Addition'), (2, b'Change'), (3, b'Deletion')])),
+ ('created', models.DateTimeField(editable=False, db_index=True)),
+ ('old_pkgver', models.CharField(max_length=255, null=True)),
+ ('old_pkgrel', models.CharField(max_length=255, null=True)),
+ ('old_epoch', models.PositiveIntegerField(null=True)),
+ ('new_pkgver', models.CharField(max_length=255, null=True)),
+ ('new_pkgrel', models.CharField(max_length=255, null=True)),
+ ('new_epoch', models.PositiveIntegerField(null=True)),
+ ('arch', models.ForeignKey(related_name=b'updates', to='main.Arch')),
+ ('package', models.ForeignKey(related_name=b'updates', on_delete=django.db.models.deletion.SET_NULL, to='main.Package', null=True)),
+ ('repo', models.ForeignKey(related_name=b'updates', to='main.Repo')),
+ ],
+ options={
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AlterUniqueTogether(
+ name='packagerelation',
+ unique_together=set([('pkgbase', 'user', 'type')]),
+ ),
+ ]
diff --git a/packages/migrations/0002_populate_package_relation.py b/packages/migrations/0002_populate_package_relation.py
deleted file mode 100644
index b0d32c7a..00000000
--- a/packages/migrations/0002_populate_package_relation.py
+++ /dev/null
@@ -1,233 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- depends_on = (
- ("main", "0003_migrate_maintainer"),
- )
-
- def forwards(self, orm):
- # search by pkgbase first and insert those records
- qs = orm['main.Package'].objects.exclude(maintainer=None).exclude(
- pkgbase=None).distinct().values('pkgbase', 'maintainer_id')
- for row in qs:
- pr, created = orm.PackageRelation.objects.get_or_create(
- pkgbase=row['pkgbase'], user__id=row['maintainer_id'],
- defaults={'user_id': row['maintainer_id']})
-
- # next search by pkgname first and insert those records
- qs = orm['main.Package'].objects.exclude(maintainer=None).filter(
- pkgbase=None).distinct().values('pkgname', 'maintainer_id')
- for row in qs:
- pr, created = orm.PackageRelation.objects.get_or_create(
- pkgbase=row['pkgname'], user__id=row['maintainer_id'],
- defaults={'user_id': row['maintainer_id']})
-
- def backwards(self, orm):
- if not db.dry_run:
- orm.PackageRelation.objects.all().delete()
- 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']", 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'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']", 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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']", 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'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'})
- },
- 'main.altforum': {
- 'Meta': {'object_name': 'AltForum', 'db_table': "'alt_forums'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'object_name': 'Donor', 'db_table': "'donors'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.externalproject': {
- 'Meta': {'object_name': 'ExternalProject'},
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
- },
- 'main.mirror': {
- 'Meta': {'object_name': 'Mirror'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'admin_email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}),
- 'country': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'isos': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'rsync_password': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'rsync_user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
- 'tier': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'upstream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Mirror']", 'null': 'True'})
- },
- 'main.mirrorprotocol': {
- 'Meta': {'object_name': 'MirrorProtocol'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'})
- },
- 'main.mirrorrsync': {
- 'Meta': {'object_name': 'MirrorRsync'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.CharField', [], {'max_length': '24'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rsync_ips'", 'to': "orm['main.Mirror']"})
- },
- 'main.mirrorurl': {
- 'Meta': {'object_name': 'MirrorUrl'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mirror': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.Mirror']"}),
- 'protocol': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['main.MirrorProtocol']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.news': {
- 'Meta': {'object_name': 'News', 'db_table': "'news'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'news_author'", 'to': "orm['auth.User']"}),
- 'content': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'postdate': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'maintained_packages'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'needupdate': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.press': {
- 'Meta': {'object_name': 'Press', 'db_table': "'press'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'main.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
- 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.userprofile': {
- 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
- 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'blank': 'True'}),
- 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
- 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
- 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
- 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
- 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
- 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'userprofile_user'", 'unique': 'True', 'to': "orm['auth.User']"}),
- 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['main', 'packages']
diff --git a/packages/migrations/0003_auto__add_packagegroup.py b/packages/migrations/0003_auto__add_packagegroup.py
deleted file mode 100644
index c40b6429..00000000
--- a/packages/migrations/0003_auto__add_packagegroup.py
+++ /dev/null
@@ -1,109 +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 'PackageGroup'
- db.create_table('packages_packagegroup', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Package'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('packages', ['PackageGroup'])
-
-
- def backwards(self, orm):
-
- # Deleting model 'PackageGroup'
- db.delete_table('packages_packagegroup')
-
-
- 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': {'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', 'blank': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
- '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': {'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'})
- },
- 'main.arch': {
- 'Meta': {'object_name': 'Arch', 'db_table': "'arches'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'object_name': 'Repo', 'db_table': "'repos'"},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0004_auto__add_license.py b/packages/migrations/0004_auto__add_license.py
deleted file mode 100644
index 001440fe..00000000
--- a/packages/migrations/0004_auto__add_license.py
+++ /dev/null
@@ -1,118 +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 'License'
- db.create_table('packages_license', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='licenses', to=orm['main.Package'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('packages', ['License'])
-
-
- def backwards(self, orm):
- # Deleting model 'License'
- db.delete_table('packages_license')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.license': {
- 'Meta': {'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0005_move_license_data.py b/packages/migrations/0005_move_license_data.py
deleted file mode 100644
index 1c1e689a..00000000
--- a/packages/migrations/0005_move_license_data.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- depends_on = (
- # the last structural change to the package model
- ('main', '0026_auto__add_field_package_packager_str__add_field_package_packager'),
- )
-
- def forwards(self, orm):
- "Migrate the flat license text to a seperate relation."
- for pkg in orm['main.Package'].objects.all():
- licenses = pkg.license.split(u', ')
- for license in licenses:
- pkg.licenses.create(name=license)
-
- def backwards(self, orm):
- for pkg in orm['main.Package'].objects.all():
- pkg.license = u', '.join([l.name for l in pkg.licenses.all()])
- pkg.save()
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.license': {
- 'Meta': {'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0006_auto__add_provision__add_conflict__add_replacement.py b/packages/migrations/0006_auto__add_provision__add_conflict__add_replacement.py
deleted file mode 100644
index c764ce77..00000000
--- a/packages/migrations/0006_auto__add_provision__add_conflict__add_replacement.py
+++ /dev/null
@@ -1,167 +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 'Provision'
- db.create_table('packages_provision', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='provides', to=orm['main.Package'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('version', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ))
- db.send_create_signal('packages', ['Provision'])
-
- # Adding model 'Conflict'
- db.create_table('packages_conflict', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='conflicts', to=orm['main.Package'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('comparison', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ('version', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ))
- db.send_create_signal('packages', ['Conflict'])
-
- # Adding model 'Replacement'
- db.create_table('packages_replacement', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='replaces', to=orm['main.Package'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('comparison', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ('version', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ))
- db.send_create_signal('packages', ['Replacement'])
-
-
- def backwards(self, orm):
- # Deleting model 'Provision'
- db.delete_table('packages_provision')
- # Deleting model 'Conflict'
- db.delete_table('packages_conflict')
- # Deleting model 'Replacement'
- db.delete_table('packages_replacement')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0007_auto__add_field_packagerelation_created.py b/packages/migrations/0007_auto__add_field_packagerelation_created.py
deleted file mode 100644
index b030909e..00000000
--- a/packages/migrations/0007_auto__add_field_packagerelation_created.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# encoding: utf-8
-import datetime
-from pytz import utc
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- old_date = datetime.datetime(2000, 1, 1)
- old_date = old_date.replace(tzinfo=utc)
- db.add_column('packages_packagerelation', 'created', self.gf('django.db.models.fields.DateTimeField')(default=old_date), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('packages_packagerelation', 'created')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0008_add_signoff_model.py b/packages/migrations/0008_add_signoff_model.py
deleted file mode 100644
index 5feed909..00000000
--- a/packages/migrations/0008_add_signoff_model.py
+++ /dev/null
@@ -1,166 +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 'Signoff'
- db.create_table('packages_signoff', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('pkgver', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('pkgrel', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('epoch', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
- ('arch', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Arch'])),
- ('repo', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Repo'])),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='package_signoffs', to=orm['auth.User'])),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('revoked', self.gf('django.db.models.fields.DateTimeField')(null=True)),
- ('comments', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('packages', ['Signoff'])
-
-
- def backwards(self, orm):
- # Deleting model 'Signoff'
- db.delete_table('packages_signoff')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0009_add_packagegroup_name_index.py b/packages/migrations/0009_add_packagegroup_name_index.py
deleted file mode 100644
index f81e77fc..00000000
--- a/packages/migrations/0009_add_packagegroup_name_index.py
+++ /dev/null
@@ -1,149 +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):
- db.create_index('packages_packagegroup', ['name'])
-
- def backwards(self, orm):
- db.delete_index('packages_packagegroup', ['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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0010_auto__add_signoffspecification.py b/packages/migrations/0010_auto__add_signoffspecification.py
deleted file mode 100644
index da24824e..00000000
--- a/packages/migrations/0010_auto__add_signoffspecification.py
+++ /dev/null
@@ -1,183 +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):
- db.create_table('packages_signoffspecification', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('pkgver', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('pkgrel', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('epoch', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
- ('arch', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Arch'])),
- ('repo', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Repo'])),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('required', self.gf('django.db.models.fields.PositiveIntegerField')(default=2)),
- ('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ('known_bad', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('comments', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('packages', ['SignoffSpecification'])
-
-
- def backwards(self, orm):
- db.delete_table('packages_signoffspecification')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0011_auto__chg_field_signoffspecification_user.py b/packages/migrations/0011_auto__chg_field_signoffspecification_user.py
deleted file mode 100644
index f6e3cdd9..00000000
--- a/packages/migrations/0011_auto__chg_field_signoffspecification_user.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages_signoffspecification', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True))
-
- def backwards(self, orm):
- db.alter_column('packages_signoffspecification', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['auth.User']))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0012_auto__add_flagrequest.py b/packages/migrations/0012_auto__add_flagrequest.py
deleted file mode 100644
index a501daff..00000000
--- a/packages/migrations/0012_auto__add_flagrequest.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'FlagRequest'
- db.create_table('packages_flagrequest', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
- ('user_email', self.gf('django.db.models.fields.EmailField')(max_length=75)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('ip_address', self.gf('django.db.models.fields.IPAddressField')(max_length=15)),
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('repo', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Repo'])),
- ('num_packages', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
- ('message', self.gf('django.db.models.fields.TextField')(blank=True)),
- ('is_spam', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('is_legitimate', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ))
- db.send_create_signal('packages', ['FlagRequest'])
-
- if db.backend_name == 'mysql':
- # stupid f#$%ing storage of IP address as a 15 character type
- db.execute("ALTER TABLE packages_flagrequest "
- "MODIFY ip_address char(39) NOT NULL")
-
-
- def backwards(self, orm):
- # Deleting model 'FlagRequest'
- db.delete_table('packages_flagrequest')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0013_auto__add_field_flagrequest_version.py b/packages/migrations/0013_auto__add_field_flagrequest_version.py
deleted file mode 100644
index ab33d5b3..00000000
--- a/packages/migrations/0013_auto__add_field_flagrequest_version.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# encoding: utf-8
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('packages_flagrequest', 'version', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('packages_flagrequest', 'version')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0014_auto__chg_field_flagrequest_ip_address.py b/packages/migrations/0014_auto__chg_field_flagrequest_ip_address.py
deleted file mode 100644
index 351b9985..00000000
--- a/packages/migrations/0014_auto__chg_field_flagrequest_ip_address.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('packages_flagrequest', 'ip_address', self.gf('django.db.models.fields.GenericIPAddressField')(max_length=39))
-
- def backwards(self, orm):
- db.alter_column('packages_flagrequest', 'ip_address', self.gf('django.db.models.fields.IPAddressField')(max_length=15))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0015_auto__add_depend.py b/packages/migrations/0015_auto__add_depend.py
deleted file mode 100644
index c9685ecb..00000000
--- a/packages/migrations/0015_auto__add_depend.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
- def forwards(self, orm):
- db.create_table('packages_depend', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('version', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='depends_new', to=orm['main.Package'])),
- ('comparison', self.gf('django.db.models.fields.CharField')(default='', max_length=255)),
- ('optional', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('packages', ['Depend'])
-
- def backwards(self, orm):
- db.delete_table('packages_depend')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends_new'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0016_copy_depends_data.py b/packages/migrations/0016_copy_depends_data.py
deleted file mode 100644
index a4b55d4e..00000000
--- a/packages/migrations/0016_copy_depends_data.py
+++ /dev/null
@@ -1,246 +0,0 @@
-# -*- coding: utf-8 -*-
-import re
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- depends_on = (
- ('main', '0038_add_depends_optional_description.py'),
- )
-
- def forwards(self, orm):
- Depend = orm['packages.Depend']
- vcmp_re = re.compile(r"^(>=|<=|=|>|<)(.*)$")
- for old in orm['main.PackageDepend'].objects.all():
- comp = ver = ''
- m = vcmp_re.match(old.depvcmp)
- if m:
- comp = m.group(1)
- ver = m.group(2)
- new_dep = Depend(pkg_id=old.pkg_id, name=old.depname,
- comparison=comp, version=ver, optional=old.optional,
- description=old.description)
- new_dep.save(force_insert=True)
-
- def backwards(self, orm):
- orm['packages.Depend'].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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagedepend': {
- 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
- 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends_new'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- }
- }
-
- complete_apps = ['main', 'packages']
- symmetrical = True
diff --git a/packages/migrations/0017_auto__add_update.py b/packages/migrations/0017_auto__add_update.py
deleted file mode 100644
index c7c16d4e..00000000
--- a/packages/migrations/0017_auto__add_update.py
+++ /dev/null
@@ -1,226 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_table('packages_update', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('package', self.gf('django.db.models.fields.related.ForeignKey')(related_name='updates', null=True, on_delete=models.SET_NULL, to=orm['main.Package'])),
- ('repo', self.gf('django.db.models.fields.related.ForeignKey')(related_name='updates', to=orm['main.Repo'])),
- ('arch', self.gf('django.db.models.fields.related.ForeignKey')(related_name='updates', to=orm['main.Arch'])),
- ('pkgname', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('action_flag', self.gf('django.db.models.fields.PositiveSmallIntegerField')()),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('old_pkgver', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
- ('old_pkgrel', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
- ('old_epoch', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
- ('new_pkgver', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
- ('new_pkgrel', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
- ('new_epoch', self.gf('django.db.models.fields.PositiveIntegerField')(null=True)),
- ))
- db.send_create_signal('packages', ['Update'])
-
-
- def backwards(self, orm):
- db.delete_table('packages_update')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0018_create_created_indexes.py b/packages/migrations/0018_create_created_indexes.py
deleted file mode 100644
index 678a04d4..00000000
--- a/packages/migrations/0018_create_created_indexes.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_index('packages_flagrequest', ['created'])
- db.create_index('packages_update', ['created'])
- db.create_index('packages_signoff', ['created'])
-
-
- def backwards(self, orm):
- db.delete_index('packages_signoff', ['created'])
- db.delete_index('packages_update', ['created'])
- db.delete_index('packages_flagrequest', ['created'])
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0019_package_update_pkgname_index.py b/packages/migrations/0019_package_update_pkgname_index.py
deleted file mode 100644
index 047f11ec..00000000
--- a/packages/migrations/0019_package_update_pkgname_index.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_index('packages_update', ['pkgname'])
-
- def backwards(self, orm):
- db.delete_index('packages_update', ['pkgname'])
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0020_auto__add_field_depend_deptype.py b/packages/migrations/0020_auto__add_field_depend_deptype.py
deleted file mode 100644
index 4cc5bc17..00000000
--- a/packages/migrations/0020_auto__add_field_depend_deptype.py
+++ /dev/null
@@ -1,212 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('packages_depend', 'deptype',
- self.gf('django.db.models.fields.CharField')(default='D', max_length=1),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('packages_depend', 'deptype')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0021_migrate_optional_deps.py b/packages/migrations/0021_migrate_optional_deps.py
deleted file mode 100644
index f6652ce1..00000000
--- a/packages/migrations/0021_migrate_optional_deps.py
+++ /dev/null
@@ -1,210 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm['packages.Depend'].objects.filter(optional=False).update(deptype='D')
- orm['packages.Depend'].objects.filter(optional=True).update(deptype='O')
-
- def backwards(self, orm):
- orm['packages.Depend'].objects.all().update(deptype='D')
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
- symmetrical = True
diff --git a/packages/migrations/0022_auto__del_field_depend_optional.py b/packages/migrations/0022_auto__del_field_depend_optional.py
deleted file mode 100644
index 8e65ccb1..00000000
--- a/packages/migrations/0022_auto__del_field_depend_optional.py
+++ /dev/null
@@ -1,211 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column('packages_depend', 'optional')
-
- def backwards(self, orm):
- db.add_column('packages_depend', 'optional',
- self.gf('django.db.models.fields.BooleanField')(default=False),
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0023_split_flag_req_version_field.py b/packages/migrations/0023_split_flag_req_version_field.py
deleted file mode 100644
index b3d6c05c..00000000
--- a/packages/migrations/0023_split_flag_req_version_field.py
+++ /dev/null
@@ -1,222 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('packages_flagrequest', 'pkgver',
- self.gf('django.db.models.fields.CharField')(default='', max_length=255),
- keep_default=False)
- db.add_column('packages_flagrequest', 'pkgrel',
- self.gf('django.db.models.fields.CharField')(default='', max_length=255),
- keep_default=False)
- db.add_column('packages_flagrequest', 'epoch',
- self.gf('django.db.models.fields.PositiveIntegerField')(default=0),
- keep_default=True)
-
- def backwards(self, orm):
- db.delete_column('packages_flagrequest', 'pkgver')
- db.delete_column('packages_flagrequest', 'pkgrel')
- db.delete_column('packages_flagrequest', 'epoch')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/migrations/0024_move_flag_req_version_info.py b/packages/migrations/0024_move_flag_req_version_info.py
deleted file mode 100644
index 3be4654a..00000000
--- a/packages/migrations/0024_move_flag_req_version_info.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-from packages.utils import parse_version
-
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- for pk, version in orm.FlagRequest.objects.exclude(
- version='').values_list('pk', 'version'):
- ver, rel, epoch = parse_version(version)
- orm.FlagRequest.objects.filter(pk=pk).update(
- pkgver=ver, pkgrel=rel, epoch=epoch)
-
- def backwards(self, orm):
- orm.FlagRequest.objects.all().update(pkgver='', pkgrel='', epoch=0)
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'version': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
- symmetrical = True
diff --git a/packages/migrations/0025_auto__del_field_flagrequest_version.py b/packages/migrations/0025_auto__del_field_flagrequest_version.py
deleted file mode 100644
index 963b0b12..00000000
--- a/packages/migrations/0025_auto__del_field_flagrequest_version.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column('packages_flagrequest', 'version')
-
- def backwards(self, orm):
- db.add_column('packages_flagrequest', 'version',
- self.gf('django.db.models.fields.CharField')(default='', max_length=255),
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'packages.conflict': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.depend': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Depend'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'deptype': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1'}),
- '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', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.flagrequest': {
- 'Meta': {'object_name': 'FlagRequest'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'is_legitimate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'num_packages': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'})
- },
- 'packages.license': {
- 'Meta': {'ordering': "['name']", 'object_name': 'License'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
- },
- 'packages.packagegroup': {
- 'Meta': {'object_name': 'PackageGroup'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
- },
- 'packages.packagerelation': {
- 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
- },
- 'packages.provision': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.replacement': {
- 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
- 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
- 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
- },
- 'packages.signoff': {
- 'Meta': {'object_name': 'Signoff'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
- },
- 'packages.signoffspecification': {
- 'Meta': {'object_name': 'SignoffSpecification'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
- },
- 'packages.update': {
- 'Meta': {'object_name': 'Update'},
- 'action_flag': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Arch']"}),
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'new_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'new_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'new_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_epoch': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
- 'old_pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'old_pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
- 'package': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['main.Package']"}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'updates'", 'to': "orm['main.Repo']"})
- }
- }
-
- complete_apps = ['packages']
diff --git a/packages/models.py b/packages/models.py
index da8adc56..dd69e7d3 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -181,9 +181,7 @@ class FlagRequest(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
user_email = models.EmailField('email address')
created = models.DateTimeField(editable=False, db_index=True)
- # Great work, Django... https://code.djangoproject.com/ticket/18212
- ip_address = models.GenericIPAddressField(verbose_name='IP address',
- unpack_ipv4=True)
+ ip_address = models.GenericIPAddressField('IP address', unpack_ipv4=True)
pkgbase = models.CharField(max_length=255, db_index=True)
pkgver = models.CharField(max_length=255)
pkgrel = models.CharField(max_length=255)
diff --git a/packages/views/__init__.py b/packages/views/__init__.py
index b6e72d62..1f8a0169 100644
--- a/packages/views/__init__.py
+++ b/packages/views/__init__.py
@@ -27,10 +27,7 @@ from .signoff import signoffs, signoff_package, signoff_options, signoffs_json
@require_safe
@cache_control(public=True, max_age=86400)
def opensearch(request):
- if request.is_secure():
- domain = "https://%s" % request.META['HTTP_HOST']
- else:
- domain = "http://%s" % request.META['HTTP_HOST']
+ domain = "%s://%s" % (request.scheme, request.META['HTTP_HOST'])
return render(request, 'packages/opensearch.xml',
{'domain': domain},
diff --git a/public/models.py b/public/models.py
deleted file mode 100644
index 3668574e..00000000
--- a/public/models.py
+++ /dev/null
@@ -1 +0,0 @@
-# Needed for django to recognize this as an app for testing
diff --git a/releng/migrations/0001_initial.py b/releng/migrations/0001_initial.py
index 91fab8b7..b56f389d 100644
--- a/releng/migrations/0001_initial.py
+++ b/releng/migrations/0001_initial.py
@@ -1,258 +1,185 @@
-# 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 'Iso'
- db.create_table('releng_iso', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('active', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ))
- db.send_create_signal('releng', ['Iso'])
-
- # Adding model 'Architecture'
- db.create_table('releng_architecture', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['Architecture'])
-
- # Adding model 'IsoType'
- db.create_table('releng_isotype', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['IsoType'])
-
- # Adding model 'BootType'
- db.create_table('releng_boottype', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['BootType'])
-
- # Adding model 'HardwareType'
- db.create_table('releng_hardwaretype', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['HardwareType'])
-
- # Adding model 'InstallType'
- db.create_table('releng_installtype', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['InstallType'])
-
- # Adding model 'Source'
- db.create_table('releng_source', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['Source'])
-
- # Adding model 'ClockChoice'
- db.create_table('releng_clockchoice', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['ClockChoice'])
-
- # Adding model 'Filesystem'
- db.create_table('releng_filesystem', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['Filesystem'])
-
- # Adding model 'Module'
- db.create_table('releng_module', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['Module'])
-
- # Adding model 'Bootloader'
- db.create_table('releng_bootloader', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ))
- db.send_create_signal('releng', ['Bootloader'])
-
- # Adding model 'Test'
- db.create_table('releng_test', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('user_name', self.gf('django.db.models.fields.CharField')(max_length=500)),
- ('user_email', self.gf('django.db.models.fields.EmailField')(max_length=75)),
- ('ip_address', self.gf('django.db.models.fields.IPAddressField')(max_length=15)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('iso', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.Iso'])),
- ('architecture', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.Architecture'])),
- ('iso_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.IsoType'])),
- ('boot_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.BootType'])),
- ('hardware_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.HardwareType'])),
- ('install_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.InstallType'])),
- ('source', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.Source'])),
- ('clock_choice', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.ClockChoice'])),
- ('filesystem', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.Filesystem'])),
- ('bootloader', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['releng.Bootloader'])),
- ('rollback_filesystem', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='rollback_test_set', null=True, to=orm['releng.Filesystem'])),
- ('success', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('comments', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('releng', ['Test'])
-
- # Adding M2M table for field modules on 'Test'
- db.create_table('releng_test_modules', (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('test', models.ForeignKey(orm['releng.test'], null=False)),
- ('module', models.ForeignKey(orm['releng.module'], null=False))
- ))
- db.create_unique('releng_test_modules', ['test_id', 'module_id'])
-
- # Adding M2M table for field rollback_modules on 'Test'
- db.create_table('releng_test_rollback_modules', (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('test', models.ForeignKey(orm['releng.test'], null=False)),
- ('module', models.ForeignKey(orm['releng.module'], null=False))
- ))
- db.create_unique('releng_test_rollback_modules', ['test_id', 'module_id'])
-
-
- def backwards(self, orm):
-
- # Deleting model 'Iso'
- db.delete_table('releng_iso')
-
- # Deleting model 'Architecture'
- db.delete_table('releng_architecture')
-
- # Deleting model 'IsoType'
- db.delete_table('releng_isotype')
-
- # Deleting model 'BootType'
- db.delete_table('releng_boottype')
-
- # Deleting model 'HardwareType'
- db.delete_table('releng_hardwaretype')
-
- # Deleting model 'InstallType'
- db.delete_table('releng_installtype')
-
- # Deleting model 'Source'
- db.delete_table('releng_source')
-
- # Deleting model 'ClockChoice'
- db.delete_table('releng_clockchoice')
-
- # Deleting model 'Filesystem'
- db.delete_table('releng_filesystem')
-
- # Deleting model 'Module'
- db.delete_table('releng_module')
-
- # Deleting model 'Bootloader'
- db.delete_table('releng_bootloader')
-
- # Deleting model 'Test'
- db.delete_table('releng_test')
-
- # Removing M2M table for field modules on 'Test'
- db.delete_table('releng_test_modules')
-
- # Removing M2M table for field rollback_modules on 'Test'
- db.delete_table('releng_test_rollback_modules')
-
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Architecture',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Bootloader',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='BootType',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='ClockChoice',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Filesystem',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='HardwareType',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='InstallType',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Iso',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=255)),
+ ('created', models.DateTimeField(editable=False)),
+ ('removed', models.DateTimeField(default=None, null=True, blank=True)),
+ ('active', models.BooleanField(default=True)),
+ ],
+ options={
+ 'verbose_name': 'ISO',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='IsoType',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'verbose_name': 'ISO type',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Module',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Release',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('release_date', models.DateField(db_index=True)),
+ ('version', models.CharField(unique=True, max_length=50)),
+ ('kernel_version', models.CharField(max_length=50, blank=True)),
+ ('md5_sum', models.CharField(max_length=32, verbose_name=b'MD5 digest', blank=True)),
+ ('sha1_sum', models.CharField(max_length=40, verbose_name=b'SHA1 digest', blank=True)),
+ ('created', models.DateTimeField(editable=False)),
+ ('available', models.BooleanField(default=True)),
+ ('info', models.TextField(verbose_name=b'Public information', blank=True)),
+ ('torrent_data', models.TextField(help_text=b'base64-encoded torrent file', blank=True)),
+ ],
+ options={
+ 'ordering': ('-release_date', '-version'),
+ 'get_latest_by': 'release_date',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Source',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=200)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Test',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('user_name', models.CharField(max_length=500)),
+ ('user_email', models.EmailField(max_length=75, verbose_name=b'email address')),
+ ('ip_address', models.GenericIPAddressField(verbose_name=b'IP address', unpack_ipv4=True)),
+ ('created', models.DateTimeField(editable=False)),
+ ('success', models.BooleanField(default=True)),
+ ('comments', models.TextField(null=True, blank=True)),
+ ('architecture', models.ForeignKey(to='releng.Architecture')),
+ ('boot_type', models.ForeignKey(to='releng.BootType')),
+ ('bootloader', models.ForeignKey(to='releng.Bootloader')),
+ ('clock_choice', models.ForeignKey(to='releng.ClockChoice')),
+ ('filesystem', models.ForeignKey(to='releng.Filesystem')),
+ ('hardware_type', models.ForeignKey(to='releng.HardwareType')),
+ ('install_type', models.ForeignKey(to='releng.InstallType')),
+ ('iso', models.ForeignKey(to='releng.Iso')),
+ ('iso_type', models.ForeignKey(to='releng.IsoType')),
+ ('modules', models.ManyToManyField(to='releng.Module', null=True, blank=True)),
+ ('rollback_filesystem', models.ForeignKey(related_name=b'rollback_test_set', blank=True, to='releng.Filesystem', null=True)),
+ ('rollback_modules', models.ManyToManyField(related_name=b'rollback_test_set', null=True, to='releng.Module', blank=True)),
+ ('source', models.ForeignKey(to='releng.Source')),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ ]
diff --git a/releng/migrations/0002_auto__add_field_iso_removed.py b/releng/migrations/0002_auto__add_field_iso_removed.py
deleted file mode 100644
index d5cd09c8..00000000
--- a/releng/migrations/0002_auto__add_field_iso_removed.py
+++ /dev/null
@@ -1,99 +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):
- db.add_column('releng_iso', 'removed', self.gf('django.db.models.fields.DateTimeField')(default=None, null=True, blank=True), keep_default=False)
-
- def backwards(self, orm):
- db.delete_column('releng_iso', 'removed')
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
diff --git a/releng/migrations/0003_auto__chg_field_test_ip_address.py b/releng/migrations/0003_auto__chg_field_test_ip_address.py
deleted file mode 100644
index 78297f14..00000000
--- a/releng/migrations/0003_auto__chg_field_test_ip_address.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('releng_test', 'ip_address', self.gf('django.db.models.fields.GenericIPAddressField')(max_length=39))
-
- def backwards(self, orm):
- db.alter_column('releng_test', 'ip_address', self.gf('django.db.models.fields.IPAddressField')(max_length=15))
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
diff --git a/releng/migrations/0004_auto__add_release.py b/releng/migrations/0004_auto__add_release.py
deleted file mode 100644
index fe4acea5..00000000
--- a/releng/migrations/0004_auto__add_release.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.create_table('releng_release', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('release_date', self.gf('django.db.models.fields.DateField')(db_index=True)),
- ('version', self.gf('django.db.models.fields.CharField')(max_length=50)),
- ('kernel_version', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)),
- ('torrent_infohash', self.gf('django.db.models.fields.CharField')(max_length=64, blank=True)),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('available', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ('info', self.gf('django.db.models.fields.TextField')(blank=True)),
- ))
- db.send_create_signal('releng', ['Release'])
-
- def backwards(self, orm):
- db.delete_table('releng_release')
-
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.release': {
- 'Meta': {'ordering': "('-release_date', '-version')", 'object_name': 'Release'},
- 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'info': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'kernel_version': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
- 'release_date': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
- 'torrent_infohash': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
- 'version': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
diff --git a/releng/migrations/0005_auto__add_field_release_file_size__add_field_release_torrent_data.py b/releng/migrations/0005_auto__add_field_release_file_size__add_field_release_torrent_data.py
deleted file mode 100644
index 96e0727c..00000000
--- a/releng/migrations/0005_auto__add_field_release_file_size__add_field_release_torrent_data.py
+++ /dev/null
@@ -1,127 +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 'Release.file_size'
- db.add_column('releng_release', 'file_size',
- self.gf('main.fields.PositiveBigIntegerField')(null=True, blank=True),
- keep_default=False)
-
- # Adding field 'Release.torrent_data'
- db.add_column('releng_release', 'torrent_data',
- self.gf('django.db.models.fields.TextField')(default='', blank=True),
- keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Release.file_size'
- db.delete_column('releng_release', 'file_size')
-
- # Deleting field 'Release.torrent_data'
- db.delete_column('releng_release', 'torrent_data')
-
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.release': {
- 'Meta': {'ordering': "('-release_date', '-version')", 'object_name': 'Release'},
- 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'file_size': ('main.fields.PositiveBigIntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'info': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'kernel_version': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
- 'release_date': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
- 'torrent_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'torrent_infohash': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
- 'version': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng'] \ No newline at end of file
diff --git a/releng/migrations/0006_auto__add_unique_release_version.py b/releng/migrations/0006_auto__add_unique_release_version.py
deleted file mode 100644
index cb834870..00000000
--- a/releng/migrations/0006_auto__add_unique_release_version.py
+++ /dev/null
@@ -1,117 +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 'Release', fields ['version']
- db.create_unique('releng_release', ['version'])
-
-
- def backwards(self, orm):
- # Removing unique constraint on 'Release', fields ['version']
- db.delete_unique('releng_release', ['version'])
-
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.release': {
- 'Meta': {'ordering': "('-release_date', '-version')", 'object_name': 'Release'},
- 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'file_size': ('main.fields.PositiveBigIntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'info': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'kernel_version': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
- 'release_date': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
- 'torrent_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'torrent_infohash': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
- 'version': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng'] \ No newline at end of file
diff --git a/releng/migrations/0007_auto__add_field_release_md5__add_field_release_sha1.py b/releng/migrations/0007_auto__add_field_release_md5__add_field_release_sha1.py
deleted file mode 100644
index f76be3d7..00000000
--- a/releng/migrations/0007_auto__add_field_release_md5__add_field_release_sha1.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('releng_release', 'md5_sum',
- self.gf('django.db.models.fields.CharField')(default='', max_length=32, blank=True),
- keep_default=False)
- db.add_column('releng_release', 'sha1_sum',
- self.gf('django.db.models.fields.CharField')(default='', max_length=40, blank=True),
- keep_default=False)
- db.alter_column('releng_release', 'torrent_infohash', self.gf('django.db.models.fields.CharField')(max_length=40))
-
- def backwards(self, orm):
- db.delete_column('releng_release', 'md5_sum')
- db.delete_column('releng_release', 'sha1_sum')
- db.alter_column('releng_release', 'torrent_infohash', self.gf('django.db.models.fields.CharField')(max_length=64))
-
- models = {
- 'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- 'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.module': {
- 'Meta': {'object_name': 'Module'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.release': {
- 'Meta': {'ordering': "('-release_date', '-version')", 'object_name': 'Release'},
- 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'file_size': ('main.fields.PositiveBigIntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'info': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'kernel_version': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
- 'md5_sum': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
- 'release_date': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
- 'sha1_sum': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}),
- 'torrent_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'torrent_infohash': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}),
- 'version': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'})
- },
- 'releng.source': {
- 'Meta': {'object_name': 'Source'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- 'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.HardwareType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': "orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
diff --git a/releng/migrations/0008_auto__del_field_release_torrent_infohash__del_field_release_file_size.py b/releng/migrations/0008_auto__del_field_release_torrent_infohash__del_field_release_file_size.py
deleted file mode 100644
index 4a80fd8e..00000000
--- a/releng/migrations/0008_auto__del_field_release_torrent_infohash__del_field_release_file_size.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.delete_column(u'releng_release', 'torrent_infohash')
- db.delete_column(u'releng_release', 'file_size')
-
- def backwards(self, orm):
- db.add_column(u'releng_release', 'torrent_infohash',
- self.gf('django.db.models.fields.CharField')(default='', max_length=40, blank=True),
- keep_default=False)
- db.add_column(u'releng_release', 'file_size',
- self.gf('main.fields.PositiveBigIntegerField')(null=True, blank=True),
- keep_default=False)
-
- models = {
- u'releng.architecture': {
- 'Meta': {'object_name': 'Architecture'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.bootloader': {
- 'Meta': {'object_name': 'Bootloader'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.boottype': {
- 'Meta': {'object_name': 'BootType'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.clockchoice': {
- 'Meta': {'object_name': 'ClockChoice'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.filesystem': {
- 'Meta': {'object_name': 'Filesystem'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.hardwaretype': {
- 'Meta': {'object_name': 'HardwareType'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.installtype': {
- 'Meta': {'object_name': 'InstallType'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.iso': {
- 'Meta': {'object_name': 'Iso'},
- 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
- },
- u'releng.isotype': {
- 'Meta': {'object_name': 'IsoType'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.module': {
- 'Meta': {'object_name': 'Module'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.release': {
- 'Meta': {'ordering': "('-release_date', '-version')", 'object_name': 'Release'},
- 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'info': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'kernel_version': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
- 'md5_sum': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
- 'release_date': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
- 'sha1_sum': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}),
- 'torrent_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'version': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'})
- },
- u'releng.source': {
- 'Meta': {'object_name': 'Source'},
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
- },
- u'releng.test': {
- 'Meta': {'object_name': 'Test'},
- 'architecture': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.Architecture']"}),
- 'boot_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.BootType']"}),
- 'bootloader': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.Bootloader']"}),
- 'clock_choice': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.ClockChoice']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'filesystem': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.Filesystem']"}),
- 'hardware_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.HardwareType']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'install_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.InstallType']"}),
- 'ip_address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}),
- 'iso': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.Iso']"}),
- 'iso_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.IsoType']"}),
- 'modules': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['releng.Module']", 'null': 'True', 'blank': 'True'}),
- 'rollback_filesystem': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'to': u"orm['releng.Filesystem']"}),
- 'rollback_modules': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'rollback_test_set'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['releng.Module']"}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['releng.Source']"}),
- 'success': ('django.db.models.fields.BooleanField', [], {}),
- 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
- 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
- }
- }
-
- complete_apps = ['releng']
diff --git a/releng/models.py b/releng/models.py
index a3af54f9..66690e81 100644
--- a/releng/models.py
+++ b/releng/models.py
@@ -90,9 +90,7 @@ class Bootloader(IsoOption):
class Test(models.Model):
user_name = models.CharField(max_length=500)
user_email = models.EmailField('email address')
- # Great work, Django... https://code.djangoproject.com/ticket/18212
- ip_address = models.GenericIPAddressField(verbose_name='IP address',
- unpack_ipv4=True)
+ ip_address = models.GenericIPAddressField('IP address', unpack_ipv4=True)
created = models.DateTimeField(editable=False)
iso = models.ForeignKey(Iso)
@@ -111,7 +109,7 @@ class Test(models.Model):
rollback_modules = models.ManyToManyField(Module,
related_name="rollback_test_set", null=True, blank=True)
- success = models.BooleanField()
+ success = models.BooleanField(default=True)
comments = models.TextField(null=True, blank=True)
diff --git a/requirements.txt b/requirements.txt
index 81070449..eff75bad 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,10 +1,9 @@
-e git+git://github.com/fredj/cssmin.git@master#egg=cssmin
-Django==1.6.2
+-e git+git://github.com/SmileyChris/django-countries.git@a2c924074dbe2f0b9b3059bf70064aeadf5643ed#egg=django-countries
+Django==1.7
IPy==0.81
-Markdown==2.4
-South==0.8.4
+Markdown==2.4.1
bencode==1.0
-django-countries==2.0
-jsmin==2.0.9
+jsmin==2.0.11
pgpdump==1.5
-pytz>=2013.8
+pytz>=2014.7
diff --git a/requirements_prod.txt b/requirements_prod.txt
index 840e0396..c181c3af 100644
--- a/requirements_prod.txt
+++ b/requirements_prod.txt
@@ -1,13 +1,12 @@
-e git+git://github.com/fredj/cssmin.git@master#egg=cssmin
-Django==1.6.2
+-e git+git://github.com/SmileyChris/django-countries.git@a2c924074dbe2f0b9b3059bf70064aeadf5643ed#egg=django-countries
+Django==1.7
IPy==0.81
-Markdown==2.4
-South==0.8.4
+Markdown==2.4.1
bencode==1.0
-django-countries==2.0
-jsmin==2.0.9
+jsmin==2.0.11
pgpdump==1.5
-psycopg2==2.5.2
+psycopg2==2.5.4
pyinotify==0.9.4
python-memcached==1.53
-pytz>=2013.8
+pytz>=2014.7
diff --git a/retro/models.py b/retro/models.py
deleted file mode 100644
index e69de29b..00000000
--- a/retro/models.py
+++ /dev/null
diff --git a/settings.py b/settings.py
index a6be4610..b511d613 100644
--- a/settings.py
+++ b/settings.py
@@ -103,6 +103,9 @@ SESSION_COOKIE_HTTPONLY = True
# Clickjacking protection
X_FRAME_OPTIONS = 'DENY'
+# Use new test runner
+TEST_RUNNER = 'django.test.runner.DiscoverRunner'
+
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
@@ -112,7 +115,6 @@ INSTALLED_APPS = (
'django.contrib.sitemaps',
'django.contrib.admin',
'django.contrib.staticfiles',
- 'south',
'django_countries',
'main',
diff --git a/sitemaps.py b/sitemaps.py
index 42b08922..d79b00b5 100644
--- a/sitemaps.py
+++ b/sitemaps.py
@@ -35,7 +35,7 @@ class PackagesSitemap(Sitemap):
class PackageFilesSitemap(PackagesSitemap):
changefreq = "weekly"
- priority = "0.2"
+ priority = "0.1"
def location(self, obj):
return PackagesSitemap.location(self, obj) + 'files/'
diff --git a/sitestatic/bootstrap-typeahead.min.js b/sitestatic/bootstrap-typeahead.min.js
index a63aa3c6..3e0e833c 100644
--- a/sitestatic/bootstrap-typeahead.min.js
+++ b/sitestatic/bootstrap-typeahead.min.js
@@ -19,8 +19,8 @@
!function(b){var g=function(a,c){this.$element=b(a);this.options=b.extend({},b.fn.typeahead.defaults,c);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.$menu=b(this.options.menu).appendTo("body");this.source=this.options.source;this.shown=!1;this.listen()};g.prototype={constructor:g,select:function(){var a=this.$menu.find(".active").attr("data-value");
this.$element.val(this.updater(a)).change();return this.hide()},updater:function(a){return a},show:function(){var a=b.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});this.$menu.css({top:a.top+a.height,left:a.left});this.$menu.show();this.shown=!0;return this},hide:function(){this.$menu.hide();this.shown=!1;return this},lookup:function(a){this.query=this.$element.val();return!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(a=b.isFunction(this.source)?
this.source(this.query,b.proxy(this.process,this)):this.source)?this.process(a):this},process:function(a){var c=this;a=b.grep(a,function(a){return c.matcher(a)});a=this.sorter(a);return a.length?this.render(a.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){for(var b=[],e=[],d=[],f;f=a.shift();)f.toLowerCase().indexOf(this.query.toLowerCase())?~f.indexOf(this.query)?e.push(f):d.push(f):
-b.push(f);return b.concat(e,d)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(a){var c=this;a=b(a).map(function(a,d){a=b(c.options.item).attr("data-value",d);a.find("a").html(c.highlighter(d));return a[0]});a.first().addClass("active");this.$menu.html(a);return this},next:function(a){a=this.$menu.find(".active").removeClass("active").next();a.length||(a=
-b(this.$menu.find("li")[0]));a.addClass("active")},prev:function(a){a=this.$menu.find(".active").removeClass("active").prev();a.length||(a=this.$menu.find("li").last());a.addClass("active")},listen:function(){this.$element.on("blur",b.proxy(this.blur,this)).on("keypress",b.proxy(this.keypress,this)).on("keyup",b.proxy(this.keyup,this));if(b.browser.chrome||b.browser.webkit||b.browser.msie)this.$element.on("keydown",b.proxy(this.keydown,this));this.$menu.on("click",b.proxy(this.click,this)).on("mouseenter",
+b.push(f);return b.concat(e,d)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(a){var c=this;a=b(a).map(function(a,d){a=b(c.options.item).attr("data-value",d);a.find("a").html(c.highlighter(d));return a[0]});a.first().addClass("active");this.$menu.html(a);return this},next:function(a){a=this.$menu.find(".active").removeClass("active").next();a.length||
+(a=b(this.$menu.find("li")[0]));a.addClass("active")},prev:function(a){a=this.$menu.find(".active").removeClass("active").prev();a.length||(a=this.$menu.find("li").last());a.addClass("active")},listen:function(){this.$element.on("blur",b.proxy(this.blur,this)).on("keypress",b.proxy(this.keypress,this)).on("keyup",b.proxy(this.keyup,this));if(b.browser.chrome||b.browser.webkit||b.browser.msie)this.$element.on("keydown",b.proxy(this.keydown,this));this.$menu.on("click",b.proxy(this.click,this)).on("mouseenter",
"li",b.proxy(this.mouseenter,this))},move:function(a){if(this.shown){switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault();this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()}},keydown:function(a){this.suppressKeyPressRepeat=!~b.inArray(a.keyCode,[40,38,9,13,27]);this.move(a)},keypress:function(a){this.suppressKeyPressRepeat||this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;
this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation();a.preventDefault()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation();a.preventDefault();this.select()},mouseenter:function(a){this.$menu.find(".active").removeClass("active");b(a.currentTarget).addClass("active")}};b.fn.typeahead=function(a){return this.each(function(){var c=b(this),e=c.data("typeahead"),d="object"==typeof a&&a;e||c.data("typeahead",
e=new g(this,d));if("string"==typeof a)e[a]()})};b.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1};b.fn.typeahead.Constructor=g;b(function(){b("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(a){var c=b(this);c.data("typeahead")||(a.preventDefault(),c.typeahead(c.data()))})})}(window.jQuery);
diff --git a/sitestatic/jquery-1.8.3.js b/sitestatic/jquery-1.8.3.js
index a86bf797..8c24ffc6 100644
--- a/sitestatic/jquery-1.8.3.js
+++ b/sitestatic/jquery-1.8.3.js
@@ -3660,1685 +3660,1685 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
}
});
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://sizzlejs.com/
- */
-(function( window, undefined ) {
-
-var cachedruns,
- assertGetIdNotName,
- Expr,
- getText,
- isXML,
- contains,
- compile,
- sortOrder,
- hasDuplicate,
- outermostContext,
-
- baseHasDuplicate = true,
- strundefined = "undefined",
-
- expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
-
- Token = String,
- document = window.document,
- docElem = document.documentElement,
- dirruns = 0,
- done = 0,
- pop = [].pop,
- push = [].push,
- slice = [].slice,
- // Use a stripped-down indexOf if a native one is unavailable
- indexOf = [].indexOf || function( elem ) {
- var i = 0,
- len = this.length;
- for ( ; i < len; i++ ) {
- if ( this[i] === elem ) {
- return i;
- }
- }
- return -1;
- },
-
- // Augment a function for special use by Sizzle
- markFunction = function( fn, value ) {
- fn[ expando ] = value == null || value;
- return fn;
- },
-
- createCache = function() {
- var cache = {},
- keys = [];
-
- return markFunction(function( key, value ) {
- // Only keep the most recent entries
- if ( keys.push( key ) > Expr.cacheLength ) {
- delete cache[ keys.shift() ];
- }
-
- // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)
- return (cache[ key + " " ] = value);
- }, cache );
- },
-
- classCache = createCache(),
- tokenCache = createCache(),
- compilerCache = createCache(),
-
- // Regex
-
- // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
- whitespace = "[\\x20\\t\\r\\n\\f]",
- // http://www.w3.org/TR/css3-syntax/#characters
- characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
-
- // Loosely modeled on CSS identifier characters
- // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
- // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = characterEncoding.replace( "w", "w#" ),
-
- // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
- operators = "([*^$|!~]?=)",
- attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
- "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
- // Prefer arguments not in parens/brackets,
- // then attribute selectors and non-pseudos (denoted by :),
- // then anything else
- // These preferences are here to reduce the number of selectors
- // needing tokenize in the PSEUDO preFilter
- pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
-
- // For matchExpr.POS and matchExpr.needsContext
- pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
- "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
-
- // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
- rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
- rpseudo = new RegExp( pseudos ),
-
- // Easily-parseable/retrievable ID or TAG or CLASS selectors
- rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
-
- rnot = /^:not/,
- rsibling = /[\x20\t\r\n\f]*[+~]/,
- rendsWithNot = /:not\($/,
-
- rheader = /h\d/i,
- rinputs = /input|select|textarea|button/i,
-
- rbackslash = /\\(?!\\)/g,
-
- matchExpr = {
- "ID": new RegExp( "^#(" + characterEncoding + ")" ),
- "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
- "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
- "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
- "ATTR": new RegExp( "^" + attributes ),
- "PSEUDO": new RegExp( "^" + pseudos ),
- "POS": new RegExp( pos, "i" ),
- "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- // For use in libraries implementing .is()
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
- },
-
- // Support
-
- // Used for testing something on an element
- assert = function( fn ) {
- var div = document.createElement("div");
-
- try {
- return fn( div );
- } catch (e) {
- return false;
- } finally {
- // release memory in IE
- div = null;
- }
- },
-
- // Check if getElementsByTagName("*") returns only elements
- assertTagNameNoComments = assert(function( div ) {
- div.appendChild( document.createComment("") );
- return !div.getElementsByTagName("*").length;
- }),
-
- // Check if getAttribute returns normalized href attributes
- assertHrefNotNormalized = assert(function( div ) {
- div.innerHTML = "<a href='#'></a>";
- return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
- div.firstChild.getAttribute("href") === "#";
- }),
-
- // Check if attributes should be retrieved by attribute nodes
- assertAttributes = assert(function( div ) {
- div.innerHTML = "<select></select>";
- var type = typeof div.lastChild.getAttribute("multiple");
- // IE8 returns a string for some attributes even when not present
- return type !== "boolean" && type !== "string";
- }),
-
- // Check if getElementsByClassName can be trusted
- assertUsableClassName = assert(function( div ) {
- // Opera can't find a second classname (in 9.6)
- div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
- if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
- return false;
- }
-
- // Safari 3.2 caches class attributes and doesn't catch changes
- div.lastChild.className = "e";
- return div.getElementsByClassName("e").length === 2;
- }),
-
- // Check if getElementById returns elements by name
- // Check if getElementsByName privileges form controls or returns elements by ID
- assertUsableName = assert(function( div ) {
- // Inject content
- div.id = expando + 0;
- div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
- docElem.insertBefore( div, docElem.firstChild );
-
- // Test
- var pass = document.getElementsByName &&
- // buggy browsers will return fewer than the correct 2
- document.getElementsByName( expando ).length === 2 +
- // buggy browsers will return more than the correct 0
- document.getElementsByName( expando + 0 ).length;
- assertGetIdNotName = !document.getElementById( expando );
-
- // Cleanup
- docElem.removeChild( div );
-
- return pass;
- });
-
-// If slice is not available, provide a backup
-try {
- slice.call( docElem.childNodes, 0 )[0].nodeType;
-} catch ( e ) {
- slice = function( i ) {
- var elem,
- results = [];
- for ( ; (elem = this[i]); i++ ) {
- results.push( elem );
- }
- return results;
- };
-}
-
-function Sizzle( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
- var match, elem, xml, m,
- nodeType = context.nodeType;
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- if ( nodeType !== 1 && nodeType !== 9 ) {
- return [];
- }
-
- xml = isXML( context );
-
- if ( !xml && !seed ) {
- if ( (match = rquickExpr.exec( selector )) ) {
- // Speed-up: Sizzle("#ID")
- if ( (m = match[1]) ) {
- if ( nodeType === 9 ) {
- elem = context.getElementById( m );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE, Opera, and Webkit return items
- // by name instead of ID
- if ( elem.id === m ) {
- results.push( elem );
- return results;
- }
- } else {
- return results;
- }
- } else {
- // Context is not a document
- if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
- contains( context, elem ) && elem.id === m ) {
- results.push( elem );
- return results;
- }
- }
-
- // Speed-up: Sizzle("TAG")
- } else if ( match[2] ) {
- push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
- return results;
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
- push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
- return results;
- }
- }
- }
-
- // All others
- return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
-}
-
-Sizzle.matches = function( expr, elements ) {
- return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
- return Sizzle( expr, null, null, [ elem ] ).length > 0;
-};
-
-// Returns a function to use in pseudos for input types
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for buttons
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for positionals
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
- var node,
- ret = "",
- i = 0,
- nodeType = elem.nodeType;
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent for elements
- // innerText usage removed for consistency of new lines (see #11153)
- if ( typeof elem.textContent === "string" ) {
- return elem.textContent;
- } else {
- // Traverse its children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- // Do not include comment or processing instruction nodes
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( ; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- ret += getText( node );
- }
- }
- return ret;
-};
-
-isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-// Element contains another
-contains = Sizzle.contains = docElem.contains ?
- function( a, b ) {
- var adown = a.nodeType === 9 ? a.documentElement : a,
- bup = b && b.parentNode;
- return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
- } :
- docElem.compareDocumentPosition ?
- function( a, b ) {
- return b && !!( a.compareDocumentPosition( b ) & 16 );
- } :
- function( a, b ) {
- while ( (b = b.parentNode) ) {
- if ( b === a ) {
- return true;
- }
- }
- return false;
- };
-
-Sizzle.attr = function( elem, name ) {
- var val,
- xml = isXML( elem );
-
- if ( !xml ) {
- name = name.toLowerCase();
- }
- if ( (val = Expr.attrHandle[ name ]) ) {
- return val( elem );
- }
- if ( xml || assertAttributes ) {
- return elem.getAttribute( name );
- }
- val = elem.getAttributeNode( name );
- return val ?
- typeof elem[ name ] === "boolean" ?
- elem[ name ] ? name : null :
- val.specified ? val.value : null :
- null;
-};
-
-Expr = Sizzle.selectors = {
-
- // Can be adjusted by the user
- cacheLength: 50,
-
- createPseudo: markFunction,
-
- match: matchExpr,
-
- // IE6/7 return a modified href
- attrHandle: assertHrefNotNormalized ?
- {} :
- {
- "href": function( elem ) {
- return elem.getAttribute( "href", 2 );
- },
- "type": function( elem ) {
- return elem.getAttribute("type");
- }
- },
-
- find: {
- "ID": assertGetIdNotName ?
- function( id, context, xml ) {
- if ( typeof context.getElementById !== strundefined && !xml ) {
- var m = context.getElementById( id );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- } :
- function( id, context, xml ) {
- if ( typeof context.getElementById !== strundefined && !xml ) {
- var m = context.getElementById( id );
-
- return m ?
- m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
- [m] :
- undefined :
- [];
- }
- },
-
- "TAG": assertTagNameNoComments ?
- function( tag, context ) {
- if ( typeof context.getElementsByTagName !== strundefined ) {
- return context.getElementsByTagName( tag );
- }
- } :
- function( tag, context ) {
- var results = context.getElementsByTagName( tag );
-
- // Filter out possible comments
- if ( tag === "*" ) {
- var elem,
- tmp = [],
- i = 0;
-
- for ( ; (elem = results[i]); i++ ) {
- if ( elem.nodeType === 1 ) {
- tmp.push( elem );
- }
- }
-
- return tmp;
- }
- return results;
- },
-
- "NAME": assertUsableName && function( tag, context ) {
- if ( typeof context.getElementsByName !== strundefined ) {
- return context.getElementsByName( name );
- }
- },
-
- "CLASS": assertUsableClassName && function( className, context, xml ) {
- if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
- return context.getElementsByClassName( className );
- }
- }
- },
-
- relative: {
- ">": { dir: "parentNode", first: true },
- " ": { dir: "parentNode" },
- "+": { dir: "previousSibling", first: true },
- "~": { dir: "previousSibling" }
- },
-
- preFilter: {
- "ATTR": function( match ) {
- match[1] = match[1].replace( rbackslash, "" );
-
- // Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
- }
-
- return match.slice( 0, 4 );
- },
-
- "CHILD": function( match ) {
- /* matches from matchExpr["CHILD"]
- 1 type (only|nth|...)
- 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
- 3 xn-component of xn+y argument ([+-]?\d*n|)
- 4 sign of xn-component
- 5 x of xn-component
- 6 sign of y-component
- 7 y of y-component
- */
- match[1] = match[1].toLowerCase();
-
- if ( match[1] === "nth" ) {
- // nth-child requires argument
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // numeric x and y parameters for Expr.filter.CHILD
- // remember that false/true cast respectively to 0/1
- match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
- match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
-
- // other types prohibit arguments
- } else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- return match;
- },
-
- "PSEUDO": function( match ) {
- var unquoted, excess;
- if ( matchExpr["CHILD"].test( match[0] ) ) {
- return null;
- }
-
- if ( match[3] ) {
- match[2] = match[3];
- } else if ( (unquoted = match[4]) ) {
- // Only check arguments that contain a pseudo
- if ( rpseudo.test(unquoted) &&
- // Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
- // advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
- // excess is a negative index
- unquoted = unquoted.slice( 0, excess );
- match[0] = match[0].slice( 0, excess );
- }
- match[2] = unquoted;
- }
-
- // Return only captures needed by the pseudo filter method (type and argument)
- return match.slice( 0, 3 );
- }
- },
-
- filter: {
- "ID": assertGetIdNotName ?
- function( id ) {
- id = id.replace( rbackslash, "" );
- return function( elem ) {
- return elem.getAttribute("id") === id;
- };
- } :
- function( id ) {
- id = id.replace( rbackslash, "" );
- return function( elem ) {
- var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
- return node && node.value === id;
- };
- },
-
- "TAG": function( nodeName ) {
- if ( nodeName === "*" ) {
- return function() { return true; };
- }
- nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
-
- return function( elem ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
- };
- },
-
- "CLASS": function( className ) {
- var pattern = classCache[ expando ][ className + " " ];
-
- return pattern ||
- (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
- classCache( className, function( elem ) {
- return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
- });
- },
-
- "ATTR": function( name, operator, check ) {
- return function( elem, context ) {
- var result = Sizzle.attr( elem, name );
-
- if ( result == null ) {
- return operator === "!=";
- }
- if ( !operator ) {
- return true;
- }
-
- result += "";
-
- return operator === "=" ? result === check :
- operator === "!=" ? result !== check :
- operator === "^=" ? check && result.indexOf( check ) === 0 :
- operator === "*=" ? check && result.indexOf( check ) > -1 :
- operator === "$=" ? check && result.substr( result.length - check.length ) === check :
- operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
- operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
- false;
- };
- },
-
- "CHILD": function( type, argument, first, last ) {
-
- if ( type === "nth" ) {
- return function( elem ) {
- var node, diff,
- parent = elem.parentNode;
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- if ( parent ) {
- diff = 0;
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- diff++;
- if ( elem === node ) {
- break;
- }
- }
- }
- }
-
- // Incorporate the offset (or cast to NaN), then check against cycle size
- diff -= last;
- return diff === first || ( diff % first === 0 && diff / first >= 0 );
- };
- }
-
- return function( elem ) {
- var node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- /* falls through */
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
- }
- };
- },
-
- "PSEUDO": function( pseudo, argument ) {
- // pseudo-class names are case-insensitive
- // http://www.w3.org/TR/selectors/#pseudo-classes
- // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
- // Remember that setFilters inherits from pseudos
- var args,
- fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
- Sizzle.error( "unsupported pseudo: " + pseudo );
-
- // The user may use createPseudo to indicate that
- // arguments are needed to create the filter function
- // just as Sizzle does
- if ( fn[ expando ] ) {
- return fn( argument );
- }
-
- // But maintain support for old signatures
- if ( fn.length > 1 ) {
- args = [ pseudo, pseudo, "", argument ];
- return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
- var idx,
- matched = fn( seed, argument ),
- i = matched.length;
- while ( i-- ) {
- idx = indexOf.call( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
- }
- }) :
- function( elem ) {
- return fn( elem, 0, args );
- };
- }
-
- return fn;
- }
- },
-
- pseudos: {
- "not": markFunction(function( selector ) {
- // Trim the selector passed to compile
- // to avoid treating leading and trailing
- // spaces as combinators
- var input = [],
- results = [],
- matcher = compile( selector.replace( rtrim, "$1" ) );
-
- return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
- var elem,
- unmatched = matcher( seed, null, xml, [] ),
- i = seed.length;
-
- // Match elements unmatched by `matcher`
- while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
- matcher( input, null, xml, results );
- return !results.pop();
- };
- }),
-
- "has": markFunction(function( selector ) {
- return function( elem ) {
- return Sizzle( selector, elem ).length > 0;
- };
- }),
-
- "contains": markFunction(function( text ) {
- return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
- };
- }),
-
- "enabled": function( elem ) {
- return elem.disabled === false;
- },
-
- "disabled": function( elem ) {
- return elem.disabled === true;
- },
-
- "checked": function( elem ) {
- // In CSS3, :checked should return both checked and selected elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
- },
-
- "selected": function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- "parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
- },
-
- "empty": function( elem ) {
- // http://www.w3.org/TR/selectors/#empty-pseudo
- // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
- // not comment, processing instructions, or others
- // Thanks to Diego Perini for the nodeName shortcut
- // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
- var nodeType;
- elem = elem.firstChild;
- while ( elem ) {
- if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
- return false;
- }
- elem = elem.nextSibling;
- }
- return true;
- },
-
- "header": function( elem ) {
- return rheader.test( elem.nodeName );
- },
-
- "text": function( elem ) {
- var type, attr;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" &&
- (type = elem.type) === "text" &&
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
- },
-
- // Input types
- "radio": createInputPseudo("radio"),
- "checkbox": createInputPseudo("checkbox"),
- "file": createInputPseudo("file"),
- "password": createInputPseudo("password"),
- "image": createInputPseudo("image"),
-
- "submit": createButtonPseudo("submit"),
- "reset": createButtonPseudo("reset"),
-
- "button": function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === "button" || name === "button";
- },
-
- "input": function( elem ) {
- return rinputs.test( elem.nodeName );
- },
-
- "focus": function( elem ) {
- var doc = elem.ownerDocument;
- return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
- },
-
- "active": function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- },
-
- // Positional types
- "first": createPositionalPseudo(function() {
- return [ 0 ];
- }),
-
- "last": createPositionalPseudo(function( matchIndexes, length ) {
- return [ length - 1 ];
- }),
-
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ argument < 0 ? argument + length : argument ];
- }),
-
- "even": createPositionalPseudo(function( matchIndexes, length ) {
- for ( var i = 0; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
- for ( var i = 1; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- })
- }
-};
-
-function siblingCheck( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
-}
-
-sortOrder = docElem.compareDocumentPosition ?
- function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
- a.compareDocumentPosition :
- a.compareDocumentPosition(b) & 4
- ) ? -1 : 1;
- } :
- function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
-// Always assume the presence of duplicates if sort doesn't
-// pass them to our comparison function (as in Google Chrome).
-[0, 0].sort( sortOrder );
-baseHasDuplicate = !hasDuplicate;
-
-// Document sorting and removing duplicates
-Sizzle.uniqueSort = function( results ) {
- var elem,
- duplicates = [],
- i = 1,
- j = 0;
-
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( ; (elem = results[i]); i++ ) {
- if ( elem === results[ i - 1 ] ) {
- j = duplicates.push( i );
- }
- }
- while ( j-- ) {
- results.splice( duplicates[ j ], 1 );
- }
- }
-
- return results;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-function tokenize( selector, parseOnly ) {
- var matched, match, tokens, type,
- soFar, groups, preFilters,
- cached = tokenCache[ expando ][ selector + " " ];
-
- if ( cached ) {
- return parseOnly ? 0 : cached.slice( 0 );
- }
-
- soFar = selector;
- groups = [];
- preFilters = Expr.preFilter;
-
- while ( soFar ) {
-
- // Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
- if ( match ) {
- // Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
- }
- groups.push( tokens = [] );
- }
-
- matched = false;
-
- // Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
- tokens.push( matched = new Token( match.shift() ) );
- soFar = soFar.slice( matched.length );
-
- // Cast descendant combinators to space
- matched.type = match[0].replace( rtrim, " " );
- }
-
- // Filters
- for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- (match = preFilters[ type ]( match ))) ) {
-
- tokens.push( matched = new Token( match.shift() ) );
- soFar = soFar.slice( matched.length );
- matched.type = type;
- matched.matches = match;
- }
- }
-
- if ( !matched ) {
- break;
- }
- }
-
- // Return the length of the invalid excess
- // if we're just parsing
- // Otherwise, throw an error or return tokens
- return parseOnly ?
- soFar.length :
- soFar ?
- Sizzle.error( selector ) :
- // Cache the tokens
- tokenCache( selector, groups ).slice( 0 );
-}
-
-function addCombinator( matcher, combinator, base ) {
- var dir = combinator.dir,
- checkNonElements = base && combinator.dir === "parentNode",
- doneName = done++;
-
- return combinator.first ?
- // Check against closest ancestor/preceding element
- function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- return matcher( elem, context, xml );
- }
- }
- } :
-
- // Check against all ancestor/preceding elements
- function( elem, context, xml ) {
- // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
- if ( !xml ) {
- var cache,
- dirkey = dirruns + " " + doneName + " ",
- cachedkey = dirkey + cachedruns;
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- if ( (cache = elem[ expando ]) === cachedkey ) {
- return elem.sizset;
- } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
- if ( elem.sizset ) {
- return elem;
- }
- } else {
- elem[ expando ] = cachedkey;
- if ( matcher( elem, context, xml ) ) {
- elem.sizset = true;
- return elem;
- }
- elem.sizset = false;
- }
- }
- }
- } else {
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- if ( matcher( elem, context, xml ) ) {
- return elem;
- }
- }
- }
- }
- };
-}
-
-function elementMatcher( matchers ) {
- return matchers.length > 1 ?
- function( elem, context, xml ) {
- var i = matchers.length;
- while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
- return false;
- }
- }
- return true;
- } :
- matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
- var elem,
- newUnmatched = [],
- i = 0,
- len = unmatched.length,
- mapped = map != null;
-
- for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
- if ( !filter || filter( elem, context, xml ) ) {
- newUnmatched.push( elem );
- if ( mapped ) {
- map.push( i );
- }
- }
- }
- }
-
- return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
- if ( postFilter && !postFilter[ expando ] ) {
- postFilter = setMatcher( postFilter );
- }
- if ( postFinder && !postFinder[ expando ] ) {
- postFinder = setMatcher( postFinder, postSelector );
- }
- return markFunction(function( seed, results, context, xml ) {
- var temp, i, elem,
- preMap = [],
- postMap = [],
- preexisting = results.length,
-
- // Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
- // Prefilter to get matcher input, preserving a map for seed-results synchronization
- matcherIn = preFilter && ( seed || !selector ) ?
- condense( elems, preMap, preFilter, context, xml ) :
- elems,
-
- matcherOut = matcher ?
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
- // ...intermediate processing is necessary
- [] :
-
- // ...otherwise use results directly
- results :
- matcherIn;
-
- // Find primary matches
- if ( matcher ) {
- matcher( matcherIn, matcherOut, context, xml );
- }
-
- // Apply postFilter
- if ( postFilter ) {
- temp = condense( matcherOut, postMap );
- postFilter( temp, [], context, xml );
-
- // Un-match failing elements by moving them back to matcherIn
- i = temp.length;
- while ( i-- ) {
- if ( (elem = temp[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
- }
- }
- }
-
- if ( seed ) {
- if ( postFinder || preFilter ) {
- if ( postFinder ) {
- // Get the final matcherOut by condensing this intermediate into postFinder contexts
- temp = [];
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
- // Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
- }
- }
- postFinder( null, (matcherOut = []), temp, xml );
- }
-
- // Move matched elements from seed to results to keep them synchronized
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
- seed[temp] = !(results[temp] = elem);
- }
- }
- }
-
- // Add elements to results, through postFinder if defined
- } else {
- matcherOut = condense(
- matcherOut === results ?
- matcherOut.splice( preexisting, matcherOut.length ) :
- matcherOut
- );
- if ( postFinder ) {
- postFinder( null, results, matcherOut, xml );
- } else {
- push.apply( results, matcherOut );
- }
- }
- });
-}
-
-function matcherFromTokens( tokens ) {
- var checkContext, matcher, j,
- len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
- i = leadingRelative ? 1 : 0,
-
- // The foundational matcher ensures that elements are reachable from top-level context(s)
- matchContext = addCombinator( function( elem ) {
- return elem === checkContext;
- }, implicitRelative, true ),
- matchAnyContext = addCombinator( function( elem ) {
- return indexOf.call( checkContext, elem ) > -1;
- }, implicitRelative, true ),
- matchers = [ function( elem, context, xml ) {
- return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
- matchContext( elem, context, xml ) :
- matchAnyContext( elem, context, xml ) );
- } ];
-
- for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
- } else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
- // Return special upon seeing a positional matcher
- if ( matcher[ expando ] ) {
- // Find the next relative operator (if any) for proper handling
- j = ++i;
- for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
- break;
- }
- }
- return setMatcher(
- i > 1 && elementMatcher( matchers ),
- i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
- matcher,
- i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
- j < len && tokens.join("")
- );
- }
- matchers.push( matcher );
- }
- }
-
- return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
- var bySet = setMatchers.length > 0,
- byElement = elementMatchers.length > 0,
- superMatcher = function( seed, context, xml, results, expandContext ) {
- var elem, j, matcher,
- setMatched = [],
- matchedCount = 0,
- i = "0",
- unmatched = seed && [],
- outermost = expandContext != null,
- contextBackup = outermostContext,
- // We must always have either seed elements or context
- elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
- // Nested matchers should use non-integer dirruns
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
-
- if ( outermost ) {
- outermostContext = context !== document && context;
- cachedruns = superMatcher.el;
- }
-
- // Add elements passing elementMatchers directly to results
- for ( ; (elem = elems[i]) != null; i++ ) {
- if ( byElement && elem ) {
- for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
- if ( matcher( elem, context, xml ) ) {
- results.push( elem );
- break;
- }
- }
- if ( outermost ) {
- dirruns = dirrunsUnique;
- cachedruns = ++superMatcher.el;
- }
- }
-
- // Track unmatched elements for set filters
- if ( bySet ) {
- // They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
- matchedCount--;
- }
-
- // Lengthen the array for every element, matched or not
- if ( seed ) {
- unmatched.push( elem );
- }
- }
- }
-
- // Apply set filters to unmatched elements
- matchedCount += i;
- if ( bySet && i !== matchedCount ) {
- for ( j = 0; (matcher = setMatchers[j]); j++ ) {
- matcher( unmatched, setMatched, context, xml );
- }
-
- if ( seed ) {
- // Reintegrate element matches to eliminate the need for sorting
- if ( matchedCount > 0 ) {
- while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
- }
- }
- }
-
- // Discard index placeholder values to get only actual matches
- setMatched = condense( setMatched );
- }
-
- // Add matches to results
- push.apply( results, setMatched );
-
- // Seedless set matches succeeding multiple successful matchers stipulate sorting
- if ( outermost && !seed && setMatched.length > 0 &&
- ( matchedCount + setMatchers.length ) > 1 ) {
-
- Sizzle.uniqueSort( results );
- }
- }
-
- // Override manipulation of globals by nested matchers
- if ( outermost ) {
- dirruns = dirrunsUnique;
- outermostContext = contextBackup;
- }
-
- return unmatched;
- };
-
- superMatcher.el = 0;
- return bySet ?
- markFunction( superMatcher ) :
- superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
- var i,
- setMatchers = [],
- elementMatchers = [],
- cached = compilerCache[ expando ][ selector + " " ];
-
- if ( !cached ) {
- // Generate a function of recursive functions that can be used to check each element
- if ( !group ) {
- group = tokenize( selector );
- }
- i = group.length;
- while ( i-- ) {
- cached = matcherFromTokens( group[i] );
- if ( cached[ expando ] ) {
- setMatchers.push( cached );
- } else {
- elementMatchers.push( cached );
- }
- }
-
- // Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
- }
- return cached;
-};
-
-function multipleContexts( selector, contexts, results ) {
- var i = 0,
- len = contexts.length;
- for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
- }
- return results;
-}
-
-function select( selector, context, results, seed, xml ) {
- var i, tokens, token, type, find,
- match = tokenize( selector ),
- j = match.length;
-
- if ( !seed ) {
- // Try to minimize operations if there is only one group
- if ( match.length === 1 ) {
-
- // Take a shortcut and set the context if the root selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && !xml &&
- Expr.relative[ tokens[1].type ] ) {
-
- context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
- if ( !context ) {
- return results;
- }
-
- selector = selector.slice( tokens.shift().length );
- }
-
- // Fetch a seed set for right-to-left matching
- for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
- token = tokens[i];
-
- // Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
- break;
- }
- if ( (find = Expr.find[ type ]) ) {
- // Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( rbackslash, "" ),
- rsibling.test( tokens[0].type ) && context.parentNode || context,
- xml
- )) ) {
-
- // If seed is empty or no tokens remain, we can return early
- tokens.splice( i, 1 );
- selector = seed.length && tokens.join("");
- if ( !selector ) {
- push.apply( results, slice.call( seed, 0 ) );
- return results;
- }
-
- break;
- }
- }
- }
- }
- }
-
- // Compile and execute a filtering function
- // Provide `match` to avoid retokenization if we modified the selector above
- compile( selector, match )(
- seed,
- context,
- xml,
- results,
- rsibling.test( selector )
- );
- return results;
-}
-
-if ( document.querySelectorAll ) {
- (function() {
- var disconnectedMatch,
- oldSelect = select,
- rescape = /'|\\/g,
- rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
-
- // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA
- // A support test would require too much code (would include document ready)
- rbuggyQSA = [ ":focus" ],
-
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
- // A support test would require too much code (would include document ready)
- // just skip matchesSelector for :active
- rbuggyMatches = [ ":active" ],
- matches = docElem.matchesSelector ||
- docElem.mozMatchesSelector ||
- docElem.webkitMatchesSelector ||
- docElem.oMatchesSelector ||
- docElem.msMatchesSelector;
-
- // Build QSA regex
- // Regex strategy adopted from Diego Perini
- assert(function( div ) {
- // Select is set to empty string on purpose
- // This is to test IE's treatment of not explictly
- // setting a boolean content attribute,
- // since its presence should be enough
- // http://bugs.jquery.com/ticket/12359
- div.innerHTML = "<select><option selected=''></option></select>";
-
- // IE8 - Some boolean attributes are not treated correctly
- if ( !div.querySelectorAll("[selected]").length ) {
- rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
- }
-
- // Webkit/Opera - :checked should return selected option elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- // IE8 throws error here (do not put tests after this one)
- if ( !div.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
- }
- });
-
- assert(function( div ) {
-
- // Opera 10-12/IE9 - ^= $= *= and empty values
- // Should not select anything
- div.innerHTML = "<p test=''></p>";
- if ( div.querySelectorAll("[test^='']").length ) {
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
- }
-
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
- // IE8 throws error here (do not put tests after this one)
- div.innerHTML = "<input type='hidden'/>";
- if ( !div.querySelectorAll(":enabled").length ) {
- rbuggyQSA.push(":enabled", ":disabled");
- }
- });
-
- // rbuggyQSA always contains :focus, so no need for a length check
- rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
-
- select = function( selector, context, results, seed, xml ) {
- // Only use querySelectorAll when not filtering,
- // when this is not xml,
- // and when no QSA bugs apply
- if ( !seed && !xml && !rbuggyQSA.test( selector ) ) {
- var groups, i,
- old = true,
- nid = expando,
- newContext = context,
- newSelector = context.nodeType === 9 && selector;
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- groups = tokenize( selector );
-
- if ( (old = context.getAttribute("id")) ) {
- nid = old.replace( rescape, "\\$&" );
- } else {
- context.setAttribute( "id", nid );
- }
- nid = "[id='" + nid + "'] ";
-
- i = groups.length;
- while ( i-- ) {
- groups[i] = nid + groups[i].join("");
- }
- newContext = rsibling.test( selector ) && context.parentNode || context;
- newSelector = groups.join(",");
- }
-
- if ( newSelector ) {
- try {
- push.apply( results, slice.call( newContext.querySelectorAll(
- newSelector
- ), 0 ) );
- return results;
- } catch(qsaError) {
- } finally {
- if ( !old ) {
- context.removeAttribute("id");
- }
- }
- }
- }
-
- return oldSelect( selector, context, results, seed, xml );
- };
-
- if ( matches ) {
- assert(function( div ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9)
- disconnectedMatch = matches.call( div, "div" );
-
- // This should fail with an exception
- // Gecko does not error, returns false instead
- try {
- matches.call( div, "[test!='']:sizzle" );
- rbuggyMatches.push( "!=", pseudos );
- } catch ( e ) {}
- });
-
- // rbuggyMatches always contains :active and :focus, so no need for a length check
- rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
-
- Sizzle.matchesSelector = function( elem, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
-
- // rbuggyMatches always contains :active, so no need for an existence check
- if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {
- try {
- var ret = matches.call( elem, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
- return ret;
- }
- } catch(e) {}
- }
-
- return Sizzle( expr, null, null, [ elem ] ).length > 0;
- };
- }
- })();
-}
-
-// Deprecated
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Back-compat
-function setFilters() {}
-Expr.filters = setFilters.prototype = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://sizzlejs.com/
+ */
+(function( window, undefined ) {
+
+var cachedruns,
+ assertGetIdNotName,
+ Expr,
+ getText,
+ isXML,
+ contains,
+ compile,
+ sortOrder,
+ hasDuplicate,
+ outermostContext,
+
+ baseHasDuplicate = true,
+ strundefined = "undefined",
+
+ expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
+
+ Token = String,
+ document = window.document,
+ docElem = document.documentElement,
+ dirruns = 0,
+ done = 0,
+ pop = [].pop,
+ push = [].push,
+ slice = [].slice,
+ // Use a stripped-down indexOf if a native one is unavailable
+ indexOf = [].indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ // Augment a function for special use by Sizzle
+ markFunction = function( fn, value ) {
+ fn[ expando ] = value == null || value;
+ return fn;
+ },
+
+ createCache = function() {
+ var cache = {},
+ keys = [];
+
+ return markFunction(function( key, value ) {
+ // Only keep the most recent entries
+ if ( keys.push( key ) > Expr.cacheLength ) {
+ delete cache[ keys.shift() ];
+ }
+
+ // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)
+ return (cache[ key + " " ] = value);
+ }, cache );
+ },
+
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+
+ // Regex
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ operators = "([*^$|!~]?=)",
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments not in parens/brackets,
+ // then attribute selectors and non-pseudos (denoted by :),
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
+
+ // For matchExpr.POS and matchExpr.needsContext
+ pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
+ "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
+ rpseudo = new RegExp( pseudos ),
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
+
+ rnot = /^:not/,
+ rsibling = /[\x20\t\r\n\f]*[+~]/,
+ rendsWithNot = /:not\($/,
+
+ rheader = /h\d/i,
+ rinputs = /input|select|textarea|button/i,
+
+ rbackslash = /\\(?!\\)/g,
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "POS": new RegExp( pos, "i" ),
+ "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ // For use in libraries implementing .is()
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
+ },
+
+ // Support
+
+ // Used for testing something on an element
+ assert = function( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // release memory in IE
+ div = null;
+ }
+ },
+
+ // Check if getElementsByTagName("*") returns only elements
+ assertTagNameNoComments = assert(function( div ) {
+ div.appendChild( document.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ }),
+
+ // Check if getAttribute returns normalized href attributes
+ assertHrefNotNormalized = assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
+ div.firstChild.getAttribute("href") === "#";
+ }),
+
+ // Check if attributes should be retrieved by attribute nodes
+ assertAttributes = assert(function( div ) {
+ div.innerHTML = "<select></select>";
+ var type = typeof div.lastChild.getAttribute("multiple");
+ // IE8 returns a string for some attributes even when not present
+ return type !== "boolean" && type !== "string";
+ }),
+
+ // Check if getElementsByClassName can be trusted
+ assertUsableClassName = assert(function( div ) {
+ // Opera can't find a second classname (in 9.6)
+ div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
+ if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
+ return false;
+ }
+
+ // Safari 3.2 caches class attributes and doesn't catch changes
+ div.lastChild.className = "e";
+ return div.getElementsByClassName("e").length === 2;
+ }),
+
+ // Check if getElementById returns elements by name
+ // Check if getElementsByName privileges form controls or returns elements by ID
+ assertUsableName = assert(function( div ) {
+ // Inject content
+ div.id = expando + 0;
+ div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
+ docElem.insertBefore( div, docElem.firstChild );
+
+ // Test
+ var pass = document.getElementsByName &&
+ // buggy browsers will return fewer than the correct 2
+ document.getElementsByName( expando ).length === 2 +
+ // buggy browsers will return more than the correct 0
+ document.getElementsByName( expando + 0 ).length;
+ assertGetIdNotName = !document.getElementById( expando );
+
+ // Cleanup
+ docElem.removeChild( div );
+
+ return pass;
+ });
+
+// If slice is not available, provide a backup
+try {
+ slice.call( docElem.childNodes, 0 )[0].nodeType;
+} catch ( e ) {
+ slice = function( i ) {
+ var elem,
+ results = [];
+ for ( ; (elem = this[i]); i++ ) {
+ results.push( elem );
+ }
+ return results;
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+ var match, elem, xml, m,
+ nodeType = context.nodeType;
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( nodeType !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ xml = isXML( context );
+
+ if ( !xml && !seed ) {
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
+ push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
+ return results;
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
+}
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ return Sizzle( expr, null, null, [ elem ] ).length > 0;
+};
+
+// Returns a function to use in pseudos for input types
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+// Returns a function to use in pseudos for buttons
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+// Returns a function to use in pseudos for positionals
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( nodeType ) {
+ if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ }
+ return ret;
+};
+
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Element contains another
+contains = Sizzle.contains = docElem.contains ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
+ } :
+ docElem.compareDocumentPosition ?
+ function( a, b ) {
+ return b && !!( a.compareDocumentPosition( b ) & 16 );
+ } :
+ function( a, b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+Sizzle.attr = function( elem, name ) {
+ var val,
+ xml = isXML( elem );
+
+ if ( !xml ) {
+ name = name.toLowerCase();
+ }
+ if ( (val = Expr.attrHandle[ name ]) ) {
+ return val( elem );
+ }
+ if ( xml || assertAttributes ) {
+ return elem.getAttribute( name );
+ }
+ val = elem.getAttributeNode( name );
+ return val ?
+ typeof elem[ name ] === "boolean" ?
+ elem[ name ] ? name : null :
+ val.specified ? val.value : null :
+ null;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ // IE6/7 return a modified href
+ attrHandle: assertHrefNotNormalized ?
+ {} :
+ {
+ "href": function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ },
+ "type": function( elem ) {
+ return elem.getAttribute("type");
+ }
+ },
+
+ find: {
+ "ID": assertGetIdNotName ?
+ function( id, context, xml ) {
+ if ( typeof context.getElementById !== strundefined && !xml ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ } :
+ function( id, context, xml ) {
+ if ( typeof context.getElementById !== strundefined && !xml ) {
+ var m = context.getElementById( id );
+
+ return m ?
+ m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
+ [m] :
+ undefined :
+ [];
+ }
+ },
+
+ "TAG": assertTagNameNoComments ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ var elem,
+ tmp = [],
+ i = 0;
+
+ for ( ; (elem = results[i]); i++ ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ },
+
+ "NAME": assertUsableName && function( tag, context ) {
+ if ( typeof context.getElementsByName !== strundefined ) {
+ return context.getElementsByName( name );
+ }
+ },
+
+ "CLASS": assertUsableClassName && function( className, context, xml ) {
+ if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
+ return context.getElementsByClassName( className );
+ }
+ }
+ },
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( rbackslash, "" );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 3 xn-component of xn+y argument ([+-]?\d*n|)
+ 4 sign of xn-component
+ 5 x of xn-component
+ 6 sign of y-component
+ 7 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1] === "nth" ) {
+ // nth-child requires argument
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
+ match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var unquoted, excess;
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ if ( match[3] ) {
+ match[2] = match[3];
+ } else if ( (unquoted = match[4]) ) {
+ // Only check arguments that contain a pseudo
+ if ( rpseudo.test(unquoted) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ unquoted = unquoted.slice( 0, excess );
+ match[0] = match[0].slice( 0, excess );
+ }
+ match[2] = unquoted;
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+ "ID": assertGetIdNotName ?
+ function( id ) {
+ id = id.replace( rbackslash, "" );
+ return function( elem ) {
+ return elem.getAttribute("id") === id;
+ };
+ } :
+ function( id ) {
+ id = id.replace( rbackslash, "" );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === id;
+ };
+ },
+
+ "TAG": function( nodeName ) {
+ if ( nodeName === "*" ) {
+ return function() { return true; };
+ }
+ nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
+
+ return function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ expando ][ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem, context ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.substr( result.length - check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, argument, first, last ) {
+
+ if ( type === "nth" ) {
+ return function( elem ) {
+ var node, diff,
+ parent = elem.parentNode;
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ if ( parent ) {
+ diff = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ diff++;
+ if ( elem === node ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset (or cast to NaN), then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ };
+ }
+
+ return function( elem ) {
+ var node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ /* falls through */
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ var nodeType;
+ elem = elem.firstChild;
+ while ( elem ) {
+ if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
+ return false;
+ }
+ elem = elem.nextSibling;
+ }
+ return true;
+ },
+
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "text": function( elem ) {
+ var type, attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ (type = elem.type) === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
+ },
+
+ // Input types
+ "radio": createInputPseudo("radio"),
+ "checkbox": createInputPseudo("checkbox"),
+ "file": createInputPseudo("file"),
+ "password": createInputPseudo("password"),
+ "image": createInputPseudo("image"),
+
+ "submit": createButtonPseudo("submit"),
+ "reset": createButtonPseudo("reset"),
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "focus": function( elem ) {
+ var doc = elem.ownerDocument;
+ return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ "active": function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ },
+
+ // Positional types
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ for ( var i = 0; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ for ( var i = 1; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+function siblingCheck( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+}
+
+sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
+ a.compareDocumentPosition :
+ a.compareDocumentPosition(b) & 4
+ ) ? -1 : 1;
+ } :
+ function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+// Always assume the presence of duplicates if sort doesn't
+// pass them to our comparison function (as in Google Chrome).
+[0, 0].sort( sortOrder );
+baseHasDuplicate = !hasDuplicate;
+
+// Document sorting and removing duplicates
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ i = 1,
+ j = 0;
+
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( ; (elem = results[i]); i++ ) {
+ if ( elem === results[ i - 1 ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ expando ][ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ tokens.push( matched = new Token( match.shift() ) );
+ soFar = soFar.slice( matched.length );
+
+ // Cast descendant combinators to space
+ matched.type = match[0].replace( rtrim, " " );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+
+ tokens.push( matched = new Token( match.shift() ) );
+ soFar = soFar.slice( matched.length );
+ matched.type = type;
+ matched.matches = match;
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && combinator.dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( !xml ) {
+ var cache,
+ dirkey = dirruns + " " + doneName + " ",
+ cachedkey = dirkey + cachedruns;
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ if ( (cache = elem[ expando ]) === cachedkey ) {
+ return elem.sizset;
+ } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
+ if ( elem.sizset ) {
+ return elem;
+ }
+ } else {
+ elem[ expando ] = cachedkey;
+ if ( matcher( elem, context, xml ) ) {
+ elem.sizset = true;
+ return elem;
+ }
+ elem.sizset = false;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ if ( matcher( elem, context, xml ) ) {
+ return elem;
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && tokens.join("")
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Nested matchers should use non-integer dirruns
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = superMatcher.el;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++superMatcher.el;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ for ( j = 0; (matcher = setMatchers[j]); j++ ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ superMatcher.el = 0;
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ expando ][ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed, xml ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector ),
+ j = match.length;
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && !xml &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
+ if ( !context ) {
+ return results;
+ }
+
+ selector = selector.slice( tokens.shift().length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( rbackslash, "" ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context,
+ xml
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && tokens.join("");
+ if ( !selector ) {
+ push.apply( results, slice.call( seed, 0 ) );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ xml,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+if ( document.querySelectorAll ) {
+ (function() {
+ var disconnectedMatch,
+ oldSelect = select,
+ rescape = /'|\\/g,
+ rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
+
+ // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA
+ // A support test would require too much code (would include document ready)
+ rbuggyQSA = [ ":focus" ],
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ // A support test would require too much code (would include document ready)
+ // just skip matchesSelector for :active
+ rbuggyMatches = [ ":active" ],
+ matches = docElem.matchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.webkitMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector;
+
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explictly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select><option selected=''></option></select>";
+
+ // IE8 - Some boolean attributes are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here (do not put tests after this one)
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Opera 10-12/IE9 - ^= $= *= and empty values
+ // Should not select anything
+ div.innerHTML = "<p test=''></p>";
+ if ( div.querySelectorAll("[test^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here (do not put tests after this one)
+ div.innerHTML = "<input type='hidden'/>";
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push(":enabled", ":disabled");
+ }
+ });
+
+ // rbuggyQSA always contains :focus, so no need for a length check
+ rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
+
+ select = function( selector, context, results, seed, xml ) {
+ // Only use querySelectorAll when not filtering,
+ // when this is not xml,
+ // and when no QSA bugs apply
+ if ( !seed && !xml && !rbuggyQSA.test( selector ) ) {
+ var groups, i,
+ old = true,
+ nid = expando,
+ newContext = context,
+ newSelector = context.nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + groups[i].join("");
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results, slice.call( newContext.querySelectorAll(
+ newSelector
+ ), 0 ) );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+
+ return oldSelect( selector, context, results, seed, xml );
+ };
+
+ if ( matches ) {
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ try {
+ matches.call( div, "[test!='']:sizzle" );
+ rbuggyMatches.push( "!=", pseudos );
+ } catch ( e ) {}
+ });
+
+ // rbuggyMatches always contains :active and :focus, so no need for a length check
+ rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
+
+ Sizzle.matchesSelector = function( elem, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ // rbuggyMatches always contains :active, so no need for an existence check
+ if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, null, null, [ elem ] ).length > 0;
+ };
+ }
+ })();
+}
+
+// Deprecated
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Back-compat
+function setFilters() {}
+Expr.filters = setFilters.prototype = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
// Override sizzle attribute retrieval
Sizzle.attr = jQuery.attr;
jQuery.find = Sizzle;
@@ -5348,9 +5348,9 @@ jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains;
-
-
-})( window );
+
+
+})( window );
var runtil = /Until$/,
rparentsprev = /^(?:parents|prev(?:Until|All))/,
isSimple = /^.[^:#\[\.,]*$/,
diff --git a/sitestatic/jquery-1.8.3.min.js b/sitestatic/jquery-1.8.3.min.js
index cc9c014b..ca4155d4 100644
--- a/sitestatic/jquery-1.8.3.min.js
+++ b/sitestatic/jquery-1.8.3.min.js
@@ -74,9 +74,9 @@ b,d){""===b&&(b="false");x.set(a,b,d)}});c.support.hrefNormalized||c.each(["href
a.parentNode.selectedIndex;return null}}));c.support.enctype||(c.propFix.enctype="encoding");c.support.checkOn||c.each(["radio","checkbox"],function(){c.valHooks[this]={get:function(a){return null===a.getAttribute("value")?"on":a.value}}});c.each(["radio","checkbox"],function(){c.valHooks[this]=c.extend(c.valHooks[this],{set:function(a,b){if(c.isArray(b))return a.checked=0<=c.inArray(c(a).val(),b)}})});var sa=/^(?:textarea|input|select)$/i,eb=/^([^\.]*|)(?:\.(.+)|)$/,bc=/(?:^|\s)hover(\.\S+|)\b/,
cc=/^key/,dc=/^(?:mouse|contextmenu)|click/,fb=/^(?:focusinfocus|focusoutblur)$/,gb=function(a){return c.event.special.hover?a:a.replace(bc,"mouseenter$1 mouseleave$1")};c.event={add:function(a,b,d,e,f){var g,h,k,l,m,s,p,q,r;if(3!==a.nodeType&&8!==a.nodeType&&b&&d&&(g=c._data(a))){d.handler&&(p=d,d=p.handler,f=p.selector);d.guid||(d.guid=c.guid++);k=g.events;k||(g.events=k={});h=g.handle;h||(g.handle=h=function(a){return"undefined"===typeof c||a&&c.event.triggered===a.type?n:c.event.dispatch.apply(h.elem,
arguments)},h.elem=a);b=c.trim(gb(b)).split(" ");for(g=0;g<b.length;g++)l=eb.exec(b[g])||[],m=l[1],s=(l[2]||"").split(".").sort(),r=c.event.special[m]||{},m=(f?r.delegateType:r.bindType)||m,r=c.event.special[m]||{},l=c.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&c.expr.match.needsContext.test(f),namespace:s.join(".")},p),q=k[m],q||(q=k[m]=[],q.delegateCount=0,r.setup&&!1!==r.setup.call(a,e,s,h)||(a.addEventListener?a.addEventListener(m,h,!1):a.attachEvent&&
-a.attachEvent("on"+m,h))),r.add&&(r.add.call(a,l),l.handler.guid||(l.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,l):q.push(l),c.event.global[m]=!0;a=null}},global:{},remove:function(a,b,d,e,f){var g,h,k,l,m,s,p,n,q,r,v=c.hasData(a)&&c._data(a);if(v&&(p=v.events)){b=c.trim(gb(b||"")).split(" ");for(g=0;g<b.length;g++)if(h=eb.exec(b[g])||[],k=l=h[1],h=h[2],k){n=c.event.special[k]||{};k=(e?n.delegateType:n.bindType)||k;q=p[k]||[];m=q.length;h=h?RegExp("(^|\\.)"+h.split(".").sort().join("\\.(?:.*\\.|)")+
-"(\\.|$)"):null;for(s=0;s<q.length;s++)r=q[s],!f&&l!==r.origType||d&&d.guid!==r.guid||h&&!h.test(r.namespace)||e&&!(e===r.selector||"**"===e&&r.selector)||(q.splice(s--,1),r.selector&&q.delegateCount--,n.remove&&n.remove.call(a,r));0===q.length&&m!==q.length&&(n.teardown&&!1!==n.teardown.call(a,h,v.handle)||c.removeEvent(a,k,v.handle),delete p[k])}else for(k in p)c.event.remove(a,k+b[g],d,e,!0);c.isEmptyObject(p)&&(delete v.handle,c.removeData(a,"events",!0))}},customEvent:{getData:!0,setData:!0,
-changeData:!0},trigger:function(a,b,d,e){if(!d||3!==d.nodeType&&8!==d.nodeType){var f,g,h,k,l,m,s=a.type||a;h=[];if(!fb.test(s+c.event.triggered)&&(0<=s.indexOf("!")&&(s=s.slice(0,-1),f=!0),0<=s.indexOf(".")&&(h=s.split("."),s=h.shift(),h.sort()),d&&!c.event.customEvent[s]||c.event.global[s]))if(a="object"===typeof a?a[c.expando]?a:new c.Event(s,a):new c.Event(s),a.type=s,a.isTrigger=!0,a.exclusive=f,a.namespace=h.join("."),a.namespace_re=a.namespace?RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):
+a.attachEvent("on"+m,h))),r.add&&(r.add.call(a,l),l.handler.guid||(l.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,l):q.push(l),c.event.global[m]=!0;a=null}},global:{},remove:function(a,b,d,e,f){var g,h,k,l,m,s,p,n,q,r,v=c.hasData(a)&&c._data(a);if(v&&(p=v.events)){b=c.trim(gb(b||"")).split(" ");for(g=0;g<b.length;g++)if(h=eb.exec(b[g])||[],k=l=h[1],h=h[2],k){n=c.event.special[k]||{};k=(e?n.delegateType:n.bindType)||k;q=p[k]||[];m=q.length;h=h?new RegExp("(^|\\.)"+h.split(".").sort().join("\\.(?:.*\\.|)")+
+"(\\.|$)"):null;for(s=0;s<q.length;s++)r=q[s],!f&&l!==r.origType||d&&d.guid!==r.guid||h&&!h.test(r.namespace)||e&&e!==r.selector&&("**"!==e||!r.selector)||(q.splice(s--,1),r.selector&&q.delegateCount--,n.remove&&n.remove.call(a,r));0===q.length&&m!==q.length&&(n.teardown&&!1!==n.teardown.call(a,h,v.handle)||c.removeEvent(a,k,v.handle),delete p[k])}else for(k in p)c.event.remove(a,k+b[g],d,e,!0);c.isEmptyObject(p)&&(delete v.handle,c.removeData(a,"events",!0))}},customEvent:{getData:!0,setData:!0,
+changeData:!0},trigger:function(a,b,d,e){if(!d||3!==d.nodeType&&8!==d.nodeType){var f,g,h,k,l,m,s=a.type||a;h=[];if(!fb.test(s+c.event.triggered)&&(0<=s.indexOf("!")&&(s=s.slice(0,-1),f=!0),0<=s.indexOf(".")&&(h=s.split("."),s=h.shift(),h.sort()),d&&!c.event.customEvent[s]||c.event.global[s]))if(a="object"===typeof a?a[c.expando]?a:new c.Event(s,a):new c.Event(s),a.type=s,a.isTrigger=!0,a.exclusive=f,a.namespace=h.join("."),a.namespace_re=a.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):
null,h=0>s.indexOf(":")?"on"+s:"",d){if(a.result=n,a.target||(a.target=d),b=null!=b?c.makeArray(b):[],b.unshift(a),k=c.event.special[s]||{},!k.trigger||!1!==k.trigger.apply(d,b)){m=[[d,k.bindType||s]];if(!e&&!k.noBubble&&!c.isWindow(d)){l=k.delegateType||s;f=fb.test(l+s)?d:d.parentNode;for(g=d;f;f=f.parentNode)m.push([f,l]),g=f;g===(d.ownerDocument||q)&&m.push([g.defaultView||g.parentWindow||r,l])}for(g=0;g<m.length&&!a.isPropagationStopped();g++)f=m[g][0],a.type=m[g][1],(l=(c._data(f,"events")||
{})[a.type]&&c._data(f,"handle"))&&l.apply(f,b),(l=h&&f[h])&&c.acceptData(f)&&l.apply&&!1===l.apply(f,b)&&a.preventDefault();a.type=s;e||a.isDefaultPrevented()||k._default&&!1!==k._default.apply(d.ownerDocument,b)||"click"===s&&c.nodeName(d,"a")||!c.acceptData(d)||!h||!d[s]||("focus"===s||"blur"===s)&&0===a.target.offsetWidth||c.isWindow(d)||((g=d[h])&&(d[h]=null),c.event.triggered=s,d[s](),c.event.triggered=n,g&&(d[h]=g));return a.result}}else for(g in d=c.cache,d)d[g].events&&d[g].events[s]&&c.event.trigger(a,
b,d[g].handle.elem,!0)}},dispatch:function(a){a=c.event.fix(a||r.event);var b,d,e,f,g,h,k=(c._data(this,"events")||{})[a.type]||[],l=k.delegateCount,m=w.call(arguments),s=!a.exclusive&&!a.namespace,p=c.event.special[a.type]||{},q=[];m[0]=a;a.delegateTarget=this;if(!p.preDispatch||!1!==p.preDispatch.call(this,a)){if(l&&(!a.button||"click"!==a.type))for(d=a.target;d!=this;d=d.parentNode||this)if(!0!==d.disabled||"click"!==a.type){f={};g=[];for(b=0;b<l;b++)e=k[b],h=e.selector,f[h]===n&&(f[h]=e.needsContext?
@@ -105,8 +105,8 @@ a[g].matches);if(d[A]){for(c=++g;c<e&&!u.relative[a[c].type];c++);return p(1<g&&
(ga=A,B=++f.el)}c&&((m=!n&&m)&&r--,g&&M.push(m))}r+=t;if(c&&t!==r){for(p=0;n=b[p];p++)n(M,q,h,k);if(g){if(0<r)for(;t--;)M[t]||q[t]||(q[t]=ec.call(l));q=s(q)}y.apply(l,q);T&&!g&&0<q.length&&1<r+b.length&&d.uniqueSort(l)}T&&(ga=A,ja=L);return M};f.el=0;return c?K(f):f}function r(a,b,d,c,e){var f,g,h,l,m=k(a);if(!c&&1===m.length){g=m[0]=m[0].slice(0);if(2<g.length&&"ID"===(h=g[0]).type&&9===b.nodeType&&!e&&u.relative[g[1].type]){b=u.find.ID(h.matches[0].replace($,""),b,e)[0];if(!b)return d;a=a.slice(g.shift().length)}for(f=
R.POS.test(a)?-1:g.length-1;0<=f;f--){h=g[f];if(u.relative[l=h.type])break;if(l=u.find[l])if(c=l(h.matches[0].replace($,""),S.test(g[0].type)&&b.parentNode||b,e)){g.splice(f,1);a=c.length&&g.join("");if(!a)return y.apply(d,D.call(c,0)),d;break}}}x(a,m)(c,b,e,d,S.test(a));return d}function v(){}var B,z,u,J,w,t,x,G,M,ja,T=!0,A=("sizcache"+Math.random()).replace(".",""),jb=String,O=a.document,L=O.documentElement,ga=0,I=0,ec=[].pop,y=[].push,D=[].slice,C=[].indexOf||function(a){for(var b=0,d=this.length;b<
d;b++)if(this[b]===a)return b;return-1},K=function(a,b){a[A]=null==b||b;return a},E=function(){var a={},b=[];return K(function(d,c){b.push(d)>u.cacheLength&&delete a[b.shift()];return a[d+" "]=c},a)},P=E(),H=E(),Q=E(),E="\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[-\\w]|[^\\x00-\\xa0])+)[\\x20\\t\\r\\n\\f]*(?:([*^$|!~]?=)[\\x20\\t\\r\\n\\f]*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+"(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+".replace("w","w#")+")|)|)[\\x20\\t\\r\\n\\f]*\\]",N=":((?:\\\\.|[-\\w]|[^\\x00-\\xa0])+)(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+
-E+")|[^:]|\\\\.)*|.*))\\)|)",F=RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$","g"),U=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,V=/^[\x20\t\r\n\f]*([\x20\t\r\n\f>+~])[\x20\t\r\n\f]*/,X=RegExp(N),Y=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,S=/[\x20\t\r\n\f]*[+~]/,aa=/h\d/i,ba=/input|select|textarea|button/i,$=/\\(?!\\)/g,R={ID:/^#((?:\\.|[-\w]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[-\w]|[^\x00-\xa0])+)/,NAME:/^\[name=['"]?((?:\\.|[-\w]|[^\x00-\xa0])+)['"]?\]/,TAG:RegExp("^("+"(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+".replace("w",
-"w*")+")"),ATTR:RegExp("^"+E),PSEUDO:RegExp("^"+N),POS:/:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i,CHILD:RegExp("^:(only|nth|first|last)-child(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),needsContext:RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)",
+E+")|[^:]|\\\\.)*|.*))\\)|)",F=RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$","g"),U=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,V=/^[\x20\t\r\n\f]*([\x20\t\r\n\f>+~])[\x20\t\r\n\f]*/,X=new RegExp(N),Y=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,S=/[\x20\t\r\n\f]*[+~]/,aa=/h\d/i,ba=/input|select|textarea|button/i,$=/\\(?!\\)/g,R={ID:/^#((?:\\.|[-\w]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[-\w]|[^\x00-\xa0])+)/,NAME:/^\[name=['"]?((?:\\.|[-\w]|[^\x00-\xa0])+)['"]?\]/,TAG:new RegExp("^("+
+"(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+".replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+N),POS:/:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i,CHILD:RegExp("^:(only|nth|first|last)-child(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),needsContext:RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)",
"i")},W=function(a){var b=O.createElement("div");try{return a(b)}catch(d){return!1}finally{}},E=W(function(a){a.appendChild(O.createComment(""));return!a.getElementsByTagName("*").length}),ca=W(function(a){a.innerHTML="<a href='#'></a>";return a.firstChild&&"undefined"!==typeof a.firstChild.getAttribute&&"#"===a.firstChild.getAttribute("href")}),da=W(function(a){a.innerHTML="<select></select>";a=typeof a.lastChild.getAttribute("multiple");return"boolean"!==a&&"string"!==a}),Z=W(function(a){a.innerHTML=
"<div class='hidden e'></div><div class='hidden'></div>";if(!a.getElementsByClassName||!a.getElementsByClassName("e").length)return!1;a.lastChild.className="e";return 2===a.getElementsByClassName("e").length}),ea=W(function(a){a.id=A+0;a.innerHTML="<a name='"+A+"'></a><div name='"+A+"'></div>";L.insertBefore(a,L.firstChild);var b=O.getElementsByName&&O.getElementsByName(A).length===2+O.getElementsByName(A+0).length;z=!O.getElementById(A);L.removeChild(a);return b});try{D.call(L.childNodes,0)[0].nodeType}catch(fa){D=
function(a){for(var b,d=[];b=this[a];a++)d.push(b);return d}}d.matches=function(a,b){return d(a,null,null,b)};d.matchesSelector=function(a,b){return 0<d(b,null,null,[a]).length};J=d.getText=function(a){var b,d="",c=0;if(b=a.nodeType)if(1===b||9===b||11===b){if("string"===typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)d+=J(a)}else{if(3===b||4===b)return a.nodeValue}else for(;b=a[c];c++)d+=J(b);return d};w=d.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?
@@ -115,8 +115,8 @@ b:null:d.specified?d.value:null:null};u=d.selectors={cacheLength:50,createPseudo
a?[d]:b:[]},TAG:E?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a)}:function(a,b){var d=b.getElementsByTagName(a);if("*"===a){for(var c,e=[],f=0;c=d[f];f++)1===c.nodeType&&e.push(c);return e}return d},NAME:ea&&function(a,b){if("undefined"!==typeof b.getElementsByName)return b.getElementsByName(name)},CLASS:Z&&function(a,b,d){if("undefined"!==typeof b.getElementsByClassName&&!d)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0},
" ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace($,"");a[3]=(a[4]||a[5]||"").replace($,"");"~="===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1]?(a[2]||d.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*("even"===a[2]||"odd"===a[2])),a[4]=+(a[6]+a[7]||"odd"===a[2])):a[2]&&d.error(a[0]);return a},PSEUDO:function(a){var b,d;if(R.CHILD.test(a[0]))return null;if(a[3])a[2]=
a[3];else if(b=a[4])X.test(b)&&(d=k(b,!0))&&(d=b.indexOf(")",b.length-d)-b.length)&&(b=b.slice(0,d),a[0]=a[0].slice(0,d)),a[2]=b;return a.slice(0,3)}},filter:{ID:z?function(a){a=a.replace($,"");return function(b){return b.getAttribute("id")===a}}:function(a){a=a.replace($,"");return function(b){return(b="undefined"!==typeof b.getAttributeNode&&b.getAttributeNode("id"))&&b.value===a}},TAG:function(a){if("*"===a)return function(){return!0};a=a.replace($,"").toLowerCase();return function(b){return b.nodeName&&
-b.nodeName.toLowerCase()===a}},CLASS:function(a){var b=P[A][a+" "];return b||(b=RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"))&&P(a,function(a){return b.test(a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(e,f){var g=d.attr(e,a);if(null==g)return"!="===b;if(!b)return!0;g+="";return"="===b?g===c:"!="===b?g!==c:"^="===b?c&&0===g.indexOf(c):"*="===b?c&&-1<g.indexOf(c):"$="===b?c&&g.substr(g.length-c.length)===c:"~="===
-b?-1<(" "+g+" ").indexOf(c):"|="===b?g===c||g.substr(0,c.length+1)===c+"-":!1}},CHILD:function(a,b,d,c){return"nth"===a?function(a){var b,e;b=a.parentNode;if(1===d&&0===c)return!0;if(b)for(e=0,b=b.firstChild;b&&(1!==b.nodeType||(e++,a!==b));b=b.nextSibling);e-=c;return e===d||0===e%d&&0<=e/d}:function(b){var d=b;switch(a){case "only":case "first":for(;d=d.previousSibling;)if(1===d.nodeType)return!1;if("first"===a)return!0;d=b;case "last":for(;d=d.nextSibling;)if(1===d.nodeType)return!1;return!0}}},
+b.nodeName.toLowerCase()===a}},CLASS:function(a){var b=P[A][a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"))&&P(a,function(a){return b.test(a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(e,f){var g=d.attr(e,a);if(null==g)return"!="===b;if(!b)return!0;g+="";return"="===b?g===c:"!="===b?g!==c:"^="===b?c&&0===g.indexOf(c):"*="===b?c&&-1<g.indexOf(c):"$="===b?c&&g.substr(g.length-c.length)===
+c:"~="===b?-1<(" "+g+" ").indexOf(c):"|="===b?g===c||g.substr(0,c.length+1)===c+"-":!1}},CHILD:function(a,b,d,c){return"nth"===a?function(a){var b,e;b=a.parentNode;if(1===d&&0===c)return!0;if(b)for(e=0,b=b.firstChild;b&&(1!==b.nodeType||(e++,a!==b));b=b.nextSibling);e-=c;return e===d||0===e%d&&0<=e/d}:function(b){var d=b;switch(a){case "only":case "first":for(;d=d.previousSibling;)if(1===d.nodeType)return!1;if("first"===a)return!0;d=b;case "last":for(;d=d.nextSibling;)if(1===d.nodeType)return!1;return!0}}},
PSEUDO:function(a,b){var c,e=u.pseudos[a]||u.setFilters[a.toLowerCase()]||d.error("unsupported pseudo: "+a);return e[A]?e(b):1<e.length?(c=[a,a,"",b],u.setFilters.hasOwnProperty(a.toLowerCase())?K(function(a,d){for(var c,f=e(a,b),g=f.length;g--;)c=C.call(a,f[g]),a[c]=!(d[c]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:K(function(a){var b=[],d=[],c=x(a.replace(F,"$1"));return c[A]?K(function(a,b,d,e){e=c(a,null,e,[]);for(var f=a.length;f--;)if(d=e[f])a[f]=!(b[f]=d)}):function(a,e,f){b[0]=
a;c(b,null,f,d);return!d.pop()}}),has:K(function(a){return function(b){return 0<d(a,b).length}}),contains:K(function(a){return function(b){return-1<(b.textContent||b.innerText||J(b)).indexOf(a)}}),enabled:function(a){return!1===a.disabled},disabled:function(a){return!0===a.disabled},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return!0===a.selected},parent:function(a){return!u.pseudos.empty(a)},
empty:function(a){var b;for(a=a.firstChild;a;){if("@"<a.nodeName||3===(b=a.nodeType)||4===b)return!1;a=a.nextSibling}return!0},header:function(a){return aa.test(a.nodeName)},text:function(a){var b,d;return"input"===a.nodeName.toLowerCase()&&"text"===(b=a.type)&&(null==(d=a.getAttribute("type"))||d.toLowerCase()===b)},radio:e("radio"),checkbox:e("checkbox"),file:e("file"),password:e("password"),image:e("image"),submit:f("submit"),reset:f("reset"),button:function(a){var b=a.nodeName.toLowerCase();return"input"===
@@ -124,39 +124,39 @@ b&&"button"===a.type||"button"===b},input:function(a){return ba.test(a.nodeName)
lt:g(function(a,b,d){for(b=0>d?d+b:d;0<=--b;)a.push(b);return a}),gt:g(function(a,b,d){for(d=0>d?d+b:d;++d<b;)a.push(d);return a})}};G=L.compareDocumentPosition?function(a,b){return a===b?(M=!0,0):(a.compareDocumentPosition&&b.compareDocumentPosition?a.compareDocumentPosition(b)&4:a.compareDocumentPosition)?-1:1}:function(a,b){if(a===b)return M=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var d,c,e=[],f=[];d=a.parentNode;c=b.parentNode;var g=d;if(d===c)return h(a,b);if(!d)return-1;
if(!c)return 1;for(;g;)e.unshift(g),g=g.parentNode;for(g=c;g;)f.unshift(g),g=g.parentNode;d=e.length;c=f.length;for(g=0;g<d&&g<c;g++)if(e[g]!==f[g])return h(e[g],f[g]);return g===d?h(a,f[g],-1):h(e[g],b,1)};[0,0].sort(G);T=!M;d.uniqueSort=function(a){var b,d=[],c=1,e=0;M=T;a.sort(G);if(M){for(;b=a[c];c++)b===a[c-1]&&(e=d.push(c));for(;e--;)a.splice(d[e],1)}return a};d.error=function(a){throw Error("Syntax error, unrecognized expression: "+a);};x=d.compile=function(a,b){var d,c=[],e=[],f=Q[A][a+" "];
if(!f){b||(b=k(a));for(d=b.length;d--;)f=n(b[d]),f[A]?c.push(f):e.push(f);f=Q(a,q(e,c))}return f};O.querySelectorAll&&function(){var a,b=r,c=/'|\\/g,e=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,f=[":focus"],g=[":active"],h=L.matchesSelector||L.mozMatchesSelector||L.webkitMatchesSelector||L.oMatchesSelector||L.msMatchesSelector;W(function(a){a.innerHTML="<select><option selected=''></option></select>";a.querySelectorAll("[selected]").length||f.push("\\[[\\x20\\t\\r\\n\\f]*(?:checked|disabled|ismap|multiple|readonly|selected|value)");
-a.querySelectorAll(":checked").length||f.push(":checked")});W(function(a){a.innerHTML="<p test=''></p>";a.querySelectorAll("[test^='']").length&&f.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:\"\"|'')");a.innerHTML="<input type='hidden'/>";a.querySelectorAll(":enabled").length||f.push(":enabled",":disabled")});f=RegExp(f.join("|"));r=function(a,d,e,g,h){if(!g&&!h&&!f.test(a)){var l,m,p=!0,n=A;m=d;l=9===d.nodeType&&a;if(1===d.nodeType&&"object"!==d.nodeName.toLowerCase()){l=k(a);(p=d.getAttribute("id"))?n=p.replace(c,
-"\\$&"):d.setAttribute("id",n);n="[id='"+n+"'] ";for(m=l.length;m--;)l[m]=n+l[m].join("");m=S.test(a)&&d.parentNode||d;l=l.join(",")}if(l)try{return y.apply(e,D.call(m.querySelectorAll(l),0)),e}catch(s){}finally{p||d.removeAttribute("id")}}return b(a,d,e,g,h)};h&&(W(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),g.push("!=",N)}catch(d){}}),g=RegExp(g.join("|")),d.matchesSelector=function(b,c){c=c.replace(e,"='$1']");if(!w(b)&&!g.test(c)&&!f.test(c))try{var k=h.call(b,c);if(k||a||
-b.document&&11!==b.document.nodeType)return k}catch(l){}return 0<d(c,null,null,[b]).length})}();u.pseudos.nth=u.pseudos.eq;u.filters=v.prototype=u.pseudos;u.setFilters=new v;d.attr=c.attr;c.find=d;c.expr=d.selectors;c.expr[":"]=c.expr.pseudos;c.unique=d.uniqueSort;c.text=d.getText;c.isXMLDoc=d.isXML;c.contains=d.contains})(r);var fc=/Until$/,gc=/^(?:parents|prev(?:Until|All))/,Cb=/^.[^:#\[\.,]*$/,kb=c.expr.match.needsContext,hc={children:!0,contents:!0,next:!0,prev:!0};c.fn.extend({find:function(a){var b,
+a.querySelectorAll(":checked").length||f.push(":checked")});W(function(a){a.innerHTML="<p test=''></p>";a.querySelectorAll("[test^='']").length&&f.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:\"\"|'')");a.innerHTML="<input type='hidden'/>";a.querySelectorAll(":enabled").length||f.push(":enabled",":disabled")});f=new RegExp(f.join("|"));r=function(a,d,e,g,h){if(!g&&!h&&!f.test(a)){var l,m,p=!0,n=A;m=d;l=9===d.nodeType&&a;if(1===d.nodeType&&"object"!==d.nodeName.toLowerCase()){l=k(a);(p=d.getAttribute("id"))?
+n=p.replace(c,"\\$&"):d.setAttribute("id",n);n="[id='"+n+"'] ";for(m=l.length;m--;)l[m]=n+l[m].join("");m=S.test(a)&&d.parentNode||d;l=l.join(",")}if(l)try{return y.apply(e,D.call(m.querySelectorAll(l),0)),e}catch(s){}finally{p||d.removeAttribute("id")}}return b(a,d,e,g,h)};h&&(W(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),g.push("!=",N)}catch(d){}}),g=new RegExp(g.join("|")),d.matchesSelector=function(b,c){c=c.replace(e,"='$1']");if(!w(b)&&!g.test(c)&&!f.test(c))try{var k=h.call(b,
+c);if(k||a||b.document&&11!==b.document.nodeType)return k}catch(l){}return 0<d(c,null,null,[b]).length})}();u.pseudos.nth=u.pseudos.eq;u.filters=v.prototype=u.pseudos;u.setFilters=new v;d.attr=c.attr;c.find=d;c.expr=d.selectors;c.expr[":"]=c.expr.pseudos;c.unique=d.uniqueSort;c.text=d.getText;c.isXMLDoc=d.isXML;c.contains=d.contains})(r);var fc=/Until$/,gc=/^(?:parents|prev(?:Until|All))/,Cb=/^.[^:#\[\.,]*$/,kb=c.expr.match.needsContext,hc={children:!0,contents:!0,next:!0,prev:!0};c.fn.extend({find:function(a){var b,
d,e,f,g,h,k=this;if("string"!==typeof a)return c(a).filter(function(){b=0;for(d=k.length;b<d;b++)if(c.contains(k[b],this))return!0});h=this.pushStack("","find",a);b=0;for(d=this.length;b<d;b++)if(e=h.length,c.find(a,this[b],h),0<b)for(f=e;f<h.length;f++)for(g=0;g<e;g++)if(h[g]===h[f]){h.splice(f--,1);break}return h},has:function(a){var b,d=c(a,this),e=d.length;return this.filter(function(){for(b=0;b<e;b++)if(c.contains(this,d[b]))return!0})},not:function(a){return this.pushStack(Ba(this,a,!1),"not",
a)},filter:function(a){return this.pushStack(Ba(this,a,!0),"filter",a)},is:function(a){return!!a&&("string"===typeof a?kb.test(a)?0<=c(a,this.context).index(this[0]):0<c.filter(a,this).length:0<this.filter(a).length)},closest:function(a,b){for(var d,e=0,f=this.length,g=[],h=kb.test(a)||"string"!==typeof a?c(a,b||this.context):0;e<f;e++)for(d=this[e];d&&d.ownerDocument&&d!==b&&11!==d.nodeType;){if(h?-1<h.index(d):c.find.matchesSelector(d,a)){g.push(d);break}d=d.parentNode}g=1<g.length?c.unique(g):
g;return this.pushStack(g,"closest",a)},index:function(a){return a?"string"===typeof a?c.inArray(this[0],c(a)):c.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var d="string"===typeof a?c(a,b):c.makeArray(a&&a.nodeType?[a]:a),e=c.merge(this.get(),d);return this.pushStack(Y(d[0])||Y(e[0])?e:c.unique(e))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});c.fn.andSelf=c.fn.addBack;c.each({parent:function(a){return(a=
a.parentNode)&&11!==a.nodeType?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return Aa(a,"nextSibling")},prev:function(a){return Aa(a,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling((a.parentNode||
{}).firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.merge([],a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);fc.test(a)||(e=d);e&&"string"===typeof e&&(f=c.filter(e,f));f=1<this.length&&!hc[a]?c.unique(f):f;1<this.length&&gc.test(a)&&(f=f.reverse());return this.pushStack(f,a,w.call(arguments).join(","))}});c.extend({filter:function(a,b,d){d&&(a=":not("+a+")");
return 1===b.length?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&9!==a.nodeType&&(d===n||1!==a.nodeType||!c(a).is(d));)1===a.nodeType&&e.push(a),a=a[b];return e},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&d.push(a);return d}});var Da="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ic=/ jQuery\d+="(?:null|\d+)"/g,
-ta=/^\s+/,lb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,mb=/<([\w:]+)/,jc=/<tbody/i,kc=/<|&#?\w+;/,lc=/<(?:script|style|link)/i,mc=/<(?:script|object|embed|option|style)/i,ua=RegExp("<(?:"+Da+")[\\s/>]","i"),Ga=/^(?:checkbox|radio)$/,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,nc=/\/(java|ecma)script/i,oc=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,z={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],
+ta=/^\s+/,lb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,mb=/<([\w:]+)/,jc=/<tbody/i,kc=/<|&#?\w+;/,lc=/<(?:script|style|link)/i,mc=/<(?:script|object|embed|option|style)/i,ua=new RegExp("<(?:"+Da+")[\\s/>]","i"),Ga=/^(?:checkbox|radio)$/,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,nc=/\/(java|ecma)script/i,oc=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,z={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],
tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ob=Ca(q),va=ob.appendChild(q.createElement("div"));z.optgroup=z.option;z.tbody=z.tfoot=z.colgroup=z.caption=z.thead;z.th=z.td;c.support.htmlSerialize||(z._default=[1,"X<div>","</div>"]);c.fn.extend({text:function(a){return c.access(this,function(a){return a===n?c.text(this):this.empty().append((this[0]&&
this[0].ownerDocument||q).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapAll(a.call(this,b))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return c.isFunction(a)?this.each(function(b){c(this).wrapInner(a.call(this,
b))}):this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){var b=c.isFunction(a);return this.each(function(d){c(this).wrapAll(b?a.call(this,d):a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){1!==this.nodeType&&11!==this.nodeType||this.appendChild(a)})},prepend:function(){return this.domManip(arguments,
!0,function(a){1!==this.nodeType&&11!==this.nodeType||this.insertBefore(a,this.firstChild)})},before:function(){if(!Y(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=c.clean(arguments);return this.pushStack(c.merge(a,this),"before",this.selector)}},after:function(){if(!Y(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=c.clean(arguments);return this.pushStack(c.merge(this,
a),"after",this.selector)}},remove:function(a,b){for(var d,e=0;null!=(d=this[e]);e++)if(!a||c.filter(a,[d]).length)b||1!==d.nodeType||(c.cleanData(d.getElementsByTagName("*")),c.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)for(1===a.nodeType&&c.cleanData(a.getElementsByTagName("*"));a.firstChild;)a.removeChild(a.firstChild);return this},clone:function(a,b){a=null==a?!1:a;b=null==b?a:b;return this.map(function(){return c.clone(this,
-a,b)})},html:function(a){return c.access(this,function(a){var d=this[0]||{},e=0,f=this.length;if(a===n)return 1===d.nodeType?d.innerHTML.replace(ic,""):n;if("string"===typeof a&&!(lc.test(a)||!c.support.htmlSerialize&&ua.test(a)||!c.support.leadingWhitespace&&ta.test(a)||z[(mb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(lb,"<$1></$2>");try{for(;e<f;e++)d=this[e]||{},1===d.nodeType&&(c.cleanData(d.getElementsByTagName("*")),d.innerHTML=a);d=0}catch(g){}}d&&this.empty().append(a)},null,a,arguments.length)},
+a,b)})},html:function(a){return c.access(this,function(a){var d=this[0]||{},e=0,f=this.length;if(a===n)return 1===d.nodeType?d.innerHTML.replace(ic,""):n;if(!("string"!==typeof a||lc.test(a)||!c.support.htmlSerialize&&ua.test(a)||!c.support.leadingWhitespace&&ta.test(a)||z[(mb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(lb,"<$1></$2>");try{for(;e<f;e++)d=this[e]||{},1===d.nodeType&&(c.cleanData(d.getElementsByTagName("*")),d.innerHTML=a);d=0}catch(g){}}d&&this.empty().append(a)},null,a,arguments.length)},
replaceWith:function(a){if(!Y(this[0])){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});"string"!==typeof a&&(a=c(a).detach());return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}return this.length?this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,b,d){a=[].concat.apply([],a);var e,f,g,h=0,k=a[0],
l=[],m=this.length;if(!c.support.checkClone&&1<m&&"string"===typeof k&&nb.test(k))return this.each(function(){c(this).domManip(a,b,d)});if(c.isFunction(k))return this.each(function(e){var f=c(this);a[0]=k.call(this,e,b?f.html():n);f.domManip(a,b,d)});if(this[0]){e=c.buildFragment(a,this,l);g=e.fragment;f=g.firstChild;1===g.childNodes.length&&(g=f);if(f)for(b=b&&c.nodeName(f,"tr"),e=e.cacheable||m-1;h<m;h++)d.call(b&&c.nodeName(this[h],"table")?Db(this[h],"tbody"):this[h],h===e?g:c.clone(g,!0,!0));
-g=f=null;l.length&&c.each(l,function(a,b){b.src?c.ajax?c.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):c.error("no ajax"):c.globalEval((b.text||b.textContent||b.innerHTML||"").replace(oc,""));b.parentNode&&b.parentNode.removeChild(b)})}return this}});c.buildFragment=function(a,b,d){var e,f,g,h=a[0];b=b||q;b=!b.nodeType&&b[0]||b;b=b.ownerDocument||b;1===a.length&&"string"===typeof h&&512>h.length&&b===q&&"<"===h.charAt(0)&&!(mc.test(h)||!c.support.checkClone&&nb.test(h)||
-!c.support.html5Clone&&ua.test(h))&&(f=!0,e=c.fragments[h],g=e!==n);e||(e=b.createDocumentFragment(),c.clean(a,b,e,d),f&&(c.fragments[h]=g&&e));return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e,f=0,g=[];d=c(d);var h=d.length;e=1===this.length&&this[0].parentNode;if((null==e||e&&11===e.nodeType&&1===e.childNodes.length)&&1===h)return d[b](this[0]),this;
+g=f=null;l.length&&c.each(l,function(a,b){b.src?c.ajax?c.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):c.error("no ajax"):c.globalEval((b.text||b.textContent||b.innerHTML||"").replace(oc,""));b.parentNode&&b.parentNode.removeChild(b)})}return this}});c.buildFragment=function(a,b,d){var e,f,g,h=a[0];b=b||q;b=!b.nodeType&&b[0]||b;b=b.ownerDocument||b;!(1===a.length&&"string"===typeof h&&512>h.length&&b===q&&"<"===h.charAt(0))||mc.test(h)||!c.support.checkClone&&nb.test(h)||
+!c.support.html5Clone&&ua.test(h)||(f=!0,e=c.fragments[h],g=e!==n);e||(e=b.createDocumentFragment(),c.clean(a,b,e,d),f&&(c.fragments[h]=g&&e));return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e,f=0,g=[];d=c(d);var h=d.length;e=1===this.length&&this[0].parentNode;if((null==e||e&&11===e.nodeType&&1===e.childNodes.length)&&1===h)return d[b](this[0]),this;
for(;f<h;f++)e=(0<f?this.clone(!0):this).get(),c(d[f])[b](e),g=g.concat(e);return this.pushStack(g,a,d.selector)}});c.extend({clone:function(a,b,d){var e,f,g,h;c.support.html5Clone||c.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?h=a.cloneNode(!0):(va.innerHTML=a.outerHTML,va.removeChild(h=va.firstChild));if(!(c.support.noCloneEvent&&c.support.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||c.isXMLDoc(a)))for(Fa(a,h),e=ba(a),f=ba(h),g=0;e[g];++g)f[g]&&Fa(e[g],f[g]);if(b&&(Ea(a,h),d))for(e=ba(a),f=ba(h),
g=0;e[g];++g)Ea(e[g],f[g]);return h},clean:function(a,b,d,e){var f,g,h,k,l,m,n=b===q&&ob,p=[];b&&"undefined"!==typeof b.createDocumentFragment||(b=q);for(f=0;null!=(h=a[f]);f++)if("number"===typeof h&&(h+=""),h){if("string"===typeof h)if(kc.test(h)){n=n||Ca(b);m=b.createElement("div");n.appendChild(m);h=h.replace(lb,"<$1></$2>");g=(mb.exec(h)||["",""])[1].toLowerCase();k=z[g]||z._default;l=k[0];for(m.innerHTML=k[1]+h+k[2];l--;)m=m.lastChild;if(!c.support.tbody)for(l=jc.test(h),k="table"!==g||l?"<table>"!==
k[1]||l?[]:m.childNodes:m.firstChild&&m.firstChild.childNodes,g=k.length-1;0<=g;--g)c.nodeName(k[g],"tbody")&&!k[g].childNodes.length&&k[g].parentNode.removeChild(k[g]);!c.support.leadingWhitespace&&ta.test(h)&&m.insertBefore(b.createTextNode(ta.exec(h)[0]),m.firstChild);h=m.childNodes;m.parentNode.removeChild(m)}else h=b.createTextNode(h);h.nodeType?p.push(h):c.merge(p,h)}m&&(h=m=n=null);if(!c.support.appendChecked)for(f=0;null!=(h=p[f]);f++)c.nodeName(h,"input")?Ha(h):"undefined"!==typeof h.getElementsByTagName&&
c.grep(h.getElementsByTagName("input"),Ha);if(d)for(a=function(a){if(!a.type||nc.test(a.type))return e?e.push(a.parentNode?a.parentNode.removeChild(a):a):d.appendChild(a)},f=0;null!=(h=p[f]);f++)c.nodeName(h,"script")&&a(h)||(d.appendChild(h),"undefined"!==typeof h.getElementsByTagName&&(h=c.grep(c.merge([],h.getElementsByTagName("script")),a),p.splice.apply(p,[f+1,0].concat(h)),f+=h.length));return p},cleanData:function(a,b){for(var d,e,f,g,h=0,k=c.expando,l=c.cache,m=c.support.deleteExpando,n=c.event.special;null!=
(f=a[h]);h++)if(b||c.acceptData(f))if(d=(e=f[k])&&l[e]){if(d.events)for(g in d.events)n[g]?c.event.remove(f,g):c.removeEvent(f,g,d.handle);l[e]&&(delete l[e],m?delete f[k]:f.removeAttribute?f.removeAttribute(k):f[k]=null,c.deletedIds.push(e))}}});(function(){var a,b;c.uaMatch=function(a){a=a.toLowerCase();a=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||0>a.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||
[];return{browser:a[1]||"",version:a[2]||"0"}};a=c.uaMatch(Jb.userAgent);b={};a.browser&&(b[a.browser]=!0,b.version=a.version);b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0);c.browser=b;c.sub=function(){function a(b,c){return new a.fn.init(b,c)}c.extend(!0,a,this);a.superclass=this;a.fn=a.prototype=this();a.fn.constructor=a;a.sub=this.sub;a.fn.init=function(f,g){g&&g instanceof c&&!(g instanceof a)&&(g=a(g));return c.fn.init.call(this,f,g,b)};a.fn.init.prototype=a.fn;var b=a(q);return a}})();var v,
-F,U,wa=/alpha\([^)]*\)/i,pc=/opacity=([^)]*)/,qc=/^(top|right|bottom|left)$/,rc=/^(none|table(?!-c[ea]).+)/,pb=/^margin/,Eb=RegExp("^("+ha+")(.*)$","i"),ca=RegExp("^("+ha+")(?!px)[a-z%]+$","i"),sc=RegExp("^([-+])=("+ha+")","i"),na={BODY:"block"},tc={position:"absolute",visibility:"hidden",display:"block"},qb={letterSpacing:0,fontWeight:400},C=["Top","Right","Bottom","Left"],Ja=["Webkit","O","Moz","ms"],uc=c.fn.toggle;c.fn.extend({css:function(a,b){return c.access(this,function(a,b,f){return f!==n?
-c.style(a,b,f):c.css(a,b)},a,b,1<arguments.length)},show:function(){return Ka(this,!0)},hide:function(){return Ka(this)},toggle:function(a,b){var d="boolean"===typeof a;return c.isFunction(a)&&c.isFunction(b)?uc.apply(this,arguments):this.each(function(){(d?a:R(this))?c(this).show():c(this).hide()})}});c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=v(a,"opacity");return""===d?"1":d}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},
+F,U,wa=/alpha\([^)]*\)/i,pc=/opacity=([^)]*)/,qc=/^(top|right|bottom|left)$/,rc=/^(none|table(?!-c[ea]).+)/,pb=/^margin/,Eb=new RegExp("^("+ha+")(.*)$","i"),ca=new RegExp("^("+ha+")(?!px)[a-z%]+$","i"),sc=new RegExp("^([-+])=("+ha+")","i"),na={BODY:"block"},tc={position:"absolute",visibility:"hidden",display:"block"},qb={letterSpacing:0,fontWeight:400},C=["Top","Right","Bottom","Left"],Ja=["Webkit","O","Moz","ms"],uc=c.fn.toggle;c.fn.extend({css:function(a,b){return c.access(this,function(a,b,f){return f!==
+n?c.style(a,b,f):c.css(a,b)},a,b,1<arguments.length)},show:function(){return Ka(this,!0)},hide:function(){return Ka(this)},toggle:function(a,b){var d="boolean"===typeof a;return c.isFunction(a)&&c.isFunction(b)?uc.apply(this,arguments):this.each(function(){(d?a:R(this))?c(this).show():c(this).hide()})}});c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=v(a,"opacity");return""===d?"1":d}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},
cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,k=c.camelCase(b),l=a.style;b=c.cssProps[k]||(c.cssProps[k]=Ia(l,k));h=c.cssHooks[b]||c.cssHooks[k];if(d!==n){if(g=typeof d,"string"===g&&(f=sc.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(c.css(a,b)),g="number"),!(null==d||"number"===g&&isNaN(d)||("number"!==g||c.cssNumber[k]||(d+="px"),h&&"set"in h&&(d=h.set(a,d,e))===n)))try{l[b]=d}catch(m){}}else return h&&"get"in
h&&(f=h.get(a,!1,e))!==n?f:l[b]}},css:function(a,b,d,e){var f,g;g=c.camelCase(b);b=c.cssProps[g]||(c.cssProps[g]=Ia(a.style,g));(g=c.cssHooks[b]||c.cssHooks[g])&&"get"in g&&(f=g.get(a,!0,e));f===n&&(f=v(a,b));"normal"===f&&b in qb&&(f=qb[b]);return d||e!==n?(a=parseFloat(f),d||c.isNumeric(a)?a||0:f):f},swap:function(a,b,d){var c,f={};for(c in b)f[c]=a.style[c],a.style[c]=b[c];d=d.call(a);for(c in b)a.style[c]=f[c];return d}});r.getComputedStyle?v=function(a,b){var d,e,f,g,h=r.getComputedStyle(a,null),
k=a.style;h&&(d=h.getPropertyValue(b)||h[b],""!==d||c.contains(a.ownerDocument,a)||(d=c.style(a,b)),ca.test(d)&&pb.test(b)&&(e=k.width,f=k.minWidth,g=k.maxWidth,k.minWidth=k.maxWidth=k.width=d,d=h.width,k.width=e,k.minWidth=f,k.maxWidth=g));return d}:q.documentElement.currentStyle&&(v=function(a,b){var d,c,f=a.currentStyle&&a.currentStyle[b],g=a.style;null==f&&g&&g[b]&&(f=g[b]);if(ca.test(f)&&!qc.test(b)){d=g.left;if(c=a.runtimeStyle&&a.runtimeStyle.left)a.runtimeStyle.left=a.currentStyle.left;g.left=
"fontSize"===b?"1em":f;f=g.pixelLeft+"px";g.left=d;c&&(a.runtimeStyle.left=c)}return""===f?"auto":f});c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(a,e,f){if(e)return 0===a.offsetWidth&&rc.test(v(a,"display"))?c.swap(a,tc,function(){return Oa(a,b,f)}):Oa(a,b,f)},set:function(a,e,f){return Ma(a,e,f?Na(a,b,f,c.support.boxSizing&&"border-box"===c.css(a,"boxSizing")):0)}}});c.support.opacity||(c.cssHooks.opacity={get:function(a,b){return pc.test((b&&a.currentStyle?a.currentStyle.filter:
-a.style.filter)||"")?0.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var d=a.style,e=a.currentStyle,f=c.isNumeric(b)?"alpha(opacity="+100*b+")":"",g=e&&e.filter||d.filter||"";d.zoom=1;if(1<=b&&""===c.trim(g.replace(wa,""))&&d.removeAttribute&&(d.removeAttribute("filter"),e&&!e.filter))return;d.filter=wa.test(g)?g.replace(wa,f):g+" "+f}});c(function(){c.support.reliableMarginRight||(c.cssHooks.marginRight={get:function(a,b){return c.swap(a,{display:"inline-block"},function(){if(b)return v(a,
+a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var d=a.style,e=a.currentStyle,f=c.isNumeric(b)?"alpha(opacity="+100*b+")":"",g=e&&e.filter||d.filter||"";d.zoom=1;if(1<=b&&""===c.trim(g.replace(wa,""))&&d.removeAttribute&&(d.removeAttribute("filter"),e&&!e.filter))return;d.filter=wa.test(g)?g.replace(wa,f):g+" "+f}});c(function(){c.support.reliableMarginRight||(c.cssHooks.marginRight={get:function(a,b){return c.swap(a,{display:"inline-block"},function(){if(b)return v(a,
"marginRight")})}});!c.support.pixelPosition&&c.fn.position&&c.each(["top","left"],function(a,b){c.cssHooks[b]={get:function(a,e){if(e){var f=v(a,b);return ca.test(f)?c(a).position()[b]+"px":f}}}})});c.expr&&c.expr.filters&&(c.expr.filters.hidden=function(a){return 0===a.offsetWidth&&0===a.offsetHeight||!c.support.reliableHiddenOffsets&&"none"===(a.style&&a.style.display||v(a,"display"))},c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)});c.each({margin:"",padding:"",border:"Width"},
function(a,b){c.cssHooks[a+b]={expand:function(c){var e="string"===typeof c?c.split(" "):[c],f={};for(c=0;4>c;c++)f[a+C[c]+b]=e[c]||e[c-2]||e[0];return f}};pb.test(a)||(c.cssHooks[a+b].set=Ma)});var vc=/%20/g,Fb=/\[\]$/,rb=/\r?\n/g,wc=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,xc=/^(?:select|textarea)/i;c.fn.extend({serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?
c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||xc.test(this.nodeName)||wc.test(this.type))}).map(function(a,b){var d=c(this).val();return null==d?null:c.isArray(d)?c.map(d,function(a,c){return{name:b.name,value:a.replace(rb,"\r\n")}}):{name:b.name,value:d.replace(rb,"\r\n")}}).get()}});c.param=function(a,b){var d,e=[],f=function(a,b){b=c.isFunction(b)?b():null==b?"":b;e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};b===n&&(b=c.ajaxSettings&&
@@ -178,7 +178,7 @@ contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){
e){if(e||!b.readyState||/loaded|complete/.test(b.readyState))b.onload=b.onreadystatechange=null,c&&b.parentNode&&c.removeChild(b),b=n,e||f(200,"success")};c.insertBefore(b,c.firstChild)},abort:function(){if(b)b.onload(0,1)}}}});var X,xa=r.ActiveXObject?function(){for(var a in X)X[a](0,1)}:!1,Gc=0;c.ajaxSettings.xhr=r.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&Ra()))a:{try{a=new r.ActiveXObject("Microsoft.XMLHTTP");break a}catch(b){}a=void 0}return a}:Ra;(function(a){c.extend(c.support,{ajax:!!a,
cors:!!a&&"withCredentials"in a})})(c.ajaxSettings.xhr());c.support.ajax&&c.ajaxTransport(function(a){if(!a.crossDomain||c.support.cors){var b;return{send:function(d,e){var f,g,h=a.xhr();a.username?h.open(a.type,a.url,a.async,a.username,a.password):h.open(a.type,a.url,a.async);if(a.xhrFields)for(g in a.xhrFields)h[g]=a.xhrFields[g];a.mimeType&&h.overrideMimeType&&h.overrideMimeType(a.mimeType);a.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");try{for(g in d)h.setRequestHeader(g,
d[g])}catch(k){}h.send(a.hasContent&&a.data||null);b=function(d,g){var k,p,q,r,v;try{if(b&&(g||4===h.readyState))if(b=n,f&&(h.onreadystatechange=c.noop,xa&&delete X[f]),g)4!==h.readyState&&h.abort();else{k=h.status;q=h.getAllResponseHeaders();r={};(v=h.responseXML)&&v.documentElement&&(r.xml=v);try{r.text=h.responseText}catch(w){}try{p=h.statusText}catch(x){p=""}k||!a.isLocal||a.crossDomain?1223===k&&(k=204):k=r.text?200:404}}catch(z){g||e(-1,z)}r&&e(k,p,r,q)};a.async?4===h.readyState?setTimeout(b,
-0):(f=++Gc,xa&&(X||(X={},c(r).unload(xa)),X[f]=b),h.onreadystatechange=b):b()},abort:function(){b&&b(0,1)}}}});var V,la,Hc=/^(?:toggle|show|hide)$/,Ic=RegExp("^(?:([-+])=|)("+ha+")([a-z%]*)$","i"),Jc=/queueHooks$/,Z=[function(a,b,d){var e,f,g,h,k,l,m=this,n=a.style,p={},q=[],r=a.nodeType&&R(a);d.queue||(k=c._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--;c.queue(a,"fx").length||
+0):(f=++Gc,xa&&(X||(X={},c(r).unload(xa)),X[f]=b),h.onreadystatechange=b):b()},abort:function(){b&&b(0,1)}}}});var V,la,Hc=/^(?:toggle|show|hide)$/,Ic=new RegExp("^(?:([-+])=|)("+ha+")([a-z%]*)$","i"),Jc=/queueHooks$/,Z=[function(a,b,d){var e,f,g,h,k,l,m=this,n=a.style,p={},q=[],r=a.nodeType&&R(a);d.queue||(k=c._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--;c.queue(a,"fx").length||
k.empty.fire()})}));1===a.nodeType&&("height"in b||"width"in b)&&(d.overflow=[n.overflow,n.overflowX,n.overflowY],"inline"===c.css(a,"display")&&"none"===c.css(a,"float")&&(c.support.inlineBlockNeedsLayout&&"inline"!==La(a.nodeName)?n.zoom=1:n.display="inline-block"));d.overflow&&(n.overflow="hidden",c.support.shrinkWrapBlocks||m.done(function(){n.overflow=d.overflow[0];n.overflowX=d.overflow[1];n.overflowY=d.overflow[2]}));for(e in b)g=b[e],Hc.exec(g)&&(delete b[e],f=f||"toggle"===g,g!==(r?"hide":
"show")&&q.push(e));if(b=q.length)for(g=c._data(a,"fxshow")||c._data(a,"fxshow",{}),("hidden"in g)&&(r=g.hidden),f&&(g.hidden=!r),r?c(a).show():m.done(function(){c(a).hide()}),m.done(function(){var b;c.removeData(a,"fxshow",!0);for(b in p)c.style(a,b,p[b])}),e=0;e<b;e++)f=q[e],h=m.createTween(f,r?g[f]:0),p[f]=g[f]||c.style(a,f),f in g||(g[f]=h.start,r&&(h.end=h.start,h.start="width"===f||"height"===f?1:0))}],S={"*":[function(a,b){var d,e,f=this.createTween(a,b),g=Ic.exec(b),h=f.cur(),k=+h||0,l=1,
m=20;if(g){d=+g[2];e=g[3]||(c.cssNumber[a]?"":"px");if("px"!==e&&k){k=c.css(f.elem,a,!0)||d||1;do l=l||".5",k/=l,c.style(f.elem,a,k+e);while(l!==(l=f.cur()/h)&&1!==l&&--m)}f.unit=e;f.start=k;f.end=g[1]?k+(g[1]+1)*d:d}return f}]};c.Animation=c.extend(Ta,{tweener:function(a,b){c.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var d,e=0,f=a.length;e<f;e++)d=a[e],S[d]=S[d]||[],S[d].unshift(b)},prefilter:function(a,b){b?Z.unshift(a):Z.push(a)}});c.Tween=B;B.prototype={constructor:B,init:function(a,b,d,
@@ -187,7 +187,7 @@ this.now,this);d&&d.set?d.set(this):B.propHooks._default.set(this);return this}}
B.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}};c.each(["toggle","show","hide"],function(a,b){var d=c.fn[b];c.fn[b]=function(e,f,g){return null==e||"boolean"===typeof e||!a&&c.isFunction(e)&&c.isFunction(f)?d.apply(this,arguments):this.animate(ea(b,!0),e,f,g)}});c.fn.extend({fadeTo:function(a,b,c,e){return this.filter(R).css("opacity",0).show().end().animate({opacity:b},a,c,e)},animate:function(a,b,d,e){var f=c.isEmptyObject(a),g=c.speed(b,d,e);
b=function(){var b=Ta(this,c.extend({},a),g);f&&b.stop(!0)};return f||!1===g.queue?this.each(b):this.queue(g.queue,b)},stop:function(a,b,d){var e=function(a){var b=a.stop;delete a.stop;b(d)};"string"!==typeof a&&(d=b,b=a,a=n);b&&!1!==a&&this.queue(a||"fx",[]);return this.each(function(){var b=!0,g=null!=a&&a+"queueHooks",h=c.timers,k=c._data(this);if(g)k[g]&&k[g].stop&&e(k[g]);else for(g in k)k[g]&&k[g].stop&&Jc.test(g)&&e(k[g]);for(g=h.length;g--;)h[g].elem!==this||null!=a&&h[g].queue!==a||(h[g].anim.stop(d),
b=!1,h.splice(g,1));!b&&d||c.dequeue(this,a)})}});c.each({slideDown:ea("show"),slideUp:ea("hide"),slideToggle:ea("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(a,c,f){return this.animate(b,a,c,f)}});c.speed=function(a,b,d){var e=a&&"object"===typeof a?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:"number"===typeof e.duration?e.duration:e.duration in
-c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;if(null==e.queue||!0===e.queue)e.queue="fx";e.old=e.complete;e.complete=function(){c.isFunction(e.old)&&e.old.call(this);e.queue&&c.dequeue(this,e.queue)};return e};c.easing={linear:function(a){return a},swing:function(a){return 0.5-Math.cos(a*Math.PI)/2}};c.timers=[];c.fx=B.prototype.init;c.fx.tick=function(){var a,b=c.timers,d=0;for(V=c.now();d<b.length;d++)a=b[d],a()||b[d]!==a||b.splice(d--,1);b.length||c.fx.stop();V=n};c.fx.timer=function(a){a()&&
+c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;if(null==e.queue||!0===e.queue)e.queue="fx";e.old=e.complete;e.complete=function(){c.isFunction(e.old)&&e.old.call(this);e.queue&&c.dequeue(this,e.queue)};return e};c.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}};c.timers=[];c.fx=B.prototype.init;c.fx.tick=function(){var a,b=c.timers,d=0;for(V=c.now();d<b.length;d++)a=b[d],a()||b[d]!==a||b.splice(d--,1);b.length||c.fx.stop();V=n};c.fx.timer=function(a){a()&&
c.timers.push(a)&&!la&&(la=setInterval(c.fx.tick,c.fx.interval))};c.fx.interval=13;c.fx.stop=function(){clearInterval(la);la=null};c.fx.speeds={slow:600,fast:200,_default:400};c.fx.step={};c.expr&&c.expr.filters&&(c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length});var yb=/^(?:body|html)$/i;c.fn.offset=function(a){if(arguments.length)return a===n?this:this.each(function(b){c.offset.setOffset(this,a,b)});var b,d,e,f,g,h={top:0,left:0};if(e=(f=this[0])&&
f.ownerDocument){if((d=e.body)===f)return c.offset.bodyOffset(f);b=e.documentElement;if(!c.contains(b,f))return h;"undefined"!==typeof f.getBoundingClientRect&&(h=f.getBoundingClientRect());e=Ua(e);f=b.clientTop||d.clientTop||0;d=b.clientLeft||d.clientLeft||0;g=e.pageYOffset||b.scrollTop;b=e.pageXOffset||b.scrollLeft;return{top:h.top+g-f,left:h.left+b-d}}};c.offset={bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(c.css(a,"marginTop"))||
0,d+=parseFloat(c.css(a,"marginLeft"))||0);return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");"static"===e&&(a.style.position="relative");var f=c(a),g=f.offset(),h=c.css(a,"top"),k=c.css(a,"left"),l={},m={};("absolute"===e||"fixed"===e)&&-1<c.inArray("auto",[h,k])?(m=f.position(),e=m.top,k=m.left):(e=parseFloat(h)||0,k=parseFloat(k)||0);c.isFunction(b)&&(b=b.call(a,d,g));null!=b.top&&(l.top=b.top-g.top+e);null!=b.left&&(l.left=b.left-g.left+k);"using"in b?b.using.call(a,l):
diff --git a/sitestatic/jquery.tablesorter-2.7.min.js b/sitestatic/jquery.tablesorter-2.7.min.js
index eafca402..01956458 100644
--- a/sitestatic/jquery.tablesorter-2.7.min.js
+++ b/sitestatic/jquery.tablesorter-2.7.min.js
@@ -45,15 +45,15 @@ a,b,d);b=c.replace(h[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split(
1:-1;typeof a!==typeof h&&(a+="",h+="");if(a<h)return-1;if(a>h)return 1}return 0};f.sortTextDesc=function(b,c,a,d){if(c===a)return 0;var e=b.config,m=e.string[e.empties[d]||e.emptyTo];return""===c&&0!==m?"boolean"===typeof m?m?-1:1:m||1:""===a&&0!==m?"boolean"===typeof m?m?1:-1:-m||-1:"function"===typeof e.textSorter?e.textSorter(a,c,b,d):f.sortText(b,a,c)};f.getTextValue=function(b,c,a){if(c){var d=b.length,e=c+a;for(c=0;c<d;c++)e+=b.charCodeAt(c);return a*e}return 0};f.sortNumeric=function(b,c,
a,d,e,m){if(c===a)return 0;b=b.config;d=b.string[b.empties[d]||b.emptyTo];if(""===c&&0!==d)return"boolean"===typeof d?d?-1:1:-d||-1;if(""===a&&0!==d)return"boolean"===typeof d?d?1:-1:d||1;isNaN(c)&&(c=f.getTextValue(c,e,m));isNaN(a)&&(a=f.getTextValue(a,e,m));return c-a};f.sortNumericDesc=function(b,c,a,d,e,m){if(c===a)return 0;b=b.config;d=b.string[b.empties[d]||b.emptyTo];if(""===c&&0!==d)return"boolean"===typeof d?d?-1:1:d||1;if(""===a&&0!==d)return"boolean"===typeof d?d?1:-1:-d||-1;isNaN(c)&&
(c=f.getTextValue(c,e,m));isNaN(a)&&(a=f.getTextValue(a,e,m));return a-c};f.characterEquivalents={a:"\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5",A:"\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5",c:"\u00e7\u0107\u010d",C:"\u00c7\u0106\u010c",e:"\u00e9\u00e8\u00ea\u00eb\u011b\u0119",E:"\u00c9\u00c8\u00ca\u00cb\u011a\u0118",i:"\u00ed\u00ec\u0130\u00ee\u00ef\u0131",I:"\u00cd\u00cc\u0130\u00ce\u00cf",o:"\u00f3\u00f2\u00f4\u00f5\u00f6",O:"\u00d3\u00d2\u00d4\u00d5\u00d6",ss:"\u00df",SS:"\u1e9e",u:"\u00fa\u00f9\u00fb\u00fc\u016f",
-U:"\u00da\u00d9\u00db\u00dc\u016e"};f.replaceAccents=function(b){var c,a="[",d=f.characterEquivalents;if(!f.characterRegex){f.characterRegexArray={};for(c in d)"string"===typeof c&&(a+=d[c],f.characterRegexArray[c]=RegExp("["+d[c]+"]","g"));f.characterRegex=RegExp(a+"]")}if(f.characterRegex.test(b))for(c in d)"string"===typeof c&&(b=b.replace(f.characterRegexArray[c],c));return b};f.isValueInArray=function(b,c){var a,d=c.length;for(a=0;a<d;a++)if(c[a][0]===b)return!0;return!1};f.addParser=function(b){var c,
-a=f.parsers.length,d=!0;for(c=0;c<a;c++)f.parsers[c].id.toLowerCase()===b.id.toLowerCase()&&(d=!1);d&&f.parsers.push(b)};f.getParserById=function(b){var c,a=f.parsers.length;for(c=0;c<a;c++)if(f.parsers[c].id.toLowerCase()===b.toString().toLowerCase())return f.parsers[c];return!1};f.addWidget=function(b){f.widgets.push(b)};f.getWidgetById=function(b){var c,a,d=f.widgets.length;for(c=0;c<d;c++)if((a=f.widgets[c])&&a.hasOwnProperty("id")&&a.id.toLowerCase()===b.toLowerCase())return a};f.applyWidget=
-function(b,c){var a=b.config,d=a.widgetOptions,e=a.widgets.sort().reverse(),m,h,k,n=e.length;h=l.inArray("zebra",a.widgets);0<=h&&(a.widgets.splice(h,1),a.widgets.push("zebra"));a.debug&&(m=new Date);for(h=0;h<n;h++)(k=f.getWidgetById(e[h]))&&(!0===c&&k.hasOwnProperty("init")?k.init(b,k,a,d):!c&&k.hasOwnProperty("format")&&k.format(b,a,d));a.debug&&q("Completed "+(!0===c?"initializing":"applying")+" widgets",m)};f.refreshWidgets=function(b,c,a){var d,g=b.config,m=g.widgets,h=f.widgets,k=h.length;
-for(d=0;d<k;d++)h[d]&&h[d].id&&(c||0>l.inArray(h[d].id,m))&&(g.debug&&e("Refeshing widgets: Removing "+h[d].id),h[d].hasOwnProperty("remove")&&h[d].remove(b,g,g.widgetOptions));!0!==a&&f.applyWidget(b,c)};f.getData=function(b,c,a){var d="";b=l(b);var e,f;if(!b.length)return"";e=l.metadata?b.metadata():!1;f=" "+(b.attr("class")||"");"undefined"!==typeof b.data(a)||"undefined"!==typeof b.data(a.toLowerCase())?d+=b.data(a)||b.data(a.toLowerCase()):e&&"undefined"!==typeof e[a]?d+=e[a]:c&&"undefined"!==
-typeof c[a]?d+=c[a]:" "!==f&&f.match(" "+a+"-")&&(d=f.match(RegExp(" "+a+"-(\\w+)"))[1]||"");return l.trim(d)};f.formatFloat=function(b,c){if("string"!==typeof b||""===b)return b;var a;b=(c&&c.config?!1!==c.config.usNumberFormat:"undefined"!==typeof c?c:1)?b.replace(/,/g,""):b.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(b)&&(b=b.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(b);return isNaN(a)?l.trim(b):a};f.isDigit=function(b){return isNaN(b)?/^[\-+(]?\d+[)]?$/.test(b.toString().replace(/[,.'"\s]/g,
+U:"\u00da\u00d9\u00db\u00dc\u016e"};f.replaceAccents=function(b){var c,a="[",d=f.characterEquivalents;if(!f.characterRegex){f.characterRegexArray={};for(c in d)"string"===typeof c&&(a+=d[c],f.characterRegexArray[c]=new RegExp("["+d[c]+"]","g"));f.characterRegex=new RegExp(a+"]")}if(f.characterRegex.test(b))for(c in d)"string"===typeof c&&(b=b.replace(f.characterRegexArray[c],c));return b};f.isValueInArray=function(b,c){var a,d=c.length;for(a=0;a<d;a++)if(c[a][0]===b)return!0;return!1};f.addParser=
+function(b){var c,a=f.parsers.length,d=!0;for(c=0;c<a;c++)f.parsers[c].id.toLowerCase()===b.id.toLowerCase()&&(d=!1);d&&f.parsers.push(b)};f.getParserById=function(b){var c,a=f.parsers.length;for(c=0;c<a;c++)if(f.parsers[c].id.toLowerCase()===b.toString().toLowerCase())return f.parsers[c];return!1};f.addWidget=function(b){f.widgets.push(b)};f.getWidgetById=function(b){var c,a,d=f.widgets.length;for(c=0;c<d;c++)if((a=f.widgets[c])&&a.hasOwnProperty("id")&&a.id.toLowerCase()===b.toLowerCase())return a};
+f.applyWidget=function(b,c){var a=b.config,d=a.widgetOptions,e=a.widgets.sort().reverse(),m,h,k,n=e.length;h=l.inArray("zebra",a.widgets);0<=h&&(a.widgets.splice(h,1),a.widgets.push("zebra"));a.debug&&(m=new Date);for(h=0;h<n;h++)(k=f.getWidgetById(e[h]))&&(!0===c&&k.hasOwnProperty("init")?k.init(b,k,a,d):!c&&k.hasOwnProperty("format")&&k.format(b,a,d));a.debug&&q("Completed "+(!0===c?"initializing":"applying")+" widgets",m)};f.refreshWidgets=function(b,c,a){var d,g=b.config,m=g.widgets,h=f.widgets,
+k=h.length;for(d=0;d<k;d++)h[d]&&h[d].id&&(c||0>l.inArray(h[d].id,m))&&(g.debug&&e("Refeshing widgets: Removing "+h[d].id),h[d].hasOwnProperty("remove")&&h[d].remove(b,g,g.widgetOptions));!0!==a&&f.applyWidget(b,c)};f.getData=function(b,c,a){var d="";b=l(b);var e,f;if(!b.length)return"";e=l.metadata?b.metadata():!1;f=" "+(b.attr("class")||"");"undefined"!==typeof b.data(a)||"undefined"!==typeof b.data(a.toLowerCase())?d+=b.data(a)||b.data(a.toLowerCase()):e&&"undefined"!==typeof e[a]?d+=e[a]:c&&"undefined"!==
+typeof c[a]?d+=c[a]:" "!==f&&f.match(" "+a+"-")&&(d=f.match(new RegExp(" "+a+"-(\\w+)"))[1]||"");return l.trim(d)};f.formatFloat=function(b,c){if("string"!==typeof b||""===b)return b;var a;b=(c&&c.config?!1!==c.config.usNumberFormat:"undefined"!==typeof c?c:1)?b.replace(/,/g,""):b.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(b)&&(b=b.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(b);return isNaN(a)?l.trim(b):a};f.isDigit=function(b){return isNaN(b)?/^[\-+(]?\d+[)]?$/.test(b.toString().replace(/[,.'"\s]/g,
"")):!0}}});var k=l.tablesorter;l.fn.extend({tablesorter:k.construct});k.addParser({id:"text",is:function(e,k,l){return!0},format:function(e,q,s,r){q=q.config;e=l.trim(q.ignoreCase?e.toLocaleLowerCase():e);return q.sortLocaleCompare?k.replaceAccents(e):e},type:"text"});k.addParser({id:"currency",is:function(e){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test(e)},format:function(e,l){return k.formatFloat(e.replace(/[^\w,. \-()]/g,""),l)},type:"numeric"});
k.addParser({id:"ipAddress",is:function(e){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(e)},format:function(e,l){var s,r=e.split("."),x="",y=r.length;for(s=0;s<y;s++)x+=("00"+r[s]).slice(-3);return k.formatFloat(x,l)},type:"numeric"});k.addParser({id:"url",is:function(e){return/^(https?|ftp|file):\/\//.test(e)},format:function(e){return l.trim(e.replace(/(https?|ftp|file):\/\//,""))},type:"text"});k.addParser({id:"isoDate",is:function(e){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(e)},
format:function(e,l){return k.formatFloat(""!==e?(new Date(e.replace(/-/g,"/"))).getTime()||"":"",l)},type:"numeric"});k.addParser({id:"percent",is:function(e){return/(\d\s?%|%\s?\d)/.test(e)},format:function(e,l){return k.formatFloat(e.replace(/%/g,""),l)},type:"numeric"});k.addParser({id:"usLongDate",is:function(e){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(e)},format:function(e,l){return k.formatFloat((new Date(e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||
"",l)},type:"numeric"});k.addParser({id:"shortDate",is:function(e){return/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/.test(e)},format:function(e,l,s,r){s=l.config;var x=s.headerList[r],y=x.shortDateFormat;"undefined"===typeof y&&(y=x.shortDateFormat=k.getData(x,s.headers[r],"dateFormat")||s.dateFormat);e=e.replace(/\s+/g," ").replace(/[\-|\.|\,]/g,"/");"mmddyyyy"===y?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2"):"ddmmyyyy"===y?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,
"$3/$2/$1"):"yyyymmdd"===y&&(e=e.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3"));return k.formatFloat((new Date(e)).getTime()||"",l)},type:"numeric"});k.addParser({id:"time",is:function(e){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(e)},format:function(e,l){return k.formatFloat((new Date("2000/01/01 "+e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",l)},type:"numeric"});k.addParser({id:"digit",is:function(e){return k.isDigit(e)},format:function(e,l){return k.formatFloat(e.replace(/[^\w,. \-()]/g,
-""),l)},type:"numeric"});k.addParser({id:"metadata",is:function(e){return!1},format:function(e,k,s){e=k.config;e=e.parserMetadataName?e.parserMetadataName:"sortValue";return l(s).metadata()[e]},type:"numeric"});k.addWidget({id:"zebra",format:function(e,q,s){var r,x,y,A,B,D,C=RegExp(q.cssChildRow,"i"),E=l(e).children("tbody:not(."+q.cssInfoBlock+")");q.debug&&(B=new Date);for(e=0;e<E.length;e++)r=l(E[e]),D=r.children("tr").length,1<D&&(y=0,r=r.children("tr:visible"),r.each(function(){x=l(this);C.test(this.className)||
-y++;A=0===y%2;x.removeClass(s.zebra[A?1:0]).addClass(s.zebra[A?0:1])}));q.debug&&k.benchmark("Applying Zebra widget",B)},remove:function(e,k,s){var r;s=l(e).children("tbody:not(."+k.cssInfoBlock+")");var x=(k.widgetOptions.zebra||["even","odd"]).join(" ");for(k=0;k<s.length;k++)r=l.tablesorter.processTbody(e,l(s[k]),!0),r.children().removeClass(x),l.tablesorter.processTbody(e,r,!1)}})}(jQuery);
+""),l)},type:"numeric"});k.addParser({id:"metadata",is:function(e){return!1},format:function(e,k,s){e=k.config;e=e.parserMetadataName?e.parserMetadataName:"sortValue";return l(s).metadata()[e]},type:"numeric"});k.addWidget({id:"zebra",format:function(e,q,s){var r,x,y,A,B,D,C=new RegExp(q.cssChildRow,"i"),E=l(e).children("tbody:not(."+q.cssInfoBlock+")");q.debug&&(B=new Date);for(e=0;e<E.length;e++)r=l(E[e]),D=r.children("tr").length,1<D&&(y=0,r=r.children("tr:visible"),r.each(function(){x=l(this);
+C.test(this.className)||y++;A=0===y%2;x.removeClass(s.zebra[A?1:0]).addClass(s.zebra[A?0:1])}));q.debug&&k.benchmark("Applying Zebra widget",B)},remove:function(e,k,s){var r;s=l(e).children("tbody:not(."+k.cssInfoBlock+")");var x=(k.widgetOptions.zebra||["even","odd"]).join(" ");for(k=0;k<s.length;k++)r=l.tablesorter.processTbody(e,l(s[k]),!0),r.children().removeClass(x),l.tablesorter.processTbody(e,r,!1)}})}(jQuery);
diff --git a/sitestatic/konami.js b/sitestatic/konami.js
index 88b494e0..15882b9f 100644
--- a/sitestatic/konami.js
+++ b/sitestatic/konami.js
@@ -1,101 +1,105 @@
/*
- * Konami-JS ~
- * :: Now with support for touch events and multiple instances for
- * :: those situations that call for multiple easter eggs!
- * Code: http://konami-js.googlecode.com/
- * Examples: http://www.snaptortoise.com/konami-js
- * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
- * Version: 1.4.1 (3/1//2013)
- * Licensed under the GNU General Public License v3
- * http://www.gnu.org/copyleft/gpl.html
- * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
-*/
+ * Konami-JS ~
+ * :: Now with support for touch events and multiple instances for
+ * :: those situations that call for multiple easter eggs!
+ * Code: http://konami-js.googlecode.com/
+ * Examples: http://www.snaptortoise.com/konami-js
+ * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
+ * Version: 1.4.2 (9/2/2013)
+ * Licensed under the MIT License (http://opensource.org/licenses/MIT)
+ * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
+ */
-var Konami = function(callback) {
- var konami= {
- addEvent:function ( obj, type, fn, ref_obj )
- {
- if (obj.addEventListener)
- obj.addEventListener( type, fn, false );
- else if (obj.attachEvent)
- {
- // IE
- obj["e"+type+fn] = fn;
- obj[type+fn] = function() { obj["e"+type+fn]( window.event,ref_obj ); }
- obj.attachEvent( "on"+type, obj[type+fn] );
+var Konami = function (callback) {
+ var konami = {
+ addEvent: function (obj, type, fn, ref_obj) {
+ if (obj.addEventListener)
+ obj.addEventListener(type, fn, false);
+ else if (obj.attachEvent) {
+ // IE
+ obj["e" + type + fn] = fn;
+ obj[type + fn] = function () {
+ obj["e" + type + fn](window.event, ref_obj);
}
+ obj.attachEvent("on" + type, obj[type + fn]);
+ }
+ },
+ input: "",
+ pattern: "38384040373937396665",
+ load: function (link) {
+ this.addEvent(document, "keydown", function (e, ref_obj) {
+ if (ref_obj) konami = ref_obj; // IE
+ konami.input += e ? e.keyCode : event.keyCode;
+ if (konami.input.length > konami.pattern.length)
+ konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
+ if (konami.input == konami.pattern) {
+ konami.code(link);
+ konami.input = "";
+ e.preventDefault();
+ return false;
+ }
+ }, this);
+ this.iphone.load(link);
+ },
+ code: function (link) {
+ window.location = link
+ },
+ iphone: {
+ start_x: 0,
+ start_y: 0,
+ stop_x: 0,
+ stop_y: 0,
+ tap: false,
+ capture: false,
+ orig_keys: "",
+ keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
+ code: function (link) {
+ konami.code(link);
},
- input:"",
- pattern:"3838404037393739666513",
- load: function(link) {
- this.addEvent(document,"keydown", function(e,ref_obj) {
- if (ref_obj) konami = ref_obj; // IE
- konami.input+= e ? e.keyCode : event.keyCode;
- if (konami.input.length > konami.pattern.length) konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
- if (konami.input == konami.pattern) {
- konami.code(link);
- konami.input="";
- return;
- }
- },this);
- this.iphone.load(link);
-
- },
- code: function(link) { window.location=link},
- iphone:{
- start_x:0,
- start_y:0,
- stop_x:0,
- stop_y:0,
- tap:false,
- capture:false,
- orig_keys:"",
- keys:["UP","UP","DOWN","DOWN","LEFT","RIGHT","LEFT","RIGHT","TAP","TAP","TAP"],
- code: function(link) { konami.code(link);},
- load: function(link){
- this.orig_keys = this.keys;
- konami.addEvent(document,"touchmove",function(e){
- if(e.touches.length == 1 && konami.iphone.capture==true){
- var touch = e.touches[0];
- konami.iphone.stop_x = touch.pageX;
- konami.iphone.stop_y = touch.pageY;
- konami.iphone.tap = false;
- konami.iphone.capture=false;
- konami.iphone.check_direction();
- }
- });
- konami.addEvent(document,"touchend",function(evt){
- if (konami.iphone.tap==true) konami.iphone.check_direction(link);
- },false);
- konami.addEvent(document,"touchstart", function(evt){
- konami.iphone.start_x = evt.changedTouches[0].pageX;
- konami.iphone.start_y = evt.changedTouches[0].pageY;
- konami.iphone.tap = true;
- konami.iphone.capture = true;
- });
- },
- check_direction: function(link){
- x_magnitude = Math.abs(this.start_x-this.stop_x);
- y_magnitude = Math.abs(this.start_y-this.stop_y);
- x = ((this.start_x-this.stop_x) < 0) ? "RIGHT" : "LEFT";
- y = ((this.start_y-this.stop_y) < 0) ? "DOWN" : "UP";
- result = (x_magnitude > y_magnitude) ? x : y;
- result = (this.tap==true) ? "TAP" : result;
+ load: function (link) {
+ this.orig_keys = this.keys;
+ konami.addEvent(document, "touchmove", function (e) {
+ if (e.touches.length == 1 && konami.iphone.capture == true) {
+ var touch = e.touches[0];
+ konami.iphone.stop_x = touch.pageX;
+ konami.iphone.stop_y = touch.pageY;
+ konami.iphone.tap = false;
+ konami.iphone.capture = false;
+ konami.iphone.check_direction();
+ }
+ });
+ konami.addEvent(document, "touchend", function (evt) {
+ if (konami.iphone.tap == true) konami.iphone.check_direction(link);
+ }, false);
+ konami.addEvent(document, "touchstart", function (evt) {
+ konami.iphone.start_x = evt.changedTouches[0].pageX;
+ konami.iphone.start_y = evt.changedTouches[0].pageY;
+ konami.iphone.tap = true;
+ konami.iphone.capture = true;
+ });
+ },
+ check_direction: function (link) {
+ x_magnitude = Math.abs(this.start_x - this.stop_x);
+ y_magnitude = Math.abs(this.start_y - this.stop_y);
+ x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
+ y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
+ result = (x_magnitude > y_magnitude) ? x : y;
+ result = (this.tap == true) ? "TAP" : result;
- if (result==this.keys[0]) this.keys = this.keys.slice(1,this.keys.length);
- if (this.keys.length==0) {
- this.keys=this.orig_keys;
- this.code(link);
- }
- }
- }
+ if (result == this.keys[0]) this.keys = this.keys.slice(1, this.keys.length);
+ if (this.keys.length == 0) {
+ this.keys = this.orig_keys;
+ this.code(link);
+ }
+ }
+ }
}
-
+
typeof callback === "string" && konami.load(callback);
- if(typeof callback === "function") {
+ if (typeof callback === "function") {
konami.code = callback;
konami.load();
}
return konami;
-}
+};
diff --git a/sitestatic/konami.min.js b/sitestatic/konami.min.js
index 0d0c2e06..6090211c 100644
--- a/sitestatic/konami.min.js
+++ b/sitestatic/konami.min.js
@@ -1,16 +1,15 @@
/*
- * Konami-JS ~
- * :: Now with support for touch events and multiple instances for
- * :: those situations that call for multiple easter eggs!
- * Code: http://konami-js.googlecode.com/
- * Examples: http://www.snaptortoise.com/konami-js
- * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
- * Version: 1.4.1 (3/1//2013)
- * Licensed under the GNU General Public License v3
- * http://www.gnu.org/copyleft/gpl.html
- * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
-*/
-var Konami=function(d){var a={addEvent:function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&(a["e"+b+c]=c,a[b+c]=function(){a["e"+b+c](window.event,d)},a.attachEvent("on"+b,a[b+c]))},input:"",pattern:"3838404037393739666513",load:function(e){this.addEvent(document,"keydown",function(b,c){c&&(a=c);a.input+=b?b.keyCode:event.keyCode;a.input.length>a.pattern.length&&(a.input=a.input.substr(a.input.length-a.pattern.length));a.input==a.pattern&&(a.code(e),a.input="")},this);this.iphone.load(e)},
-code:function(a){window.location=a},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:!1,capture:!1,orig_keys:"",keys:"UP UP DOWN DOWN LEFT RIGHT LEFT RIGHT TAP TAP TAP".split(" "),code:function(e){a.code(e)},load:function(e){this.orig_keys=this.keys;a.addEvent(document,"touchmove",function(b){1==b.touches.length&&!0==a.iphone.capture&&(b=b.touches[0],a.iphone.stop_x=b.pageX,a.iphone.stop_y=b.pageY,a.iphone.tap=!1,a.iphone.capture=!1,a.iphone.check_direction())});a.addEvent(document,"touchend",function(b){!0==
-a.iphone.tap&&a.iphone.check_direction(e)},!1);a.addEvent(document,"touchstart",function(b){a.iphone.start_x=b.changedTouches[0].pageX;a.iphone.start_y=b.changedTouches[0].pageY;a.iphone.tap=!0;a.iphone.capture=!0})},check_direction:function(a){x_magnitude=Math.abs(this.start_x-this.stop_x);y_magnitude=Math.abs(this.start_y-this.stop_y);x=0>this.start_x-this.stop_x?"RIGHT":"LEFT";y=0>this.start_y-this.stop_y?"DOWN":"UP";result=x_magnitude>y_magnitude?x:y;result=!0==this.tap?"TAP":result;result==this.keys[0]&&
-(this.keys=this.keys.slice(1,this.keys.length));0==this.keys.length&&(this.keys=this.orig_keys,this.code(a))}}};"string"===typeof d&&a.load(d);"function"===typeof d&&(a.code=d,a.load());return a};
+ * Konami-JS ~
+ * :: Now with support for touch events and multiple instances for
+ * :: those situations that call for multiple easter eggs!
+ * Code: http://konami-js.googlecode.com/
+ * Examples: http://www.snaptortoise.com/konami-js
+ * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
+ * Version: 1.4.2 (9/2/2013)
+ * Licensed under the MIT License (http://opensource.org/licenses/MIT)
+ * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
+ */
+var Konami=function(d){var a={addEvent:function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&(a["e"+b+c]=c,a[b+c]=function(){a["e"+b+c](window.event,d)},a.attachEvent("on"+b,a[b+c]))},input:"",pattern:"38384040373937396665",load:function(e){this.addEvent(document,"keydown",function(b,c){c&&(a=c);a.input+=b?b.keyCode:event.keyCode;a.input.length>a.pattern.length&&(a.input=a.input.substr(a.input.length-a.pattern.length));if(a.input==a.pattern)return a.code(e),a.input="",b.preventDefault(),
+!1},this);this.iphone.load(e)},code:function(a){window.location=a},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:!1,capture:!1,orig_keys:"",keys:"UP UP DOWN DOWN LEFT RIGHT LEFT RIGHT TAP TAP".split(" "),code:function(e){a.code(e)},load:function(e){this.orig_keys=this.keys;a.addEvent(document,"touchmove",function(b){1==b.touches.length&&!0==a.iphone.capture&&(b=b.touches[0],a.iphone.stop_x=b.pageX,a.iphone.stop_y=b.pageY,a.iphone.tap=!1,a.iphone.capture=!1,a.iphone.check_direction())});a.addEvent(document,
+"touchend",function(b){!0==a.iphone.tap&&a.iphone.check_direction(e)},!1);a.addEvent(document,"touchstart",function(b){a.iphone.start_x=b.changedTouches[0].pageX;a.iphone.start_y=b.changedTouches[0].pageY;a.iphone.tap=!0;a.iphone.capture=!0})},check_direction:function(a){x_magnitude=Math.abs(this.start_x-this.stop_x);y_magnitude=Math.abs(this.start_y-this.stop_y);x=0>this.start_x-this.stop_x?"RIGHT":"LEFT";y=0>this.start_y-this.stop_y?"DOWN":"UP";result=x_magnitude>y_magnitude?x:y;result=!0==this.tap?
+"TAP":result;result==this.keys[0]&&(this.keys=this.keys.slice(1,this.keys.length));0==this.keys.length&&(this.keys=this.orig_keys,this.code(a))}}};"string"===typeof d&&a.load(d);"function"===typeof d&&(a.code=d,a.load());return a};
diff --git a/templates/admin/index.html b/templates/admin/index.html
index fddd55e5..89ee1df1 100644
--- a/templates/admin/index.html
+++ b/templates/admin/index.html
@@ -5,7 +5,7 @@
{% block coltype %}colMS{% endblock %}
-{% block bodyclass %}dashboard{% endblock %}
+{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %}
@@ -34,9 +34,7 @@
<div class="app-{{ app.app_label }} module">
<table>
<caption>
- <a href="{{ app.app_url }}" class="section" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">
- {% blocktrans with name=app.name %}{{ name }}{% endblocktrans %}
- </a>
+ <a href="{{ app.app_url }}" class="section" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">{{ app.name }}</a>
</caption>
{% for model in app.models %}
<tr class="model-{{ model.object_name|lower }}">
diff --git a/templates/mirrors/mirror_details.html b/templates/mirrors/mirror_details.html
index 2ae89880..bd302d61 100644
--- a/templates/mirrors/mirror_details.html
+++ b/templates/mirrors/mirror_details.html
@@ -47,6 +47,10 @@
<td>{{ mirror.created }}</td>
</tr>
<tr>
+ <th>Last Modified:</th>
+ <td>{{ mirror.last_modified }}</td>
+ </tr>
+ <tr>
<th>Rsync IPs:</th>
<td class="wrap">{{mirror.rsync_ips.all|join:', '}}</td>
</tr>
@@ -102,8 +106,8 @@
<th>Last Sync</th>
<th>Completion %</th>
<th>μ Delay (hh:mm)</th>
- <th>μ Duration (secs)</th>
- <th>σ Duration (secs)</th>
+ <th>μ Duration (s)</th>
+ <th>σ Duration (s)</th>
<th>Score</th>
<th>Details</th>
</tr>
diff --git a/templates/mirrors/status.html b/templates/mirrors/status.html
index 4d75cd8e..250d9bad 100644
--- a/templates/mirrors/status.html
+++ b/templates/mirrors/status.html
@@ -80,7 +80,9 @@
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
- var headers = { 4: { sorter: 'duration' }, 5: { sorter: 'mostlydigit' }, 6: { sorter: 'mostlydigit' }, 7: { sorter: 'mostlydigit' } };
+ var headers = { 4: { sorter: 'duration' }, 5: { sorter: 'mostlydigit' },
+ 6: { sorter: 'mostlydigit' }, 7: { sorter: 'mostlydigit' },
+ 8: { sorter: false } };
$("#outofsync_mirrors:has(tbody tr)").tablesorter(
{widgets: ['zebra'], sortList: [[4,0]], headers: headers });
$("#successful_mirrors:has(tbody tr)").tablesorter(
diff --git a/templates/mirrors/status_table.html b/templates/mirrors/status_table.html
index 00b9c1df..83538303 100644
--- a/templates/mirrors/status_table.html
+++ b/templates/mirrors/status_table.html
@@ -8,9 +8,10 @@
<th>Country</th>
<th>Completion %</th>
<th>μ Delay (hh:mm)</th>
- <th>μ Duration (secs)</th>
- <th>σ Duration (secs)</th>
+ <th>μ Duration (s)</th>
+ <th>σ Duration (s)</th>
<th>Mirror Score</th>
+ <th></th>
</tr>
</thead>
<tbody>
@@ -23,6 +24,7 @@
<td>{{ m_url.duration_avg|floatvalue:2 }}</td>
<td>{{ m_url.duration_stddev|floatvalue:2 }}</td>
<td>{{ m_url.score|floatvalue:1|default:'∞' }}</td>
+ <td><a href="{{ m_url.get_absolute_url }}">details</a></td>
</tr>{% endfor %}
</tbody>
</table>
diff --git a/templates/mirrors/url_details.html b/templates/mirrors/url_details.html
index 54960a0d..557a1b79 100644
--- a/templates/mirrors/url_details.html
+++ b/templates/mirrors/url_details.html
@@ -18,6 +18,10 @@
<td>{% if url.protocol.is_download %}<a href="{{ url.url }}">{{ url.url }}</a>{% else %}{{ url.url }}{% endif %}</td>
</tr>
<tr>
+ <th>Mirror:</th>
+ <td><a href="../">{{ url.mirror.name }}</a></td>
+ </tr>
+ <tr>
<th>Protocol:</th>
<td>{{ url.protocol }}</td>
</tr>
@@ -63,7 +67,7 @@
<th>Check IP</th>
<th>Last Sync</th>
<th>Delay (hh:mm)</th>
- <th>Duration (secs)</th>
+ <th>Duration (s)</th>
<th>Success?</th>
<th>Error Message</th>
</tr>
diff --git a/templates/public/index.html b/templates/public/index.html
index b97c7909..6ef6b4bf 100644
--- a/templates/public/index.html
+++ b/templates/public/index.html
@@ -114,9 +114,9 @@
<ul>
<li><a href="{% wiki_url %}"
title="Community documentation">Wiki</a></li>
- <li><a href="{% wiki_url 'Installation Guide' %}"
+ <li><a href="{% wiki_url 'Installation_guide' %}"
title="Installation guide">Installation Guide</a></li>
- <li><a href="{% wiki_url "Beginners'_Guide" %}"
+ <li><a href="{% wiki_url "Beginners'_guide" %}"
title="A good place to start for beginners">Beginners' Guide</a></li>
<li><a href="{% wiki_url 'Migration' %}"
title="Free your Arch installation">Migration from Arch Linux</a></li>
@@ -127,7 +127,7 @@
<ul>
<li><a href="{{ MAILMAN_BASE_URL }}/mailman/listinfo/"
title="Community and developer mailing lists">Mailing Lists</a></li>
- <li><a href="{% wiki_url 'IRC_Channels' %}"
+ <li><a href="{% wiki_url 'IRC_channels' %}"
title="Official and regional IRC communities">IRC Channels</a></li>
<li><a href="https://identi.ca/group/parabola"
title="Parabola at identi.ca">Identi.ca group</a></li>
diff --git a/todolists/migrations/0001_initial.py b/todolists/migrations/0001_initial.py
index 48d38aae..4ffbf838 100644
--- a/todolists/migrations/0001_initial.py
+++ b/todolists/migrations/0001_initial.py
@@ -1,19 +1,61 @@
# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
+from __future__ import unicode_literals
+from django.db import models, migrations
+import django.db.models.deletion
+from django.conf import settings
-class Migration(SchemaMigration):
- def forwards(self, orm):
- pass
+class Migration(migrations.Migration):
- def backwards(self, orm):
- pass
+ dependencies = [
+ ('main', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
- models = {
-
- }
-
- complete_apps = ['todolists']
+ operations = [
+ migrations.CreateModel(
+ name='Todolist',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('slug', models.SlugField(unique=True, max_length=255)),
+ ('old_id', models.IntegerField(unique=True, null=True)),
+ ('name', models.CharField(max_length=255)),
+ ('description', models.TextField()),
+ ('created', models.DateTimeField(db_index=True)),
+ ('last_modified', models.DateTimeField(editable=False)),
+ ('raw', models.TextField(blank=True)),
+ ('creator', models.ForeignKey(related_name=b'created_todolists', on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='TodolistPackage',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('pkgname', models.CharField(max_length=255)),
+ ('pkgbase', models.CharField(max_length=255)),
+ ('created', models.DateTimeField(editable=False)),
+ ('last_modified', models.DateTimeField(editable=False)),
+ ('removed', models.DateTimeField(null=True, blank=True)),
+ ('status', models.SmallIntegerField(default=0, choices=[(0, b'Incomplete'), (1, b'Complete'), (2, b'In-progress')])),
+ ('comments', models.TextField(null=True, blank=True)),
+ ('arch', models.ForeignKey(to='main.Arch')),
+ ('pkg', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='main.Package', null=True)),
+ ('repo', models.ForeignKey(to='main.Repo')),
+ ('todolist', models.ForeignKey(to='todolists.Todolist')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, null=True)),
+ ],
+ options={
+ 'get_latest_by': 'created',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AlterUniqueTogether(
+ name='todolistpackage',
+ unique_together=set([('todolist', 'pkgname', 'arch')]),
+ ),
+ ]
diff --git a/todolists/migrations/0002_add_todolist_and_todolistpackage.py b/todolists/migrations/0002_add_todolist_and_todolistpackage.py
deleted file mode 100644
index ba8f7ebe..00000000
--- a/todolists/migrations/0002_add_todolist_and_todolistpackage.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- depends_on = (
- ('main', '0024_set_initial_flag_date'),
- )
-
- def forwards(self, orm):
- db.create_table('todolists_todolist', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('old_id', self.gf('django.db.models.fields.IntegerField')(unique=True, null=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('description', self.gf('django.db.models.fields.TextField')()),
- ('creator', self.gf('django.db.models.fields.related.ForeignKey')(related_name='created_todolists', on_delete=models.PROTECT, to=orm['auth.User'])),
- ('created', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
- ('last_modified', self.gf('django.db.models.fields.DateTimeField')()),
- ('raw', self.gf('django.db.models.fields.TextField')(blank=True)),
- ))
- db.send_create_signal('todolists', ['Todolist'])
-
- db.create_table('todolists_todolistpackage', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('todolist', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['todolists.Todolist'])),
- ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Package'], null=True, on_delete=models.SET_NULL)),
- ('pkgname', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('pkgbase', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('arch', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Arch'])),
- ('repo', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['main.Repo'])),
- ('created', self.gf('django.db.models.fields.DateTimeField')()),
- ('status', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, on_delete=models.SET_NULL)),
- ('comments', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('todolists', ['TodolistPackage'])
-
- db.create_unique('todolists_todolistpackage', ['todolist_id', 'pkgname', 'arch_id'])
-
-
- def backwards(self, orm):
- db.delete_unique('todolists_todolistpackage', ['todolist_id', 'pkgname', 'arch_id'])
-
- db.delete_table('todolists_todolist')
-
- db.delete_table('todolists_todolistpackage')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
diff --git a/todolists/migrations/0003_migrate_todolist_data.py b/todolists/migrations/0003_migrate_todolist_data.py
deleted file mode 100644
index 8a317a67..00000000
--- a/todolists/migrations/0003_migrate_todolist_data.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- depends_on = (
- ('main', '0045_add_todolist_date_added_index'),
- ('main', '0053_auto__add_field_package_pgp_signature'),
- )
-
- def forwards(self, orm):
- list_id_map = {}
- list_added = {}
- # start by converting the todo lists themselves
- for old in orm['main.Todolist'].objects.all().order_by('id'):
- new = orm.Todolist.objects.create(name=old.name, old_id=old.id,
- description=old.description, created=old.date_added,
- last_modified=old.date_added, creator_id=old.creator_id)
- # set the 'raw' field to something useful
- pkgnames = orm['main.Package'].objects.values_list('pkgname',
- flat=True).distinct().order_by('pkgname').filter(
- todolistpkg__list_id=old.id)
- pkgname_text = '\n'.join(pkgnames)
- orm.Todolist.objects.filter(id=new.id).update(raw=pkgname_text)
- list_id_map[old.id] = new.id
- list_added[old.id] = old.date_added
-
- # 1 and 0 come from TodolistPackage.COMPLETE, INCOMPLETE
- get_status = lambda v: 1 if v is True else 0
- # next, loop each old todolist package, creating a new one
- for old in orm['main.TodolistPkg'].objects.all().select_related(
- 'pkg').order_by('id'):
- pkg = old.pkg
- new_list_id = list_id_map[old.list_id]
- orm.TodolistPackage.objects.create(todolist_id=new_list_id,
- pkg=pkg, pkgname=pkg.pkgname, pkgbase=pkg.pkgbase,
- arch_id=pkg.arch_id, repo_id=pkg.repo_id,
- status=get_status(old.complete),
- created=list_added[old.list_id])
-
- def backwards(self, orm):
- #orm.Todolist.objects.all().delete()
- #orm.TodolistPackage.objects.all().delete()
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.donor': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Donor', 'db_table': "'donors'"},
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.packagefile': {
- 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
- 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'main.todolist': {
- 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'on_delete': 'models.PROTECT'}),
- 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'main.todolistpkg': {
- 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
- 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['main', 'todolists']
- symmetrical = True
diff --git a/todolists/migrations/0004_auto__add_field_todolist_slug.py b/todolists/migrations/0004_auto__add_field_todolist_slug.py
deleted file mode 100644
index 18fd2f9a..00000000
--- a/todolists/migrations/0004_auto__add_field_todolist_slug.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('todolists_todolist', 'slug',
- self.gf('django.db.models.fields.SlugField')(max_length=255, unique=True, null=True),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column('todolists_todolist', 'slug')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'unique': 'True', 'null': 'True'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
diff --git a/todolists/migrations/0005_add_slugs.py b/todolists/migrations/0005_add_slugs.py
deleted file mode 100644
index d7d67793..00000000
--- a/todolists/migrations/0005_add_slugs.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-from django.template.defaultfilters import slugify
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- existing = list(orm.Todolist.objects.values_list(
- 'slug', flat=True).distinct())
- for item in orm.Todolist.objects.defer('raw').filter(slug=None):
- suffixed = slug = slugify(item.name)
- suffix = 1
- while suffixed in existing:
- suffix += 1
- suffixed = "%s-%d" % (slug, suffix)
-
- item.slug = suffixed
- existing.append(suffixed)
-
- item.save()
-
- def backwards(self, orm):
- orm.Todolist.objects.all.update(slug=None)
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'unique': 'True', 'null': 'True'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
- symmetrical = True
diff --git a/todolists/migrations/0006_auto__chg_field_todolist_slug.py b/todolists/migrations/0006_auto__chg_field_todolist_slug.py
deleted file mode 100644
index 3073120b..00000000
--- a/todolists/migrations/0006_auto__chg_field_todolist_slug.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.alter_column('todolists_todolist', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255))
-
- def backwards(self, orm):
- db.alter_column('todolists_todolist', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255, null=True))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
diff --git a/todolists/migrations/0007_auto__add_field_todolistpackage_removed.py b/todolists/migrations/0007_auto__add_field_todolistpackage_removed.py
deleted file mode 100644
index 6d9c4fb2..00000000
--- a/todolists/migrations/0007_auto__add_field_todolistpackage_removed.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- db.add_column('todolists_todolistpackage', 'removed',
- self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column('todolists_todolistpackage', 'removed')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
diff --git a/todolists/migrations/0008_auto__add_field_todolistpackage_last_modified.py b/todolists/migrations/0008_auto__add_field_todolistpackage_last_modified.py
deleted file mode 100644
index ac3025b4..00000000
--- a/todolists/migrations/0008_auto__add_field_todolistpackage_last_modified.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from pytz import utc
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- default = datetime.datetime(2000, 1, 1, 0, 0).replace(tzinfo=utc)
- db.add_column('todolists_todolistpackage', 'last_modified',
- self.gf('django.db.models.fields.DateTimeField')(default=default),
- keep_default=False)
-
-
- def backwards(self, orm):
- db.delete_column('todolists_todolistpackage', 'last_modified')
-
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
diff --git a/todolists/migrations/0009_update_last_modified_todolist_package.py b/todolists/migrations/0009_update_last_modified_todolist_package.py
deleted file mode 100644
index f7bf30ae..00000000
--- a/todolists/migrations/0009_update_last_modified_todolist_package.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- orm.TodolistPackage.objects.all().update(last_modified=models.F('created'))
-
- 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'})
- },
- 'main.arch': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Arch', 'db_table': "'arches'"},
- 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'main.package': {
- 'Meta': {'ordering': "('pkgname',)", 'unique_together': "(('pkgname', 'repo', 'arch'),)", 'object_name': 'Package', 'db_table': "'packages'"},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Arch']"}),
- 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'compressed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'installed_size': ('main.fields.PositiveBigIntegerField', [], {}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
- 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'pkgdesc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'on_delete': 'models.PROTECT', 'to': "orm['main.Repo']"}),
- 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
- },
- 'main.repo': {
- 'Meta': {'ordering': "('name',)", 'object_name': 'Repo', 'db_table': "'repos'"},
- 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '2'}),
- 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
- 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'todolists.todolist': {
- 'Meta': {'object_name': 'Todolist'},
- 'created': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_todolists'", 'on_delete': 'models.PROTECT', 'to': "orm['auth.User']"}),
- 'description': ('django.db.models.fields.TextField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'old_id': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True'}),
- 'raw': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'todolists.todolistpackage': {
- 'Meta': {'unique_together': "(('todolist', 'pkgname', 'arch'),)", 'object_name': 'TodolistPackage'},
- 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
- 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'created': ('django.db.models.fields.DateTimeField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_modified': ('django.db.models.fields.DateTimeField', [], {}),
- 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
- 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'removed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'todolist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['todolists.Todolist']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL'})
- }
- }
-
- complete_apps = ['todolists']
- symmetrical = True
diff --git a/urls.py b/urls.py
index 2014f0aa..04f5ecd2 100644
--- a/urls.py
+++ b/urls.py
@@ -18,7 +18,6 @@ our_sitemaps = {
'releases': sitemaps.ReleasesSitemap,
}
-admin.autodiscover()
urlpatterns = []
# Public pages
@@ -105,7 +104,7 @@ legacy_urls = (
('^todolists/$', '/todo/'),
('^docs/en/guide/install/arch-install-guide.html',
- 'https://wiki.parabolagnulinux.org/Installation_Guide'),
+ 'https://wiki.parabolagnulinux.org/Installation_guide'),
('^docs/en/',
'https://wiki.parabolagnulinux.org/'),
('^docs/',
diff --git a/visualize/models.py b/visualize/models.py
deleted file mode 100644
index e69de29b..00000000
--- a/visualize/models.py
+++ /dev/null
diff --git a/visualize/static/d3-3.0.6.min.js b/visualize/static/d3-3.0.6.min.js
index 01f88aa0..0a238da1 100644
--- a/visualize/static/d3-3.0.6.min.js
+++ b/visualize/static/d3-3.0.6.min.js
@@ -33,249 +33,248 @@
*/
d3=function(){function rb(a){return a.target}function sb(a){return a.source}function Je(a){for(var b=-1,c=a.length,d=[];++b<c;)d.push(a[b]);return d}function ba(){}function V(a){return a}function za(){return!0}function F(a){return"function"===typeof a?a:function(){return a}}function Ke(a,b,c){return function(){var d=c.apply(b,arguments);return arguments.length?a:d}}function tb(a){return null!=a&&!isNaN(a)}function Le(a){return a.length}function Me(a){return 1===a.length?function(b,c){a(null==b?c:
null)}:a}function Ne(a){return a.responseText}function Oe(a){return JSON.parse(a.responseText)}function Pe(a){var b=W.createRange();b.selectNode(W.body);return b.createContextualFragment(a.responseText)}function Qe(a){return a.responseXML}function ub(){}function zc(a){function b(){for(var b=c,d=-1,h=b.length,k;++d<h;)(k=b[d].on)&&k.apply(this,arguments);return a}var c=[],d=new ba;b.on=function(b,f){var h=d.get(b),k;if(2>arguments.length)return h&&h.on;h&&(h.on=null,c=c.slice(0,k=c.indexOf(h)).concat(c.slice(k+
-1)),d.remove(b));f&&c.push(d.set(b,{on:f}));return a};return b}function vb(a,b){return b-(a?Math.ceil(Math.log(a)/Math.LN10):1)}function Re(a){return a+""}function Se(a){return function(b){return 0>=b?0:1<=b?1:a(b)}}function Ac(a){return function(b){return 1-a(1-b)}}function Bc(a){return function(b){return 0.5*(0.5>b?a(2*b):2-a(2-2*b))}}function Te(a){return a*a}function Ue(a){return a*a*a}function Ve(a){return 1-Math.cos(a*u/2)}function We(a){return Math.pow(2,10*(a-1))}function Xe(a){return 1-Math.sqrt(1-
-a*a)}function Ye(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375}function X(){g.event.stopPropagation();g.event.preventDefault()}function Cc(){for(var a=g.event,b;b=a.sourceEvent;)a=b;return a}function wb(a){for(var b=new ub,c=0,d=arguments.length;++c<d;)b[arguments[c]]=zc(b);b.of=function(c,d){return function(h){try{var k=h.sourceEvent=g.event;h.target=a;g.event=h;b[h.type].apply(c,d)}finally{g.event=k}}};
+1)),d.remove(b));f&&c.push(d.set(b,{on:f}));return a};return b}function vb(a,b){return b-(a?Math.ceil(Math.log(a)/Math.LN10):1)}function Re(a){return a+""}function Se(a){return function(b){return 0>=b?0:1<=b?1:a(b)}}function Ac(a){return function(b){return 1-a(1-b)}}function Bc(a){return function(b){return.5*(.5>b?a(2*b):2-a(2-2*b))}}function Te(a){return a*a}function Ue(a){return a*a*a}function Ve(a){return 1-Math.cos(a*u/2)}function We(a){return Math.pow(2,10*(a-1))}function Xe(a){return 1-Math.sqrt(1-
+a*a)}function Ye(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function X(){g.event.stopPropagation();g.event.preventDefault()}function Cc(){for(var a=g.event,b;b=a.sourceEvent;)a=b;return a}function wb(a){for(var b=new ub,c=0,d=arguments.length;++c<d;)b[arguments[c]]=zc(b);b.of=function(c,d){return function(h){try{var k=h.sourceEvent=g.event;h.target=a;g.event=h;b[h.type].apply(c,d)}finally{g.event=k}}};
return b}function Dc(a){var b=[a.a,a.b],c=[a.c,a.d],d=Ec(b),e=b[0]*c[0]+b[1]*c[1],f=-e;c[0]+=f*b[0];c[1]+=f*b[1];f=Ec(c)||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1);this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*O;this.translate=[a.e,a.f];this.scale=[d,f];this.skew=f?Math.atan2(e,f)*O:0}function Ec(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]);b&&(a[0]/=b,a[1]/=b);return b}function xb(a){return"transform"==a?g.interpolateTransform:g.interpolate}function Ze(a,b){b=b-(a=+a)?1/(b-
a):0;return function(c){return(c-a)*b}}function $e(a,b){b=b-(a=+a)?1/(b-a):0;return function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function qa(){}function ca(a,b,c){return new yb(a,b,c)}function yb(a,b,c){this.r=a;this.g=b;this.b=c}function ra(a){return 16>a?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function zb(a,b,c){var d=0,e=0,f=0,h,k;if(h=/([a-z]+)\((.*)\)/i.exec(a))switch(k=h[2].split(","),h[1]){case "hsl":return c(parseFloat(k[0]),parseFloat(k[1])/100,parseFloat(k[2])/
-100);case "rgb":return b(Ab(k[0]),Ab(k[1]),Ab(k[2]))}if(c=Ka.get(a))return b(c.r,c.g,c.b);null!=a&&"#"===a.charAt(0)&&(4===a.length?(d=a.charAt(1),d+=d,e=a.charAt(2),e+=e,f=a.charAt(3),f+=f):7===a.length&&(d=a.substring(1,3),e=a.substring(3,5),f=a.substring(5,7)),d=parseInt(d,16),e=parseInt(e,16),f=parseInt(f,16));return b(d,e,f)}function Fc(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,h=(e+d)/2;f?(d=0.5>h?f/(e+d):f/(2-e-d),a=60*(a==e?(b-c)/f+(b<c?6:0):b==e?(c-a)/f+2:(a-b)/
-f+4)):d=a=0;return sa(a,d,h)}function Gc(a,b,c){a=Bb(a);b=Bb(b);c=Bb(c);var d=Cb((0.4124564*a+0.3575761*b+0.1804375*c)/Hc),e=Cb((0.2126729*a+0.7151522*b+0.072175*c)/Ic);a=Cb((0.0193339*a+0.119192*b+0.9503041*c)/Jc);return ta(116*e-16,500*(d-e),200*(e-a))}function Bb(a){return 0.04045>=(a/=255)?a/12.92:Math.pow((a+0.055)/1.055,2.4)}function Ab(a){var b=parseFloat(a);return"%"===a.charAt(a.length-1)?Math.round(2.55*b):b}function sa(a,b,c){return new Db(a,b,c)}function Db(a,b,c){this.h=a;this.s=b;this.l=
-c}function La(a,b,c){function d(a){360<a?a-=360:0>a&&(a+=360);return 60>a?e+(f-e)*a/60:180>a?f:240>a?e+(f-e)*(240-a)/60:e}var e,f;a%=360;0>a&&(a+=360);b=0>b?0:1<b?1:b;c=0>c?0:1<c?1:c;f=0.5>=c?c*(1+b):c+b-c*b;e=2*c-f;return ca(Math.round(255*d(a+120)),Math.round(255*d(a)),Math.round(255*d(a-120)))}function Aa(a,b,c){return new Ma(a,b,c)}function Ma(a,b,c){this.h=a;this.c=b;this.l=c}function Eb(a,b,c){return ta(c,Math.cos(a*=w)*b,Math.sin(a)*b)}function ta(a,b,c){return new Na(a,b,c)}function Na(a,
-b,c){this.l=a;this.a=b;this.b=c}function Kc(a,b,c){a=(a+16)/116;c=a-c/200;b=Fb(a+b/500)*Hc;a=Fb(a)*Ic;c=Fb(c)*Jc;return ca(Gb(3.2404542*b-1.5371385*a-0.4985314*c),Gb(-0.969266*b+1.8760108*a+0.041556*c),Gb(0.0556434*b-0.2040259*a+1.0572252*c))}function Lc(a,b,c){return Aa(Math.atan2(c,b)/u*180,Math.sqrt(b*b+c*c),a)}function Fb(a){return 0.206893034<a?a*a*a:(a-4/29)/7.787037}function Cb(a){return 0.008856<a?Math.pow(a,1/3):7.787037*a+4/29}function Gb(a){return Math.round(255*(0.00304>=a?12.92*a:1.055*
-Math.pow(a,1/2.4)-0.055))}function da(a){Hb(a,C);return a}function Mc(a){return function(){return Oa(a,this)}}function Nc(a){return function(){return Oc(a,this)}}function Pc(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function h(){var c=b.apply(this,arguments);null==c?this.removeAttribute(a):this.setAttribute(a,c)}function k(){var c=b.apply(this,arguments);null==
-c?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}a=g.ns.qualify(a);return null==b?a.local?d:c:"function"===typeof b?a.local?k:h:a.local?f:e}function Qc(a){return RegExp("(?:^|\\s+)"+g.requote(a)+"(?:\\s+|$)","g")}function Rc(a,b){function c(){for(var c=-1;++c<e;)a[c](this,b)}function d(){for(var c=-1,d=b.apply(this,arguments);++c<e;)a[c](this,d)}a=a.trim().split(/\s+/).map(af);var e=a.length;return"function"===typeof b?d:c}function af(a){var b=Qc(a);return function(c,
-d){if(e=c.classList)return d?e.add(a):e.remove(a);var e=c.className,f=null!=e.baseVal,h=f?e.baseVal:e;d?(b.lastIndex=0,b.test(h)||(h=(h+" "+a).trim().replace(/\s+/g," "),f?e.baseVal=h:c.className=h)):h&&(h=h.replace(b," ").trim().replace(/\s+/g," "),f?e.baseVal=h:c.className=h)}}function Sc(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var e=b.apply(this,arguments);null==e?this.style.removeProperty(a):this.style.setProperty(a,e,c)}return null==
-b?d:"function"===typeof b?f:e}function Tc(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);null==c?delete this[a]:this[a]=c}return null==b?c:"function"===typeof b?e:d}function Uc(a){return function(){return Vc(this,a)}}function bf(a){arguments.length||(a=g.ascending);return function(b,c){return!b-!c||a(b.__data__,c.__data__)}}function Wc(a,b,c){function d(){var b=this[f];b&&(this.removeEventListener(a,b,b.$),delete this[f])}function e(){function e(a){var c=
-g.event;g.event=a;m[0]=h.__data__;try{b.apply(h,m)}finally{g.event=c}}var h=this,m=ha(arguments);d.call(this);this.addEventListener(a,this[f]=e,e.$=c);e._=b}var f="__on"+a,h=a.indexOf(".");0<h&&(a=a.substring(0,h));return b?e:d}function ia(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=0,h=e.length,k;f<h;f++)(k=e[f])&&b(k,f,c);return a}function Xc(a){Hb(a,ma);return a}function Ba(a,b){Hb(a,M);a.id=b;return a}function Pa(a,b,c,d){var e=a.__transition__||(a.__transition__={active:0,count:0}),
-f=e[c];if(!f){var h=d.time,f=e[c]={tween:new ba,event:g.dispatch("start","end"),time:h,ease:d.ease,delay:d.delay,duration:d.duration};++e.count;g.timer(function(d){function l(d){if(e.active>c)return n();e.active=c;r.start.call(a,p,b);f.tween.forEach(function(c,e){(e=e.call(a,p,b))&&v.push(e)});m(d)||g.timer(m,0,h);return 1}function m(d){if(e.active!==c)return n();d=(d-s)/t;for(var f=q(d),h=v.length;0<h;)v[--h].call(a,f);if(1<=d)return n(),r.end.call(a,p,b),1}function n(){--e.count?delete e[c]:delete a.__transition__;
-return 1}var p=a.__data__,q=f.ease,r=f.event,s=f.delay,t=f.duration,v=[];return s<=d?l(d):g.timer(l,s,h),1},0,h);return f}}function cf(a){null==a&&(a="");return function(){this.textContent=a}}function Ib(a,b,c,d){var e=a.id;return ia(a,"function"===typeof c?function(a,h,k){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,h,k)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function Jb(){for(var a,b=Date.now(),c=ua;c;)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;a=Yc()-
-b;24<a?(isFinite(a)&&(clearTimeout(Qa),Qa=setTimeout(Jb,a)),Ra=0):(Ra=1,Zc(Jb))}function Yc(){for(var a=null,b=ua,c=Infinity;b;)b.flush?(delete Kb[b.callback.id],b=a?a.next=b.next:ua=b.next):(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function $c(a,b){var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(0>Lb&&(P.scrollX||P.scrollY)){var c=g.select(W.body).append("svg").style("position","absolute").style("top",0).style("left",0),e=c[0][0].getScreenCTM();Lb=!(e.f||e.e);
-c.remove()}Lb?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY);d=d.matrixTransform(a.getScreenCTM().inverse());return[d.x,d.y]}c=a.getBoundingClientRect();return[b.clientX-c.left-a.clientLeft,b.clientY-c.top-a.clientTop]}function T(){}function Ca(a){var b=a[0];a=a[a.length-1];return b<a?[b,a]:[a,b]}function Sa(a){return a.rangeExtent?a.rangeExtent():Ca(a.range())}function Ta(a,b){var c=0,d=a.length-1,e=a[c],f=a[d],h;f<e&&(h=c,c=d,d=h,h=e,e=f,f=h);if(b=b(f-e))a[c]=b.floor(e),a[d]=b.ceil(f);
-return a}function df(){return Math}function ad(a,b,c,d){function e(){var e=2<Math.min(a.length,b.length)?ef:ff,m=d?$e:Ze;h=e(a,b,m,c);k=e(b,a,m,g.interpolate);return f}function f(a){return h(a)}var h,k;f.invert=function(a){return k(a)};f.domain=function(b){if(!arguments.length)return a;a=b.map(Number);return e()};f.range=function(a){if(!arguments.length)return b;b=a;return e()};f.rangeRound=function(a){return f.range(a).interpolate(g.interpolateRound)};f.clamp=function(a){if(!arguments.length)return d;
-d=a;return e()};f.interpolate=function(a){if(!arguments.length)return c;c=a;return e()};f.ticks=function(b){return Mb(a,b)};f.tickFormat=function(b){return Nb(a,b)};f.nice=function(){Ta(a,bd);return e()};f.copy=function(){return ad(a,b,c,d)};return e()}function cd(a,b){return g.rebind(a,b,"range","rangeRound","interpolate","clamp")}function bd(a){return(a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1))&&{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function dd(a,
-b){var c=Ca(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),d=b/d*e;0.15>=d?e*=10:0.35>=d?e*=5:0.75>=d&&(e*=2);c[0]=Math.ceil(c[0]/e)*e;c[1]=Math.floor(c[1]/e)*e+0.5*e;c[2]=e;return c}function Mb(a,b){return g.range.apply(g,dd(a,b))}function Nb(a,b){return g.format(",."+Math.max(0,-Math.floor(Math.log(dd(a,b)[2])/Math.LN10+0.01))+"f")}function ff(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function ef(a,b,c,d){var e=[],f=[],h=0,k=Math.min(a.length,
-b.length)-1;a[k]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());for(;++h<=k;)e.push(c(a[h-1],a[h])),f.push(d(b[h-1],b[h]));return function(b){var c=g.bisect(a,b,1,k)-1;return f[c](e[c](b))}}function ed(a,b){function c(c){return a(b(c))}var d=b.pow;c.invert=function(b){return d(a.invert(b))};c.domain=function(e){if(!arguments.length)return a.domain().map(d);b=0>e[0]?Ua:Ob;d=b.pow;a.domain(e.map(b));return c};c.nice=function(){a.domain(Ta(a.domain(),df));return c};c.ticks=function(){var c=Ca(a.domain()),
-f=[];if(c.every(isFinite)){var h=Math.floor(c[0]),k=Math.ceil(c[1]),l=d(c[0]),c=d(c[1]);if(b===Ua)for(f.push(d(h));h++<k;)for(var m=9;0<m;m--)f.push(d(h)*m);else{for(;h<k;h++)for(m=1;10>m;m++)f.push(d(h)*m);f.push(d(h))}for(h=0;f[h]<l;h++);for(k=f.length;f[k-1]>c;k--);f=f.slice(h,k)}return f};c.tickFormat=function(a,f){2>arguments.length&&(f=gf);if(!arguments.length)return f;var h=Math.max(0.1,a/c.ticks().length),k=b===Ua?(l=-1E-12,Math.floor):(l=1E-12,Math.ceil),l;return function(a){return a/d(k(b(a)+
-l))<=h?f(a):""}};c.copy=function(){return ed(a.copy(),b)};return cd(c,a)}function Ob(a){return Math.log(0>a?0:a)/Math.LN10}function Ua(a){return-Math.log(0<a?0:-a)/Math.LN10}function fd(a,b){function c(b){return a(d(b))}var d=Va(b),e=Va(1/b);c.invert=function(b){return e(a.invert(b))};c.domain=function(b){if(!arguments.length)return a.domain().map(e);a.domain(b.map(d));return c};c.ticks=function(a){return Mb(c.domain(),a)};c.tickFormat=function(a){return Nb(c.domain(),a)};c.nice=function(){return c.domain(Ta(c.domain(),
-bd))};c.exponent=function(a){if(!arguments.length)return b;var h=c.domain();d=Va(b=a);e=Va(1/b);return c.domain(h)};c.copy=function(){return fd(a.copy(),b)};return cd(c,a)}function Va(a){return function(b){return 0>b?-Math.pow(-b,a):Math.pow(b,a)}}function gd(a,b){function c(b){return f[((e.get(b)||e.set(b,a.push(b)))-1)%f.length]}function d(b,c){return g.range(a.length).map(function(a){return b+c*a})}var e,f,h;c.domain=function(d){if(!arguments.length)return a;a=[];e=new ba;for(var f=-1,h=d.length,
-g;++f<h;)e.has(g=d[f])||e.set(g,a.push(g));return c[b.t].apply(c,b.a)};c.range=function(a){if(!arguments.length)return f;f=a;h=0;b={t:"range",a:arguments};return c};c.rangePoints=function(e,l){2>arguments.length&&(l=0);var m=e[0],g=e[1],p=(g-m)/(Math.max(1,a.length-1)+l);f=d(2>a.length?(m+g)/2:m+p*l/2,p);h=0;b={t:"rangePoints",a:arguments};return c};c.rangeBands=function(e,l,m){2>arguments.length&&(l=0);3>arguments.length&&(m=l);var g=e[1]<e[0],p=e[g-0],q=(e[1-g]-p)/(a.length-l+2*m);f=d(p+q*m,q);
-g&&f.reverse();h=q*(1-l);b={t:"rangeBands",a:arguments};return c};c.rangeRoundBands=function(e,l,m){2>arguments.length&&(l=0);3>arguments.length&&(m=l);var g=e[1]<e[0],p=e[g-0],q=e[1-g],r=Math.floor((q-p)/(a.length-l+2*m));f=d(p+Math.round((q-p-(a.length-l)*r)/2),r);g&&f.reverse();h=Math.round(r*(1-l));b={t:"rangeRoundBands",a:arguments};return c};c.rangeBand=function(){return h};c.rangeExtent=function(){return Ca(b.a[0])};c.copy=function(){return gd(a,b)};return c.domain(a)}function hd(a,b){function c(){var c=
-0,h=b.length;for(e=[];++c<h;)e[c-1]=g.quantile(a,c/h);return d}function d(a){return isNaN(a=+a)?NaN:b[g.bisect(e,a)]}var e;d.domain=function(b){if(!arguments.length)return a;a=b.filter(function(a){return!isNaN(a)}).sort(g.ascending);return c()};d.range=function(a){if(!arguments.length)return b;b=a;return c()};d.quantiles=function(){return e};d.copy=function(){return hd(a,b)};return c()}function id(a,b,c){function d(b){return c[Math.max(0,Math.min(h,Math.floor(f*(b-a))))]}function e(){f=c.length/(b-
-a);h=c.length-1;return d}var f,h;d.domain=function(c){if(!arguments.length)return[a,b];a=+c[0];b=+c[c.length-1];return e()};d.range=function(a){if(!arguments.length)return c;c=a;return e()};d.copy=function(){return id(a,b,c)};return e()}function jd(a,b){function c(c){return b[g.bisect(a,c)]}c.domain=function(b){if(!arguments.length)return a;a=b;return c};c.range=function(a){if(!arguments.length)return b;b=a;return c};c.copy=function(){return jd(a,b)};return c}function kd(a){function b(a){return+a}
-b.invert=b;b.domain=b.range=function(c){if(!arguments.length)return a;a=c.map(b);return b};b.ticks=function(b){return Mb(a,b)};b.tickFormat=function(b){return Nb(a,b)};b.copy=function(){return kd(a)};return b}function hf(a){return a.innerRadius}function jf(a){return a.outerRadius}function ld(a){return a.startAngle}function md(a){return a.endAngle}function nd(a){function b(b){function h(){g.push("M",f(a(p),k))}for(var g=[],p=[],q=-1,r=b.length,s,t=F(c),v=F(d);++q<r;)e.call(this,s=b[q],q)?p.push([+t.call(this,
-s,q),+v.call(this,s,q)]):p.length&&(h(),p=[]);p.length&&h();return g.length?g.join(""):null}var c=Pb,d=od,e=za,f=U,h=f.key,k=0.7;b.x=function(a){if(!arguments.length)return c;c=a;return b};b.y=function(a){if(!arguments.length)return d;d=a;return b};b.defined=function(a){if(!arguments.length)return e;e=a;return b};b.interpolate=function(a){if(!arguments.length)return h;h="function"===typeof a?f=a:(f=Qb.get(a)||U).key;return b};b.tension=function(a){if(!arguments.length)return k;k=a;return b};return b}
-function Pb(a){return a[0]}function od(a){return a[1]}function U(a){return a.join("L")}function Rb(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function Sb(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function Wa(a,b){if(1>b.length||a.length!=b.length&&a.length!=b.length+2)return U(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],h=b[0],k=h,l=1;c&&(d+="Q"+(f[0]-2*h[0]/3)+","+
-(f[1]-2*h[1]/3)+","+f[0]+","+f[1],e=a[1],l=2);if(1<b.length)for(k=b[1],f=a[l],l++,d+="C"+(e[0]+h[0])+","+(e[1]+h[1])+","+(f[0]-k[0])+","+(f[1]-k[1])+","+f[0]+","+f[1],e=2;e<b.length;e++,l++)f=a[l],k=b[e],d+="S"+(f[0]-k[0])+","+(f[1]-k[1])+","+f[0]+","+f[1];c&&(c=a[l],d+="Q"+(f[0]+2*k[0]/3)+","+(f[1]+2*k[1]/3)+","+c[0]+","+c[1]);return d}function Tb(a,b){for(var c=[],d=(1-b)/2,e,f=a[0],h=a[1],k=1,l=a.length;++k<l;)e=f,f=h,h=a[k],c.push([d*(h[0]-e[0]),d*(h[1]-e[1])]);return c}function pd(a){if(3>a.length)return U(a);
-var b=1,c=a.length,d=a[0],e=d[0],f=d[1],h=[e,e,e,(d=a[1])[0]],k=[f,f,f,d[1]],e=[e,",",f];for(Da(e,h,k);++b<c;)d=a[b],h.shift(),h.push(d[0]),k.shift(),k.push(d[1]),Da(e,h,k);for(b=-1;2>++b;)h.shift(),h.push(d[0]),k.shift(),k.push(d[1]),Da(e,h,k);return e.join("")}function aa(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function Da(a,b,c){a.push("C",aa(qd,b),",",aa(qd,c),",",aa(rd,b),",",aa(rd,c),",",aa(va,b),",",aa(va,c))}function Ub(a,b){return(b[1]-a[1])/(b[0]-a[0])}function sd(a){for(var b,
-c=-1,d=a.length,e,f;++c<d;)b=a[c],e=b[0],f=b[1]+na,b[0]=e*Math.cos(f),b[1]=e*Math.sin(f);return a}function td(a){function b(b){function l(){s.push("M",k(a(v),p),g,m(a(t.reverse()),p),"Z")}for(var s=[],t=[],v=[],x=-1,z=b.length,y,G=F(c),H=F(e),D=c===d?function(){return E}:F(d),B=e===f?function(){return wa}:F(f),E,wa;++x<z;)h.call(this,y=b[x],x)?(t.push([E=+G.call(this,y,x),wa=+H.call(this,y,x)]),v.push([+D.call(this,y,x),+B.call(this,y,x)])):t.length&&(l(),t=[],v=[]);t.length&&l();return s.length?
-s.join(""):null}var c=Pb,d=Pb,e=0,f=od,h=za,k=U,l=k.key,m=k,g="L",p=0.7;b.x=function(a){if(!arguments.length)return d;c=d=a;return b};b.x0=function(a){if(!arguments.length)return c;c=a;return b};b.x1=function(a){if(!arguments.length)return d;d=a;return b};b.y=function(a){if(!arguments.length)return f;e=f=a;return b};b.y0=function(a){if(!arguments.length)return e;e=a;return b};b.y1=function(a){if(!arguments.length)return f;f=a;return b};b.defined=function(a){if(!arguments.length)return h;h=a;return b};
-b.interpolate=function(a){if(!arguments.length)return l;l="function"===typeof a?k=a:(k=Qb.get(a)||U).key;m=k.reverse||k;g=k.closed?"M":"L";return b};b.tension=function(a){if(!arguments.length)return p;p=a;return b};return b}function kf(a){return a.radius}function ud(a){return[a.x,a.y]}function lf(a){return function(){var b=a.apply(this,arguments),c=b[0],b=b[1]+na;return[c*Math.cos(b),c*Math.sin(b)]}}function mf(){return 64}function nf(){return"circle"}function vd(a){a=Math.sqrt(a/u);return"M0,"+a+
-"A"+a+","+a+" 0 1,1 0,"+-a+"A"+a+","+a+" 0 1,1 0,"+a+"Z"}function wd(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function xd(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function of(a,b,c){d=[];if(c&&1<b.length){a=Ca(a.domain());for(var d,e=-1,f=b.length,h=(b[1]-b[0])/++c,k,l;++e<f;)for(k=c;0<--k;)(l=+b[e]-k*h)>=a[0]&&d.push(l);--e;for(k=0;++k<c&&(l=+b[e]+k*h)<a[1];)d.push(l)}return d}function pf(a){var b=a.source;a=a.target;var c;var d=a;if(b===d)c=
-b;else{c=yd(b);for(var d=yd(d),e=c.pop(),f=d.pop(),h=null;e===f;)h=e,e=c.pop(),f=d.pop();c=h}for(d=[b];b!==c;)b=b.parent,d.push(b);for(b=d.length;a!==c;)d.splice(b,0,a),a=a.parent;return d}function yd(a){for(var b=[],c=a.parent;null!=c;)b.push(a),a=c,c=c.parent;b.push(a);return b}function qf(a){a.fixed|=2}function rf(a){a.fixed&=-7}function sf(a){a.fixed|=4;a.px=a.x;a.py=a.y}function tf(a){a.fixed&=-5}function zd(a,b,c){var d=0,e=0;a.charge=0;if(!a.leaf)for(var f=a.nodes,h=f.length,k=-1,l;++k<h;)l=
-f[k],null!=l&&(zd(l,b,c),a.charge+=l.charge,d+=l.charge*l.cx,e+=l.charge*l.cy);a.point&&(a.leaf||(a.point.x+=Math.random()-0.5,a.point.y+=Math.random()-0.5),b*=c[a.point.index],a.charge+=a.pointCharge=b,d+=b*a.point.x,e+=b*a.point.y);a.cx=d/a.charge;a.cy=e/a.charge}function uf(a){return a.x}function vf(a){return a.y}function wf(a,b,c){a.y0=b;a.y=c}function Vb(a){return g.range(a.length)}function Wb(a){var b=-1;a=a[0].length;for(var c=[];++b<a;)c[b]=0;return c}function xf(a){for(var b=1,c=0,d=a[0][1],
-e,f=a.length;b<f;++b)(e=a[b][1])>d&&(c=b,d=e);return c}function yf(a){return a.reduce(zf,0)}function zf(a,b){return a+b[1]}function Af(a,b){return Ad(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function Ad(a,b){for(var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];++c<=b;)f[c]=e*c+d;return f}function Bf(a){return[g.min(a),g.max(a)]}function Ea(a,b){g.rebind(a,b,"sort","children","value");a.nodes=a;a.links=Cf;return a}function Df(a){return a.children}function Ef(a){return a.value}function Ff(a,b){return b.value-
-a.value}function Cf(a){return g.merge(a.map(function(a){return(a.children||[]).map(function(c){return{source:a,target:c}})}))}function Gf(a,b){return a.value-b.value}function Xb(a,b){var c=a._pack_next;a._pack_next=b;b._pack_prev=a;b._pack_next=c;c._pack_prev=b}function Bd(a,b){a._pack_next=b;b._pack_prev=a}function Cd(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return 0.001<e*e-c*c-d*d}function Dd(a){function b(a){d=Math.min(a.x-a.r,d);e=Math.max(a.x+a.r,e);f=Math.min(a.y-a.r,f);h=Math.max(a.y+a.r,h)}
-if((c=a.children)&&(r=c.length)){var c,d=Infinity,e=-Infinity,f=Infinity,h=-Infinity,k,l,m,g,p,q,r;c.forEach(Hf);k=c[0];k.x=-k.r;k.y=0;b(k);if(1<r&&(l=c[1],l.x=l.r,l.y=0,b(l),2<r))for(m=c[2],Ed(k,l,m),b(m),Xb(k,m),k._pack_prev=m,Xb(m,l),l=k._pack_next,g=3;g<r;g++){Ed(k,l,m=c[g]);var s=0,t=1,v=1;for(p=l._pack_next;p!==l;p=p._pack_next,t++)if(Cd(p,m)){s=1;break}if(1==s)for(q=k._pack_prev;q!==p._pack_prev&&!Cd(q,m);q=q._pack_prev,v++);s?(t<v||t==v&&l.r<k.r?Bd(k,l=p):Bd(k=q,l),g--):(Xb(k,m),l=m,b(m))}k=
-(d+e)/2;l=(f+h)/2;for(g=p=0;g<r;g++)m=c[g],m.x-=k,m.y-=l,p=Math.max(p,m.r+Math.sqrt(m.x*m.x+m.y*m.y));a.r=p;c.forEach(If)}}function Hf(a){a._pack_next=a._pack_prev=a}function If(a){delete a._pack_next;delete a._pack_prev}function Fd(a,b,c,d){var e=a.children;a.x=b+=d*a.x;a.y=c+=d*a.y;a.r*=d;if(e){a=-1;for(var f=e.length;++a<f;)Fd(e[a],b,c,d)}}function Ed(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var h=b.r+c.r,k=e*e+f*f,h=h*h,d=d*d;b=0.5+(d-h)/(2*k);h=Math.sqrt(Math.max(0,2*h*(d+k)-(d-=
-k)*d-h*h))/(2*k);c.x=a.x+b*e+h*f;c.y=a.y+b*f-h*e}else c.x=a.x+d,c.y=a.y}function Jf(a){return 1+g.max(a,function(a){return a.y})}function Kf(a){return a.reduce(function(a,c){return a+c.x},0)/a.length}function Gd(a){var b=a.children;return b&&b.length?Gd(b[0]):a}function Hd(a){var b=a.children,c;return b&&(c=b.length)?Hd(b[c-1]):a}function Id(a,b){return a.parent==b.parent?1:2}function Yb(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function Zb(a){var b=a.children,c;return b&&(c=b.length)?
-b[c-1]:a._tree.thread}function Xa(a,b){var c=a.children;if(c&&(e=c.length))for(var d,e,f=-1;++f<e;)0<b(d=Xa(c[f],b),a)&&(a=d);return a}function Lf(a,b){return a.x-b.x}function Mf(a,b){return b.x-a.x}function Nf(a,b){return a.depth-b.depth}function ea(a,b){function c(a,e){var f=a.children;if(f&&(g=f.length))for(var h,k=null,l=-1,g;++l<g;)h=f[l],c(h,k),k=h;b(a,e)}c(a,null)}function $b(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function Jd(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];
-0>e&&(c+=e/2,e=0);0>f&&(d+=f/2,f=0);return{x:c,y:d,dx:e,dy:f}}function Kd(a,b){function c(a,c){return g.xhr(a,b,c).response(d)}function d(a){return c.parse(a.responseText)}function e(b){return b.map(f).join(a)}function f(a){return h.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}var h=RegExp('["'+a+"\n]"),k=a.charCodeAt(0);c.parse=function(a){var b;return c.parseRows(a,function(a){if(b)return b(a);b=new Function("d","return {"+a.map(function(a,b){return JSON.stringify(a)+": d["+b+"]"}).join(",")+"}")})};
-c.parseRows=function(a,b){function c(){if(g>=h)return d;if(z)return z=!1,e;var b=g;if(34===a.charCodeAt(b)){for(var f=b;f++<h;)if(34===a.charCodeAt(f)){if(34!==a.charCodeAt(f+1))break;++f}g=f+2;var m=a.charCodeAt(f+1);13===m?(z=!0,10===a.charCodeAt(f+2)&&++g):10===m&&(z=!0);return a.substring(b+1,f).replace(/""/g,'"')}for(;g<h;){m=a.charCodeAt(g++);f=1;if(10===m)z=!0;else if(13===m)z=!0,10===a.charCodeAt(g)&&(++g,++f);else if(m!==k)continue;return a.substring(b,g-f)}return a.substring(b)}for(var e=
-{},d={},f=[],h=a.length,g=0,v=0,x,z;(x=c())!==d;){for(var y=[];x!==e&&x!==d;)y.push(x),x=c();b&&!(y=b(y,v++))||f.push(y)}return f};c.format=function(a){return a.map(e).join("\n")};return c}function Ya(a,b){if(Ld.hasOwnProperty(a.type))Ld[a.type](a,b)}function ac(a,b,c){var d=-1;c=a.length-c;var e;for(b.lineStart();++d<c;)e=a[d],b.point(e[0],e[1]);b.lineEnd()}function Md(a,b){var c=-1,d=a.length;for(b.polygonStart();++c<d;)ac(a[c],b,1);b.polygonEnd()}function Nd(a){return[Math.atan2(a[1],a[0]),Math.asin(Math.max(-1,
-Math.min(1,a[2])))]}function bc(a,b){return Math.abs(a[0]-b[0])<A&&Math.abs(a[1]-b[1])<A}function Za(a){var b=a[0];a=a[1];var c=Math.cos(a);return[c*Math.cos(b),c*Math.sin(b),Math.sin(a)]}function $a(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function Od(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function cc(a,b){return[a[0]*b,a[1]*b,a[2]*b]}function Pd(a){function b(b){function d(c,e){c=a(c,e);b.point(c[0],c[1])}function k(){q=NaN;x.point=l;b.lineStart()}function l(d,
-h){var k=Za([d,h]),l=a(d,h);c(q,r,p,s,t,v,q=l[0],r=l[1],p=d,s=k[0],t=k[1],v=k[2],e,b);b.point(q,r)}function g(){x.point=d;b.lineEnd()}function n(){var a,d,h,n,D,B;k();x.point=function(b,c){l(a=b,c);d=q;h=r;n=s;D=t;B=v;x.point=l};x.lineEnd=function(){c(q,r,p,s,t,v,d,h,a,n,D,B,e,b);x.lineEnd=g;g()}}var p,q,r,s,t,v,x={point:d,lineStart:k,lineEnd:g,polygonStart:function(){b.polygonStart();x.lineStart=n},polygonEnd:function(){b.polygonEnd();x.lineStart=k}};return x}function c(b,e,k,l,g,n,p,q,r,s,t,v,x,
-z){var y=p-b,G=q-e,H=y*y+G*G;if(H>4*d&&x--){var D=l+s,B=g+t,E=n+v,wa=Math.sqrt(D*D+B*B+E*E),L=Math.asin(E/=wa),u=Math.abs(Math.abs(E)-1)<A?(k+r)/2:Math.atan2(B,D),fa=a(u,L),L=fa[0],fa=fa[1],w=L-b,C=fa-e,I=G*w-y*C;if(I*I/H>d||0.3<Math.abs((y*w+G*C)/H-0.5))c(b,e,k,l,g,n,L,fa,u,D/=wa,B/=wa,E,x,z),z.point(L,fa),c(L,fa,u,D,B,E,p,q,r,s,t,v,x,z)}}var d=0.5,e=16;b.precision=function(a){if(!arguments.length)return Math.sqrt(d);e=0<(d=a*a)&&16;return b};return b}function Qd(a,b){function c(a,b){var c=Math.sqrt(f-
-2*e*Math.sin(b))/e;return[c*Math.sin(a*=e),h-c*Math.cos(a)]}var d=Math.sin(a),e=(d+Math.sin(b))/2,f=1+d*(2*e-d),h=Math.sqrt(f)/e;c.invert=function(a,b){var c=h-b;return[Math.atan2(a,c)/e,Math.asin((f-(a*a+c*c)*e*e)/(2*e))]};return c}function Rd(a){function b(a,b){a<d&&(d=a);a>f&&(f=a);b<e&&(e=b);b>h&&(h=b)}function c(){k.point=k.lineEnd=T}var d,e,f,h,k={point:b,lineStart:T,lineEnd:T,polygonStart:function(){k.lineEnd=c},polygonEnd:function(){k.point=b}};return function(b){h=f=-(d=e=Infinity);g.geo.stream(b,
-a(k));return[[d,e],[f,h]]}}function Sd(a,b){if(!N){++Y;a*=w;var c=Math.cos(b*=w);J+=(c*Math.cos(a)-J)/Y;K+=(c*Math.sin(a)-K)/Y;I+=(Math.sin(b)-I)/Y}}function Of(){var a,b;N=1;dc();N=2;var c=Z.point;Z.point=function(d,e){c(a=d,b=e)};Z.lineEnd=function(){Z.point(a,b);ec();Z.lineEnd=ec}}function dc(){function a(a,f){a*=w;var h=Math.cos(f*=w),k=h*Math.cos(a),h=h*Math.sin(a),l=Math.sin(f),g=Math.atan2(Math.sqrt((g=c*l-d*h)*g+(g=d*k-b*l)*g+(g=b*h-c*k)*g),b*k+c*h+d*l);Y+=g;J+=g*(b+(b=k));K+=g*(c+(c=h));
-I+=g*(d+(d=l))}var b,c,d;1<N||(1>N&&(N=1,Y=J=K=I=0),Z.point=function(e,f){e*=w;var h=Math.cos(f*=w);b=h*Math.cos(e);c=h*Math.sin(e);d=Math.sin(f);Z.point=a})}function ec(){Z.point=Sd}function fc(a,b){var c=Math.cos(a),d=Math.sin(a);return function(e,f,h,k){if(null!=e){if(e=Td(c,e),f=Td(c,f),0<h?e<f:e>f)e+=2*h*u}else e=a+2*h*u,f=a;for(var l,g=h*b;0<h?e>f:e<f;e-=g)k.point((l=Nd([c,-d*Math.cos(e),-d*Math.sin(e)]))[0],l[1])}}function Td(a,b){var c=Za(b);c[0]-=a;var d=Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*
-c[2]);c[0]/=d;c[1]/=d;c[2]/=d;d=Math.acos(Math.max(-1,Math.min(1,-c[1])));return((0>-c[2]?-d:d)+2*Math.PI-A)%(2*Math.PI)}function Ud(a,b,c){return function(d){function e(b,c){a(b,c)&&d.point(b,c)}function f(a,b){p.point(a,b)}function h(){q.point=f;p.lineStart()}function k(){q.point=e;p.lineEnd()}function l(a,b){z.point(a,b);y.push([a,b])}function m(){z.lineStart();y=[]}function n(){l(y[0][0],y[0][1]);z.lineEnd();var a=z.clean(),b=x.buffer(),c=b.length;if(c)if(y=null,a&1){a=b[0];s+=Vd(a,1);var c=a.length-
-1,b=-1,e;for(d.lineStart();++b<c;)d.point((e=a[b])[0],e[1]);d.lineEnd()}else 1<c&&a&2&&b.push(b.pop().concat(b.shift())),r.push(b.filter(Pf));else v=!0,t+=Vd(y,-1),y=null}var p=b(d),q={point:e,lineStart:h,lineEnd:k,polygonStart:function(){q.point=l;q.lineStart=m;q.lineEnd=n;v=!1;t=s=0;r=[];d.polygonStart()},polygonEnd:function(){q.point=e;q.lineStart=h;q.lineEnd=k;r=g.merge(r);if(r.length)Qf(r,c,d);else if(s<-A||v&&t<-A)d.lineStart(),c(null,null,1,d),d.lineEnd();d.polygonEnd();r=null},sphere:function(){d.polygonStart();
-d.lineStart();c(null,null,1,d);d.lineEnd();d.polygonEnd()}},r,s,t,v,x=Rf(),z=b(x),y;return q}}function Qf(a,b,c){var d=[],e=[];a.forEach(function(a){var b=a.length;if(!(1>=b)){var c=a[0],b=a[b-1];a={point:c,points:a,other:null,visited:!1,entry:!0,subject:!0};c={point:c,points:[c],other:a,visited:!1,entry:!1,subject:!1};a.other=c;d.push(a);e.push(c);a={point:b,points:[b],other:null,visited:!1,entry:!1,subject:!0};c={point:b,points:[b],other:a,visited:!1,entry:!0,subject:!1};a.other=c;d.push(a);e.push(c)}});
-e.sort(Sf);Wd(d);Wd(e);if(d.length){a=d[0];for(var f,h,k;;){for(f=a;f.visited;)if((f=f.next)===a)return;h=f.points;c.lineStart();do{f.visited=f.other.visited=!0;if(f.entry){if(f.subject)for(var l=0;l<h.length;l++)c.point((k=h[l])[0],k[1]);else b(f.point,f.next.point,1,c);f=f.next}else{if(f.subject)for(h=f.prev.points,l=h.length;0<=--l;)c.point((k=h[l])[0],k[1]);else b(f.point,f.prev.point,-1,c);f=f.prev}f=f.other;h=f.points}while(!f.visited);c.lineEnd()}}}function Wd(a){if(b=a.length){for(var b,c=
-0,d=a[0],e;++c<b;)d.next=e=a[c],e.prev=d,d=e;d.next=e=a[0];e.prev=d}}function Sf(a,b){return(0>(a=a.point)[0]?a[1]-u/2-A:u/2-a[1])-(0>(b=b.point)[0]?b[1]-u/2-A:u/2-b[1])}function Pf(a){return 1<a.length}function Rf(){var a=[],b;return{lineStart:function(){a.push(b=[])},point:function(a,d){b.push([a,d])},lineEnd:T,buffer:function(){var c=a;a=[];b=null;return c}}}function Vd(a,b){if(!(c=a.length))return 0;for(var c,d=0,e=0,f=a[0],h=f[0],k=f[1],l=Math.cos(k),g=Math.atan2(b*Math.sin(h)*l,Math.sin(k)),
-n=1-b*Math.cos(h)*l,p=g;++d<c;)f=a[d],l=Math.cos(k=f[1]),f=Math.atan2(b*Math.sin(h=f[0])*l,Math.sin(k)),h=1-b*Math.cos(h)*l,Math.abs(n-2)<A&&Math.abs(h-2)<A||(Math.abs(h)<A||Math.abs(n)<A||(Math.abs(Math.abs(f-g)-u)<A?2<h+n&&(e+=4*(f-g)):e=Math.abs(n-2)<A?e+4*(f-p):e+((3*u+f-g)%(2*u)-u)*(n+h)),p=g,g=f,n=h);return e}function Tf(a){function b(a,b){return Math.cos(a)*Math.cos(b)>d}function c(a,b){var c=Za(a,0),k=Za(b,0),l=[1,0,0],k=Od(c,k),g=$a(k,k),c=k[0],n=g-c*c;if(!n)return a;g=d*g/n;n=-d*c/n;c=Od(l,
-k);l=cc(l,g);k=cc(k,n);l[0]+=k[0];l[1]+=k[1];l[2]+=k[2];k=$a(l,c);g=$a(c,c);n=Math.sqrt(k*k-g*($a(l,l)-1));c=cc(c,(-k-n)/g);c[0]+=l[0];c[1]+=l[1];c[2]+=l[2];return Nd(c)}a*=w;var d=Math.cos(a);a=fc(a,6*w);return Ud(b,function(a){var d,h,k,l;return{lineStart:function(){k=h=!1;l=1},point:function(g,n){var p=[g,n],q,r=b(g,n);!d&&(k=h=r)&&a.lineStart();r!==h&&(q=c(d,p),bc(d,q)||bc(p,q))&&(p[0]+=A,p[1]+=A,r=b(p[0],p[1]));r!==h&&(l=0,(h=r)?(a.lineStart(),q=c(p,d),a.point(q[0],q[1])):(q=c(d,p),a.point(q[0],
-q[1]),a.lineEnd()),d=q);!r||d&&bc(d,p)||a.point(p[0],p[1]);d=p},lineEnd:function(){h&&a.lineEnd();d=null},clean:function(){return l|(k&&h)<<1}}},a)}function Xd(a,b){function c(c,e){return c=a(c,e),b(c[0],c[1])}a.invert&&b.invert&&(c.invert=function(c,e){return c=b.invert(c,e),c&&a.invert(c[0],c[1])});return c}function ab(a,b){return[a,b]}function Uf(a,b,c){var d=g.range(a,b-A,c).concat(b);return function(a){return d.map(function(b){return[a,b]})}}function Vf(a,b,c){var d=g.range(a,b-A,c).concat(b);
-return function(a){return d.map(function(b){return[b,a]})}}function Wf(a,b,c,d){function e(a){var b=Math.sin(a*=q)*r,c=Math.sin(q-a)*r;a=c*l+b*n;var d=c*g+b*p,b=c*h+b*k;return[Math.atan2(d,a)/w,Math.atan2(b,Math.sqrt(a*a+d*d))/w]}var f=Math.cos(b),h=Math.sin(b);b=Math.cos(d);var k=Math.sin(d),l=f*Math.cos(a),g=f*Math.sin(a),n=b*Math.cos(c),p=b*Math.sin(c),q=Math.acos(Math.max(-1,Math.min(1,h*k+f*b*Math.cos(c-a)))),r=1/Math.sin(q);e.distance=q;return e}function gc(a,b){return[a/(2*u),Math.max(-0.5,
-Math.min(0.5,Math.log(Math.tan(u/4+b/2))/(2*u)))]}function Yd(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+-2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function Xf(a){var b=Pd(function(b,d){return a([b*O,d*O])});return function(a){a=b(a);return{point:function(b,e){a.point(b*w,e*w)},sphere:function(){a.sphere()},lineStart:function(){a.lineStart()},lineEnd:function(){a.lineEnd()},polygonStart:function(){a.polygonStart()},polygonEnd:function(){a.polygonEnd()}}}}function Yf(){function a(a,b){h.push("M",a,",",b,f)}
-function b(a,b){h.push("M",a,",",b);k.point=c}function c(a,b){h.push("L",a,",",b)}function d(){k.point=a}function e(){h.push("Z")}var f=Yd(4.5),h=[],k={point:a,lineStart:function(){k.point=b},lineEnd:d,polygonStart:function(){k.lineEnd=e},polygonEnd:function(){k.lineEnd=d;k.point=a},pointRadius:function(a){f=Yd(a);return k},result:function(){if(h.length){var a=h.join("");h=[];return a}}};return k}function Zf(a){function b(b,c){a.moveTo(b,c);a.arc(b,c,h,0,2*u)}function c(b,c){a.moveTo(b,c);k.point=
-d}function d(b,c){a.lineTo(b,c)}function e(){k.point=b}function f(){a.closePath()}var h=4.5,k={point:b,lineStart:function(){k.point=c},lineEnd:e,polygonStart:function(){k.lineEnd=f},polygonEnd:function(){k.lineEnd=e;k.point=b},pointRadius:function(a){h=a;return k},result:T};return k}function $f(){function a(a,b){bb+=e*a-d*b;d=a;e=b}var b,c,d,e;ja.point=function(f,h){ja.point=a;b=d=f;c=e=h};ja.lineEnd=function(){a(b,c)}}function hc(a,b){N||(J+=a,K+=b,++I)}function Zd(){function a(a,e){var f=a-b,h=
-e-c,f=Math.sqrt(f*f+h*h);J+=f*(b+a)/2;K+=f*(c+e)/2;I+=f;b=a;c=e}var b,c;if(1!==N)if(1>N)N=1,J=K=I=0;else return;$.point=function(d,e){$.point=a;b=d;c=e}}function $d(){$.point=hc}function ag(){function a(a,b){var c=e*a-d*b;J+=c*(d+a);K+=c*(e+b);I+=3*c;d=a;e=b}var b,c,d,e;2>N&&(N=2,J=K=I=0);$.point=function(f,h){$.point=a;b=d=f;c=e=h};$.lineEnd=function(){a(b,c)}}function bg(){function a(a,b){a*=w;b=b*w/2+u/4;var c=a-d,g=Math.cos(b),n=Math.sin(b),p=f*n,q=cb,r=db,s=e*g+p*Math.cos(c),c=p*Math.sin(c);
-cb=q*s-r*c;db=r*s+q*c;d=a;e=g;f=n}var b,c,d,e,f;ka.point=function(h,k){ka.point=a;d=(b=h)*w;e=Math.cos(k=(c=k)*w/2+u/4);f=Math.sin(k)};ka.lineEnd=function(){a(b,c)}}function la(a){return ic(function(){return a})()}function ic(a){function b(a){a=h(a[0]*w,a[1]*w);return[a[0]*l+v,x-a[1]*l]}function c(a){return(a=h.invert((a[0]-v)/l,(x-a[1])/l))&&[a[0]*O,a[1]*O]}function d(){h=Xd(f=ae(r,s,t),e);var a=e(p,q);v=m-a[0]*l;x=n+a[1]*l;return b}var e,f,h,k=Pd(function(a,b){a=e(a,b);return[a[0]*l+v,x-a[1]*l]}),
-l=150,m=480,n=250,p=0,q=0,r=0,s=0,t=0,v,x,z=be,y=null;b.stream=function(a){return cg(f,z(k(a)))};b.clipAngle=function(a){if(!arguments.length)return y;z=null==a?(y=a,be):Tf(y=+a);return b};b.scale=function(a){if(!arguments.length)return l;l=+a;return d()};b.translate=function(a){if(!arguments.length)return[m,n];m=+a[0];n=+a[1];return d()};b.center=function(a){if(!arguments.length)return[p*O,q*O];p=a[0]%360*w;q=a[1]%360*w;return d()};b.rotate=function(a){if(!arguments.length)return[r*O,s*O,t*O];r=
-a[0]%360*w;s=a[1]%360*w;t=2<a.length?a[2]%360*w:0;return d()};g.rebind(b,k,"precision");return function(){e=a.apply(this,arguments);b.invert=e.invert&&c;return d()}}function cg(a,b){return{point:function(c,d){d=a(c*w,d*w);c=d[0];b.point(c>u?c-2*u:c<-u?c+2*u:c,d[1])},sphere:function(){b.sphere()},lineStart:function(){b.lineStart()},lineEnd:function(){b.lineEnd()},polygonStart:function(){b.polygonStart()},polygonEnd:function(){b.polygonEnd()}}}function ae(a,b,c){return a?b||c?Xd(ce(a),de(b,c)):ce(a):
-b||c?de(b,c):ab}function ee(a){return function(b,c){return b+=a,[b>u?b-2*u:b<-u?b+2*u:b,c]}}function ce(a){var b=ee(a);b.invert=ee(-a);return b}function de(a,b){function c(a,b){var c=Math.cos(b),g=Math.cos(a)*c,c=Math.sin(a)*c,p=Math.sin(b),q=p*d+g*e;return[Math.atan2(c*f-q*h,g*d-p*e),Math.asin(Math.max(-1,Math.min(1,q*f+c*h)))]}var d=Math.cos(a),e=Math.sin(a),f=Math.cos(b),h=Math.sin(b);c.invert=function(a,b){var c=Math.cos(b),g=Math.cos(a)*c,c=Math.sin(a)*c,p=Math.sin(b),q=p*f-c*h;return[Math.atan2(c*
-f+p*h,g*d+q*e),Math.asin(Math.max(-1,Math.min(1,q*d-g*e)))]};return c}function Fa(a,b){function c(b,c){var f=Math.cos(b),h=Math.cos(c),f=a(f*h);return[f*h*Math.sin(b),f*Math.sin(c)]}c.invert=function(a,c){var f=Math.sqrt(a*a+c*c),h=b(f),k=Math.sin(h),h=Math.cos(h);return[Math.atan2(a*k,f*h),Math.asin(f&&c*k/f)]};return c}function dg(a,b,c,d){var e,f,h;a=d[a];e=a[0];f=a[1];a=d[b];b=a[0];h=a[1];a=d[c];return 0<(a[1]-f)*(b-e)-(h-f)*(a[0]-e)}function jc(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*
-(a[0]-b[0])}function fe(a,b,c,d){var e=a[0],f=c[0],h=b[0]-e,k=d[0]-f;a=a[1];c=c[1];b=b[1]-a;d=d[1]-c;f=(k*(a-c)-d*(e-f))/(d*h-k*b);return[e+f*h,a+f*b]}function ge(a,b){var c=a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.y<b.y?-1:a.y>b.y?1:a.x<b.x?-1:a.x>b.x?1:0}),d=null,e={list:[],leftEnd:null,rightEnd:null,init:function(){e.leftEnd=e.createHalfEdge(null,"l");e.rightEnd=e.createHalfEdge(null,"l");e.leftEnd.r=e.rightEnd;e.rightEnd.l=e.leftEnd;e.list.unshift(e.leftEnd,
-e.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a;b.r=a.r;a.r.l=b;a.r=b},leftBound:function(a){var b=e.leftEnd;do b=b.r;while(b!=e.rightEnd&&f.rightOf(b,a));return b=b.l},del:function(a){a.l.r=a.r;a.r.l=a.l;a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return null==a.edge?d:a.edge.region[a.side]},rightRegion:function(a){return null==a.edge?d:a.edge.region[kc[a.side]]}},f={bisect:function(a,
-b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y;c.c=a.x*d+a.y*e+0.5*(d*d+e*e);(0<d?d:-d)>(0<e?e:-e)?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e);return c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(1E-10>Math.abs(e))return null;var f=(c.c*d.b-d.c*c.b)/e,e=(d.c*c.a-c.c*d.a)/e,h=c.region.r,k=d.region.r;h.y<k.y||h.y==k.y&&h.x<k.x?h=a:(h=b,c=d);return(c=f>=c.region.r.x)&&"l"===h.side||!c&&"r"===h.side?null:{x:f,
-y:e}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&"l"===a.side)return 1;if(!e&&"r"===a.side)return 0;if(1===c.a){var f=b.y-d.y,h=b.x-d.x,k=0,g=0;!e&&0>c.b||e&&0<=c.b?g=k=f>=c.b*h:(g=b.x+b.y*c.b>c.c,0>c.b&&(g=!g),g||(k=1));k||(d=d.x-c.region.l.x,g=c.b*(h*h-f*f)<d*f*(1+2*h/d+c.b*c.b),0>c.b&&(g=!g))}else h=c.c-c.a*b.x,c=b.y-h,f=b.x-d.x,d=h-d.y,g=c*c>f*f+d*d;return"l"===a.side?g:!g},endPoint:function(a,c,d){a.ep[c]=d;a.ep[kc[c]]&&b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;
-return Math.sqrt(c*c+d*d)}},h={list:[],insert:function(a,b,c){a.vertex=b;a.ystar=b.y+c;c=0;for(var d=h.list,e=d.length;c<e;c++){var f=d[c];if(!(a.ystar>f.ystar||a.ystar==f.ystar&&b.x>f.vertex.x))break}d.splice(c,0,a)},del:function(a){for(var b=0,c=h.list,d=c.length;b<d&&c[b]!=a;++b);c.splice(b,1)},empty:function(){return 0===h.list.length},nextEvent:function(a){for(var b=0,c=h.list,d=c.length;b<d;++b)if(c[b]==a)return c[b+1];return null},min:function(){var a=h.list[0];return{x:a.vertex.x,y:a.ystar}},
-extractMin:function(){return h.list.shift()}};e.init();for(var d=c.shift(),k=c.shift(),g,m,n,p,q,r,s,t,v;;)if(h.empty()||(g=h.min()),k&&(h.empty()||k.y<g.y||k.y==g.y&&k.x<g.x)){m=e.leftBound(k);n=e.right(m);s=e.rightRegion(m);v=f.bisect(s,k);r=e.createHalfEdge(v,"l");e.insert(m,r);if(t=f.intersect(m,r))h.del(m),h.insert(m,t,f.distance(t,k));m=r;r=e.createHalfEdge(v,"r");e.insert(m,r);(t=f.intersect(r,n))&&h.insert(r,t,f.distance(t,k));k=c.shift()}else if(h.empty())break;else{m=h.extractMin();p=e.left(m);
-n=e.right(m);q=e.right(n);s=e.leftRegion(m);r=e.rightRegion(n);t=m.vertex;f.endPoint(m.edge,m.side,t);f.endPoint(n.edge,n.side,t);e.del(m);h.del(n);e.del(n);m="l";s.y>r.y&&(m=s,s=r,r=m,m="r");v=f.bisect(s,r);r=e.createHalfEdge(v,m);e.insert(p,r);f.endPoint(v,kc[m],t);if(t=f.intersect(p,r))h.del(p),h.insert(p,t,f.distance(t,s));(t=f.intersect(r,q))&&h.insert(r,t,f.distance(t,s))}for(m=e.right(e.leftEnd);m!=e.rightEnd;m=e.right(m))b(m.edge)}function Ga(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var h=0.5*(c+e),
-k=0.5*(d+f);b=b.nodes;b[0]&&Ga(a,b[0],c,d,h,k);b[1]&&Ga(a,b[1],h,d,e,k);b[2]&&Ga(a,b[2],c,k,h,f);b[3]&&Ga(a,b[3],h,k,e,f)}}function oa(){this._=new Date(1<arguments.length?Date.UTC.apply(this,arguments):arguments[0])}function eb(a,b,c,d){for(var e,f=0,h=b.length,k=c.length;f<h;){if(d>=k)return-1;e=b.charCodeAt(f++);if(37===e){if(e=eg[b.charAt(f++)],!e||0>(d=e(a,c,d)))return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fb(a){return RegExp("^(?:"+a.map(g.requote).join("|")+")","i")}function he(a){for(var b=
-new ba,c=-1,d=a.length;++c<d;)b.set(a[c].toLowerCase(),c);return b}function S(a,b,c){a+="";var d=a.length;return d<c?Array(c-d+1).join(b)+a:a}function ie(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.d=+b[0],c+b[0].length):-1}function je(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.H=+b[0],c+b[0].length):-1}function lc(a){return a.toISOString()}function pa(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c<d-b?c:d}function e(c){b(c=a(new R(c-1)),1);return c}function f(a,
-c){b(a=new R(+a),c);return a}function h(a,d,f){a=e(a);var h=[];if(1<f)for(;a<d;)c(a)%f||h.push(new Date(+a)),b(a,1);else for(;a<d;)h.push(new Date(+a)),b(a,1);return h}a.floor=a;a.round=d;a.ceil=e;a.offset=f;a.range=h;var k=a.utc=gb(a);k.floor=k;k.round=gb(d);k.ceil=gb(e);k.offset=gb(f);k.range=function(a,b,c){try{R=oa;var d=new oa;d._=a;return h(d,b,c)}finally{R=Date}};return a}function gb(a){return function(b,c){try{R=oa;var d=new oa;d._=b;return a(d,c)._}finally{R=Date}}}function mc(a,b,c){function d(b){return a(b)}
-d.invert=function(b){return nc(a.invert(b))};d.domain=function(b){if(!arguments.length)return a.domain().map(nc);a.domain(b);return d};d.nice=function(a){return d.domain(Ta(d.domain(),function(){return a}))};d.ticks=function(c,f){var h,k=d.domain();h=k[0];k=k[k.length-1];h=h<k?[h,k]:[k,h];if("function"!==typeof c){var k=(h[1]-h[0])/c,l=g.bisect(hb,k);if(l==hb.length)return b.year(h,c);if(!l)return a.ticks(c).map(nc);Math.log(k/hb[l-1])<Math.log(hb[l]/k)&&--l;c=b[l];f=c[1];c=c[0].range}return c(h[0],
-new Date(+h[1]+1),f)};d.tickFormat=function(){return c};d.copy=function(){return mc(a.copy(),b,c)};return g.rebind(d,a,"range","rangeRound","interpolate","clamp")}function nc(a){return new Date(a)}function ke(a){return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}function oc(a){var b=new Date(a,0,1);b.setFullYear(a);return b}function fg(a){var b=a.getFullYear(),c=oc(b),d=oc(b+1);return b+(a-c)/(d-c)}function pc(a){var b=new Date(Date.UTC(a,0,1));b.setUTCFullYear(a);return b}
-function gg(a){var b=a.getUTCFullYear(),c=pc(b),d=pc(b+1);return b+(a-c)/(d-c)}var u=Math.PI,A=1E-6,g={version:"3.0.6"},w=u/180,O=180/u,W=document,P=window,ib=[3,3];Date.now||(Date.now=function(){return+new Date});try{W.createElement("div").style.setProperty("opacity",0,"")}catch(Ng){var le=P.CSSStyleDeclaration.prototype,hg=le.setProperty;le.setProperty=function(a,b,c){hg.call(this,a,b+"",c)}}var ha=function(a){return Array.prototype.slice.call(a)};try{ha(W.documentElement.childNodes)[0].nodeType}catch(Og){ha=
-Je}var Hb=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};g.map=function(a){var b=new ba,c;for(c in a)b.set(c,a[c]);return b};(function(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}})(ba,{has:function(a){return Ha+a in this},get:function(a){return this[Ha+a]},set:function(a,b){return this[Ha+a]=b},remove:function(a){a=Ha+a;return a in this&&delete this[a]},keys:function(){var a=[];this.forEach(function(b){a.push(b)});
-return a},values:function(){var a=[];this.forEach(function(b,c){a.push(c)});return a},entries:function(){var a=[];this.forEach(function(b,c){a.push({key:b,value:c})});return a},forEach:function(a){for(var b in this)b.charCodeAt(0)===ig&&a.call(this,b.substring(1),this[b])}});var Ha="\x00",ig=Ha.charCodeAt(0);g.functor=F;g.rebind=function(a,b){for(var c=1,d=arguments.length,e;++c<d;)a[e=arguments[c]]=Ke(a,b,b[e]);return a};g.ascending=function(a,b){return a<b?-1:a>b?1:a>=b?0:NaN};g.descending=function(a,
-b){return b<a?-1:b>a?1:b>=a?0:NaN};g.mean=function(a,b){var c=a.length,d,e=0,f=-1,h=0;if(1===arguments.length)for(;++f<c;)tb(d=a[f])&&(e+=(d-e)/++h);else for(;++f<c;)tb(d=b.call(a,a[f],f))&&(e+=(d-e)/++h);return h?e:void 0};g.median=function(a,b){1<arguments.length&&(a=a.map(b));a=a.filter(tb);return a.length?g.quantile(a.sort(g.ascending),0.5):void 0};g.min=function(a,b){var c=-1,d=a.length,e,f;if(1===arguments.length){for(;++c<d&&(null==(e=a[c])||e!=e);)e=void 0;for(;++c<d;)null!=(f=a[c])&&e>f&&
-(e=f)}else{for(;++c<d&&(null==(e=b.call(a,a[c],c))||e!=e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&e>f&&(e=f)}return e};g.max=function(a,b){var c=-1,d=a.length,e,f;if(1===arguments.length){for(;++c<d&&(null==(e=a[c])||e!=e);)e=void 0;for(;++c<d;)null!=(f=a[c])&&f>e&&(e=f)}else{for(;++c<d&&(null==(e=b.call(a,a[c],c))||e!=e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&f>e&&(e=f)}return e};g.extent=function(a,b){var c=-1,d=a.length,e,f,h;if(1===arguments.length){for(;++c<d&&(null==(e=
-h=a[c])||e!=e);)e=h=void 0;for(;++c<d;)null!=(f=a[c])&&(e>f&&(e=f),h<f&&(h=f))}else{for(;++c<d&&(null==(e=h=b.call(a,a[c],c))||e!=e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&(e>f&&(e=f),h<f&&(h=f))}return[e,h]};g.random={normal:function(a,b){var c=arguments.length;2>c&&(b=1);1>c&&(a=0);return function(){var c,e;do c=2*Math.random()-1,e=2*Math.random()-1,e=c*c+e*e;while(!e||1<e);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(){var a=g.random.normal.apply(g,arguments);return function(){return Math.exp(a())}},
-irwinHall:function(a){return function(){for(var b=0,c=0;c<a;c++)b+=Math.random();return b/a}}};g.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(1===arguments.length)for(;++f<d;)isNaN(e=+a[f])||(c+=e);else for(;++f<d;)isNaN(e=+b.call(a,a[f],f))||(c+=e);return c};g.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=+a[d-1];return(c-=d)?e+c*(a[d]-e):e};g.shuffle=function(a){for(var b=a.length,c,d;b;)d=Math.random()*b--|0,c=a[b],a[b]=a[d],a[d]=c;return a};g.transpose=function(a){return g.zip.apply(g,
-a)};g.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,b=g.min(arguments,Le),c=Array(b);++a<b;)for(var d=-1,e,f=c[a]=Array(e);++d<e;)f[d]=arguments[d][a];return c};g.bisector=function(a){return{left:function(b,c,d,e){3>arguments.length&&(d=0);4>arguments.length&&(e=b.length);for(;d<e;){var f=d+e>>>1;a.call(b,b[f],f)<c?d=f+1:e=f}return d},right:function(b,c,d,e){3>arguments.length&&(d=0);4>arguments.length&&(e=b.length);for(;d<e;){var f=d+e>>>1;c<a.call(b,b[f],f)?e=f:d=f+1}return d}}};
-var me=g.bisector(function(a){return a});g.bisectLeft=me.left;g.bisect=g.bisectRight=me.right;g.nest=function(){function a(b,e){if(e>=d.length)return h?h.call(c,b):f?b.sort(f):b;for(var g=-1,n=b.length,p=d[e++],q,r,s=new ba,t,v={};++g<n;)(t=s.get(q=p(r=b[g])))?t.push(r):s.set(q,[r]);s.forEach(function(b,c){v[b]=a(c,e)});return v}function b(a,c){if(c>=d.length)return a;var f=[],h=e[c++],g;for(g in a)f.push({key:g,values:b(a[g],c)});h&&f.sort(function(a,b){return h(a.key,b.key)});return f}var c={},
-d=[],e=[],f,h;c.map=function(b){return a(b,0)};c.entries=function(c){return b(a(c,0),0)};c.key=function(a){d.push(a);return c};c.sortKeys=function(a){e[d.length-1]=a;return c};c.sortValues=function(a){f=a;return c};c.rollup=function(a){h=a;return c};return c};g.keys=function(a){var b=[],c;for(c in a)b.push(c);return b};g.values=function(a){var b=[],c;for(c in a)b.push(a[c]);return b};g.entries=function(a){var b=[],c;for(c in a)b.push({key:c,value:a[c]});return b};g.permute=function(a,b){for(var c=
-[],d=-1,e=b.length;++d<e;)c[d]=a[b[d]];return c};g.merge=function(a){return Array.prototype.concat.apply([],a)};g.range=function(a,b,c){3>arguments.length&&(c=1,2>arguments.length&&(b=a,a=0));if(Infinity===(b-a)/c)throw Error("infinite range");var d=[],e;e=Math.abs(c);for(var f=1;e*f%1;)f*=10;e=f;var f=-1,h;a*=e;b*=e;c*=e;if(0>c)for(;(h=a+c*++f)>b;)d.push(h/e);else for(;(h=a+c*++f)<b;)d.push(h/e);return d};g.requote=function(a){return a.replace(jg,"\\$&")};var jg=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
-g.round=function(a,b){return b?Math.round(a*(b=Math.pow(10,b)))/b:Math.round(a)};g.xhr=function(a,b,c){function d(){var a=l.status;!a&&l.responseText||200<=a&&300>a||304===a?f.load.call(e,k.call(e,l)):f.error.call(e,l)}var e={},f=g.dispatch("progress","load","error"),h={},k=V,l=new (P.XDomainRequest&&/^(http(s)?:)?\/\//.test(a)?XDomainRequest:XMLHttpRequest);"onload"in l?l.onload=l.onerror=d:l.onreadystatechange=function(){3<l.readyState&&d()};l.onprogress=function(a){var b=g.event;g.event=a;try{f.progress.call(e,
-l)}finally{g.event=b}};e.header=function(a,b){a=(a+"").toLowerCase();if(2>arguments.length)return h[a];null==b?delete h[a]:h[a]=b+"";return e};e.mimeType=function(a){if(!arguments.length)return b;b=null==a?null:a+"";return e};e.response=function(a){k=a;return e};["get","post"].forEach(function(a){e[a]=function(){return e.send.apply(e,[a].concat(ha(arguments)))}});e.send=function(c,d,f){2===arguments.length&&"function"===typeof d&&(f=d,d=null);l.open(c,a,!0);null==b||"accept"in h||(h.accept=b+",*/*");
-if(l.setRequestHeader)for(var k in h)l.setRequestHeader(k,h[k]);null!=b&&l.overrideMimeType&&l.overrideMimeType(b);if(null!=f)e.on("error",f).on("load",function(a){f(null,a)});l.send(null==d?null:d);return e};e.abort=function(){l.abort();return e};g.rebind(e,f,"on");2===arguments.length&&"function"===typeof b&&(c=b,b=null);return null==c?e:e.get(Me(c))};g.text=function(){return g.xhr.apply(g,arguments).response(Ne)};g.json=function(a,b){return g.xhr(a,"application/json",b).response(Oe)};g.html=function(a,
-b){return g.xhr(a,"text/html",b).response(Pe)};g.xml=function(){return g.xhr.apply(g,arguments).response(Qe)};var qc={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};g.ns={prefix:qc,qualify:function(a){var b=a.indexOf(":"),c=a;0<=b&&(c=a.substring(0,b),a=a.substring(b+1));return qc.hasOwnProperty(c)?{space:qc[c],local:a}:a}};g.dispatch=function(){for(var a=new ub,
-b=-1,c=arguments.length;++b<c;)a[arguments[b]]=zc(a);return a};ub.prototype.on=function(a,b){var c=a.indexOf("."),d="";0<c&&(d=a.substring(c+1),a=a.substring(0,c));return 2>arguments.length?this[a].on(d):this[a].on(d,b)};g.format=function(a){a=kg.exec(a);var b=a[1]||" ",c=a[2]||">",d=a[3]||"",e=a[4]||"",f=a[5],h=+a[6],k=a[7],l=a[8],m=a[9],n=1,p="",q=!1;l&&(l=+l.substring(1));if(f||"0"===b&&"="===c)f=b="0",c="=",k&&(h-=Math.floor((h-1)/4));switch(m){case "n":k=!0;m="g";break;case "%":n=100;p="%";m=
-"f";break;case "p":n=100;p="%";m="r";break;case "b":case "o":case "x":case "X":e&&(e="0"+m.toLowerCase());case "c":case "d":q=!0;l=0;break;case "s":n=-1,m="r"}"#"===e&&(e="");"r"!=m||l||(m="g");var m=lg.get(m)||Re,r=f&&k;return function(a){if(q&&a%1)return"";var t=0>a||0===a&&0>1/a?(a=-a,"-"):d;if(0>n){var v=g.formatPrefix(a,l);a=v.scale(a);p=v.symbol}else a*=n;a=m(a,l);!f&&k&&(a=rc(a));var v=e.length+a.length+(r?0:t.length),x=v<h?Array(v=h-v+1).join(b):"";r&&(a=rc(x+a));a.replace(".",".");t+=e;return("<"===
-c?t+a+x:">"===c?x+t+a:"^"===c?x.substring(0,v>>=1)+t+a+x.substring(v):t+(r?a:x+a))+p}};var kg=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,lg=g.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},
-r:function(a,b){return(a=g.round(a,vb(a,b))).toFixed(Math.max(0,Math.min(20,vb(a*(1+1E-15),b))))}}),rc=V;if(ib)var mg=ib.length,rc=function(a){for(var b=a.lastIndexOf("."),c=0<=b?"."+a.substring(b+1):(b=a.length,""),d=[],e=0,f=ib[0];0<b&&0<f;)d.push(a.substring(b-=f,b+f)),f=ib[e=(e+1)%mg];return d.reverse().join(",")+c};var ng="y z a f p n \u00b5 m k M G T P E Z Y".split(" ").map(function(a,b){var c=Math.pow(10,3*Math.abs(8-b));return{scale:8<b?function(a){return a/c}:function(a){return a*c},symbol:a}});
-g.formatPrefix=function(a,b){var c=0;a&&(0>a&&(a*=-1),b&&(a=g.round(a,vb(a,b))),c=1+Math.floor(1E-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,3*Math.floor((0>=c?c+1:c-1)/3))));return ng[8+c/3]};var ne=function(){return V},og=g.map({linear:ne,poly:function(a){return function(b){return Math.pow(b,a)}},quad:function(){return Te},cubic:function(){return Ue},sin:function(){return Ve},exp:function(){return We},circle:function(){return Xe},elastic:function(a,b){var c;2>arguments.length&&(b=0.45);
-arguments.length?c=b/(2*u)*Math.asin(1/a):(a=1,c=b/4);return function(d){return 1+a*Math.pow(2,10*-d)*Math.sin(2*(d-c)*u/b)}},back:function(a){a||(a=1.70158);return function(b){return b*b*((a+1)*b-a)}},bounce:function(){return Ye}}),pg=g.map({"in":V,out:Ac,"in-out":Bc,"out-in":function(a){return Bc(Ac(a))}});g.ease=function(a){var b=a.indexOf("-"),c=0<=b?a.substring(0,b):a,b=0<=b?a.substring(b+1):"in",c=og.get(c)||ne,b=pg.get(b)||V;return Se(b(c.apply(null,Array.prototype.slice.call(arguments,1))))};
-g.event=null;g.transform=function(a){var b=W.createElementNS(g.ns.prefix.svg,"g");return(g.transform=function(a){b.setAttribute("transform",a);a=b.transform.baseVal.consolidate();return new Dc(a?a.matrix:qg)})(a)};Dc.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var qg={a:1,b:0,c:0,d:1,e:0,f:0};g.interpolate=function(a,b){for(var c=g.interpolators.length,d;0<=--c&&!(d=g.interpolators[c](a,b)););return d};g.interpolateNumber=
-function(a,b){b-=a;return function(c){return a+b*c}};g.interpolateRound=function(a,b){b-=a;return function(c){return Math.round(a+b*c)}};g.interpolateString=function(a,b){var c,d,e=0,f=[],h=[],k,l;for(d=jb.lastIndex=0;c=jb.exec(b);++d)c.index&&f.push(b.substring(e,c.index)),h.push({i:f.length,x:c[0]}),f.push(null),e=jb.lastIndex;e<b.length&&f.push(b.substring(e));d=0;for(k=h.length;(c=jb.exec(a))&&d<k;++d)if(l=h[d],l.x==c[0]){if(l.i)if(null==f[l.i+1])for(f[l.i-1]+=l.x,f.splice(l.i,1),c=d+1;c<k;++c)h[c].i--;
-else for(f[l.i-1]+=l.x+f[l.i+1],f.splice(l.i,2),c=d+1;c<k;++c)h[c].i-=2;else if(null==f[l.i+1])f[l.i]=l.x;else for(f[l.i]=l.x+f[l.i+1],f.splice(l.i+1,1),c=d+1;c<k;++c)h[c].i--;h.splice(d,1);k--;d--}else l.x=g.interpolateNumber(parseFloat(c[0]),parseFloat(l.x));for(;d<k;)l=h.pop(),null==f[l.i+1]?f[l.i]=l.x:(f[l.i]=l.x+f[l.i+1],f.splice(l.i+1,1)),k--;return 1===f.length?null==f[0]?h[0].x:function(){return b}:function(a){for(d=0;d<k;++d)f[(l=h[d]).i]=l.x(a);return f.join("")}};g.interpolateTransform=
-function(a,b){var c=[],d=[],e,f=g.transform(a),h=g.transform(b),k=f.translate,l=h.translate,m=f.rotate,n=h.rotate,p=f.skew,q=h.skew,f=f.scale,h=h.scale;k[0]!=l[0]||k[1]!=l[1]?(c.push("translate(",null,",",null,")"),d.push({i:1,x:g.interpolateNumber(k[0],l[0])},{i:3,x:g.interpolateNumber(k[1],l[1])})):l[0]||l[1]?c.push("translate("+l+")"):c.push("");m!=n?(180<m-n?n+=360:180<n-m&&(m+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:g.interpolateNumber(m,n)})):n&&c.push(c.pop()+"rotate("+n+")");
-p!=q?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:g.interpolateNumber(p,q)}):q&&c.push(c.pop()+"skewX("+q+")");f[0]!=h[0]||f[1]!=h[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:g.interpolateNumber(f[0],h[0])},{i:e-2,x:g.interpolateNumber(f[1],h[1])})):1==h[0]&&1==h[1]||c.push(c.pop()+"scale("+h+")");e=d.length;return function(a){for(var b=-1,f;++b<e;)c[(f=d[b]).i]=f.x(a);return c.join("")}};g.interpolateRgb=function(a,b){a=g.rgb(a);b=g.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,h=
-b.g-d,k=b.b-e;return function(a){return"#"+ra(Math.round(c+f*a))+ra(Math.round(d+h*a))+ra(Math.round(e+k*a))}};g.interpolateHsl=function(a,b){a=g.hsl(a);b=g.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,h=b.s-d,k=b.l-e;180<f?f-=360:-180>f&&(f+=360);return function(a){return La(c+f*a,d+h*a,e+k*a)+""}};g.interpolateLab=function(a,b){a=g.lab(a);b=g.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,h=b.a-d,k=b.b-e;return function(a){return Kc(c+f*a,d+h*a,e+k*a)+""}};g.interpolateHcl=function(a,b){a=g.hcl(a);b=g.hcl(b);var c=
-a.h,d=a.c,e=a.l,f=b.h-c,h=b.c-d,k=b.l-e;180<f?f-=360:-180>f&&(f+=360);return function(a){return Eb(c+f*a,d+h*a,e+k*a)+""}};g.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,h=Math.min(a.length,b.length),k;for(k=0;k<h;++k)c.push(g.interpolate(a[k],b[k]));for(;k<e;++k)d[k]=a[k];for(;k<f;++k)d[k]=b[k];return function(a){for(k=0;k<h;++k)d[k]=c[k](a);return d}};g.interpolateObject=function(a,b){var c={},d={},e;for(e in a)e in b?c[e]=xb(e)(a[e],b[e]):d[e]=a[e];for(e in b)e in a||(d[e]=
-b[e]);return function(a){for(e in c)d[e]=c[e](a);return d}};var jb=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;g.interpolators=[g.interpolateObject,function(a,b){return b instanceof Array&&g.interpolateArray(a,b)},function(a,b){return("string"===typeof a||"string"===typeof b)&&g.interpolateString(a+"",b+"")},function(a,b){return("string"===typeof b?Ka.has(b)||/^(#|rgb\(|hsl\()/.test(b):b instanceof qa)&&g.interpolateRgb(a,b)},function(a,b){return!isNaN(a=+a)&&!isNaN(b=+b)&&g.interpolateNumber(a,
-b)}];qa.prototype.toString=function(){return this.rgb()+""};g.rgb=function(a,b,c){return 1===arguments.length?a instanceof yb?ca(a.r,a.g,a.b):zb(""+a,ca,La):ca(~~a,~~b,~~c)};var kb=yb.prototype=new qa;kb.brighter=function(a){a=Math.pow(0.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b;if(!b&&!c&&!d)return ca(30,30,30);b&&30>b&&(b=30);c&&30>c&&(c=30);d&&30>d&&(d=30);return ca(Math.min(255,Math.floor(b/a)),Math.min(255,Math.floor(c/a)),Math.min(255,Math.floor(d/a)))};kb.darker=function(a){a=
-Math.pow(0.7,arguments.length?a:1);return ca(Math.floor(a*this.r),Math.floor(a*this.g),Math.floor(a*this.b))};kb.hsl=function(){return Fc(this.r,this.g,this.b)};kb.toString=function(){return"#"+ra(this.r)+ra(this.g)+ra(this.b)};var Ka=g.map({aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",
-chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",
-darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",
-lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",
-mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",
-peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",
-wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});Ka.forEach(function(a,b){Ka.set(a,zb(b,ca,La))});g.hsl=function(a,b,c){return 1===arguments.length?a instanceof Db?sa(a.h,a.s,a.l):zb(""+a,Fc,sa):sa(+a,+b,+c)};var sc=Db.prototype=new qa;sc.brighter=function(a){a=Math.pow(0.7,arguments.length?a:1);return sa(this.h,this.s,this.l/a)};sc.darker=function(a){a=Math.pow(0.7,arguments.length?a:1);return sa(this.h,this.s,a*this.l)};sc.rgb=function(){return La(this.h,
-this.s,this.l)};g.hcl=function(a,b,c){return 1===arguments.length?a instanceof Ma?Aa(a.h,a.c,a.l):a instanceof Na?Lc(a.l,a.a,a.b):Lc((a=Gc((a=g.rgb(a)).r,a.g,a.b)).l,a.a,a.b):Aa(+a,+b,+c)};var tc=Ma.prototype=new qa;tc.brighter=function(a){return Aa(this.h,this.c,Math.min(100,this.l+lb*(arguments.length?a:1)))};tc.darker=function(a){return Aa(this.h,this.c,Math.max(0,this.l-lb*(arguments.length?a:1)))};tc.rgb=function(){return Eb(this.h,this.c,this.l).rgb()};g.lab=function(a,b,c){return 1===arguments.length?
-a instanceof Na?ta(a.l,a.a,a.b):a instanceof Ma?Eb(a.l,a.c,a.h):Gc((a=g.rgb(a)).r,a.g,a.b):ta(+a,+b,+c)};var lb=18,Hc=0.95047,Ic=1,Jc=1.08883,uc=Na.prototype=new qa;uc.brighter=function(a){return ta(Math.min(100,this.l+lb*(arguments.length?a:1)),this.a,this.b)};uc.darker=function(a){return ta(Math.max(0,this.l-lb*(arguments.length?a:1)),this.a,this.b)};uc.rgb=function(){return Kc(this.l,this.a,this.b)};var Oa=function(a,b){return b.querySelector(a)},Oc=function(a,b){return b.querySelectorAll(a)},
-xa=W.documentElement,rg=xa.matchesSelector||xa.webkitMatchesSelector||xa.mozMatchesSelector||xa.msMatchesSelector||xa.oMatchesSelector,Vc=function(a,b){return rg.call(a,b)};"function"===typeof Sizzle&&(Oa=function(a,b){return Sizzle(a,b)[0]||null},Oc=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},Vc=Sizzle.matchesSelector);var C=[];g.selection=function(){return Ia};g.selection.prototype=C;C.select=function(a){var b=[],c,d,e,f;"function"!==typeof a&&(a=Mc(a));for(var h=-1,k=this.length;++h<k;){b.push(c=
-[]);c.parentNode=(e=this[h]).parentNode;for(var g=-1,m=e.length;++g<m;)(f=e[g])?(c.push(d=a.call(f,f.__data__,g)),d&&"__data__"in f&&(d.__data__=f.__data__)):c.push(null)}return da(b)};C.selectAll=function(a){var b=[],c,d;"function"!==typeof a&&(a=Nc(a));for(var e=-1,f=this.length;++e<f;)for(var h=this[e],k=-1,g=h.length;++k<g;)if(d=h[k])b.push(c=ha(a.call(d,d.__data__,k))),c.parentNode=d;return da(b)};C.attr=function(a,b){if(2>arguments.length){if("string"===typeof a){var c=this.node();a=g.ns.qualify(a);
-return a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}for(b in a)this.each(Pc(b,a[b]));return this}return this.each(Pc(a,b))};C.classed=function(a,b){if(2>arguments.length){if("string"===typeof a){var c=this.node(),d=(a=a.trim().split(/^|\s+/g)).length,e=-1;if(b=c.classList)for(;++e<d;){if(!b.contains(a[e]))return!1}else for(b=c.className,null!=b.baseVal&&(b=b.baseVal);++e<d;)if(!Qc(a[e]).test(b))return!1;return!0}for(b in a)this.each(Rc(b,a[b]));return this}return this.each(Rc(a,b))};
-C.style=function(a,b,c){var d=arguments.length;if(3>d){if("string"!==typeof a){2>d&&(b="");for(c in a)this.each(Sc(c,a[c],b));return this}if(2>d)return P.getComputedStyle(this.node(),null).getPropertyValue(a);c=""}return this.each(Sc(a,b,c))};C.property=function(a,b){if(2>arguments.length){if("string"===typeof a)return this.node()[a];for(b in a)this.each(Tc(b,a[b]));return this}return this.each(Tc(a,b))};C.text=function(a){return arguments.length?this.each("function"===typeof a?function(){var b=a.apply(this,
-arguments);this.textContent=null==b?"":b}:null==a?function(){this.textContent=""}:function(){this.textContent=a}):this.node().textContent};C.html=function(a){return arguments.length?this.each("function"===typeof a?function(){var b=a.apply(this,arguments);this.innerHTML=null==b?"":b}:null==a?function(){this.innerHTML=""}:function(){this.innerHTML=a}):this.node().innerHTML};C.append=function(a){function b(){return this.appendChild(W.createElementNS(this.namespaceURI,a))}function c(){return this.appendChild(W.createElementNS(a.space,
-a.local))}a=g.ns.qualify(a);return this.select(a.local?c:b)};C.insert=function(a,b){function c(){return this.insertBefore(W.createElementNS(this.namespaceURI,a),Oa(b,this))}function d(){return this.insertBefore(W.createElementNS(a.space,a.local),Oa(b,this))}a=g.ns.qualify(a);return this.select(a.local?d:c)};C.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})};C.data=function(a,b){function c(a,c){var d,e=a.length,f=c.length,h=Math.min(e,f),v=Array(f),x=Array(f),
-z=Array(e),y,G;if(b){var h=new ba,H=new ba,D=[],B;for(d=-1;++d<e;)B=b.call(y=a[d],y.__data__,d),h.has(B)?z[d]=y:h.set(B,y),D.push(B);for(d=-1;++d<f;)B=b.call(c,G=c[d],d),(y=h.get(B))?(v[d]=y,y.__data__=G):H.has(B)||(x[d]={__data__:G}),H.set(B,G),h.remove(B);for(d=-1;++d<e;)h.has(D[d])&&(z[d]=a[d])}else{for(d=-1;++d<h;)y=a[d],G=c[d],y?(y.__data__=G,v[d]=y):x[d]={__data__:G};for(;d<f;++d)x[d]={__data__:c[d]};for(;d<e;++d)z[d]=a[d]}x.update=v;x.parentNode=v.parentNode=z.parentNode=a.parentNode;k.push(x);
-g.push(v);m.push(z)}var d=-1,e=this.length,f,h;if(!arguments.length){for(a=Array(e=(f=this[0]).length);++d<e;)if(h=f[d])a[d]=h.__data__;return a}var k=Xc([]),g=da([]),m=da([]);if("function"===typeof a)for(;++d<e;)c(f=this[d],a.call(f,f.parentNode.__data__,d));else for(;++d<e;)c(f=this[d],a);g.enter=function(){return k};g.exit=function(){return m};return g};C.datum=function(a){return arguments.length?this.property("__data__",a):this.property("__data__")};C.filter=function(a){var b=[],c,d,e;"function"!==
-typeof a&&(a=Uc(a));for(var f=0,h=this.length;f<h;f++){b.push(c=[]);c.parentNode=(d=this[f]).parentNode;for(var k=0,g=d.length;k<g;k++)(e=d[k])&&a.call(e,e.__data__,k)&&c.push(e)}return da(b)};C.order=function(){for(var a=-1,b=this.length;++a<b;)for(var c=this[a],d=c.length-1,e=c[d],f;0<=--d;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this};C.sort=function(a){a=bf.apply(this,arguments);for(var b=-1,c=this.length;++b<c;)this[b].sort(a);return this.order()};C.on=function(a,
-b,c){var d=arguments.length;if(3>d){if("string"!==typeof a){2>d&&(b=!1);for(c in a)this.each(Wc(c,a[c],b));return this}if(2>d)return(d=this.node()["__on"+a])&&d._;c=!1}return this.each(Wc(a,b,c))};C.each=function(a){return ia(this,function(b,c,d){a.call(b,b.__data__,c,d)})};C.call=function(a){var b=ha(arguments);a.apply(b[0]=this,b);return this};C.empty=function(){return!this.node()};C.node=function(){for(var a=0,b=this.length;a<b;a++)for(var c=this[a],d=0,e=c.length;d<e;d++){var f=c[d];if(f)return f}return null};
-C.transition=function(){var a=Ja||++oe,b=[],c,d,e=Object.create(mb);e.time=Date.now();for(var f=-1,h=this.length;++f<h;){b.push(c=[]);for(var k=this[f],g=-1,m=k.length;++g<m;)(d=k[g])&&Pa(d,g,a,e),c.push(d)}return Ba(b,a)};var Ia=da([[W]]);Ia[0].parentNode=xa;g.select=function(a){return"string"===typeof a?Ia.select(a):da([[a]])};g.selectAll=function(a){return"string"===typeof a?Ia.selectAll(a):da([ha(a)])};var ma=[];g.selection.enter=Xc;g.selection.enter.prototype=ma;ma.append=C.append;ma.insert=
-C.insert;ma.empty=C.empty;ma.node=C.node;ma.select=function(a){for(var b=[],c,d,e,f,h,k=-1,g=this.length;++k<g;){e=(f=this[k]).update;b.push(c=[]);c.parentNode=f.parentNode;for(var m=-1,n=f.length;++m<n;)(h=f[m])?(c.push(e[m]=d=a.call(f.parentNode,h.__data__,m)),d.__data__=h.__data__):c.push(null)}return da(b)};var M=[],oe=0,Ja,mb={ease:function(a){if(0>=a)return 0;if(1<=a)return 1;var b=a*a,c=b*a;return 4*(0.5>a?c:3*(a-b)+c-0.75)},delay:0,duration:250};M.call=C.call;M.empty=C.empty;M.node=C.node;
-g.transition=function(a){return arguments.length?Ja?a.transition():a:Ia.transition()};g.transition.prototype=M;M.select=function(a){var b=this.id,c=[],d,e,f;"function"!==typeof a&&(a=Mc(a));for(var h=-1,k=this.length;++h<k;){c.push(d=[]);for(var g=this[h],m=-1,n=g.length;++m<n;)(f=g[m])&&(e=a.call(f,f.__data__,m))?("__data__"in f&&(e.__data__=f.__data__),Pa(e,m,b,f.__transition__[b]),d.push(e)):d.push(null)}return Ba(c,b)};M.selectAll=function(a){var b=this.id,c=[],d,e,f,h;"function"!==typeof a&&
-(a=Nc(a));for(var k=-1,g=this.length;++k<g;)for(var m=this[k],n=-1,p=m.length;++n<p;)if(d=m[n]){h=d.__transition__[b];e=a.call(d,d.__data__,n);c.push(d=[]);for(var q=-1,r=e.length;++q<r;)Pa(f=e[q],q,b,h),d.push(f)}return Ba(c,b)};M.filter=function(a){var b=[],c,d,e;"function"!==typeof a&&(a=Uc(a));for(var f=0,h=this.length;f<h;f++){b.push(c=[]);d=this[f];for(var k=0,g=d.length;k<g;k++)(e=d[k])&&a.call(e,e.__data__,k)&&c.push(e)}return Ba(b,this.id,this.time).ease(this.ease())};M.attr=function(a,b){function c(){this.removeAttribute(f)}
-function d(){this.removeAttributeNS(f.space,f.local)}if(2>arguments.length){for(b in a)this.attr(b,a[b]);return this}var e=xb(a),f=g.ns.qualify(a);return Ib(this,"attr."+a,b,function(a){function b(){var c=this.getAttribute(f),d;return c!==a&&(d=e(c,a),function(a){this.setAttribute(f,d(a))})}function g(){var b=this.getAttributeNS(f.space,f.local),c;return b!==a&&(c=e(b,a),function(a){this.setAttributeNS(f.space,f.local,c(a))})}return null==a?f.local?d:c:(a+="",f.local?g:b)})};M.attrTween=function(a,
-b){function c(a,c){var d=b.call(this,a,c,this.getAttribute(e));return d&&function(a){this.setAttribute(e,d(a))}}function d(a,c){var d=b.call(this,a,c,this.getAttributeNS(e.space,e.local));return d&&function(a){this.setAttributeNS(e.space,e.local,d(a))}}var e=g.ns.qualify(a);return this.tween("attr."+a,e.local?d:c)};M.style=function(a,b,c){function d(){this.style.removeProperty(a)}var e=arguments.length;if(3>e){if("string"!==typeof a){2>e&&(b="");for(c in a)this.style(c,a[c],b);return this}c=""}var f=
-xb(a);return Ib(this,"style."+a,b,function(b){function e(){var d=P.getComputedStyle(this,null).getPropertyValue(a),k;return d!==b&&(k=f(d,b),function(b){this.style.setProperty(a,k(b),c)})}return null==b?d:(b+="",e)})};M.styleTween=function(a,b,c){3>arguments.length&&(c="");return this.tween("style."+a,function(d,e){var f=b.call(this,d,e,P.getComputedStyle(this,null).getPropertyValue(a));return f&&function(b){this.style.setProperty(a,f(b),c)}})};M.text=function(a){return Ib(this,"text",a,cf)};M.remove=
-function(){return this.each("end.transition",function(){var a;!this.__transition__&&(a=this.parentNode)&&a.removeChild(this)})};M.ease=function(a){var b=this.id;if(1>arguments.length)return this.node().__transition__[b].ease;"function"!==typeof a&&(a=g.ease.apply(g,arguments));return ia(this,function(c){c.__transition__[b].ease=a})};M.delay=function(a){var b=this.id;return ia(this,"function"===typeof a?function(c,d,e){c.__transition__[b].delay=a.call(c,c.__data__,d,e)|0}:(a|=0,function(c){c.__transition__[b].delay=
-a}))};M.duration=function(a){var b=this.id;return ia(this,"function"===typeof a?function(c,d,e){c.__transition__[b].duration=Math.max(1,a.call(c,c.__data__,d,e)|0)}:(a=Math.max(1,a|0),function(c){c.__transition__[b].duration=a}))};M.each=function(a,b){var c=this.id;if(2>arguments.length){var d=mb,e=Ja;Ja=c;ia(this,function(b,d,e){mb=b.__transition__[c];a.call(b,b.__data__,d,e)});mb=d;Ja=e}else ia(this,function(d){d.__transition__[c].event.on(a,b)});return this};M.transition=function(){for(var a=this.id,
-b=++oe,c=[],d,e,f,h,k=0,g=this.length;k<g;k++){c.push(d=[]);e=this[k];for(var m=0,n=e.length;m<n;m++){if(f=e[m])h=Object.create(f.__transition__[a]),h.delay+=h.duration,Pa(f,m,b,h);d.push(f)}}return Ba(c,b)};M.tween=function(a,b){var c=this.id;return 2>arguments.length?this.node().__transition__[c].tween.get(a):ia(this,null==b?function(b){b.__transition__[c].tween.remove(a)}:function(d){d.__transition__[c].tween.set(a,b)})};var sg=0,Kb={},ua=null,Ra,Qa;g.timer=function(a,b,c){if(3>arguments.length){if(2>
-arguments.length)b=0;else if(!isFinite(b))return;c=Date.now()}var d=Kb[a.id];d&&d.callback===a?(d.then=c,d.delay=b):Kb[a.id=++sg]=ua={callback:a,then:c,delay:b,next:ua};Ra||(Qa=clearTimeout(Qa),Ra=1,Zc(Jb))};g.timer.flush=function(){for(var a,b=Date.now(),c=ua;c;)a=b-c.then,c.delay||(c.flush=c.callback(a)),c=c.next;Yc()};var Zc=P.requestAnimationFrame||P.webkitRequestAnimationFrame||P.mozRequestAnimationFrame||P.oRequestAnimationFrame||P.msRequestAnimationFrame||function(a){setTimeout(a,17)};g.mouse=
-function(a){return $c(a,Cc())};var Lb=/WebKit/.test(P.navigator.userAgent)?-1:0;g.touches=function(a,b){2>arguments.length&&(b=Cc().touches);return b?ha(b).map(function(b){var d=$c(a,b);d.identifier=b.identifier;return d}):[]};g.scale={};g.scale.linear=function(){return ad([0,1],[0,1],g.interpolate,!1)};g.scale.log=function(){return ed(g.scale.linear(),Ob)};var gf=g.format(".0e");Ob.pow=function(a){return Math.pow(10,a)};Ua.pow=function(a){return-Math.pow(10,-a)};g.scale.pow=function(){return fd(g.scale.linear(),
-1)};g.scale.sqrt=function(){return g.scale.pow().exponent(0.5)};g.scale.ordinal=function(){return gd([],{t:"range",a:[[]]})};g.scale.category10=function(){return g.scale.ordinal().range(tg)};g.scale.category20=function(){return g.scale.ordinal().range(ug)};g.scale.category20b=function(){return g.scale.ordinal().range(vg)};g.scale.category20c=function(){return g.scale.ordinal().range(wg)};var tg="#1f77b4 #ff7f0e #2ca02c #d62728 #9467bd #8c564b #e377c2 #7f7f7f #bcbd22 #17becf".split(" "),ug="#1f77b4 #aec7e8 #ff7f0e #ffbb78 #2ca02c #98df8a #d62728 #ff9896 #9467bd #c5b0d5 #8c564b #c49c94 #e377c2 #f7b6d2 #7f7f7f #c7c7c7 #bcbd22 #dbdb8d #17becf #9edae5".split(" "),
-vg="#393b79 #5254a3 #6b6ecf #9c9ede #637939 #8ca252 #b5cf6b #cedb9c #8c6d31 #bd9e39 #e7ba52 #e7cb94 #843c39 #ad494a #d6616b #e7969c #7b4173 #a55194 #ce6dbd #de9ed6".split(" "),wg="#3182bd #6baed6 #9ecae1 #c6dbef #e6550d #fd8d3c #fdae6b #fdd0a2 #31a354 #74c476 #a1d99b #c7e9c0 #756bb1 #9e9ac8 #bcbddc #dadaeb #636363 #969696 #bdbdbd #d9d9d9".split(" ");g.scale.quantile=function(){return hd([],[])};g.scale.quantize=function(){return id(0,1,[0,1])};g.scale.threshold=function(){return jd([0.5],[0,1])};
-g.scale.identity=function(){return kd([0,1])};g.svg={};g.svg.arc=function(){function a(){var a=b.apply(this,arguments),h=c.apply(this,arguments),k=d.apply(this,arguments)+na,g=e.apply(this,arguments)+na,m=(g<k&&(m=k,k=g,g=m),g-k),n=m<u?"0":"1",p=Math.cos(k),k=Math.sin(k),q=Math.cos(g),g=Math.sin(g);return m>=xg?a?"M0,"+h+"A"+h+","+h+" 0 1,1 0,"+-h+"A"+h+","+h+" 0 1,1 0,"+h+"M0,"+a+"A"+a+","+a+" 0 1,0 0,"+-a+"A"+a+","+a+" 0 1,0 0,"+a+"Z":"M0,"+h+"A"+h+","+h+" 0 1,1 0,"+-h+"A"+h+","+h+" 0 1,1 0,"+h+
-"Z":a?"M"+h*p+","+h*k+"A"+h+","+h+" 0 "+n+",1 "+h*q+","+h*g+"L"+a*q+","+a*g+"A"+a+","+a+" 0 "+n+",0 "+a*p+","+a*k+"Z":"M"+h*p+","+h*k+"A"+h+","+h+" 0 "+n+",1 "+h*q+","+h*g+"L0,0Z"}var b=hf,c=jf,d=ld,e=md;a.innerRadius=function(c){if(!arguments.length)return b;b=F(c);return a};a.outerRadius=function(b){if(!arguments.length)return c;c=F(b);return a};a.startAngle=function(b){if(!arguments.length)return d;d=F(b);return a};a.endAngle=function(b){if(!arguments.length)return e;e=F(b);return a};a.centroid=
-function(){var a=(b.apply(this,arguments)+c.apply(this,arguments))/2,h=(d.apply(this,arguments)+e.apply(this,arguments))/2+na;return[Math.cos(h)*a,Math.sin(h)*a]};return a};var na=-u/2,xg=2*u-1E-6;g.svg.line=function(){return nd(V)};var Qb=g.map({linear:U,"linear-closed":function(a){return U(a)+"Z"},"step-before":Rb,"step-after":Sb,basis:pd,"basis-open":function(a){if(4>a.length)return U(a);for(var b=[],c=-1,d=a.length,e,f=[0],h=[0];3>++c;)e=a[c],f.push(e[0]),h.push(e[1]);b.push(aa(va,f)+","+aa(va,
-h));for(--c;++c<d;)e=a[c],f.shift(),f.push(e[0]),h.shift(),h.push(e[1]),Da(b,f,h);return b.join("")},"basis-closed":function(a){for(var b,c=-1,d=a.length,e=d+4,f,h=[],g=[];4>++c;)f=a[c%d],h.push(f[0]),g.push(f[1]);b=[aa(va,h),",",aa(va,g)];for(--c;++c<e;)f=a[c%d],h.shift(),h.push(f[0]),g.shift(),g.push(f[1]),Da(b,h,g);return b.join("")},bundle:function(a,b){var c=a.length-1;if(c)for(var d=a[0][0],e=a[0][1],f=a[c][0]-d,h=a[c][1]-e,g=-1,l,m;++g<=c;)l=a[g],m=g/c,l[0]=b*l[0]+(1-b)*(d+m*f),l[1]=b*l[1]+
-(1-b)*(e+m*h);return pd(a)},cardinal:function(a,b){return 3>a.length?U(a):a[0]+Wa(a,Tb(a,b))},"cardinal-open":function(a,b){return 4>a.length?U(a):a[1]+Wa(a.slice(1,a.length-1),Tb(a,b))},"cardinal-closed":function(a,b){return 3>a.length?U(a):a[0]+Wa((a.push(a[0]),a),Tb([a[a.length-2]].concat(a,[a[1]]),b))},monotone:function(a){if(3>a.length)a=U(a);else{var b=a[0],c=[],d,e,f,h;d=0;e=a.length-1;var g=[];f=a[1];for(h=g[0]=Ub(a[0],f);++d<e;)g[d]=(h+(h=Ub(f,f=a[d+1])))/2;g[d]=h;for(var l=-1,m=a.length-
-1;++l<m;)d=Ub(a[l],a[l+1]),1E-6>Math.abs(d)?g[l]=g[l+1]=0:(e=g[l]/d,f=g[l+1]/d,h=e*e+f*f,9<h&&(h=3*d/Math.sqrt(h),g[l]=h*e,g[l+1]=h*f));for(l=-1;++l<=m;)h=(a[Math.min(m,l+1)][0]-a[Math.max(0,l-1)][0])/(6*(1+g[l]*g[l])),c.push([h||0,g[l]*h||0]);a=b+Wa(a,c)}return a}});Qb.forEach(function(a,b){b.key=a;b.closed=/-closed$/.test(a)});var qd=[0,2/3,1/3,0],rd=[0,1/3,2/3,0],va=[0,1/6,2/3,1/6];g.svg.line.radial=function(){var a=nd(sd);a.radius=a.x;delete a.x;a.angle=a.y;delete a.y;return a};Rb.reverse=Sb;
-Sb.reverse=Rb;g.svg.area=function(){return td(V)};g.svg.area.radial=function(){var a=td(sd);a.radius=a.x;delete a.x;a.innerRadius=a.x0;delete a.x0;a.outerRadius=a.x1;delete a.x1;a.angle=a.y;delete a.y;a.startAngle=a.y0;delete a.y0;a.endAngle=a.y1;delete a.y1;return a};g.svg.chord=function(){function a(a,f){var h=b(this,d,a,f),g=b(this,e,a,f);return"M"+h.p0+c(h.r,h.p1,h.a1-h.a0)+(h.a0==g.a0&&h.a1==g.a1?"Q 0,0 "+h.p0:"Q 0,0 "+g.p0+c(g.r,g.p1,g.a1-g.a0)+("Q 0,0 "+h.p0))+"Z"}function b(a,b,c,d){var e=
-b.call(a,c,d);b=f.call(a,e,d);c=h.call(a,e,d)+na;a=g.call(a,e,d)+na;return{r:b,a0:c,a1:a,p0:[b*Math.cos(c),b*Math.sin(c)],p1:[b*Math.cos(a),b*Math.sin(a)]}}function c(a,b,c){return"A"+a+","+a+" 0 "+ +(c>u)+",1 "+b}var d=sb,e=rb,f=kf,h=ld,g=md;a.radius=function(b){if(!arguments.length)return f;f=F(b);return a};a.source=function(b){if(!arguments.length)return d;d=F(b);return a};a.target=function(b){if(!arguments.length)return e;e=F(b);return a};a.startAngle=function(b){if(!arguments.length)return h;
-h=F(b);return a};a.endAngle=function(b){if(!arguments.length)return g;g=F(b);return a};return a};g.svg.diagonal=function(){function a(a,f){var h=b.call(this,a,f),g=c.call(this,a,f),l=(h.y+g.y)/2,h=[h,{x:h.x,y:l},{x:g.x,y:l},g],h=h.map(d);return"M"+h[0]+"C"+h[1]+" "+h[2]+" "+h[3]}var b=sb,c=rb,d=ud;a.source=function(c){if(!arguments.length)return b;b=F(c);return a};a.target=function(b){if(!arguments.length)return c;c=F(b);return a};a.projection=function(b){if(!arguments.length)return d;d=b;return a};
-return a};g.svg.diagonal.radial=function(){var a=g.svg.diagonal(),b=ud,c=a.projection;a.projection=function(a){return arguments.length?c(lf(b=a)):b};return a};g.svg.symbol=function(){function a(a,e){return(pe.get(b.call(this,a,e))||vd)(c.call(this,a,e))}var b=nf,c=mf;a.type=function(c){if(!arguments.length)return b;b=F(c);return a};a.size=function(b){if(!arguments.length)return c;c=F(b);return a};return a};var pe=g.map({circle:vd,cross:function(a){a=Math.sqrt(a/5)/2;return"M"+-3*a+","+-a+"H"+-a+"V"+
--3*a+"H"+a+"V"+-a+"H"+3*a+"V"+a+"H"+a+"V"+3*a+"H"+-a+"V"+a+"H"+-3*a+"Z"},diamond:function(a){a=Math.sqrt(a/(2*qe));var b=a*qe;return"M0,"+-a+"L"+b+",0 0,"+a+" "+-b+",0Z"},square:function(a){a=Math.sqrt(a)/2;return"M"+-a+","+-a+"L"+a+","+-a+" "+a+","+a+" "+-a+","+a+"Z"},"triangle-down":function(a){a=Math.sqrt(a/nb);var b=a*nb/2;return"M0,"+b+"L"+a+","+-b+" "+-a+","+-b+"Z"},"triangle-up":function(a){a=Math.sqrt(a/nb);var b=a*nb/2;return"M0,"+-b+"L"+a+","+b+" "+-a+","+b+"Z"}});g.svg.symbolTypes=pe.keys();
-var nb=Math.sqrt(3),qe=Math.tan(30*w);g.svg.axis=function(){function a(a){a.each(function(){var a=g.select(this),p=null==l?b.ticks?b.ticks.apply(b,k):b.domain():l,s=null==m?b.tickFormat?b.tickFormat.apply(b,k):String:m,t=of(b,p,n),v=a.selectAll(".tick.minor").data(t,String),t=v.enter().insert("line",".tick").attr("class","tick minor").style("opacity",1E-6),x=g.transition(v.exit()).style("opacity",1E-6).remove(),v=g.transition(v).style("opacity",1),z=a.selectAll(".tick.major").data(p,String),p=z.enter().insert("g",
-"path").attr("class","tick major").style("opacity",1E-6),y=g.transition(z.exit()).style("opacity",1E-6).remove(),G=g.transition(z).style("opacity",1),H,D=Sa(b),a=a.selectAll(".domain").data([0]),a=(a.enter().append("path").attr("class","domain"),g.transition(a)),B=b.copy(),E=this.__chart__||B;this.__chart__=B;p.append("line");p.append("text");var u=p.select("line"),L=G.select("line"),s=z.select("text").text(s),z=p.select("text"),w=G.select("text");switch(c){case "bottom":H=wd;t.attr("y2",e);v.attr("x2",
-0).attr("y2",e);u.attr("y2",d);z.attr("y",Math.max(d,0)+h);L.attr("x2",0).attr("y2",d);w.attr("x",0).attr("y",Math.max(d,0)+h);s.attr("dy",".71em").style("text-anchor","middle");a.attr("d","M"+D[0]+","+f+"V0H"+D[1]+"V"+f);break;case "top":H=wd;t.attr("y2",-e);v.attr("x2",0).attr("y2",-e);u.attr("y2",-d);z.attr("y",-(Math.max(d,0)+h));L.attr("x2",0).attr("y2",-d);w.attr("x",0).attr("y",-(Math.max(d,0)+h));s.attr("dy","0em").style("text-anchor","middle");a.attr("d","M"+D[0]+","+-f+"V0H"+D[1]+"V"+-f);
-break;case "left":H=xd;t.attr("x2",-e);v.attr("x2",-e).attr("y2",0);u.attr("x2",-d);z.attr("x",-(Math.max(d,0)+h));L.attr("x2",-d).attr("y2",0);w.attr("x",-(Math.max(d,0)+h)).attr("y",0);s.attr("dy",".32em").style("text-anchor","end");a.attr("d","M"+-f+","+D[0]+"H0V"+D[1]+"H"+-f);break;case "right":H=xd,t.attr("x2",e),v.attr("x2",e).attr("y2",0),u.attr("x2",d),z.attr("x",Math.max(d,0)+h),L.attr("x2",d).attr("y2",0),w.attr("x",Math.max(d,0)+h).attr("y",0),s.attr("dy",".32em").style("text-anchor","start"),
-a.attr("d","M"+f+","+D[0]+"H0V"+D[1]+"H"+f)}if(b.ticks)p.call(H,E),G.call(H,B),y.call(H,B),t.call(H,E),v.call(H,B),x.call(H,B);else{var fa=B.rangeBand()/2,t=function(a){return B(a)+fa};p.call(H,t);G.call(H,t)}})}var b=g.scale.linear(),c=re,d=6,e=6,f=6,h=3,k=[10],l=null,m,n=0;a.scale=function(c){if(!arguments.length)return b;b=c;return a};a.orient=function(b){if(!arguments.length)return c;c=b in yg?b+"":re;return a};a.ticks=function(){if(!arguments.length)return k;k=arguments;return a};a.tickValues=
-function(b){if(!arguments.length)return l;l=b;return a};a.tickFormat=function(b){if(!arguments.length)return m;m=b;return a};a.tickSize=function(b,c){if(!arguments.length)return d;var h=arguments.length-1;d=+b;e=1<h?+c:d;f=0<h?+arguments[h]:d;return a};a.tickPadding=function(b){if(!arguments.length)return h;h=+b;return a};a.tickSubdivide=function(b){if(!arguments.length)return n;n=+b;return a};return a};var re="bottom",yg={top:1,right:1,bottom:1,left:1};g.svg.brush=function(){function a(f){f.each(function(){var f=
-g.select(this),m=f.selectAll(".background").data([0]),p=f.selectAll(".extent").data([0]),n=f.selectAll(".resize").data(l,String);f.style("pointer-events","all").on("mousedown.brush",e).on("touchstart.brush",e);m.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair");p.enter().append("rect").attr("class","extent").style("cursor","move");n.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return zg[a]}).append("rect").attr("x",
-function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden");n.style("display",a.empty()?"none":null);n.exit().remove();h&&(p=Sa(h),m.attr("x",p[0]).attr("width",p[1]-p[0]),c(f));k&&(p=Sa(k),m.attr("y",p[0]).attr("height",p[1]-p[0]),d(f));b(f)})}function b(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+m[+/e$/.test(a)][0]+","+m[+/^s/.test(a)][1]+")"})}function c(a){a.select(".extent").attr("x",
-m[0][0]);a.selectAll(".extent,.n>rect,.s>rect").attr("width",m[1][0]-m[0][0])}function d(a){a.select(".extent").attr("y",m[0][1]);a.selectAll(".extent,.e>rect,.w>rect").attr("height",m[1][1]-m[0][1])}function e(){function e(){var a=g.event.changedTouches;return a?g.touches(t,a)[0]:g.mouse(t)}function l(){var a=e(),f=!1;u&&(a[0]+=u[0],a[1]+=u[1]);D||(g.event.altKey?(B||(B=[(m[0][0]+m[1][0])/2,(m[0][1]+m[1][1])/2]),E[0]=m[+(a[0]<B[0])][0],E[1]=m[+(a[1]<B[1])][1]):B=null);G&&r(a,h,0)&&(c(z),f=!0);H&&
-r(a,k,1)&&(d(z),f=!0);f&&(b(z),x({type:"brush",mode:D?"move":"resize"}))}function r(a,b,c){var d=Sa(b);b=d[0];var e=d[1],d=E[c],f=m[1][c]-m[0][c];D&&(b-=d,e-=f+d);a=Math.max(b,Math.min(e,a[c]));D?b=(a+=d)+f:(B&&(d=Math.max(b,Math.min(e,2*B[c]-a))),d<a?(b=a,a=d):b=d);if(m[0][c]!==a||m[1][c]!==b)return n=null,m[0][c]=a,m[1][c]=b,!0}function s(){l();z.style("pointer-events","all").selectAll(".resize").style("display",a.empty()?"none":null);g.select("body").style("cursor",null);L.on("mousemove.brush",
-null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null);x({type:"brushend"});X()}var t=this,v=g.select(g.event.target),x=f.of(t,arguments),z=g.select(t),y=v.datum(),G=!/^(n|s)$/.test(y)&&h,H=!/^(e|w)$/.test(y)&&k,D=v.classed("extent"),B,E=e(),u,L=g.select(P).on("mousemove.brush",l).on("mouseup.brush",s).on("touchmove.brush",l).on("touchend.brush",s).on("keydown.brush",function(){32==g.event.keyCode&&(D||(B=null,E[0]-=m[1][0],
-E[1]-=m[1][1],D=2),X())}).on("keyup.brush",function(){32==g.event.keyCode&&2==D&&(E[0]+=m[1][0],E[1]+=m[1][1],D=0,X())});if(D)E[0]=m[0][0]-E[0],E[1]=m[0][1]-E[1];else if(y){var w=+/w$/.test(y),y=+/^n/.test(y);u=[m[1-w][0]-E[0],m[1-y][1]-E[1]];E[0]=m[w][0];E[1]=m[y][1]}else g.event.altKey&&(B=E.slice());z.style("pointer-events","none").selectAll(".resize").style("display",null);g.select("body").style("cursor",v.style("cursor"));x({type:"brushstart"});l();X()}var f=wb(a,"brushstart","brush","brushend"),
-h=null,k=null,l=vc[0],m=[[0,0],[0,0]],n;a.x=function(b){if(!arguments.length)return h;h=b;l=vc[!h<<1|!k];return a};a.y=function(b){if(!arguments.length)return k;k=b;l=vc[!h<<1|!k];return a};a.extent=function(b){var c,d,e,f,g;if(!arguments.length)return b=n||m,h&&(c=b[0][0],d=b[1][0],n||(c=m[0][0],d=m[1][0],h.invert&&(c=h.invert(c),d=h.invert(d)),d<c&&(g=c,c=d,d=g))),k&&(e=b[0][1],f=b[1][1],n||(e=m[0][1],f=m[1][1],k.invert&&(e=k.invert(e),f=k.invert(f)),f<e&&(g=e,e=f,f=g))),h&&k?[[c,e],[d,f]]:h?[c,
-d]:k&&[e,f];n=[[0,0],[0,0]];h&&(c=b[0],d=b[1],k&&(c=c[0],d=d[0]),n[0][0]=c,n[1][0]=d,h.invert&&(c=h(c),d=h(d)),d<c&&(g=c,c=d,d=g),m[0][0]=c|0,m[1][0]=d|0);k&&(e=b[0],f=b[1],h&&(e=e[1],f=f[1]),n[0][1]=e,n[1][1]=f,k.invert&&(e=k(e),f=k(f)),f<e&&(g=e,e=f,f=g),m[0][1]=e|0,m[1][1]=f|0);return a};a.clear=function(){n=null;m[0][0]=m[0][1]=m[1][0]=m[1][1]=0;return a};a.empty=function(){return h&&m[0][0]===m[1][0]||k&&m[0][1]===m[1][1]};return g.rebind(a,f,"on")};var zg={n:"ns-resize",e:"ew-resize",s:"ns-resize",
-w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},vc=["n e s w nw ne se sw".split(" "),["e","w"],["n","s"],[]];g.behavior={};g.behavior.drag=function(){function a(){this.on("mousedown.drag",b).on("touchstart.drag",b)}function b(){function a(){var b=k.parentNode;return null!=n?g.touches(b).filter(function(a){return a.identifier===n})[0]:g.mouse(b)}function b(){l({type:"dragend"});if(r&&(X(),g.event.target===m))s.on("click.drag",h,!0);s.on(null!=n?"touchmove.drag-"+
-n:"mousemove.drag",null).on(null!=n?"touchend.drag-"+n:"mouseup.drag",null)}function h(){X();s.on("click.drag",null)}var k=this,l=c.of(k,arguments),m=g.event.target,n=g.event.touches?g.event.changedTouches[0].identifier:null,p,q=a(),r=0,s=g.select(P).on(null!=n?"touchmove.drag-"+n:"mousemove.drag",function(){if(!k.parentNode)return b();var c=a(),d=c[0]-q[0],h=c[1]-q[1];r=r|d|h;q=c;X();l({type:"drag",x:c[0]+p[0],y:c[1]+p[1],dx:d,dy:h})}).on(null!=n?"touchend.drag-"+n:"mouseup.drag",b,!0);d?(p=d.apply(k,
-arguments),p=[p.x-q[0],p.y-q[1]]):p=[0,0];null==n&&X();l({type:"dragstart"})}var c=wb(a,"drag","dragstart","dragend"),d=null;a.origin=function(b){if(!arguments.length)return d;d=b;return a};return g.rebind(a,c,"on")};g.behavior.zoom=function(){function a(){this.on("mousedown.zoom",h).on("mousemove.zoom",l).on(Ag+".zoom",k).on("dblclick.zoom",m).on("touchstart.zoom",n).on("touchmove.zoom",p).on("touchend.zoom",n)}function b(a){return[(a[0]-q[0])/s,(a[1]-q[1])/s]}function c(a){s=Math.max(v[0],Math.min(v[1],
-a))}function d(a,b){b=[b[0]*s+q[0],b[1]*s+q[1]];q[0]+=a[0]-b[0];q[1]+=a[1]-b[1]}function e(){y&&y.domain(z.range().map(function(a){return(a-q[0])/s}).map(z.invert));H&&H.domain(G.range().map(function(a){return(a-q[1])/s}).map(G.invert))}function f(a){e();g.event.preventDefault();a({type:"zoom",scale:s,translate:q})}function h(){function a(){X();l.on("click.zoom",null)}var c=this,e=x.of(c,arguments),h=g.event.target,k=0,l=g.select(P).on("mousemove.zoom",function(){k=1;d(g.mouse(c),m);f(e)}).on("mouseup.zoom",
-function(){k&&X();l.on("mousemove.zoom",null).on("mouseup.zoom",null);if(k&&g.event.target===h)l.on("click.zoom",a,!0)}),m=b(g.mouse(c));P.focus();X()}function k(){r||(r=b(g.mouse(this)));c(Math.pow(2,0.002*ob())*s);d(g.mouse(this),r);f(x.of(this,arguments))}function l(){r=null}function m(){var a=g.mouse(this),e=b(a),h=Math.log(s)/Math.LN2;c(Math.pow(2,g.event.shiftKey?Math.ceil(h)-1:Math.floor(h)+1));d(a,e);f(x.of(this,arguments))}function n(){var a=g.touches(this),e=Date.now();t=s;r={};a.forEach(function(a){r[a.identifier]=
-b(a)});X();if(1===a.length){if(500>e-D){var h=a[0],a=b(a[0]);c(2*s);d(h,a);f(x.of(this,arguments))}D=e}}function p(){var a=g.touches(this),b=a[0],e=r[b.identifier];if(a=a[1]){var h=r[a.identifier],b=[(b[0]+a[0])/2,(b[1]+a[1])/2],e=[(e[0]+h[0])/2,(e[1]+h[1])/2];c(g.event.scale*t)}d(b,e);D=null;f(x.of(this,arguments))}var q=[0,0],r,s=1,t,v=se,x=wb(a,"zoom"),z,y,G,H,D;a.translate=function(b){if(!arguments.length)return q;q=b.map(Number);e();return a};a.scale=function(b){if(!arguments.length)return s;
-s=+b;e();return a};a.scaleExtent=function(b){if(!arguments.length)return v;v=null==b?se:b.map(Number);return a};a.x=function(b){if(!arguments.length)return y;y=b;z=b.copy();q=[0,0];s=1;return a};a.y=function(b){if(!arguments.length)return H;H=b;G=b.copy();q=[0,0];s=1;return a};return g.rebind(a,x,"on")};var se=[0,Infinity],ob,Ag="onwheel"in document?(ob=function(){return-g.event.deltaY*(g.event.deltaMode?120:1)},"wheel"):"onmousewheel"in document?(ob=function(){return g.event.wheelDelta},"mousewheel"):
-(ob=function(){return-g.event.detail},"MozMousePixelScroll");g.layout={};g.layout.bundle=function(){return function(a){for(var b=[],c=-1,d=a.length;++c<d;)b.push(pf(a[c]));return b}};g.layout.chord=function(){function a(){var a={},c=[],r=g.range(h),s=[],t,v,x,z,y;d=[];e=[];t=0;for(z=-1;++z<h;){v=0;for(y=-1;++y<h;)v+=f[z][y];c.push(v);s.push(g.range(h));t+=v}l&&r.sort(function(a,b){return l(c[a],c[b])});m&&s.forEach(function(a,b){a.sort(function(a,c){return m(f[b][a],f[b][c])})});t=(2*u-k*h)/t;v=0;
-for(z=-1;++z<h;){x=v;for(y=-1;++y<h;){var G=r[z],H=s[G][y],D=f[G][H],B=v,E=v+=D*t;a[G+"-"+H]={index:G,subindex:H,startAngle:B,endAngle:E,value:D}}e[G]={index:G,startAngle:x,endAngle:v,value:(v-x)/t};v+=k}for(z=-1;++z<h;)for(y=z-1;++y<h;)r=a[z+"-"+y],s=a[y+"-"+z],(r.value||s.value)&&d.push(r.value<s.value?{source:s,target:r}:{source:r,target:s});n&&b()}function b(){d.sort(function(a,b){return n((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)})}var c={},d,e,f,h,k=0,l,m,n;c.matrix=
-function(a){if(!arguments.length)return f;h=(f=a)&&f.length;d=e=null;return c};c.padding=function(a){if(!arguments.length)return k;k=a;d=e=null;return c};c.sortGroups=function(a){if(!arguments.length)return l;l=a;d=e=null;return c};c.sortSubgroups=function(a){if(!arguments.length)return m;m=a;d=null;return c};c.sortChords=function(a){if(!arguments.length)return n;n=a;d&&b();return c};c.chords=function(){d||a();return d};c.groups=function(){e||a();return e};return c};g.layout.force=function(){function a(a){return function(b,
-c,d,e){if(b.point!==a){d=b.cx-a.x;var f=b.cy-a.y,h=1/Math.sqrt(d*d+f*f);if((e-c)*h<q)return c=b.charge*h*h,a.px-=d*c,a.py-=f*c,!0;b.point&&isFinite(h)&&(c=b.pointCharge*h*h,a.px-=d*c,a.py-=f*c)}return!b.charge}}function b(a){a.px=g.event.x;a.py=g.event.y;c.resume()}var c={},d=g.dispatch("start","tick","end"),e=[1,1],f,h,k=0.9,l=Bg,m=Cg,n=-30,p=0.1,q=0.8,r=[],s=[],t,v,x;c.tick=function(){if(0.005>(h*=0.99))return d.end({type:"end",alpha:h=0}),!0;var b=r.length,c=s.length,f,l,m,q,u,w,L;for(f=0;f<c;++f)if(l=
-s[f],m=l.source,q=l.target,w=q.x-m.x,L=q.y-m.y,u=w*w+L*L)u=h*v[f]*((u=Math.sqrt(u))-t[f])/u,w*=u,L*=u,q.x-=w*(u=m.weight/(q.weight+m.weight)),q.y-=L*u,m.x+=w*(u=1-u),m.y+=L*u;if(u=h*p)if(w=e[0]/2,L=e[1]/2,f=-1,u)for(;++f<b;)l=r[f],l.x+=(w-l.x)*u,l.y+=(L-l.y)*u;if(n)for(zd(c=g.geom.quadtree(r),h,x),f=-1;++f<b;)(l=r[f]).fixed||c.visit(a(l));for(f=-1;++f<b;)l=r[f],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*k,l.y-=(l.py-(l.py=l.y))*k);d.tick({type:"tick",alpha:h})};c.nodes=function(a){if(!arguments.length)return r;
-r=a;return c};c.links=function(a){if(!arguments.length)return s;s=a;return c};c.size=function(a){if(!arguments.length)return e;e=a;return c};c.linkDistance=function(a){if(!arguments.length)return l;l="function"===typeof a?a:+a;return c};c.distance=c.linkDistance;c.linkStrength=function(a){if(!arguments.length)return m;m="function"===typeof a?a:+a;return c};c.friction=function(a){if(!arguments.length)return k;k=+a;return c};c.charge=function(a){if(!arguments.length)return n;n="function"===typeof a?
-a:+a;return c};c.gravity=function(a){if(!arguments.length)return p;p=+a;return c};c.theta=function(a){if(!arguments.length)return q;q=+a;return c};c.alpha=function(a){if(!arguments.length)return h;a=+a;h?h=0<a?a:0:0<a&&(d.start({type:"start",alpha:h=a}),g.timer(c.tick));return c};c.start=function(){function a(c,e){var g;if(!p){p=[];for(d=0;d<f;++d)p[d]=[];for(d=0;d<h;++d)g=s[d],p[g.source.index].push(g.target),p[g.target.index].push(g.source)}g=p[b];for(var k=-1,l=g.length,m;++k<l;)if(!isNaN(m=g[k][c]))return m;
-return Math.random()*e}var b,d,f=r.length,h=s.length,g=e[0],k=e[1],p,q;for(b=0;b<f;++b)(q=r[b]).index=b,q.weight=0;for(b=0;b<h;++b)q=s[b],"number"==typeof q.source&&(q.source=r[q.source]),"number"==typeof q.target&&(q.target=r[q.target]),++q.source.weight,++q.target.weight;for(b=0;b<f;++b)q=r[b],isNaN(q.x)&&(q.x=a("x",g)),isNaN(q.y)&&(q.y=a("y",k)),isNaN(q.px)&&(q.px=q.x),isNaN(q.py)&&(q.py=q.y);t=[];if("function"===typeof l)for(b=0;b<h;++b)t[b]=+l.call(this,s[b],b);else for(b=0;b<h;++b)t[b]=l;v=
-[];if("function"===typeof m)for(b=0;b<h;++b)v[b]=+m.call(this,s[b],b);else for(b=0;b<h;++b)v[b]=m;x=[];if("function"===typeof n)for(b=0;b<f;++b)x[b]=+n.call(this,r[b],b);else for(b=0;b<f;++b)x[b]=n;return c.resume()};c.resume=function(){return c.alpha(0.1)};c.stop=function(){return c.alpha(0)};c.drag=function(){f||(f=g.behavior.drag().origin(V).on("dragstart.force",qf).on("drag.force",b).on("dragend.force",rf));if(!arguments.length)return f;this.on("mouseover.force",sf).on("mouseout.force",tf).call(f)};
-return g.rebind(c,d,"on")};var Bg=20,Cg=1;g.layout.partition=function(){function a(b,c,d,e){var g=b.children;b.x=c;b.y=b.depth*e;b.dx=d;b.dy=e;if(g&&(p=g.length)){var n=-1,p,q;for(d=b.value?d/b.value:0;++n<p;)a(q=g[n],c,b=q.value*d,e),c+=b}}function b(a){a=a.children;var c=0;if(a&&(e=a.length))for(var d=-1,e;++d<e;)c=Math.max(c,b(a[d]));return 1+c}function c(c,h){var g=d.call(this,c,h);a(g[0],0,e[0],e[1]/b(g[0]));return g}var d=g.layout.hierarchy(),e=[1,1];c.size=function(a){if(!arguments.length)return e;
-e=a;return c};return Ea(c,d)};g.layout.pie=function(){function a(f){var h=f.map(function(c,d){return+b.call(a,c,d)}),k=+("function"===typeof d?d.apply(this,arguments):d),l=(("function"===typeof e?e.apply(this,arguments):e)-d)/g.sum(h),m=g.range(f.length);null!=c&&m.sort(c===te?function(a,b){return h[b]-h[a]}:function(a,b){return c(f[a],f[b])});var n=[];m.forEach(function(a){var b;n[a]={data:f[a],value:b=h[a],startAngle:k,endAngle:k+=b*l}});return n}var b=Number,c=te,d=0,e=2*u;a.value=function(c){if(!arguments.length)return b;
-b=c;return a};a.sort=function(b){if(!arguments.length)return c;c=b;return a};a.startAngle=function(b){if(!arguments.length)return d;d=b;return a};a.endAngle=function(b){if(!arguments.length)return e;e=b;return a};return a};var te={};g.layout.stack=function(){function a(k,l){var m=k.map(function(c,d){return b.call(a,c,d)}),n=m.map(function(b){return b.map(function(b,c){return[f.call(a,b,c),h.call(a,b,c)]})}),p=c.call(a,n,l),m=g.permute(m,p),n=g.permute(n,p),p=d.call(a,n,l),q=m.length,r=m[0].length,
-s,t,v;for(t=0;t<r;++t)for(e.call(a,m[0][t],v=p[t],n[0][t][1]),s=1;s<q;++s)e.call(a,m[s][t],v+=n[s-1][t][1],n[s][t][1]);return k}var b=V,c=Vb,d=Wb,e=wf,f=uf,h=vf;a.values=function(c){if(!arguments.length)return b;b=c;return a};a.order=function(b){if(!arguments.length)return c;c="function"===typeof b?b:Dg.get(b)||Vb;return a};a.offset=function(b){if(!arguments.length)return d;d="function"===typeof b?b:Eg.get(b)||Wb;return a};a.x=function(b){if(!arguments.length)return f;f=b;return a};a.y=function(b){if(!arguments.length)return h;
-h=b;return a};a.out=function(b){if(!arguments.length)return e;e=b;return a};return a};var Dg=g.map({"inside-out":function(a){var b=a.length,c,d=a.map(xf),e=a.map(yf),f=g.range(b).sort(function(a,b){return d[a]-d[b]}),h=0,k=0,l=[],m=[];for(a=0;a<b;++a)c=f[a],h<k?(h+=e[c],l.push(c)):(k+=e[c],m.push(c));return m.reverse().concat(l)},reverse:function(a){return g.range(a.length).reverse()},"default":Vb}),Eg=g.map({silhouette:function(a){var b=a.length,c=a[0].length,d=[],e=0,f,h,g,l=[];for(h=0;h<c;++h){for(g=
-f=0;f<b;f++)g+=a[f][h][1];g>e&&(e=g);d.push(g)}for(h=0;h<c;++h)l[h]=(e-d[h])/2;return l},wiggle:function(a){var b=a.length,c=a[0],d=c.length,e,f,h,g,l,m,n,p,q,r=[];r[0]=p=q=0;for(f=1;f<d;++f){for(g=e=0;e<b;++e)g+=a[e][f][1];l=e=0;for(n=c[f][0]-c[f-1][0];e<b;++e){h=0;for(m=(a[e][f][1]-a[e][f-1][1])/(2*n);h<e;++h)m+=(a[h][f][1]-a[h][f-1][1])/n;l+=m*a[e][f][1]}r[f]=p-=g?l/g*n:0;p<q&&(q=p)}for(f=0;f<d;++f)r[f]-=q;return r},expand:function(a){var b=a.length,c=a[0].length,d=1/b,e,f,h,g=[];for(f=0;f<c;++f){for(h=
-e=0;e<b;e++)h+=a[e][f][1];if(h)for(e=0;e<b;e++)a[e][f][1]/=h;else for(e=0;e<b;e++)a[e][f][1]=d}for(f=0;f<c;++f)g[f]=0;return g},zero:Wb});g.layout.histogram=function(){function a(a,h){var k=[],l=a.map(c,this),m=d.call(this,l,h),n=e.call(this,m,l,h),p;h=-1;for(var q=l.length,r=n.length-1,s=b?1:1/q;++h<r;)p=k[h]=[],p.dx=n[h+1]-(p.x=n[h]),p.y=0;if(0<r)for(h=-1;++h<q;)p=l[h],p>=m[0]&&p<=m[1]&&(p=k[g.bisect(n,p,1,r)-1],p.y+=s,p.push(a[h]));return k}var b=!0,c=Number,d=Bf,e=Af;a.value=function(b){if(!arguments.length)return c;
-c=b;return a};a.range=function(b){if(!arguments.length)return d;d=F(b);return a};a.bins=function(b){if(!arguments.length)return e;e="number"===typeof b?function(a){return Ad(a,b)}:F(b);return a};a.frequency=function(c){if(!arguments.length)return b;b=!!c;return a};return a};g.layout.hierarchy=function(){function a(b,g,l){var m=e.call(c,b,g);b.depth=g;l.push(b);if(m&&(p=m.length)){var n=-1,p,q=b.children=[],r=0;g+=1;for(var s;++n<p;)s=a(m[n],g,l),s.parent=b,q.push(s),r+=s.value;d&&q.sort(d);f&&(b.value=
-r)}else f&&(b.value=+f.call(c,b,g)||0);return b}function b(a,d){var e=a.children,g=0;if(e&&(p=e.length))for(var n=-1,p,q=d+1;++n<p;)g+=b(e[n],q);else f&&(g=+f.call(c,a,d)||0);f&&(a.value=g);return g}function c(b){var c=[];a(b,0,c);return c}var d=Ff,e=Df,f=Ef;c.sort=function(a){if(!arguments.length)return d;d=a;return c};c.children=function(a){if(!arguments.length)return e;e=a;return c};c.value=function(a){if(!arguments.length)return f;f=a;return c};c.revalue=function(a){b(a,0);return a};return c};
-g.layout.pack=function(){function a(a,f){var h=b.call(this,a,f),g=h[0];g.x=0;g.y=0;ea(g,function(a){a.r=Math.sqrt(a.value)});ea(g,Dd);var l=d[0],m=d[1],n=Math.max(2*g.r/l,2*g.r/m);if(0<c){var p=c*n/2;ea(g,function(a){a.r+=p});ea(g,Dd);ea(g,function(a){a.r-=p});n=Math.max(2*g.r/l,2*g.r/m)}Fd(g,l/2,m/2,1/n);return h}var b=g.layout.hierarchy().sort(Gf),c=0,d=[1,1];a.size=function(b){if(!arguments.length)return d;d=b;return a};a.padding=function(b){if(!arguments.length)return c;c=+b;return a};return Ea(a,
-b)};g.layout.cluster=function(){function a(a,f){var h=b.call(this,a,f),g=h[0],l,m=0;ea(g,function(a){var b=a.children;b&&b.length?(a.x=Kf(b),a.y=Jf(b)):(a.x=l?m+=c(a,l):0,a.y=0,l=a)});var n=Gd(g),p=Hd(g),q=n.x-c(n,p)/2,r=p.x+c(p,n)/2;ea(g,function(a){a.x=(a.x-q)/(r-q)*d[0];a.y=(1-(g.y?a.y/g.y:1))*d[1]});return h}var b=g.layout.hierarchy().sort(null).value(null),c=Id,d=[1,1];a.separation=function(b){if(!arguments.length)return c;c=b;return a};a.size=function(b){if(!arguments.length)return d;d=b;return a};
-return Ea(a,b)};g.layout.tree=function(){function a(a,f){function h(a,b){var d=a.children,e=a._tree;if(d&&(f=d.length)){for(var f,g=d[0],k,l=g,m,p=-1;++p<f;){m=d[p];h(m,k);var n=m;if(k){for(var q=n,s=n,r=n.parent.children[0],t=q._tree.mod,u=s._tree.mod,w=k._tree.mod,C=r._tree.mod,A=void 0;k=Zb(k),q=Yb(q),k&&q;){r=Yb(r);s=Zb(s);s._tree.ancestor=n;A=k._tree.prelim+w-q._tree.prelim-t+c(k,q);if(0<A){var I=k._tree.ancestor.parent==n.parent?k._tree.ancestor:l,F=n,J=A,I=I._tree,F=F._tree,K=J/(F.number-I.number);
-I.change+=K;F.change-=K;F.shift+=J;F.prelim+=J;F.mod+=J;t+=A;u+=A}w+=k._tree.mod;t+=q._tree.mod;C+=r._tree.mod;u+=s._tree.mod}k&&!Zb(s)&&(s._tree.thread=k,s._tree.mod+=w-u);q&&!Yb(r)&&(r._tree.thread=q,r._tree.mod+=t-C,l=n)}k=m}f=d=0;p=a.children;for(n=p.length;0<=--n;)l=p[n]._tree,l.prelim+=d,l.mod+=d,d+=l.shift+(f+=l.change);g=0.5*(g._tree.prelim+m._tree.prelim);b?(e.prelim=b._tree.prelim+c(a,b),e.mod=e.prelim-g):e.prelim=g}else b&&(e.prelim=b._tree.prelim+c(a,b))}function g(a,b){a.x=a._tree.prelim+
-b;var c=a.children;if(c&&(e=c.length)){var d=-1,e;for(b+=a._tree.mod;++d<e;)g(c[d],b)}}var l=b.call(this,a,f),m=l[0];ea(m,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}});h(m);g(m,-m._tree.prelim);var n=Xa(m,Mf),p=Xa(m,Lf),q=Xa(m,Nf),r=n.x-c(n,p)/2,s=p.x+c(p,n)/2,t=q.depth||1;ea(m,function(a){a.x=(a.x-r)/(s-r)*d[0];a.y=a.depth/t*d[1];delete a._tree});return l}var b=g.layout.hierarchy().sort(null).value(null),c=Id,d=[1,1];a.separation=function(b){if(!arguments.length)return c;
-c=b;return a};a.size=function(b){if(!arguments.length)return d;d=b;return a};return Ea(a,b)};g.layout.treemap=function(){function a(a,b){for(var c=-1,d=a.length,e,f;++c<d;)f=(e=a[c]).value*(0>b?0:b),e.area=isNaN(f)||0>=f?0:f}function b(c){var e=c.children;if(e&&e.length){var f=m(c),h=[],g=e.slice(),k=Infinity,l,p="slice"===q?f.dx:"dice"===q?f.dy:"slice-dice"===q?c.depth&1?f.dy:f.dx:Math.min(f.dx,f.dy);a(g,f.dx*f.dy/c.value);for(h.area=0;0<(c=g.length);){h.push(c=g[c-1]);h.area+=c.area;if(!(c="squarify"!==
-q)){l=p;c=h.area;for(var n=void 0,u=0,w=Infinity,A=-1,C=h.length;++A<C;)if(n=h[A].area)n<w&&(w=n),n>u&&(u=n);c*=c;l*=l;c=(l=c?Math.max(l*u*r/c,c/(l*w*r)):Infinity)<=k}c?(g.pop(),k=l):(h.area-=h.pop().area,d(h,p,f,!1),p=Math.min(f.dx,f.dy),h.length=h.area=0,k=Infinity)}h.length&&(d(h,p,f,!0),h.length=h.area=0);e.forEach(b)}}function c(b){var e=b.children;if(e&&e.length){var f=m(b),h=e.slice(),g=[];a(h,f.dx*f.dy/b.value);for(g.area=0;b=h.pop();)g.push(b),g.area+=b.area,null!=b.z&&(d(g,b.z?f.dx:f.dy,
-f,!h.length),g.length=g.area=0);e.forEach(c)}}function d(a,b,c,d){var e=-1,f=a.length,g=c.x,k=c.y,l=b?h(a.area/b):0,m;if(b==c.dx){if(d||l>c.dy)l=c.dy;for(;++e<f;)m=a[e],m.x=g,m.y=k,m.dy=l,g+=m.dx=Math.min(c.x+c.dx-g,l?h(m.area/l):0);m.z=!0;m.dx+=c.x+c.dx-g;c.y+=l;c.dy-=l}else{if(d||l>c.dx)l=c.dx;for(;++e<f;)m=a[e],m.x=g,m.y=k,m.dx=l,k+=m.dy=Math.min(c.y+c.dy-k,l?h(m.area/l):0);m.z=!1;m.dy+=c.y+c.dy-k;c.x+=l;c.dx-=l}}function e(d){d=p||f(d);var e=d[0];e.x=0;e.y=0;e.dx=k[0];e.dy=k[1];p&&f.revalue(e);
-a([e],e.dx*e.dy/e.value);(p?c:b)(e);n&&(p=d);return d}var f=g.layout.hierarchy(),h=Math.round,k=[1,1],l=null,m=$b,n=!1,p,q="squarify",r=0.5*(1+Math.sqrt(5));e.size=function(a){if(!arguments.length)return k;k=a;return e};e.padding=function(a){function b(c){var d=a.call(e,c,c.depth);return null==d?$b(c):Jd(c,"number"===typeof d?[d,d,d,d]:d)}function c(b){return Jd(b,a)}if(!arguments.length)return l;var d;m=null==(l=a)?$b:"function"===(d=typeof a)?b:"number"===d?(a=[a,a,a,a],c):c;return e};e.round=function(a){if(!arguments.length)return h!=
-Number;h=a?Math.round:Number;return e};e.sticky=function(a){if(!arguments.length)return n;n=a;p=null;return e};e.ratio=function(a){if(!arguments.length)return r;r=a;return e};e.mode=function(a){if(!arguments.length)return q;q=a+"";return e};return Ea(e,f)};g.csv=Kd(",","text/csv");g.tsv=Kd("\t","text/tab-separated-values");g.geo={};g.geo.stream=function(a,b){if(ue.hasOwnProperty(a.type))ue[a.type](a,b);else Ya(a,b)};var ue={Feature:function(a,b){Ya(a.geometry,b)},FeatureCollection:function(a,b){for(var c=
-a.features,d=-1,e=c.length;++d<e;)Ya(c[d].geometry,b)}},Ld={Sphere:function(a,b){b.sphere()},Point:function(a,b){var c=a.coordinates;b.point(c[0],c[1])},MultiPoint:function(a,b){for(var c=a.coordinates,d=-1,e=c.length,f;++d<e;)f=c[d],b.point(f[0],f[1])},LineString:function(a,b){ac(a.coordinates,b,0)},MultiLineString:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)ac(c[d],b,0)},Polygon:function(a,b){Md(a.coordinates,b)},MultiPolygon:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<
-e;)Md(c[d],b)},GeometryCollection:function(a,b){for(var c=a.geometries,d=-1,e=c.length;++d<e;)Ya(c[d],b)}};g.geo.albersUsa=function(){function a(a){var h=a[0],g=a[1];return(50<g?c:-140>h?d:21>g?e:b)(a)}var b=g.geo.albers(),c=g.geo.albers().rotate([160,0]).center([0,60]).parallels([55,65]),d=g.geo.albers().rotate([160,0]).center([0,20]).parallels([8,18]),e=g.geo.albers().rotate([60,0]).center([0,10]).parallels([8,18]);a.scale=function(f){if(!arguments.length)return b.scale();b.scale(f);c.scale(0.6*
-f);d.scale(f);e.scale(1.5*f);return a.translate(b.translate())};a.translate=function(f){if(!arguments.length)return b.translate();var h=b.scale(),g=f[0],l=f[1];b.translate(f);c.translate([g-0.4*h,l+0.17*h]);d.translate([g-0.19*h,l+0.2*h]);e.translate([g+0.58*h,l+0.43*h]);return a};return a.scale(b.scale())};(g.geo.albers=function(){var a=29.5*w,b=45.5*w,c=ic(Qd),d=c(a,b);d.parallels=function(d){return arguments.length?c(a=d[0]*w,b=d[1]*w):[a*O,b*O]};return d.rotate([98,0]).center([0,38]).scale(1E3)}).raw=
-Qd;var ve=Fa(function(a){return Math.sqrt(2/(1+a))},function(a){return 2*Math.asin(a/2)});(g.geo.azimuthalEqualArea=function(){return la(ve)}).raw=ve;var we=Fa(function(a){return(a=Math.acos(a))&&a/Math.sin(a)},V);(g.geo.azimuthalEquidistant=function(){return la(we)}).raw=we;g.geo.bounds=Rd(V);g.geo.centroid=function(a){N=Y=J=K=I=0;g.geo.stream(a,Z);var b;if(Y&&Math.abs(b=Math.sqrt(J*J+K*K+I*I))>A)return[Math.atan2(K,J)*O,Math.asin(Math.max(-1,Math.min(1,I/b)))*O]};var N,Y,J,K,I,Z={sphere:function(){2>
-N&&(N=2,Y=J=K=I=0)},point:Sd,lineStart:dc,lineEnd:ec,polygonStart:function(){2>N&&(N=2,Y=J=K=I=0);Z.lineStart=Of},polygonEnd:function(){Z.lineStart=dc}};g.geo.circle=function(){function a(){var a="function"===typeof b?b.apply(this,arguments):b,c=ae(-a[0]*w,-a[1]*w,0).invert,d=[];e(null,null,1,{point:function(a,b){d.push(a=c(a,b));a[0]*=O;a[1]*=O}});return{type:"Polygon",coordinates:[d]}}var b=[0,0],c,d=6,e;a.origin=function(c){if(!arguments.length)return b;b=c;return a};a.angle=function(b){if(!arguments.length)return c;
-e=fc((c=+b)*w,d*w);return a};a.precision=function(b){if(!arguments.length)return d;e=fc(c*w,(d=+b)*w);return a};return a.angle(90)};var be=Ud(za,function(a){var b=NaN,c=NaN,d=NaN,e;return{lineStart:function(){a.lineStart();e=1},point:function(f,h){var g=0<f?u:-u,l=Math.abs(f-b);if(Math.abs(l-u)<A)a.point(b,c=0<(c+h)/2?u/2:-u/2),a.point(d,c),a.lineEnd(),a.lineStart(),a.point(g,c),a.point(f,c),e=0;else if(d!==g&&l>=u){Math.abs(b-d)<A&&(b-=d*A);Math.abs(f-g)<A&&(f-=g*A);var l=b,m=c,n=f,p,q,r=Math.sin(l-
-n);c=Math.abs(r)>A?Math.atan((Math.sin(m)*(q=Math.cos(h))*Math.sin(n)-Math.sin(h)*(p=Math.cos(m))*Math.sin(l))/(p*q*r)):(m+h)/2;a.point(d,c);a.lineEnd();a.lineStart();a.point(g,c);e=0}a.point(b=f,c=h);d=g},lineEnd:function(){a.lineEnd();b=c=NaN},clean:function(){return 2-e}}},function(a,b,c,d){null==a?(c=c*u/2,d.point(-u,c),d.point(0,c),d.point(u,c),d.point(u,0),d.point(u,-c),d.point(0,-c),d.point(-u,-c),d.point(-u,0),d.point(-u,c)):Math.abs(a[0]-b[0])>A?(a=(a[0]<b[0]?1:-1)*u,c=c*a/2,d.point(-a,c),
-d.point(0,c),d.point(a,c)):d.point(b[0],b[1])});(g.geo.equirectangular=function(){return la(ab).scale(250/u)}).raw=ab.invert=ab;var xe=Fa(function(a){return 1/a},Math.atan);(g.geo.gnomonic=function(){return la(xe)}).raw=xe;g.geo.graticule=function(){function a(){return{type:"MultiLineString",coordinates:b()}}function b(){return g.range(Math.ceil(d/h)*h,c,h).map(l).concat(g.range(Math.ceil(f/k)*k,e,k).map(m))}var c,d,e,f,h=22.5,k=h,l,m,n=2.5;a.lines=function(){return b().map(function(a){return{type:"LineString",
-coordinates:a}})};a.outline=function(){return{type:"Polygon",coordinates:[l(d).concat(m(e).slice(1),l(c).reverse().slice(1),m(f).reverse().slice(1))]}};a.extent=function(b){if(!arguments.length)return[[d,f],[c,e]];d=+b[0][0];c=+b[1][0];f=+b[0][1];e=+b[1][1];d>c&&(b=d,d=c,c=b);f>e&&(b=f,f=e,e=b);return a.precision(n)};a.step=function(b){if(!arguments.length)return[h,k];h=+b[0];k=+b[1];return a};a.precision=function(b){if(!arguments.length)return n;n=+b;l=Uf(f,e,n);m=Vf(d,c,n);return a};return a.extent([[-180+
-A,-90+A],[180-A,90-A]])};g.geo.interpolate=function(a,b){return Wf(a[0]*w,a[1]*w,b[0]*w,b[1]*w)};g.geo.greatArc=function(){function a(){for(var a=c||b.apply(this,arguments),l=e||d.apply(this,arguments),m=h||g.geo.interpolate(a,l),n=0,p=f/m.distance,a=[a];1>(n+=p);)a.push(m(n));a.push(l);return{type:"LineString",coordinates:a}}var b=sb,c,d=rb,e,f=6*w,h;a.distance=function(){return(h||g.geo.interpolate(c||b.apply(this,arguments),e||d.apply(this,arguments))).distance};a.source=function(d){if(!arguments.length)return b;
-b=d;h=(c="function"===typeof d?null:d)&&e?g.geo.interpolate(c,e):null;return a};a.target=function(b){if(!arguments.length)return d;d=b;e="function"===typeof b?null:b;h=c&&e?g.geo.interpolate(c,e):null;return a};a.precision=function(b){if(!arguments.length)return f/w;f=b*w;return a};return a};gc.invert=function(a,b){return[2*u*a,2*Math.atan(Math.exp(2*u*b))-u/2]};(g.geo.mercator=function(){return la(gc).scale(500)}).raw=gc;var ye=Fa(function(){return 1},Math.asin);(g.geo.orthographic=function(){return la(ye)}).raw=
-ye;g.geo.path=function(){function a(a){a&&g.geo.stream(a,e(f.pointRadius("function"===typeof b?+b.apply(this,arguments):b)));return f.result()}var b=4.5,c,d,e,f;a.area=function(a){pb=0;g.geo.stream(a,e(ja));return pb};a.centroid=function(a){N=J=K=I=0;g.geo.stream(a,e($));return I?[J/I,K/I]:void 0};a.bounds=function(a){return Rd(e)(a)};a.projection=function(b){if(!arguments.length)return c;e=(c=b)?b.stream||Xf(b):V;return a};a.context=function(b){if(!arguments.length)return d;f=null==(d=b)?new Yf:
-new Zf(b);return a};a.pointRadius=function(c){if(!arguments.length)return b;b="function"===typeof c?c:+c;return a};return a.projection(g.geo.albersUsa()).context(null)};var pb,bb,ja={point:T,lineStart:T,lineEnd:T,polygonStart:function(){bb=0;ja.lineStart=$f},polygonEnd:function(){ja.lineStart=ja.lineEnd=ja.point=T;pb+=Math.abs(bb/2)}},$={point:hc,lineStart:Zd,lineEnd:$d,polygonStart:function(){$.lineStart=ag},polygonEnd:function(){$.point=hc;$.lineStart=Zd;$.lineEnd=$d}};g.geo.area=function(a){ya=
-0;g.geo.stream(a,ka);return ya};var ya,cb,db,ka={sphere:function(){ya+=4*u},point:T,lineStart:T,lineEnd:T,polygonStart:function(){cb=1;db=0;ka.lineStart=bg},polygonEnd:function(){var a=2*Math.atan2(db,cb);ya+=0>a?4*u+a:a;ka.lineStart=ka.lineEnd=ka.point=T}};g.geo.projection=la;g.geo.projectionMutator=ic;var ze=Fa(function(a){return 1/(1+a)},function(a){return 2*Math.atan(a)});(g.geo.stereographic=function(){return la(ze)}).raw=ze;g.geom={};g.geom.hull=function(a){if(3>a.length)return[];var b=a.length,
-c=b-1,d=[],e=[],f,h=0,g,l,m,n,p,q,r;for(f=1;f<b;++f)a[f][1]<a[h][1]?h=f:a[f][1]==a[h][1]&&(h=a[f][0]<a[h][0]?f:h);for(f=0;f<b;++f)f!==h&&(l=a[f][1]-a[h][1],g=a[f][0]-a[h][0],d.push({angle:Math.atan2(l,g),index:f}));d.sort(function(a,b){return a.angle-b.angle});r=d[0].angle;q=d[0].index;p=0;for(f=1;f<c;++f)b=d[f].index,r==d[f].angle?(g=a[q][0]-a[h][0],l=a[q][1]-a[h][1],m=a[b][0]-a[h][0],n=a[b][1]-a[h][1],g*g+l*l>=m*m+n*n?d[f].index=-1:(d[p].index=-1,r=d[f].angle,p=f,q=b)):(r=d[f].angle,p=f,q=b);e.push(h);
-for(b=f=0;2>f;++b)-1!==d[b].index&&(e.push(d[b].index),f++);for(h=e.length;b<c;++b)if(-1!==d[b].index){for(;!dg(e[h-2],e[h-1],d[b].index,a);)--h;e[h++]=d[b].index}c=[];for(f=0;f<h;++f)c.push(a[e[f]]);return c};g.geom.polygon=function(a){a.area=function(){for(var b=0,c=a.length,d=a[c-1][1]*a[0][0]-a[c-1][0]*a[0][1];++b<c;)d+=a[b-1][1]*a[b][0]-a[b-1][0]*a[b][1];return 0.5*d};a.centroid=function(b){var c=-1,d=a.length,e=0,f=0,h,g=a[d-1],l;for(arguments.length||(b=-1/(6*a.area()));++c<d;)h=g,g=a[c],l=
-h[0]*g[1]-g[0]*h[1],e+=(h[0]+g[0])*l,f+=(h[1]+g[1])*l;return[e*b,f*b]};a.clip=function(b){for(var c,d=-1,e=a.length,f,h,g=a[e-1],l,m,n;++d<e;){c=b.slice();b.length=0;l=a[d];m=c[(h=c.length)-1];for(f=-1;++f<h;)n=c[f],jc(n,g,l)?(jc(m,g,l)||b.push(fe(m,n,g,l)),b.push(n)):jc(m,g,l)&&b.push(fe(m,n,g,l)),m=n;g=l}return b};return a};g.geom.voronoi=function(a){var b=a.map(function(){return[]});ge(a,function(a){var d,e,f,g;1===a.a&&0<=a.b?(d=a.ep.r,e=a.ep.l):(d=a.ep.l,e=a.ep.r);1===a.a?(f=d?d.y:-1E6,d=a.c-
-a.b*f,g=e?e.y:1E6,e=a.c-a.b*g):(d=d?d.x:-1E6,f=a.c-a.a*d,e=e?e.x:1E6,g=a.c-a.a*e);d=[d,f];e=[e,g];b[a.region.l.index].push(d,e);b[a.region.r.index].push(d,e)});b=b.map(function(b,d){var e=a[d][0],f=a[d][1],h=b.map(function(a){return Math.atan2(a[0]-e,a[1]-f)}),k=g.range(b.length).sort(function(a,b){return h[a]-h[b]});return k.filter(function(a,b){return!b||h[a]-h[k[b-1]]>A}).map(function(a){return b[a]})});b.forEach(function(b,d){var e=b.length;if(!e)return b.push([-1E6,-1E6],[-1E6,1E6],[1E6,1E6],
-[1E6,-1E6]);if(!(2<e)){var f=a[d],g=b[0],k=b[1],e=f[0],f=f[1],l=g[0],g=g[1],m=k[0],n=k[1],p=Math.abs(m-l),k=n-g;Math.abs(k)<A?(e=f<g?-1E6:1E6,b.push([-1E6,e],[1E6,e])):p<A?(e=e<l?-1E6:1E6,b.push([e,-1E6],[e,1E6])):(e=(m-l)*(g-f)<(l-e)*(n-g)?1E6:-1E6,f=Math.abs(k)-p,Math.abs(f)<A?b.push([0>k?e:-e,e]):(0<f&&(e*=-1),b.push([-1E6,e],[1E6,e])))}});return b};var kc={l:"r",r:"l"};g.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];ge(a,function(c){b[c.region.l.index].push(a[c.region.r.index])});
-b.forEach(function(b,e){var f=a[e],g=f[0],k=f[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-g,a[1]-k)});b.sort(function(a,b){return a.angle-b.angle});for(var l=0,m=b.length-1;l<m;l++)c.push([f,b[l],b[l+1]])});return c};g.geom.quadtree=function(a,b,c,d,e){function f(a,b,c,d,e,f){if(!isNaN(b.x)&&!isNaN(b.y))if(a.leaf){var k=a.point;k?(0.01>Math.abs(k.x-b.x)+Math.abs(k.y-b.y)||(a.point=null,g(a,k,c,d,e,f)),g(a,b,c,d,e,f)):a.point=b}else g(a,b,c,d,e,f)}function g(a,b,c,d,e,h){var k=0.5*(c+e),l=0.5*
-(d+h),m=b.x>=k,n=b.y>=l,u=(n<<1)+m;a.leaf=!1;a=a.nodes[u]||(a.nodes[u]={leaf:!0,nodes:[],point:null});m?c=k:e=k;n?d=l:h=l;f(a,b,c,d,e,h)}var k,l=-1,m=a.length;if(5>arguments.length)if(3===arguments.length)e=c,d=b,c=b=0;else for(b=c=Infinity,d=e=-Infinity;++l<m;)k=a[l],k.x<b&&(b=k.x),k.y<c&&(c=k.y),k.x>d&&(d=k.x),k.y>e&&(e=k.y);k=d-b;l=e-c;k>l?e=c+k:d=b+l;var n={leaf:!0,nodes:[],point:null,add:function(a){f(n,a,b,c,d,e)},visit:function(a){Ga(a,n,b,c,d,e)}};a.forEach(n.add);return n};g.time={};var R=
-Date;oa.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},
-valueOf:function(){return this._.valueOf()},setDate:function(){ga.setUTCDate.apply(this._,arguments)},setDay:function(){ga.setUTCDay.apply(this._,arguments)},setFullYear:function(){ga.setUTCFullYear.apply(this._,arguments)},setHours:function(){ga.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ga.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ga.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ga.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ga.setUTCSeconds.apply(this._,
-arguments)},setTime:function(){ga.setTime.apply(this._,arguments)}};var ga=Date.prototype,Ae="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Be="Sun Mon Tue Wed Thu Fri Sat".split(" "),wc="January February March April May June July August September October November December".split(" "),xc="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");g.time.format=function(a){function b(b){for(var e=[],f=-1,g=0,k,l;++f<c;)if(37===a.charCodeAt(f)){e.push(a.substring(g,f));null!=
-(k=Fg[g=a.charAt(++f)])&&(g=a.charAt(++f));if(l=qb[g])g=l(b,null==k?"e"===g?" ":"0":k);e.push(g);g=f+1}e.push(a.substring(g,f));return e.join("")}var c=a.length;b.parse=function(b){var c={y:1900,m:0,d:1,H:0,M:0,S:0,L:0};if(eb(c,a,b,0)!=b.length)return null;"p"in c&&(c.H=c.H%12+12*c.p);b=new R;b.setFullYear(c.y,c.m,c.d);b.setHours(c.H,c.M,c.S,c.L);return b};b.toString=function(){return a};return b};var Ce=fb(Ae),De=fb(Be),Ee=fb(wc),Gg=he(wc),Fe=fb(xc),Hg=he(xc),Fg={"-":"",_:" ",0:"0"},qb={a:function(a){return Be[a.getDay()]},
-A:function(a){return Ae[a.getDay()]},b:function(a){return xc[a.getMonth()]},B:function(a){return wc[a.getMonth()]},c:g.time.format("%a %b %e %X %Y"),d:function(a,b){return S(a.getDate(),b,2)},e:function(a,b){return S(a.getDate(),b,2)},H:function(a,b){return S(a.getHours(),b,2)},I:function(a,b){return S(a.getHours()%12||12,b,2)},j:function(a,b){return S(1+g.time.dayOfYear(a),b,3)},L:function(a,b){return S(a.getMilliseconds(),b,3)},m:function(a,b){return S(a.getMonth()+1,b,2)},M:function(a,b){return S(a.getMinutes(),
-b,2)},p:function(a){return 12<=a.getHours()?"PM":"AM"},S:function(a,b){return S(a.getSeconds(),b,2)},U:function(a,b){return S(g.time.sundayOfYear(a),b,2)},w:function(a){return a.getDay()},W:function(a,b){return S(g.time.mondayOfYear(a),b,2)},x:g.time.format("%m/%d/%Y"),X:g.time.format("%H:%M:%S"),y:function(a,b){return S(a.getFullYear()%100,b,2)},Y:function(a,b){return S(a.getFullYear()%1E4,b,4)},Z:function(a){var b=a.getTimezoneOffset();a=0<b?"-":"+";var c=~~(Math.abs(b)/60),b=Math.abs(b)%60;return a+
-S(c,"0",2)+S(b,"0",2)},"%":function(){return"%"}},eg={a:function(a,b,c){De.lastIndex=0;return(a=De.exec(b.substring(c)))?c+a[0].length:-1},A:function(a,b,c){Ce.lastIndex=0;return(a=Ce.exec(b.substring(c)))?c+a[0].length:-1},b:function(a,b,c){Fe.lastIndex=0;return(b=Fe.exec(b.substring(c)))?(a.m=Hg.get(b[0].toLowerCase()),c+b[0].length):-1},B:function(a,b,c){Ee.lastIndex=0;return(b=Ee.exec(b.substring(c)))?(a.m=Gg.get(b[0].toLowerCase()),c+b[0].length):-1},c:function(a,b,c){return eb(a,qb.c.toString(),
-b,c)},d:ie,e:ie,H:je,I:je,L:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+3)))?(a.L=+b[0],c+b[0].length):-1},m:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.m=b[0]-1,c+b[0].length):-1},M:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.M=+b[0],c+b[0].length):-1},p:function(a,b,c){b=Ig.get(b.substring(c,c+=2).toLowerCase());return null==b?-1:(a.p=b,c)},S:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.S=+b[0],c+b[0].length):
--1},x:function(a,b,c){return eb(a,qb.x.toString(),b,c)},X:function(a,b,c){return eb(a,qb.X.toString(),b,c)},y:function(a,b,c){Q.lastIndex=0;if(b=Q.exec(b.substring(c,c+2))){var d=+b[0];a=(a.y=d+(68<d?1900:2E3),c+b[0].length)}else a=-1;return a},Y:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+4)))?(a.y=+b[0],c+b[0].length):-1}},Q=/^\s*\d+/,Ig=g.map({am:0,pm:1});g.time.format.utc=function(a){function b(a){try{R=oa;var b=new R;b._=a;return c(b)}finally{R=Date}}var c=g.time.format(a);
-b.parse=function(a){try{R=oa;var b=c.parse(a);return b&&b._}finally{R=Date}};b.toString=c.toString;return b};var Ge=g.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");g.time.format.iso=Date.prototype.toISOString?lc:Ge;lc.parse=function(a){a=new Date(a);return isNaN(a)?null:a};lc.toString=Ge.toString;g.time.second=pa(function(a){return new R(1E3*Math.floor(a/1E3))},function(a,b){a.setTime(a.getTime()+1E3*Math.floor(b))},function(a){return a.getSeconds()});g.time.seconds=g.time.second.range;g.time.seconds.utc=
-g.time.second.utc.range;g.time.minute=pa(function(a){return new R(6E4*Math.floor(a/6E4))},function(a,b){a.setTime(a.getTime()+6E4*Math.floor(b))},function(a){return a.getMinutes()});g.time.minutes=g.time.minute.range;g.time.minutes.utc=g.time.minute.utc.range;g.time.hour=pa(function(a){var b=a.getTimezoneOffset()/60;return new R(36E5*(Math.floor(a/36E5-b)+b))},function(a,b){a.setTime(a.getTime()+36E5*Math.floor(b))},function(a){return a.getHours()});g.time.hours=g.time.hour.range;g.time.hours.utc=
-g.time.hour.utc.range;g.time.day=pa(function(a){var b=new R(1970,0);b.setFullYear(a.getFullYear(),a.getMonth(),a.getDate());return b},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1});g.time.days=g.time.day.range;g.time.days.utc=g.time.day.utc.range;g.time.dayOfYear=function(a){var b=g.time.year(a);return Math.floor((a-b-6E4*(a.getTimezoneOffset()-b.getTimezoneOffset()))/864E5)};"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ").forEach(function(a,b){a=
-a.toLowerCase();b=7-b;var c=g.time[a]=pa(function(a){(a=g.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7);return a},function(a,b){a.setDate(a.getDate()+7*Math.floor(b))},function(a){var c=g.time.year(a).getDay();return Math.floor((g.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});g.time[a+"s"]=c.range;g.time[a+"s"].utc=c.utc.range;g.time[a+"OfYear"]=function(a){var c=g.time.year(a).getDay();return Math.floor((g.time.dayOfYear(a)+(c+b)%7)/7)}});g.time.week=g.time.sunday;g.time.weeks=g.time.sunday.range;
-g.time.weeks.utc=g.time.sunday.utc.range;g.time.weekOfYear=g.time.sundayOfYear;g.time.month=pa(function(a){a=g.time.day(a);a.setDate(1);return a},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()});g.time.months=g.time.month.range;g.time.months.utc=g.time.month.utc.range;g.time.year=pa(function(a){a=g.time.day(a);a.setMonth(0,1);return a},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()});g.time.years=g.time.year.range;g.time.years.utc=g.time.year.utc.range;
-var hb=[1E3,5E3,15E3,3E4,6E4,3E5,9E5,18E5,36E5,108E5,216E5,432E5,864E5,1728E5,6048E5,2592E6,7776E6,31536E6],yc=[[g.time.second,1],[g.time.second,5],[g.time.second,15],[g.time.second,30],[g.time.minute,1],[g.time.minute,5],[g.time.minute,15],[g.time.minute,30],[g.time.hour,1],[g.time.hour,3],[g.time.hour,6],[g.time.hour,12],[g.time.day,1],[g.time.day,2],[g.time.week,1],[g.time.month,1],[g.time.month,3],[g.time.year,1]],Jg=[[g.time.format("%Y"),za],[g.time.format("%B"),function(a){return a.getMonth()}],
-[g.time.format("%b %d"),function(a){return 1!=a.getDate()}],[g.time.format("%a %d"),function(a){return a.getDay()&&1!=a.getDate()}],[g.time.format("%I %p"),function(a){return a.getHours()}],[g.time.format("%I:%M"),function(a){return a.getMinutes()}],[g.time.format(":%S"),function(a){return a.getSeconds()}],[g.time.format(".%L"),function(a){return a.getMilliseconds()}]],He=g.scale.linear(),Kg=ke(Jg);yc.year=function(a,b){return He.domain(a.map(fg)).ticks(b).map(oc)};g.time.scale=function(){return mc(g.scale.linear(),
-yc,Kg)};var Ie=yc.map(function(a){return[a[0].utc,a[1]]}),Lg=[[g.time.format.utc("%Y"),za],[g.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[g.time.format.utc("%b %d"),function(a){return 1!=a.getUTCDate()}],[g.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&1!=a.getUTCDate()}],[g.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[g.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[g.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[g.time.format.utc(".%L"),
-function(a){return a.getUTCMilliseconds()}]],Mg=ke(Lg);Ie.year=function(a,b){return He.domain(a.map(gg)).ticks(b).map(pc)};g.time.scale.utc=function(){return mc(g.scale.linear(),Ie,Mg)};return g}();
+100);case "rgb":return b(Ab(k[0]),Ab(k[1]),Ab(k[2]))}if(c=Ka.get(a))return b(c.r,c.g,c.b);null!=a&&"#"===a.charAt(0)&&(4===a.length?(d=a.charAt(1),d+=d,e=a.charAt(2),e+=e,f=a.charAt(3),f+=f):7===a.length&&(d=a.substring(1,3),e=a.substring(3,5),f=a.substring(5,7)),d=parseInt(d,16),e=parseInt(e,16),f=parseInt(f,16));return b(d,e,f)}function Fc(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,h=(e+d)/2;f?(d=.5>h?f/(e+d):f/(2-e-d),a=60*(a==e?(b-c)/f+(b<c?6:0):b==e?(c-a)/f+2:(a-b)/f+
+4)):d=a=0;return sa(a,d,h)}function Gc(a,b,c){a=Bb(a);b=Bb(b);c=Bb(c);var d=Cb((.4124564*a+.3575761*b+.1804375*c)/Hc),e=Cb((.2126729*a+.7151522*b+.072175*c)/Ic);a=Cb((.0193339*a+.119192*b+.9503041*c)/Jc);return ta(116*e-16,500*(d-e),200*(e-a))}function Bb(a){return.04045>=(a/=255)?a/12.92:Math.pow((a+.055)/1.055,2.4)}function Ab(a){var b=parseFloat(a);return"%"===a.charAt(a.length-1)?Math.round(2.55*b):b}function sa(a,b,c){return new Db(a,b,c)}function Db(a,b,c){this.h=a;this.s=b;this.l=c}function La(a,
+b,c){function d(a){360<a?a-=360:0>a&&(a+=360);return 60>a?e+(f-e)*a/60:180>a?f:240>a?e+(f-e)*(240-a)/60:e}var e,f;a%=360;0>a&&(a+=360);b=0>b?0:1<b?1:b;c=0>c?0:1<c?1:c;f=.5>=c?c*(1+b):c+b-c*b;e=2*c-f;return ca(Math.round(255*d(a+120)),Math.round(255*d(a)),Math.round(255*d(a-120)))}function Aa(a,b,c){return new Ma(a,b,c)}function Ma(a,b,c){this.h=a;this.c=b;this.l=c}function Eb(a,b,c){return ta(c,Math.cos(a*=w)*b,Math.sin(a)*b)}function ta(a,b,c){return new Na(a,b,c)}function Na(a,b,c){this.l=a;this.a=
+b;this.b=c}function Kc(a,b,c){a=(a+16)/116;c=a-c/200;b=Fb(a+b/500)*Hc;a=Fb(a)*Ic;c=Fb(c)*Jc;return ca(Gb(3.2404542*b-1.5371385*a-.4985314*c),Gb(-.969266*b+1.8760108*a+.041556*c),Gb(.0556434*b-.2040259*a+1.0572252*c))}function Lc(a,b,c){return Aa(Math.atan2(c,b)/u*180,Math.sqrt(b*b+c*c),a)}function Fb(a){return.206893034<a?a*a*a:(a-4/29)/7.787037}function Cb(a){return.008856<a?Math.pow(a,1/3):7.787037*a+4/29}function Gb(a){return Math.round(255*(.00304>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055))}function da(a){Hb(a,
+C);return a}function Mc(a){return function(){return Oa(a,this)}}function Nc(a){return function(){return Oc(a,this)}}function Pc(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function h(){var c=b.apply(this,arguments);null==c?this.removeAttribute(a):this.setAttribute(a,c)}function k(){var c=b.apply(this,arguments);null==c?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,
+a.local,c)}a=g.ns.qualify(a);return null==b?a.local?d:c:"function"===typeof b?a.local?k:h:a.local?f:e}function Qc(a){return new RegExp("(?:^|\\s+)"+g.requote(a)+"(?:\\s+|$)","g")}function Rc(a,b){function c(){for(var c=-1;++c<e;)a[c](this,b)}function d(){for(var c=-1,d=b.apply(this,arguments);++c<e;)a[c](this,d)}a=a.trim().split(/\s+/).map(af);var e=a.length;return"function"===typeof b?d:c}function af(a){var b=Qc(a);return function(c,d){if(e=c.classList)return d?e.add(a):e.remove(a);var e=c.className,
+f=null!=e.baseVal,h=f?e.baseVal:e;d?(b.lastIndex=0,b.test(h)||(h=(h+" "+a).trim().replace(/\s+/g," "),f?e.baseVal=h:c.className=h)):h&&(h=h.replace(b," ").trim().replace(/\s+/g," "),f?e.baseVal=h:c.className=h)}}function Sc(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var e=b.apply(this,arguments);null==e?this.style.removeProperty(a):this.style.setProperty(a,e,c)}return null==b?d:"function"===typeof b?f:e}function Tc(a,b){function c(){delete this[a]}
+function d(){this[a]=b}function e(){var c=b.apply(this,arguments);null==c?delete this[a]:this[a]=c}return null==b?c:"function"===typeof b?e:d}function Uc(a){return function(){return Vc(this,a)}}function bf(a){arguments.length||(a=g.ascending);return function(b,c){return!b-!c||a(b.__data__,c.__data__)}}function Wc(a,b,c){function d(){var b=this[f];b&&(this.removeEventListener(a,b,b.$),delete this[f])}function e(){function e(a){var c=g.event;g.event=a;m[0]=h.__data__;try{b.apply(h,m)}finally{g.event=
+c}}var h=this,m=ha(arguments);d.call(this);this.addEventListener(a,this[f]=e,e.$=c);e._=b}var f="__on"+a,h=a.indexOf(".");0<h&&(a=a.substring(0,h));return b?e:d}function ia(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=0,h=e.length,k;f<h;f++)(k=e[f])&&b(k,f,c);return a}function Xc(a){Hb(a,ma);return a}function Ba(a,b){Hb(a,M);a.id=b;return a}function Pa(a,b,c,d){var e=a.__transition__||(a.__transition__={active:0,count:0}),f=e[c];if(!f){var h=d.time,f=e[c]={tween:new ba,event:g.dispatch("start",
+"end"),time:h,ease:d.ease,delay:d.delay,duration:d.duration};++e.count;g.timer(function(d){function l(d){if(e.active>c)return n();e.active=c;r.start.call(a,p,b);f.tween.forEach(function(c,e){(e=e.call(a,p,b))&&v.push(e)});m(d)||g.timer(m,0,h);return 1}function m(d){if(e.active!==c)return n();d=(d-s)/t;for(var f=q(d),h=v.length;0<h;)v[--h].call(a,f);if(1<=d)return n(),r.end.call(a,p,b),1}function n(){--e.count?delete e[c]:delete a.__transition__;return 1}var p=a.__data__,q=f.ease,r=f.event,s=f.delay,
+t=f.duration,v=[];return s<=d?l(d):g.timer(l,s,h),1},0,h);return f}}function cf(a){null==a&&(a="");return function(){this.textContent=a}}function Ib(a,b,c,d){var e=a.id;return ia(a,"function"===typeof c?function(a,h,k){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,h,k)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function Jb(){for(var a,b=Date.now(),c=ua;c;)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;a=Yc()-b;24<a?(isFinite(a)&&(clearTimeout(Qa),Qa=setTimeout(Jb,
+a)),Ra=0):(Ra=1,Zc(Jb))}function Yc(){for(var a=null,b=ua,c=Infinity;b;)b.flush?(delete Kb[b.callback.id],b=a?a.next=b.next:ua=b.next):(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function $c(a,b){var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(0>Lb&&(P.scrollX||P.scrollY)){var c=g.select(W.body).append("svg").style("position","absolute").style("top",0).style("left",0),e=c[0][0].getScreenCTM();Lb=!(e.f||e.e);c.remove()}Lb?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,
+d.y=b.clientY);d=d.matrixTransform(a.getScreenCTM().inverse());return[d.x,d.y]}c=a.getBoundingClientRect();return[b.clientX-c.left-a.clientLeft,b.clientY-c.top-a.clientTop]}function T(){}function Ca(a){var b=a[0];a=a[a.length-1];return b<a?[b,a]:[a,b]}function Sa(a){return a.rangeExtent?a.rangeExtent():Ca(a.range())}function Ta(a,b){var c=0,d=a.length-1,e=a[c],f=a[d],h;f<e&&(h=c,c=d,d=h,h=e,e=f,f=h);if(b=b(f-e))a[c]=b.floor(e),a[d]=b.ceil(f);return a}function df(){return Math}function ad(a,b,c,d){function e(){var e=
+2<Math.min(a.length,b.length)?ef:ff,m=d?$e:Ze;h=e(a,b,m,c);k=e(b,a,m,g.interpolate);return f}function f(a){return h(a)}var h,k;f.invert=function(a){return k(a)};f.domain=function(b){if(!arguments.length)return a;a=b.map(Number);return e()};f.range=function(a){if(!arguments.length)return b;b=a;return e()};f.rangeRound=function(a){return f.range(a).interpolate(g.interpolateRound)};f.clamp=function(a){if(!arguments.length)return d;d=a;return e()};f.interpolate=function(a){if(!arguments.length)return c;
+c=a;return e()};f.ticks=function(b){return Mb(a,b)};f.tickFormat=function(b){return Nb(a,b)};f.nice=function(){Ta(a,bd);return e()};f.copy=function(){return ad(a,b,c,d)};return e()}function cd(a,b){return g.rebind(a,b,"range","rangeRound","interpolate","clamp")}function bd(a){return(a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1))&&{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function dd(a,b){var c=Ca(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/
+b)/Math.LN10)),d=b/d*e;.15>=d?e*=10:.35>=d?e*=5:.75>=d&&(e*=2);c[0]=Math.ceil(c[0]/e)*e;c[1]=Math.floor(c[1]/e)*e+.5*e;c[2]=e;return c}function Mb(a,b){return g.range.apply(g,dd(a,b))}function Nb(a,b){return g.format(",."+Math.max(0,-Math.floor(Math.log(dd(a,b)[2])/Math.LN10+.01))+"f")}function ff(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function ef(a,b,c,d){var e=[],f=[],h=0,k=Math.min(a.length,b.length)-1;a[k]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());
+for(;++h<=k;)e.push(c(a[h-1],a[h])),f.push(d(b[h-1],b[h]));return function(b){var c=g.bisect(a,b,1,k)-1;return f[c](e[c](b))}}function ed(a,b){function c(c){return a(b(c))}var d=b.pow;c.invert=function(b){return d(a.invert(b))};c.domain=function(e){if(!arguments.length)return a.domain().map(d);b=0>e[0]?Ua:Ob;d=b.pow;a.domain(e.map(b));return c};c.nice=function(){a.domain(Ta(a.domain(),df));return c};c.ticks=function(){var c=Ca(a.domain()),f=[];if(c.every(isFinite)){var h=Math.floor(c[0]),k=Math.ceil(c[1]),
+l=d(c[0]),c=d(c[1]);if(b===Ua)for(f.push(d(h));h++<k;)for(var m=9;0<m;m--)f.push(d(h)*m);else{for(;h<k;h++)for(m=1;10>m;m++)f.push(d(h)*m);f.push(d(h))}for(h=0;f[h]<l;h++);for(k=f.length;f[k-1]>c;k--);f=f.slice(h,k)}return f};c.tickFormat=function(a,f){2>arguments.length&&(f=gf);if(!arguments.length)return f;var h=Math.max(.1,a/c.ticks().length),k=b===Ua?(l=-1E-12,Math.floor):(l=1E-12,Math.ceil),l;return function(a){return a/d(k(b(a)+l))<=h?f(a):""}};c.copy=function(){return ed(a.copy(),b)};return cd(c,
+a)}function Ob(a){return Math.log(0>a?0:a)/Math.LN10}function Ua(a){return-Math.log(0<a?0:-a)/Math.LN10}function fd(a,b){function c(b){return a(d(b))}var d=Va(b),e=Va(1/b);c.invert=function(b){return e(a.invert(b))};c.domain=function(b){if(!arguments.length)return a.domain().map(e);a.domain(b.map(d));return c};c.ticks=function(a){return Mb(c.domain(),a)};c.tickFormat=function(a){return Nb(c.domain(),a)};c.nice=function(){return c.domain(Ta(c.domain(),bd))};c.exponent=function(a){if(!arguments.length)return b;
+var h=c.domain();d=Va(b=a);e=Va(1/b);return c.domain(h)};c.copy=function(){return fd(a.copy(),b)};return cd(c,a)}function Va(a){return function(b){return 0>b?-Math.pow(-b,a):Math.pow(b,a)}}function gd(a,b){function c(b){return f[((e.get(b)||e.set(b,a.push(b)))-1)%f.length]}function d(b,c){return g.range(a.length).map(function(a){return b+c*a})}var e,f,h;c.domain=function(d){if(!arguments.length)return a;a=[];e=new ba;for(var f=-1,h=d.length,g;++f<h;)e.has(g=d[f])||e.set(g,a.push(g));return c[b.t].apply(c,
+b.a)};c.range=function(a){if(!arguments.length)return f;f=a;h=0;b={t:"range",a:arguments};return c};c.rangePoints=function(e,l){2>arguments.length&&(l=0);var m=e[0],g=e[1],p=(g-m)/(Math.max(1,a.length-1)+l);f=d(2>a.length?(m+g)/2:m+p*l/2,p);h=0;b={t:"rangePoints",a:arguments};return c};c.rangeBands=function(e,l,m){2>arguments.length&&(l=0);3>arguments.length&&(m=l);var g=e[1]<e[0],p=e[g-0],q=(e[1-g]-p)/(a.length-l+2*m);f=d(p+q*m,q);g&&f.reverse();h=q*(1-l);b={t:"rangeBands",a:arguments};return c};
+c.rangeRoundBands=function(e,l,m){2>arguments.length&&(l=0);3>arguments.length&&(m=l);var g=e[1]<e[0],p=e[g-0],q=e[1-g],r=Math.floor((q-p)/(a.length-l+2*m));f=d(p+Math.round((q-p-(a.length-l)*r)/2),r);g&&f.reverse();h=Math.round(r*(1-l));b={t:"rangeRoundBands",a:arguments};return c};c.rangeBand=function(){return h};c.rangeExtent=function(){return Ca(b.a[0])};c.copy=function(){return gd(a,b)};return c.domain(a)}function hd(a,b){function c(){var c=0,h=b.length;for(e=[];++c<h;)e[c-1]=g.quantile(a,c/
+h);return d}function d(a){return isNaN(a=+a)?NaN:b[g.bisect(e,a)]}var e;d.domain=function(b){if(!arguments.length)return a;a=b.filter(function(a){return!isNaN(a)}).sort(g.ascending);return c()};d.range=function(a){if(!arguments.length)return b;b=a;return c()};d.quantiles=function(){return e};d.copy=function(){return hd(a,b)};return c()}function id(a,b,c){function d(b){return c[Math.max(0,Math.min(h,Math.floor(f*(b-a))))]}function e(){f=c.length/(b-a);h=c.length-1;return d}var f,h;d.domain=function(c){if(!arguments.length)return[a,
+b];a=+c[0];b=+c[c.length-1];return e()};d.range=function(a){if(!arguments.length)return c;c=a;return e()};d.copy=function(){return id(a,b,c)};return e()}function jd(a,b){function c(c){return b[g.bisect(a,c)]}c.domain=function(b){if(!arguments.length)return a;a=b;return c};c.range=function(a){if(!arguments.length)return b;b=a;return c};c.copy=function(){return jd(a,b)};return c}function kd(a){function b(a){return+a}b.invert=b;b.domain=b.range=function(c){if(!arguments.length)return a;a=c.map(b);return b};
+b.ticks=function(b){return Mb(a,b)};b.tickFormat=function(b){return Nb(a,b)};b.copy=function(){return kd(a)};return b}function hf(a){return a.innerRadius}function jf(a){return a.outerRadius}function ld(a){return a.startAngle}function md(a){return a.endAngle}function nd(a){function b(b){function h(){g.push("M",f(a(p),k))}for(var g=[],p=[],q=-1,r=b.length,s,t=F(c),v=F(d);++q<r;)e.call(this,s=b[q],q)?p.push([+t.call(this,s,q),+v.call(this,s,q)]):p.length&&(h(),p=[]);p.length&&h();return g.length?g.join(""):
+null}var c=Pb,d=od,e=za,f=U,h=f.key,k=.7;b.x=function(a){if(!arguments.length)return c;c=a;return b};b.y=function(a){if(!arguments.length)return d;d=a;return b};b.defined=function(a){if(!arguments.length)return e;e=a;return b};b.interpolate=function(a){if(!arguments.length)return h;h="function"===typeof a?f=a:(f=Qb.get(a)||U).key;return b};b.tension=function(a){if(!arguments.length)return k;k=a;return b};return b}function Pb(a){return a[0]}function od(a){return a[1]}function U(a){return a.join("L")}
+function Rb(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function Sb(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function Wa(a,b){if(1>b.length||a.length!=b.length&&a.length!=b.length+2)return U(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],h=b[0],k=h,l=1;c&&(d+="Q"+(f[0]-2*h[0]/3)+","+(f[1]-2*h[1]/3)+","+f[0]+","+f[1],e=a[1],l=2);if(1<b.length)for(k=b[1],f=a[l],l++,d+=
+"C"+(e[0]+h[0])+","+(e[1]+h[1])+","+(f[0]-k[0])+","+(f[1]-k[1])+","+f[0]+","+f[1],e=2;e<b.length;e++,l++)f=a[l],k=b[e],d+="S"+(f[0]-k[0])+","+(f[1]-k[1])+","+f[0]+","+f[1];c&&(c=a[l],d+="Q"+(f[0]+2*k[0]/3)+","+(f[1]+2*k[1]/3)+","+c[0]+","+c[1]);return d}function Tb(a,b){for(var c=[],d=(1-b)/2,e,f=a[0],h=a[1],k=1,l=a.length;++k<l;)e=f,f=h,h=a[k],c.push([d*(h[0]-e[0]),d*(h[1]-e[1])]);return c}function pd(a){if(3>a.length)return U(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],h=[e,e,e,(d=a[1])[0]],k=[f,
+f,f,d[1]],e=[e,",",f];for(Da(e,h,k);++b<c;)d=a[b],h.shift(),h.push(d[0]),k.shift(),k.push(d[1]),Da(e,h,k);for(b=-1;2>++b;)h.shift(),h.push(d[0]),k.shift(),k.push(d[1]),Da(e,h,k);return e.join("")}function aa(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function Da(a,b,c){a.push("C",aa(qd,b),",",aa(qd,c),",",aa(rd,b),",",aa(rd,c),",",aa(va,b),",",aa(va,c))}function Ub(a,b){return(b[1]-a[1])/(b[0]-a[0])}function sd(a){for(var b,c=-1,d=a.length,e,f;++c<d;)b=a[c],e=b[0],f=b[1]+na,b[0]=e*Math.cos(f),
+b[1]=e*Math.sin(f);return a}function td(a){function b(b){function l(){s.push("M",k(a(v),p),g,m(a(t.reverse()),p),"Z")}for(var s=[],t=[],v=[],x=-1,z=b.length,y,G=F(c),H=F(e),D=c===d?function(){return E}:F(d),B=e===f?function(){return wa}:F(f),E,wa;++x<z;)h.call(this,y=b[x],x)?(t.push([E=+G.call(this,y,x),wa=+H.call(this,y,x)]),v.push([+D.call(this,y,x),+B.call(this,y,x)])):t.length&&(l(),t=[],v=[]);t.length&&l();return s.length?s.join(""):null}var c=Pb,d=Pb,e=0,f=od,h=za,k=U,l=k.key,m=k,g="L",p=.7;
+b.x=function(a){if(!arguments.length)return d;c=d=a;return b};b.x0=function(a){if(!arguments.length)return c;c=a;return b};b.x1=function(a){if(!arguments.length)return d;d=a;return b};b.y=function(a){if(!arguments.length)return f;e=f=a;return b};b.y0=function(a){if(!arguments.length)return e;e=a;return b};b.y1=function(a){if(!arguments.length)return f;f=a;return b};b.defined=function(a){if(!arguments.length)return h;h=a;return b};b.interpolate=function(a){if(!arguments.length)return l;l="function"===
+typeof a?k=a:(k=Qb.get(a)||U).key;m=k.reverse||k;g=k.closed?"M":"L";return b};b.tension=function(a){if(!arguments.length)return p;p=a;return b};return b}function kf(a){return a.radius}function ud(a){return[a.x,a.y]}function lf(a){return function(){var b=a.apply(this,arguments),c=b[0],b=b[1]+na;return[c*Math.cos(b),c*Math.sin(b)]}}function mf(){return 64}function nf(){return"circle"}function vd(a){a=Math.sqrt(a/u);return"M0,"+a+"A"+a+","+a+" 0 1,1 0,"+-a+"A"+a+","+a+" 0 1,1 0,"+a+"Z"}function wd(a,
+b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function xd(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function of(a,b,c){d=[];if(c&&1<b.length){a=Ca(a.domain());for(var d,e=-1,f=b.length,h=(b[1]-b[0])/++c,k,l;++e<f;)for(k=c;0<--k;)(l=+b[e]-k*h)>=a[0]&&d.push(l);--e;for(k=0;++k<c&&(l=+b[e]+k*h)<a[1];)d.push(l)}return d}function pf(a){var b=a.source;a=a.target;var c;var d=a;if(b===d)c=b;else{c=yd(b);for(var d=yd(d),e=c.pop(),f=d.pop(),h=null;e===f;)h=e,e=
+c.pop(),f=d.pop();c=h}for(d=[b];b!==c;)b=b.parent,d.push(b);for(b=d.length;a!==c;)d.splice(b,0,a),a=a.parent;return d}function yd(a){for(var b=[],c=a.parent;null!=c;)b.push(a),a=c,c=c.parent;b.push(a);return b}function qf(a){a.fixed|=2}function rf(a){a.fixed&=-7}function sf(a){a.fixed|=4;a.px=a.x;a.py=a.y}function tf(a){a.fixed&=-5}function zd(a,b,c){var d=0,e=0;a.charge=0;if(!a.leaf)for(var f=a.nodes,h=f.length,k=-1,l;++k<h;)l=f[k],null!=l&&(zd(l,b,c),a.charge+=l.charge,d+=l.charge*l.cx,e+=l.charge*
+l.cy);a.point&&(a.leaf||(a.point.x+=Math.random()-.5,a.point.y+=Math.random()-.5),b*=c[a.point.index],a.charge+=a.pointCharge=b,d+=b*a.point.x,e+=b*a.point.y);a.cx=d/a.charge;a.cy=e/a.charge}function uf(a){return a.x}function vf(a){return a.y}function wf(a,b,c){a.y0=b;a.y=c}function Vb(a){return g.range(a.length)}function Wb(a){var b=-1;a=a[0].length;for(var c=[];++b<a;)c[b]=0;return c}function xf(a){for(var b=1,c=0,d=a[0][1],e,f=a.length;b<f;++b)(e=a[b][1])>d&&(c=b,d=e);return c}function yf(a){return a.reduce(zf,
+0)}function zf(a,b){return a+b[1]}function Af(a,b){return Ad(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function Ad(a,b){for(var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];++c<=b;)f[c]=e*c+d;return f}function Bf(a){return[g.min(a),g.max(a)]}function Ea(a,b){g.rebind(a,b,"sort","children","value");a.nodes=a;a.links=Cf;return a}function Df(a){return a.children}function Ef(a){return a.value}function Ff(a,b){return b.value-a.value}function Cf(a){return g.merge(a.map(function(a){return(a.children||[]).map(function(c){return{source:a,
+target:c}})}))}function Gf(a,b){return a.value-b.value}function Xb(a,b){var c=a._pack_next;a._pack_next=b;b._pack_prev=a;b._pack_next=c;c._pack_prev=b}function Bd(a,b){a._pack_next=b;b._pack_prev=a}function Cd(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return.001<e*e-c*c-d*d}function Dd(a){function b(a){d=Math.min(a.x-a.r,d);e=Math.max(a.x+a.r,e);f=Math.min(a.y-a.r,f);h=Math.max(a.y+a.r,h)}if((c=a.children)&&(r=c.length)){var c,d=Infinity,e=-Infinity,f=Infinity,h=-Infinity,k,l,m,g,p,q,r;c.forEach(Hf);
+k=c[0];k.x=-k.r;k.y=0;b(k);if(1<r&&(l=c[1],l.x=l.r,l.y=0,b(l),2<r))for(m=c[2],Ed(k,l,m),b(m),Xb(k,m),k._pack_prev=m,Xb(m,l),l=k._pack_next,g=3;g<r;g++){Ed(k,l,m=c[g]);var s=0,t=1,v=1;for(p=l._pack_next;p!==l;p=p._pack_next,t++)if(Cd(p,m)){s=1;break}if(1==s)for(q=k._pack_prev;q!==p._pack_prev&&!Cd(q,m);q=q._pack_prev,v++);s?(t<v||t==v&&l.r<k.r?Bd(k,l=p):Bd(k=q,l),g--):(Xb(k,m),l=m,b(m))}k=(d+e)/2;l=(f+h)/2;for(g=p=0;g<r;g++)m=c[g],m.x-=k,m.y-=l,p=Math.max(p,m.r+Math.sqrt(m.x*m.x+m.y*m.y));a.r=p;c.forEach(If)}}
+function Hf(a){a._pack_next=a._pack_prev=a}function If(a){delete a._pack_next;delete a._pack_prev}function Fd(a,b,c,d){var e=a.children;a.x=b+=d*a.x;a.y=c+=d*a.y;a.r*=d;if(e){a=-1;for(var f=e.length;++a<f;)Fd(e[a],b,c,d)}}function Ed(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var h=b.r+c.r,k=e*e+f*f,h=h*h,d=d*d;b=.5+(d-h)/(2*k);h=Math.sqrt(Math.max(0,2*h*(d+k)-(d-=k)*d-h*h))/(2*k);c.x=a.x+b*e+h*f;c.y=a.y+b*f-h*e}else c.x=a.x+d,c.y=a.y}function Jf(a){return 1+g.max(a,function(a){return a.y})}
+function Kf(a){return a.reduce(function(a,c){return a+c.x},0)/a.length}function Gd(a){var b=a.children;return b&&b.length?Gd(b[0]):a}function Hd(a){var b=a.children,c;return b&&(c=b.length)?Hd(b[c-1]):a}function Id(a,b){return a.parent==b.parent?1:2}function Yb(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function Zb(a){var b=a.children,c;return b&&(c=b.length)?b[c-1]:a._tree.thread}function Xa(a,b){var c=a.children;if(c&&(e=c.length))for(var d,e,f=-1;++f<e;)0<b(d=Xa(c[f],b),a)&&(a=
+d);return a}function Lf(a,b){return a.x-b.x}function Mf(a,b){return b.x-a.x}function Nf(a,b){return a.depth-b.depth}function ea(a,b){function c(a,e){var f=a.children;if(f&&(g=f.length))for(var h,k=null,l=-1,g;++l<g;)h=f[l],c(h,k),k=h;b(a,e)}c(a,null)}function $b(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function Jd(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];0>e&&(c+=e/2,e=0);0>f&&(d+=f/2,f=0);return{x:c,y:d,dx:e,dy:f}}function Kd(a,b){function c(a,c){return g.xhr(a,b,c).response(d)}
+function d(a){return c.parse(a.responseText)}function e(b){return b.map(f).join(a)}function f(a){return h.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}var h=new RegExp('["'+a+"\n]"),k=a.charCodeAt(0);c.parse=function(a){var b;return c.parseRows(a,function(a){if(b)return b(a);b=new Function("d","return {"+a.map(function(a,b){return JSON.stringify(a)+": d["+b+"]"}).join(",")+"}")})};c.parseRows=function(a,b){function c(){if(g>=h)return d;if(z)return z=!1,e;var b=g;if(34===a.charCodeAt(b)){for(var f=b;f++<
+h;)if(34===a.charCodeAt(f)){if(34!==a.charCodeAt(f+1))break;++f}g=f+2;var m=a.charCodeAt(f+1);13===m?(z=!0,10===a.charCodeAt(f+2)&&++g):10===m&&(z=!0);return a.substring(b+1,f).replace(/""/g,'"')}for(;g<h;){m=a.charCodeAt(g++);f=1;if(10===m)z=!0;else if(13===m)z=!0,10===a.charCodeAt(g)&&(++g,++f);else if(m!==k)continue;return a.substring(b,g-f)}return a.substring(b)}for(var e={},d={},f=[],h=a.length,g=0,v=0,x,z;(x=c())!==d;){for(var y=[];x!==e&&x!==d;)y.push(x),x=c();b&&!(y=b(y,v++))||f.push(y)}return f};
+c.format=function(a){return a.map(e).join("\n")};return c}function Ya(a,b){if(Ld.hasOwnProperty(a.type))Ld[a.type](a,b)}function ac(a,b,c){var d=-1;c=a.length-c;var e;for(b.lineStart();++d<c;)e=a[d],b.point(e[0],e[1]);b.lineEnd()}function Md(a,b){var c=-1,d=a.length;for(b.polygonStart();++c<d;)ac(a[c],b,1);b.polygonEnd()}function Nd(a){return[Math.atan2(a[1],a[0]),Math.asin(Math.max(-1,Math.min(1,a[2])))]}function bc(a,b){return Math.abs(a[0]-b[0])<A&&Math.abs(a[1]-b[1])<A}function Za(a){var b=a[0];
+a=a[1];var c=Math.cos(a);return[c*Math.cos(b),c*Math.sin(b),Math.sin(a)]}function $a(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function Od(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function cc(a,b){return[a[0]*b,a[1]*b,a[2]*b]}function Pd(a){function b(b){function d(c,e){c=a(c,e);b.point(c[0],c[1])}function k(){q=NaN;x.point=l;b.lineStart()}function l(d,h){var k=Za([d,h]),l=a(d,h);c(q,r,p,s,t,v,q=l[0],r=l[1],p=d,s=k[0],t=k[1],v=k[2],e,b);b.point(q,r)}function g(){x.point=
+d;b.lineEnd()}function n(){var a,d,h,n,D,B;k();x.point=function(b,c){l(a=b,c);d=q;h=r;n=s;D=t;B=v;x.point=l};x.lineEnd=function(){c(q,r,p,s,t,v,d,h,a,n,D,B,e,b);x.lineEnd=g;g()}}var p,q,r,s,t,v,x={point:d,lineStart:k,lineEnd:g,polygonStart:function(){b.polygonStart();x.lineStart=n},polygonEnd:function(){b.polygonEnd();x.lineStart=k}};return x}function c(b,e,k,l,g,n,p,q,r,s,t,v,x,z){var y=p-b,G=q-e,H=y*y+G*G;if(H>4*d&&x--){var D=l+s,B=g+t,E=n+v,wa=Math.sqrt(D*D+B*B+E*E),L=Math.asin(E/=wa),u=Math.abs(Math.abs(E)-
+1)<A?(k+r)/2:Math.atan2(B,D),fa=a(u,L),L=fa[0],fa=fa[1],w=L-b,C=fa-e,I=G*w-y*C;if(I*I/H>d||.3<Math.abs((y*w+G*C)/H-.5))c(b,e,k,l,g,n,L,fa,u,D/=wa,B/=wa,E,x,z),z.point(L,fa),c(L,fa,u,D,B,E,p,q,r,s,t,v,x,z)}}var d=.5,e=16;b.precision=function(a){if(!arguments.length)return Math.sqrt(d);e=0<(d=a*a)&&16;return b};return b}function Qd(a,b){function c(a,b){var c=Math.sqrt(f-2*e*Math.sin(b))/e;return[c*Math.sin(a*=e),h-c*Math.cos(a)]}var d=Math.sin(a),e=(d+Math.sin(b))/2,f=1+d*(2*e-d),h=Math.sqrt(f)/e;c.invert=
+function(a,b){var c=h-b;return[Math.atan2(a,c)/e,Math.asin((f-(a*a+c*c)*e*e)/(2*e))]};return c}function Rd(a){function b(a,b){a<d&&(d=a);a>f&&(f=a);b<e&&(e=b);b>h&&(h=b)}function c(){k.point=k.lineEnd=T}var d,e,f,h,k={point:b,lineStart:T,lineEnd:T,polygonStart:function(){k.lineEnd=c},polygonEnd:function(){k.point=b}};return function(b){h=f=-(d=e=Infinity);g.geo.stream(b,a(k));return[[d,e],[f,h]]}}function Sd(a,b){if(!N){++Y;a*=w;var c=Math.cos(b*=w);J+=(c*Math.cos(a)-J)/Y;K+=(c*Math.sin(a)-K)/Y;I+=
+(Math.sin(b)-I)/Y}}function Of(){var a,b;N=1;dc();N=2;var c=Z.point;Z.point=function(d,e){c(a=d,b=e)};Z.lineEnd=function(){Z.point(a,b);ec();Z.lineEnd=ec}}function dc(){function a(a,f){a*=w;var h=Math.cos(f*=w),k=h*Math.cos(a),h=h*Math.sin(a),l=Math.sin(f),g=Math.atan2(Math.sqrt((g=c*l-d*h)*g+(g=d*k-b*l)*g+(g=b*h-c*k)*g),b*k+c*h+d*l);Y+=g;J+=g*(b+(b=k));K+=g*(c+(c=h));I+=g*(d+(d=l))}var b,c,d;1<N||(1>N&&(N=1,Y=J=K=I=0),Z.point=function(e,f){e*=w;var h=Math.cos(f*=w);b=h*Math.cos(e);c=h*Math.sin(e);
+d=Math.sin(f);Z.point=a})}function ec(){Z.point=Sd}function fc(a,b){var c=Math.cos(a),d=Math.sin(a);return function(e,f,h,k){if(null!=e){if(e=Td(c,e),f=Td(c,f),0<h?e<f:e>f)e+=2*h*u}else e=a+2*h*u,f=a;for(var l,g=h*b;0<h?e>f:e<f;e-=g)k.point((l=Nd([c,-d*Math.cos(e),-d*Math.sin(e)]))[0],l[1])}}function Td(a,b){var c=Za(b);c[0]-=a;var d=Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]);c[0]/=d;c[1]/=d;c[2]/=d;d=Math.acos(Math.max(-1,Math.min(1,-c[1])));return((0>-c[2]?-d:d)+2*Math.PI-A)%(2*Math.PI)}function Ud(a,
+b,c){return function(d){function e(b,c){a(b,c)&&d.point(b,c)}function f(a,b){p.point(a,b)}function h(){q.point=f;p.lineStart()}function k(){q.point=e;p.lineEnd()}function l(a,b){z.point(a,b);y.push([a,b])}function m(){z.lineStart();y=[]}function n(){l(y[0][0],y[0][1]);z.lineEnd();var a=z.clean(),b=x.buffer(),c=b.length;if(c)if(y=null,a&1){a=b[0];s+=Vd(a,1);var c=a.length-1,b=-1,e;for(d.lineStart();++b<c;)d.point((e=a[b])[0],e[1]);d.lineEnd()}else 1<c&&a&2&&b.push(b.pop().concat(b.shift())),r.push(b.filter(Pf));
+else v=!0,t+=Vd(y,-1),y=null}var p=b(d),q={point:e,lineStart:h,lineEnd:k,polygonStart:function(){q.point=l;q.lineStart=m;q.lineEnd=n;v=!1;t=s=0;r=[];d.polygonStart()},polygonEnd:function(){q.point=e;q.lineStart=h;q.lineEnd=k;r=g.merge(r);if(r.length)Qf(r,c,d);else if(s<-A||v&&t<-A)d.lineStart(),c(null,null,1,d),d.lineEnd();d.polygonEnd();r=null},sphere:function(){d.polygonStart();d.lineStart();c(null,null,1,d);d.lineEnd();d.polygonEnd()}},r,s,t,v,x=Rf(),z=b(x),y;return q}}function Qf(a,b,c){var d=
+[],e=[];a.forEach(function(a){var b=a.length;if(!(1>=b)){var c=a[0],b=a[b-1];a={point:c,points:a,other:null,visited:!1,entry:!0,subject:!0};c={point:c,points:[c],other:a,visited:!1,entry:!1,subject:!1};a.other=c;d.push(a);e.push(c);a={point:b,points:[b],other:null,visited:!1,entry:!1,subject:!0};c={point:b,points:[b],other:a,visited:!1,entry:!0,subject:!1};a.other=c;d.push(a);e.push(c)}});e.sort(Sf);Wd(d);Wd(e);if(d.length){a=d[0];for(var f,h,k;;){for(f=a;f.visited;)if((f=f.next)===a)return;h=f.points;
+c.lineStart();do{f.visited=f.other.visited=!0;if(f.entry){if(f.subject)for(var l=0;l<h.length;l++)c.point((k=h[l])[0],k[1]);else b(f.point,f.next.point,1,c);f=f.next}else{if(f.subject)for(h=f.prev.points,l=h.length;0<=--l;)c.point((k=h[l])[0],k[1]);else b(f.point,f.prev.point,-1,c);f=f.prev}f=f.other;h=f.points}while(!f.visited);c.lineEnd()}}}function Wd(a){if(b=a.length){for(var b,c=0,d=a[0],e;++c<b;)d.next=e=a[c],e.prev=d,d=e;d.next=e=a[0];e.prev=d}}function Sf(a,b){return(0>(a=a.point)[0]?a[1]-
+u/2-A:u/2-a[1])-(0>(b=b.point)[0]?b[1]-u/2-A:u/2-b[1])}function Pf(a){return 1<a.length}function Rf(){var a=[],b;return{lineStart:function(){a.push(b=[])},point:function(a,d){b.push([a,d])},lineEnd:T,buffer:function(){var c=a;a=[];b=null;return c}}}function Vd(a,b){if(!(c=a.length))return 0;for(var c,d=0,e=0,f=a[0],h=f[0],k=f[1],l=Math.cos(k),g=Math.atan2(b*Math.sin(h)*l,Math.sin(k)),n=1-b*Math.cos(h)*l,p=g;++d<c;)f=a[d],l=Math.cos(k=f[1]),f=Math.atan2(b*Math.sin(h=f[0])*l,Math.sin(k)),h=1-b*Math.cos(h)*
+l,Math.abs(n-2)<A&&Math.abs(h-2)<A||(Math.abs(h)<A||Math.abs(n)<A||(Math.abs(Math.abs(f-g)-u)<A?2<h+n&&(e+=4*(f-g)):e=Math.abs(n-2)<A?e+4*(f-p):e+((3*u+f-g)%(2*u)-u)*(n+h)),p=g,g=f,n=h);return e}function Tf(a){function b(a,b){return Math.cos(a)*Math.cos(b)>d}function c(a,b){var c=Za(a,0),k=Za(b,0),l=[1,0,0],k=Od(c,k),g=$a(k,k),c=k[0],n=g-c*c;if(!n)return a;g=d*g/n;n=-d*c/n;c=Od(l,k);l=cc(l,g);k=cc(k,n);l[0]+=k[0];l[1]+=k[1];l[2]+=k[2];k=$a(l,c);g=$a(c,c);n=Math.sqrt(k*k-g*($a(l,l)-1));c=cc(c,(-k-
+n)/g);c[0]+=l[0];c[1]+=l[1];c[2]+=l[2];return Nd(c)}a*=w;var d=Math.cos(a);a=fc(a,6*w);return Ud(b,function(a){var d,h,k,l;return{lineStart:function(){k=h=!1;l=1},point:function(g,n){var p=[g,n],q,r=b(g,n);!d&&(k=h=r)&&a.lineStart();r!==h&&(q=c(d,p),bc(d,q)||bc(p,q))&&(p[0]+=A,p[1]+=A,r=b(p[0],p[1]));r!==h&&(l=0,(h=r)?(a.lineStart(),q=c(p,d),a.point(q[0],q[1])):(q=c(d,p),a.point(q[0],q[1]),a.lineEnd()),d=q);!r||d&&bc(d,p)||a.point(p[0],p[1]);d=p},lineEnd:function(){h&&a.lineEnd();d=null},clean:function(){return l|
+(k&&h)<<1}}},a)}function Xd(a,b){function c(c,e){return c=a(c,e),b(c[0],c[1])}a.invert&&b.invert&&(c.invert=function(c,e){return c=b.invert(c,e),c&&a.invert(c[0],c[1])});return c}function ab(a,b){return[a,b]}function Uf(a,b,c){var d=g.range(a,b-A,c).concat(b);return function(a){return d.map(function(b){return[a,b]})}}function Vf(a,b,c){var d=g.range(a,b-A,c).concat(b);return function(a){return d.map(function(b){return[b,a]})}}function Wf(a,b,c,d){function e(a){var b=Math.sin(a*=q)*r,c=Math.sin(q-
+a)*r;a=c*l+b*n;var d=c*g+b*p,b=c*h+b*k;return[Math.atan2(d,a)/w,Math.atan2(b,Math.sqrt(a*a+d*d))/w]}var f=Math.cos(b),h=Math.sin(b);b=Math.cos(d);var k=Math.sin(d),l=f*Math.cos(a),g=f*Math.sin(a),n=b*Math.cos(c),p=b*Math.sin(c),q=Math.acos(Math.max(-1,Math.min(1,h*k+f*b*Math.cos(c-a)))),r=1/Math.sin(q);e.distance=q;return e}function gc(a,b){return[a/(2*u),Math.max(-.5,Math.min(.5,Math.log(Math.tan(u/4+b/2))/(2*u)))]}function Yd(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+-2*a+"a"+a+","+a+" 0 1,1 0,"+
+2*a+"z"}function Xf(a){var b=Pd(function(b,d){return a([b*O,d*O])});return function(a){a=b(a);return{point:function(b,e){a.point(b*w,e*w)},sphere:function(){a.sphere()},lineStart:function(){a.lineStart()},lineEnd:function(){a.lineEnd()},polygonStart:function(){a.polygonStart()},polygonEnd:function(){a.polygonEnd()}}}}function Yf(){function a(a,b){h.push("M",a,",",b,f)}function b(a,b){h.push("M",a,",",b);k.point=c}function c(a,b){h.push("L",a,",",b)}function d(){k.point=a}function e(){h.push("Z")}
+var f=Yd(4.5),h=[],k={point:a,lineStart:function(){k.point=b},lineEnd:d,polygonStart:function(){k.lineEnd=e},polygonEnd:function(){k.lineEnd=d;k.point=a},pointRadius:function(a){f=Yd(a);return k},result:function(){if(h.length){var a=h.join("");h=[];return a}}};return k}function Zf(a){function b(b,c){a.moveTo(b,c);a.arc(b,c,h,0,2*u)}function c(b,c){a.moveTo(b,c);k.point=d}function d(b,c){a.lineTo(b,c)}function e(){k.point=b}function f(){a.closePath()}var h=4.5,k={point:b,lineStart:function(){k.point=
+c},lineEnd:e,polygonStart:function(){k.lineEnd=f},polygonEnd:function(){k.lineEnd=e;k.point=b},pointRadius:function(a){h=a;return k},result:T};return k}function $f(){function a(a,b){bb+=e*a-d*b;d=a;e=b}var b,c,d,e;ja.point=function(f,h){ja.point=a;b=d=f;c=e=h};ja.lineEnd=function(){a(b,c)}}function hc(a,b){N||(J+=a,K+=b,++I)}function Zd(){function a(a,e){var f=a-b,h=e-c,f=Math.sqrt(f*f+h*h);J+=f*(b+a)/2;K+=f*(c+e)/2;I+=f;b=a;c=e}var b,c;if(1!==N)if(1>N)N=1,J=K=I=0;else return;$.point=function(d,e){$.point=
+a;b=d;c=e}}function $d(){$.point=hc}function ag(){function a(a,b){var c=e*a-d*b;J+=c*(d+a);K+=c*(e+b);I+=3*c;d=a;e=b}var b,c,d,e;2>N&&(N=2,J=K=I=0);$.point=function(f,h){$.point=a;b=d=f;c=e=h};$.lineEnd=function(){a(b,c)}}function bg(){function a(a,b){a*=w;b=b*w/2+u/4;var c=a-d,g=Math.cos(b),n=Math.sin(b),p=f*n,q=cb,r=db,s=e*g+p*Math.cos(c),c=p*Math.sin(c);cb=q*s-r*c;db=r*s+q*c;d=a;e=g;f=n}var b,c,d,e,f;ka.point=function(h,k){ka.point=a;d=(b=h)*w;e=Math.cos(k=(c=k)*w/2+u/4);f=Math.sin(k)};ka.lineEnd=
+function(){a(b,c)}}function la(a){return ic(function(){return a})()}function ic(a){function b(a){a=h(a[0]*w,a[1]*w);return[a[0]*l+v,x-a[1]*l]}function c(a){return(a=h.invert((a[0]-v)/l,(x-a[1])/l))&&[a[0]*O,a[1]*O]}function d(){h=Xd(f=ae(r,s,t),e);var a=e(p,q);v=m-a[0]*l;x=n+a[1]*l;return b}var e,f,h,k=Pd(function(a,b){a=e(a,b);return[a[0]*l+v,x-a[1]*l]}),l=150,m=480,n=250,p=0,q=0,r=0,s=0,t=0,v,x,z=be,y=null;b.stream=function(a){return cg(f,z(k(a)))};b.clipAngle=function(a){if(!arguments.length)return y;
+z=null==a?(y=a,be):Tf(y=+a);return b};b.scale=function(a){if(!arguments.length)return l;l=+a;return d()};b.translate=function(a){if(!arguments.length)return[m,n];m=+a[0];n=+a[1];return d()};b.center=function(a){if(!arguments.length)return[p*O,q*O];p=a[0]%360*w;q=a[1]%360*w;return d()};b.rotate=function(a){if(!arguments.length)return[r*O,s*O,t*O];r=a[0]%360*w;s=a[1]%360*w;t=2<a.length?a[2]%360*w:0;return d()};g.rebind(b,k,"precision");return function(){e=a.apply(this,arguments);b.invert=e.invert&&
+c;return d()}}function cg(a,b){return{point:function(c,d){d=a(c*w,d*w);c=d[0];b.point(c>u?c-2*u:c<-u?c+2*u:c,d[1])},sphere:function(){b.sphere()},lineStart:function(){b.lineStart()},lineEnd:function(){b.lineEnd()},polygonStart:function(){b.polygonStart()},polygonEnd:function(){b.polygonEnd()}}}function ae(a,b,c){return a?b||c?Xd(ce(a),de(b,c)):ce(a):b||c?de(b,c):ab}function ee(a){return function(b,c){return b+=a,[b>u?b-2*u:b<-u?b+2*u:b,c]}}function ce(a){var b=ee(a);b.invert=ee(-a);return b}function de(a,
+b){function c(a,b){var c=Math.cos(b),g=Math.cos(a)*c,c=Math.sin(a)*c,p=Math.sin(b),q=p*d+g*e;return[Math.atan2(c*f-q*h,g*d-p*e),Math.asin(Math.max(-1,Math.min(1,q*f+c*h)))]}var d=Math.cos(a),e=Math.sin(a),f=Math.cos(b),h=Math.sin(b);c.invert=function(a,b){var c=Math.cos(b),g=Math.cos(a)*c,c=Math.sin(a)*c,p=Math.sin(b),q=p*f-c*h;return[Math.atan2(c*f+p*h,g*d+q*e),Math.asin(Math.max(-1,Math.min(1,q*d-g*e)))]};return c}function Fa(a,b){function c(b,c){var f=Math.cos(b),h=Math.cos(c),f=a(f*h);return[f*
+h*Math.sin(b),f*Math.sin(c)]}c.invert=function(a,c){var f=Math.sqrt(a*a+c*c),h=b(f),k=Math.sin(h),h=Math.cos(h);return[Math.atan2(a*k,f*h),Math.asin(f&&c*k/f)]};return c}function dg(a,b,c,d){var e,f,h;a=d[a];e=a[0];f=a[1];a=d[b];b=a[0];h=a[1];a=d[c];return 0<(a[1]-f)*(b-e)-(h-f)*(a[0]-e)}function jc(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fe(a,b,c,d){var e=a[0],f=c[0],h=b[0]-e,k=d[0]-f;a=a[1];c=c[1];b=b[1]-a;d=d[1]-c;f=(k*(a-c)-d*(e-f))/(d*h-k*b);return[e+f*h,a+f*b]}
+function ge(a,b){var c=a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.y<b.y?-1:a.y>b.y?1:a.x<b.x?-1:a.x>b.x?1:0}),d=null,e={list:[],leftEnd:null,rightEnd:null,init:function(){e.leftEnd=e.createHalfEdge(null,"l");e.rightEnd=e.createHalfEdge(null,"l");e.leftEnd.r=e.rightEnd;e.rightEnd.l=e.leftEnd;e.list.unshift(e.leftEnd,e.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a;b.r=a.r;a.r.l=b;a.r=b},leftBound:function(a){var b=
+e.leftEnd;do b=b.r;while(b!=e.rightEnd&&f.rightOf(b,a));return b=b.l},del:function(a){a.l.r=a.r;a.r.l=a.l;a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return null==a.edge?d:a.edge.region[a.side]},rightRegion:function(a){return null==a.edge?d:a.edge.region[kc[a.side]]}},f={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y;c.c=a.x*d+a.y*e+.5*(d*d+e*e);(0<d?d:-d)>(0<e?e:-e)?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=
+e);return c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(1E-10>Math.abs(e))return null;var f=(c.c*d.b-d.c*c.b)/e,e=(d.c*c.a-c.c*d.a)/e,h=c.region.r,k=d.region.r;h.y<k.y||h.y==k.y&&h.x<k.x?h=a:(h=b,c=d);return(c=f>=c.region.r.x)&&"l"===h.side||!c&&"r"===h.side?null:{x:f,y:e}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&"l"===a.side)return 1;if(!e&&"r"===a.side)return 0;if(1===c.a){var f=b.y-d.y,h=b.x-d.x,k=
+0,g=0;!e&&0>c.b||e&&0<=c.b?g=k=f>=c.b*h:(g=b.x+b.y*c.b>c.c,0>c.b&&(g=!g),g||(k=1));k||(d=d.x-c.region.l.x,g=c.b*(h*h-f*f)<d*f*(1+2*h/d+c.b*c.b),0>c.b&&(g=!g))}else h=c.c-c.a*b.x,c=b.y-h,f=b.x-d.x,d=h-d.y,g=c*c>f*f+d*d;return"l"===a.side?g:!g},endPoint:function(a,c,d){a.ep[c]=d;a.ep[kc[c]]&&b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},h={list:[],insert:function(a,b,c){a.vertex=b;a.ystar=b.y+c;c=0;for(var d=h.list,e=d.length;c<e;c++){var f=d[c];if(!(a.ystar>f.ystar||
+a.ystar==f.ystar&&b.x>f.vertex.x))break}d.splice(c,0,a)},del:function(a){for(var b=0,c=h.list,d=c.length;b<d&&c[b]!=a;++b);c.splice(b,1)},empty:function(){return 0===h.list.length},nextEvent:function(a){for(var b=0,c=h.list,d=c.length;b<d;++b)if(c[b]==a)return c[b+1];return null},min:function(){var a=h.list[0];return{x:a.vertex.x,y:a.ystar}},extractMin:function(){return h.list.shift()}};e.init();for(var d=c.shift(),k=c.shift(),g,m,n,p,q,r,s,t,v;;)if(h.empty()||(g=h.min()),k&&(h.empty()||k.y<g.y||
+k.y==g.y&&k.x<g.x)){m=e.leftBound(k);n=e.right(m);s=e.rightRegion(m);v=f.bisect(s,k);r=e.createHalfEdge(v,"l");e.insert(m,r);if(t=f.intersect(m,r))h.del(m),h.insert(m,t,f.distance(t,k));m=r;r=e.createHalfEdge(v,"r");e.insert(m,r);(t=f.intersect(r,n))&&h.insert(r,t,f.distance(t,k));k=c.shift()}else if(h.empty())break;else{m=h.extractMin();p=e.left(m);n=e.right(m);q=e.right(n);s=e.leftRegion(m);r=e.rightRegion(n);t=m.vertex;f.endPoint(m.edge,m.side,t);f.endPoint(n.edge,n.side,t);e.del(m);h.del(n);e.del(n);
+m="l";s.y>r.y&&(m=s,s=r,r=m,m="r");v=f.bisect(s,r);r=e.createHalfEdge(v,m);e.insert(p,r);f.endPoint(v,kc[m],t);if(t=f.intersect(p,r))h.del(p),h.insert(p,t,f.distance(t,s));(t=f.intersect(r,q))&&h.insert(r,t,f.distance(t,s))}for(m=e.right(e.leftEnd);m!=e.rightEnd;m=e.right(m))b(m.edge)}function Ga(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var h=.5*(c+e),k=.5*(d+f);b=b.nodes;b[0]&&Ga(a,b[0],c,d,h,k);b[1]&&Ga(a,b[1],h,d,e,k);b[2]&&Ga(a,b[2],c,k,h,f);b[3]&&Ga(a,b[3],h,k,e,f)}}function oa(){this._=new Date(1<arguments.length?
+Date.UTC.apply(this,arguments):arguments[0])}function eb(a,b,c,d){for(var e,f=0,h=b.length,k=c.length;f<h;){if(d>=k)return-1;e=b.charCodeAt(f++);if(37===e){if(e=eg[b.charAt(f++)],!e||0>(d=e(a,c,d)))return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fb(a){return new RegExp("^(?:"+a.map(g.requote).join("|")+")","i")}function he(a){for(var b=new ba,c=-1,d=a.length;++c<d;)b.set(a[c].toLowerCase(),c);return b}function S(a,b,c){a+="";var d=a.length;return d<c?Array(c-d+1).join(b)+a:a}function ie(a,
+b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.d=+b[0],c+b[0].length):-1}function je(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.H=+b[0],c+b[0].length):-1}function lc(a){return a.toISOString()}function pa(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c<d-b?c:d}function e(c){b(c=a(new R(c-1)),1);return c}function f(a,c){b(a=new R(+a),c);return a}function h(a,d,f){a=e(a);var h=[];if(1<f)for(;a<d;)c(a)%f||h.push(new Date(+a)),b(a,1);else for(;a<d;)h.push(new Date(+a)),
+b(a,1);return h}a.floor=a;a.round=d;a.ceil=e;a.offset=f;a.range=h;var k=a.utc=gb(a);k.floor=k;k.round=gb(d);k.ceil=gb(e);k.offset=gb(f);k.range=function(a,b,c){try{R=oa;var d=new oa;d._=a;return h(d,b,c)}finally{R=Date}};return a}function gb(a){return function(b,c){try{R=oa;var d=new oa;d._=b;return a(d,c)._}finally{R=Date}}}function mc(a,b,c){function d(b){return a(b)}d.invert=function(b){return nc(a.invert(b))};d.domain=function(b){if(!arguments.length)return a.domain().map(nc);a.domain(b);return d};
+d.nice=function(a){return d.domain(Ta(d.domain(),function(){return a}))};d.ticks=function(c,f){var h,k=d.domain();h=k[0];k=k[k.length-1];h=h<k?[h,k]:[k,h];if("function"!==typeof c){var k=(h[1]-h[0])/c,l=g.bisect(hb,k);if(l==hb.length)return b.year(h,c);if(!l)return a.ticks(c).map(nc);Math.log(k/hb[l-1])<Math.log(hb[l]/k)&&--l;c=b[l];f=c[1];c=c[0].range}return c(h[0],new Date(+h[1]+1),f)};d.tickFormat=function(){return c};d.copy=function(){return mc(a.copy(),b,c)};return g.rebind(d,a,"range","rangeRound",
+"interpolate","clamp")}function nc(a){return new Date(a)}function ke(a){return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}function oc(a){var b=new Date(a,0,1);b.setFullYear(a);return b}function fg(a){var b=a.getFullYear(),c=oc(b),d=oc(b+1);return b+(a-c)/(d-c)}function pc(a){var b=new Date(Date.UTC(a,0,1));b.setUTCFullYear(a);return b}function gg(a){var b=a.getUTCFullYear(),c=pc(b),d=pc(b+1);return b+(a-c)/(d-c)}var u=Math.PI,A=1E-6,g={version:"3.0.6"},w=u/180,O=180/
+u,W=document,P=window,ib=[3,3];Date.now||(Date.now=function(){return+new Date});try{W.createElement("div").style.setProperty("opacity",0,"")}catch(Ng){var le=P.CSSStyleDeclaration.prototype,hg=le.setProperty;le.setProperty=function(a,b,c){hg.call(this,a,b+"",c)}}var ha=function(a){return Array.prototype.slice.call(a)};try{ha(W.documentElement.childNodes)[0].nodeType}catch(Og){ha=Je}var Hb=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};g.map=function(a){var b=new ba,
+c;for(c in a)b.set(c,a[c]);return b};(function(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}})(ba,{has:function(a){return Ha+a in this},get:function(a){return this[Ha+a]},set:function(a,b){return this[Ha+a]=b},remove:function(a){a=Ha+a;return a in this&&delete this[a]},keys:function(){var a=[];this.forEach(function(b){a.push(b)});return a},values:function(){var a=[];this.forEach(function(b,c){a.push(c)});return a},entries:function(){var a=
+[];this.forEach(function(b,c){a.push({key:b,value:c})});return a},forEach:function(a){for(var b in this)b.charCodeAt(0)===ig&&a.call(this,b.substring(1),this[b])}});var Ha="\x00",ig=Ha.charCodeAt(0);g.functor=F;g.rebind=function(a,b){for(var c=1,d=arguments.length,e;++c<d;)a[e=arguments[c]]=Ke(a,b,b[e]);return a};g.ascending=function(a,b){return a<b?-1:a>b?1:a>=b?0:NaN};g.descending=function(a,b){return b<a?-1:b>a?1:b>=a?0:NaN};g.mean=function(a,b){var c=a.length,d,e=0,f=-1,h=0;if(1===arguments.length)for(;++f<
+c;)tb(d=a[f])&&(e+=(d-e)/++h);else for(;++f<c;)tb(d=b.call(a,a[f],f))&&(e+=(d-e)/++h);return h?e:void 0};g.median=function(a,b){1<arguments.length&&(a=a.map(b));a=a.filter(tb);return a.length?g.quantile(a.sort(g.ascending),.5):void 0};g.min=function(a,b){var c=-1,d=a.length,e,f;if(1===arguments.length){for(;++c<d&&(null==(e=a[c])||e!=e);)e=void 0;for(;++c<d;)null!=(f=a[c])&&e>f&&(e=f)}else{for(;++c<d&&(null==(e=b.call(a,a[c],c))||e!=e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&e>f&&(e=f)}return e};
+g.max=function(a,b){var c=-1,d=a.length,e,f;if(1===arguments.length){for(;++c<d&&(null==(e=a[c])||e!=e);)e=void 0;for(;++c<d;)null!=(f=a[c])&&f>e&&(e=f)}else{for(;++c<d&&(null==(e=b.call(a,a[c],c))||e!=e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&f>e&&(e=f)}return e};g.extent=function(a,b){var c=-1,d=a.length,e,f,h;if(1===arguments.length){for(;++c<d&&(null==(e=h=a[c])||e!=e);)e=h=void 0;for(;++c<d;)null!=(f=a[c])&&(e>f&&(e=f),h<f&&(h=f))}else{for(;++c<d&&(null==(e=h=b.call(a,a[c],c))||e!=
+e);)e=void 0;for(;++c<d;)null!=(f=b.call(a,a[c],c))&&(e>f&&(e=f),h<f&&(h=f))}return[e,h]};g.random={normal:function(a,b){var c=arguments.length;2>c&&(b=1);1>c&&(a=0);return function(){var c,e;do c=2*Math.random()-1,e=2*Math.random()-1,e=c*c+e*e;while(!e||1<e);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(){var a=g.random.normal.apply(g,arguments);return function(){return Math.exp(a())}},irwinHall:function(a){return function(){for(var b=0,c=0;c<a;c++)b+=Math.random();return b/a}}};
+g.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(1===arguments.length)for(;++f<d;)isNaN(e=+a[f])||(c+=e);else for(;++f<d;)isNaN(e=+b.call(a,a[f],f))||(c+=e);return c};g.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=+a[d-1];return(c-=d)?e+c*(a[d]-e):e};g.shuffle=function(a){for(var b=a.length,c,d;b;)d=Math.random()*b--|0,c=a[b],a[b]=a[d],a[d]=c;return a};g.transpose=function(a){return g.zip.apply(g,a)};g.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,b=g.min(arguments,
+Le),c=Array(b);++a<b;)for(var d=-1,e,f=c[a]=Array(e);++d<e;)f[d]=arguments[d][a];return c};g.bisector=function(a){return{left:function(b,c,d,e){3>arguments.length&&(d=0);4>arguments.length&&(e=b.length);for(;d<e;){var f=d+e>>>1;a.call(b,b[f],f)<c?d=f+1:e=f}return d},right:function(b,c,d,e){3>arguments.length&&(d=0);4>arguments.length&&(e=b.length);for(;d<e;){var f=d+e>>>1;c<a.call(b,b[f],f)?e=f:d=f+1}return d}}};var me=g.bisector(function(a){return a});g.bisectLeft=me.left;g.bisect=g.bisectRight=
+me.right;g.nest=function(){function a(b,e){if(e>=d.length)return h?h.call(c,b):f?b.sort(f):b;for(var g=-1,n=b.length,p=d[e++],q,r,s=new ba,t,v={};++g<n;)(t=s.get(q=p(r=b[g])))?t.push(r):s.set(q,[r]);s.forEach(function(b,c){v[b]=a(c,e)});return v}function b(a,c){if(c>=d.length)return a;var f=[],h=e[c++],g;for(g in a)f.push({key:g,values:b(a[g],c)});h&&f.sort(function(a,b){return h(a.key,b.key)});return f}var c={},d=[],e=[],f,h;c.map=function(b){return a(b,0)};c.entries=function(c){return b(a(c,0),
+0)};c.key=function(a){d.push(a);return c};c.sortKeys=function(a){e[d.length-1]=a;return c};c.sortValues=function(a){f=a;return c};c.rollup=function(a){h=a;return c};return c};g.keys=function(a){var b=[],c;for(c in a)b.push(c);return b};g.values=function(a){var b=[],c;for(c in a)b.push(a[c]);return b};g.entries=function(a){var b=[],c;for(c in a)b.push({key:c,value:a[c]});return b};g.permute=function(a,b){for(var c=[],d=-1,e=b.length;++d<e;)c[d]=a[b[d]];return c};g.merge=function(a){return Array.prototype.concat.apply([],
+a)};g.range=function(a,b,c){3>arguments.length&&(c=1,2>arguments.length&&(b=a,a=0));if(Infinity===(b-a)/c)throw Error("infinite range");var d=[],e;e=Math.abs(c);for(var f=1;e*f%1;)f*=10;e=f;var f=-1,h;a*=e;b*=e;c*=e;if(0>c)for(;(h=a+c*++f)>b;)d.push(h/e);else for(;(h=a+c*++f)<b;)d.push(h/e);return d};g.requote=function(a){return a.replace(jg,"\\$&")};var jg=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;g.round=function(a,b){return b?Math.round(a*(b=Math.pow(10,b)))/b:Math.round(a)};g.xhr=function(a,b,c){function d(){var a=
+l.status;!a&&l.responseText||200<=a&&300>a||304===a?f.load.call(e,k.call(e,l)):f.error.call(e,l)}var e={},f=g.dispatch("progress","load","error"),h={},k=V,l=new (P.XDomainRequest&&/^(http(s)?:)?\/\//.test(a)?XDomainRequest:XMLHttpRequest);"onload"in l?l.onload=l.onerror=d:l.onreadystatechange=function(){3<l.readyState&&d()};l.onprogress=function(a){var b=g.event;g.event=a;try{f.progress.call(e,l)}finally{g.event=b}};e.header=function(a,b){a=(a+"").toLowerCase();if(2>arguments.length)return h[a];null==
+b?delete h[a]:h[a]=b+"";return e};e.mimeType=function(a){if(!arguments.length)return b;b=null==a?null:a+"";return e};e.response=function(a){k=a;return e};["get","post"].forEach(function(a){e[a]=function(){return e.send.apply(e,[a].concat(ha(arguments)))}});e.send=function(c,d,f){2===arguments.length&&"function"===typeof d&&(f=d,d=null);l.open(c,a,!0);null==b||"accept"in h||(h.accept=b+",*/*");if(l.setRequestHeader)for(var k in h)l.setRequestHeader(k,h[k]);null!=b&&l.overrideMimeType&&l.overrideMimeType(b);
+if(null!=f)e.on("error",f).on("load",function(a){f(null,a)});l.send(null==d?null:d);return e};e.abort=function(){l.abort();return e};g.rebind(e,f,"on");2===arguments.length&&"function"===typeof b&&(c=b,b=null);return null==c?e:e.get(Me(c))};g.text=function(){return g.xhr.apply(g,arguments).response(Ne)};g.json=function(a,b){return g.xhr(a,"application/json",b).response(Oe)};g.html=function(a,b){return g.xhr(a,"text/html",b).response(Pe)};g.xml=function(){return g.xhr.apply(g,arguments).response(Qe)};
+var qc={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};g.ns={prefix:qc,qualify:function(a){var b=a.indexOf(":"),c=a;0<=b&&(c=a.substring(0,b),a=a.substring(b+1));return qc.hasOwnProperty(c)?{space:qc[c],local:a}:a}};g.dispatch=function(){for(var a=new ub,b=-1,c=arguments.length;++b<c;)a[arguments[b]]=zc(a);return a};ub.prototype.on=function(a,b){var c=a.indexOf("."),
+d="";0<c&&(d=a.substring(c+1),a=a.substring(0,c));return 2>arguments.length?this[a].on(d):this[a].on(d,b)};g.format=function(a){a=kg.exec(a);var b=a[1]||" ",c=a[2]||">",d=a[3]||"",e=a[4]||"",f=a[5],h=+a[6],k=a[7],l=a[8],m=a[9],n=1,p="",q=!1;l&&(l=+l.substring(1));if(f||"0"===b&&"="===c)f=b="0",c="=",k&&(h-=Math.floor((h-1)/4));switch(m){case "n":k=!0;m="g";break;case "%":n=100;p="%";m="f";break;case "p":n=100;p="%";m="r";break;case "b":case "o":case "x":case "X":e&&(e="0"+m.toLowerCase());case "c":case "d":q=
+!0;l=0;break;case "s":n=-1,m="r"}"#"===e&&(e="");"r"!=m||l||(m="g");var m=lg.get(m)||Re,r=f&&k;return function(a){if(q&&a%1)return"";var t=0>a||0===a&&0>1/a?(a=-a,"-"):d;if(0>n){var v=g.formatPrefix(a,l);a=v.scale(a);p=v.symbol}else a*=n;a=m(a,l);!f&&k&&(a=rc(a));var v=e.length+a.length+(r?0:t.length),x=v<h?Array(v=h-v+1).join(b):"";r&&(a=rc(x+a));a.replace(".",".");t+=e;return("<"===c?t+a+x:">"===c?x+t+a:"^"===c?x.substring(0,v>>=1)+t+a+x.substring(v):t+(r?a:x+a))+p}};var kg=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,
+lg=g.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return(a=g.round(a,vb(a,b))).toFixed(Math.max(0,Math.min(20,vb(a*(1+1E-15),b))))}}),rc=V;if(ib)var mg=ib.length,rc=function(a){for(var b=a.lastIndexOf("."),
+c=0<=b?"."+a.substring(b+1):(b=a.length,""),d=[],e=0,f=ib[0];0<b&&0<f;)d.push(a.substring(b-=f,b+f)),f=ib[e=(e+1)%mg];return d.reverse().join(",")+c};var ng="y z a f p n \u00b5 m k M G T P E Z Y".split(" ").map(function(a,b){var c=Math.pow(10,3*Math.abs(8-b));return{scale:8<b?function(a){return a/c}:function(a){return a*c},symbol:a}});g.formatPrefix=function(a,b){var c=0;a&&(0>a&&(a*=-1),b&&(a=g.round(a,vb(a,b))),c=1+Math.floor(1E-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,3*Math.floor((0>=
+c?c+1:c-1)/3))));return ng[8+c/3]};var ne=function(){return V},og=g.map({linear:ne,poly:function(a){return function(b){return Math.pow(b,a)}},quad:function(){return Te},cubic:function(){return Ue},sin:function(){return Ve},exp:function(){return We},circle:function(){return Xe},elastic:function(a,b){var c;2>arguments.length&&(b=.45);arguments.length?c=b/(2*u)*Math.asin(1/a):(a=1,c=b/4);return function(d){return 1+a*Math.pow(2,10*-d)*Math.sin(2*(d-c)*u/b)}},back:function(a){a||(a=1.70158);return function(b){return b*
+b*((a+1)*b-a)}},bounce:function(){return Ye}}),pg=g.map({"in":V,out:Ac,"in-out":Bc,"out-in":function(a){return Bc(Ac(a))}});g.ease=function(a){var b=a.indexOf("-"),c=0<=b?a.substring(0,b):a,b=0<=b?a.substring(b+1):"in",c=og.get(c)||ne,b=pg.get(b)||V;return Se(b(c.apply(null,Array.prototype.slice.call(arguments,1))))};g.event=null;g.transform=function(a){var b=W.createElementNS(g.ns.prefix.svg,"g");return(g.transform=function(a){b.setAttribute("transform",a);a=b.transform.baseVal.consolidate();return new Dc(a?
+a.matrix:qg)})(a)};Dc.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var qg={a:1,b:0,c:0,d:1,e:0,f:0};g.interpolate=function(a,b){for(var c=g.interpolators.length,d;0<=--c&&!(d=g.interpolators[c](a,b)););return d};g.interpolateNumber=function(a,b){b-=a;return function(c){return a+b*c}};g.interpolateRound=function(a,b){b-=a;return function(c){return Math.round(a+b*c)}};g.interpolateString=function(a,b){var c,d,e=
+0,f=[],h=[],k,l;for(d=jb.lastIndex=0;c=jb.exec(b);++d)c.index&&f.push(b.substring(e,c.index)),h.push({i:f.length,x:c[0]}),f.push(null),e=jb.lastIndex;e<b.length&&f.push(b.substring(e));d=0;for(k=h.length;(c=jb.exec(a))&&d<k;++d)if(l=h[d],l.x==c[0]){if(l.i)if(null==f[l.i+1])for(f[l.i-1]+=l.x,f.splice(l.i,1),c=d+1;c<k;++c)h[c].i--;else for(f[l.i-1]+=l.x+f[l.i+1],f.splice(l.i,2),c=d+1;c<k;++c)h[c].i-=2;else if(null==f[l.i+1])f[l.i]=l.x;else for(f[l.i]=l.x+f[l.i+1],f.splice(l.i+1,1),c=d+1;c<k;++c)h[c].i--;
+h.splice(d,1);k--;d--}else l.x=g.interpolateNumber(parseFloat(c[0]),parseFloat(l.x));for(;d<k;)l=h.pop(),null==f[l.i+1]?f[l.i]=l.x:(f[l.i]=l.x+f[l.i+1],f.splice(l.i+1,1)),k--;return 1===f.length?null==f[0]?h[0].x:function(){return b}:function(a){for(d=0;d<k;++d)f[(l=h[d]).i]=l.x(a);return f.join("")}};g.interpolateTransform=function(a,b){var c=[],d=[],e,f=g.transform(a),h=g.transform(b),k=f.translate,l=h.translate,m=f.rotate,n=h.rotate,p=f.skew,q=h.skew,f=f.scale,h=h.scale;k[0]!=l[0]||k[1]!=l[1]?
+(c.push("translate(",null,",",null,")"),d.push({i:1,x:g.interpolateNumber(k[0],l[0])},{i:3,x:g.interpolateNumber(k[1],l[1])})):l[0]||l[1]?c.push("translate("+l+")"):c.push("");m!=n?(180<m-n?n+=360:180<n-m&&(m+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:g.interpolateNumber(m,n)})):n&&c.push(c.pop()+"rotate("+n+")");p!=q?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:g.interpolateNumber(p,q)}):q&&c.push(c.pop()+"skewX("+q+")");f[0]!=h[0]||f[1]!=h[1]?(e=c.push(c.pop()+"scale(",null,",",null,
+")"),d.push({i:e-4,x:g.interpolateNumber(f[0],h[0])},{i:e-2,x:g.interpolateNumber(f[1],h[1])})):1==h[0]&&1==h[1]||c.push(c.pop()+"scale("+h+")");e=d.length;return function(a){for(var b=-1,f;++b<e;)c[(f=d[b]).i]=f.x(a);return c.join("")}};g.interpolateRgb=function(a,b){a=g.rgb(a);b=g.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,h=b.g-d,k=b.b-e;return function(a){return"#"+ra(Math.round(c+f*a))+ra(Math.round(d+h*a))+ra(Math.round(e+k*a))}};g.interpolateHsl=function(a,b){a=g.hsl(a);b=g.hsl(b);var c=a.h,d=a.s,
+e=a.l,f=b.h-c,h=b.s-d,k=b.l-e;180<f?f-=360:-180>f&&(f+=360);return function(a){return La(c+f*a,d+h*a,e+k*a)+""}};g.interpolateLab=function(a,b){a=g.lab(a);b=g.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,h=b.a-d,k=b.b-e;return function(a){return Kc(c+f*a,d+h*a,e+k*a)+""}};g.interpolateHcl=function(a,b){a=g.hcl(a);b=g.hcl(b);var c=a.h,d=a.c,e=a.l,f=b.h-c,h=b.c-d,k=b.l-e;180<f?f-=360:-180>f&&(f+=360);return function(a){return Eb(c+f*a,d+h*a,e+k*a)+""}};g.interpolateArray=function(a,b){var c=[],d=[],e=a.length,
+f=b.length,h=Math.min(a.length,b.length),k;for(k=0;k<h;++k)c.push(g.interpolate(a[k],b[k]));for(;k<e;++k)d[k]=a[k];for(;k<f;++k)d[k]=b[k];return function(a){for(k=0;k<h;++k)d[k]=c[k](a);return d}};g.interpolateObject=function(a,b){var c={},d={},e;for(e in a)e in b?c[e]=xb(e)(a[e],b[e]):d[e]=a[e];for(e in b)e in a||(d[e]=b[e]);return function(a){for(e in c)d[e]=c[e](a);return d}};var jb=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;g.interpolators=[g.interpolateObject,function(a,b){return b instanceof
+Array&&g.interpolateArray(a,b)},function(a,b){return("string"===typeof a||"string"===typeof b)&&g.interpolateString(a+"",b+"")},function(a,b){return("string"===typeof b?Ka.has(b)||/^(#|rgb\(|hsl\()/.test(b):b instanceof qa)&&g.interpolateRgb(a,b)},function(a,b){return!isNaN(a=+a)&&!isNaN(b=+b)&&g.interpolateNumber(a,b)}];qa.prototype.toString=function(){return this.rgb()+""};g.rgb=function(a,b,c){return 1===arguments.length?a instanceof yb?ca(a.r,a.g,a.b):zb(""+a,ca,La):ca(~~a,~~b,~~c)};var kb=yb.prototype=
+new qa;kb.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b;if(!b&&!c&&!d)return ca(30,30,30);b&&30>b&&(b=30);c&&30>c&&(c=30);d&&30>d&&(d=30);return ca(Math.min(255,Math.floor(b/a)),Math.min(255,Math.floor(c/a)),Math.min(255,Math.floor(d/a)))};kb.darker=function(a){a=Math.pow(.7,arguments.length?a:1);return ca(Math.floor(a*this.r),Math.floor(a*this.g),Math.floor(a*this.b))};kb.hsl=function(){return Fc(this.r,this.g,this.b)};kb.toString=function(){return"#"+ra(this.r)+
+ra(this.g)+ra(this.b)};var Ka=g.map({aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",
+darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",
+gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",
+lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",
+mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",
+seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});Ka.forEach(function(a,b){Ka.set(a,zb(b,ca,La))});g.hsl=function(a,b,c){return 1===arguments.length?
+a instanceof Db?sa(a.h,a.s,a.l):zb(""+a,Fc,sa):sa(+a,+b,+c)};var sc=Db.prototype=new qa;sc.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);return sa(this.h,this.s,this.l/a)};sc.darker=function(a){a=Math.pow(.7,arguments.length?a:1);return sa(this.h,this.s,a*this.l)};sc.rgb=function(){return La(this.h,this.s,this.l)};g.hcl=function(a,b,c){return 1===arguments.length?a instanceof Ma?Aa(a.h,a.c,a.l):a instanceof Na?Lc(a.l,a.a,a.b):Lc((a=Gc((a=g.rgb(a)).r,a.g,a.b)).l,a.a,a.b):Aa(+a,+b,+c)};var tc=
+Ma.prototype=new qa;tc.brighter=function(a){return Aa(this.h,this.c,Math.min(100,this.l+lb*(arguments.length?a:1)))};tc.darker=function(a){return Aa(this.h,this.c,Math.max(0,this.l-lb*(arguments.length?a:1)))};tc.rgb=function(){return Eb(this.h,this.c,this.l).rgb()};g.lab=function(a,b,c){return 1===arguments.length?a instanceof Na?ta(a.l,a.a,a.b):a instanceof Ma?Eb(a.l,a.c,a.h):Gc((a=g.rgb(a)).r,a.g,a.b):ta(+a,+b,+c)};var lb=18,Hc=.95047,Ic=1,Jc=1.08883,uc=Na.prototype=new qa;uc.brighter=function(a){return ta(Math.min(100,
+this.l+lb*(arguments.length?a:1)),this.a,this.b)};uc.darker=function(a){return ta(Math.max(0,this.l-lb*(arguments.length?a:1)),this.a,this.b)};uc.rgb=function(){return Kc(this.l,this.a,this.b)};var Oa=function(a,b){return b.querySelector(a)},Oc=function(a,b){return b.querySelectorAll(a)},xa=W.documentElement,rg=xa.matchesSelector||xa.webkitMatchesSelector||xa.mozMatchesSelector||xa.msMatchesSelector||xa.oMatchesSelector,Vc=function(a,b){return rg.call(a,b)};"function"===typeof Sizzle&&(Oa=function(a,
+b){return Sizzle(a,b)[0]||null},Oc=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},Vc=Sizzle.matchesSelector);var C=[];g.selection=function(){return Ia};g.selection.prototype=C;C.select=function(a){var b=[],c,d,e,f;"function"!==typeof a&&(a=Mc(a));for(var h=-1,k=this.length;++h<k;){b.push(c=[]);c.parentNode=(e=this[h]).parentNode;for(var g=-1,m=e.length;++g<m;)(f=e[g])?(c.push(d=a.call(f,f.__data__,g)),d&&"__data__"in f&&(d.__data__=f.__data__)):c.push(null)}return da(b)};C.selectAll=function(a){var b=
+[],c,d;"function"!==typeof a&&(a=Nc(a));for(var e=-1,f=this.length;++e<f;)for(var h=this[e],k=-1,g=h.length;++k<g;)if(d=h[k])b.push(c=ha(a.call(d,d.__data__,k))),c.parentNode=d;return da(b)};C.attr=function(a,b){if(2>arguments.length){if("string"===typeof a){var c=this.node();a=g.ns.qualify(a);return a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}for(b in a)this.each(Pc(b,a[b]));return this}return this.each(Pc(a,b))};C.classed=function(a,b){if(2>arguments.length){if("string"===typeof a){var c=
+this.node(),d=(a=a.trim().split(/^|\s+/g)).length,e=-1;if(b=c.classList)for(;++e<d;){if(!b.contains(a[e]))return!1}else for(b=c.className,null!=b.baseVal&&(b=b.baseVal);++e<d;)if(!Qc(a[e]).test(b))return!1;return!0}for(b in a)this.each(Rc(b,a[b]));return this}return this.each(Rc(a,b))};C.style=function(a,b,c){var d=arguments.length;if(3>d){if("string"!==typeof a){2>d&&(b="");for(c in a)this.each(Sc(c,a[c],b));return this}if(2>d)return P.getComputedStyle(this.node(),null).getPropertyValue(a);c=""}return this.each(Sc(a,
+b,c))};C.property=function(a,b){if(2>arguments.length){if("string"===typeof a)return this.node()[a];for(b in a)this.each(Tc(b,a[b]));return this}return this.each(Tc(a,b))};C.text=function(a){return arguments.length?this.each("function"===typeof a?function(){var b=a.apply(this,arguments);this.textContent=null==b?"":b}:null==a?function(){this.textContent=""}:function(){this.textContent=a}):this.node().textContent};C.html=function(a){return arguments.length?this.each("function"===typeof a?function(){var b=
+a.apply(this,arguments);this.innerHTML=null==b?"":b}:null==a?function(){this.innerHTML=""}:function(){this.innerHTML=a}):this.node().innerHTML};C.append=function(a){function b(){return this.appendChild(W.createElementNS(this.namespaceURI,a))}function c(){return this.appendChild(W.createElementNS(a.space,a.local))}a=g.ns.qualify(a);return this.select(a.local?c:b)};C.insert=function(a,b){function c(){return this.insertBefore(W.createElementNS(this.namespaceURI,a),Oa(b,this))}function d(){return this.insertBefore(W.createElementNS(a.space,
+a.local),Oa(b,this))}a=g.ns.qualify(a);return this.select(a.local?d:c)};C.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})};C.data=function(a,b){function c(a,c){var d,e=a.length,f=c.length,h=Math.min(e,f),v=Array(f),x=Array(f),z=Array(e),y,G;if(b){var h=new ba,H=new ba,D=[],B;for(d=-1;++d<e;)B=b.call(y=a[d],y.__data__,d),h.has(B)?z[d]=y:h.set(B,y),D.push(B);for(d=-1;++d<f;)B=b.call(c,G=c[d],d),(y=h.get(B))?(v[d]=y,y.__data__=G):H.has(B)||(x[d]={__data__:G}),
+H.set(B,G),h.remove(B);for(d=-1;++d<e;)h.has(D[d])&&(z[d]=a[d])}else{for(d=-1;++d<h;)y=a[d],G=c[d],y?(y.__data__=G,v[d]=y):x[d]={__data__:G};for(;d<f;++d)x[d]={__data__:c[d]};for(;d<e;++d)z[d]=a[d]}x.update=v;x.parentNode=v.parentNode=z.parentNode=a.parentNode;k.push(x);g.push(v);m.push(z)}var d=-1,e=this.length,f,h;if(!arguments.length){for(a=Array(e=(f=this[0]).length);++d<e;)if(h=f[d])a[d]=h.__data__;return a}var k=Xc([]),g=da([]),m=da([]);if("function"===typeof a)for(;++d<e;)c(f=this[d],a.call(f,
+f.parentNode.__data__,d));else for(;++d<e;)c(f=this[d],a);g.enter=function(){return k};g.exit=function(){return m};return g};C.datum=function(a){return arguments.length?this.property("__data__",a):this.property("__data__")};C.filter=function(a){var b=[],c,d,e;"function"!==typeof a&&(a=Uc(a));for(var f=0,h=this.length;f<h;f++){b.push(c=[]);c.parentNode=(d=this[f]).parentNode;for(var k=0,g=d.length;k<g;k++)(e=d[k])&&a.call(e,e.__data__,k)&&c.push(e)}return da(b)};C.order=function(){for(var a=-1,b=this.length;++a<
+b;)for(var c=this[a],d=c.length-1,e=c[d],f;0<=--d;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this};C.sort=function(a){a=bf.apply(this,arguments);for(var b=-1,c=this.length;++b<c;)this[b].sort(a);return this.order()};C.on=function(a,b,c){var d=arguments.length;if(3>d){if("string"!==typeof a){2>d&&(b=!1);for(c in a)this.each(Wc(c,a[c],b));return this}if(2>d)return(d=this.node()["__on"+a])&&d._;c=!1}return this.each(Wc(a,b,c))};C.each=function(a){return ia(this,function(b,
+c,d){a.call(b,b.__data__,c,d)})};C.call=function(a){var b=ha(arguments);a.apply(b[0]=this,b);return this};C.empty=function(){return!this.node()};C.node=function(){for(var a=0,b=this.length;a<b;a++)for(var c=this[a],d=0,e=c.length;d<e;d++){var f=c[d];if(f)return f}return null};C.transition=function(){var a=Ja||++oe,b=[],c,d,e=Object.create(mb);e.time=Date.now();for(var f=-1,h=this.length;++f<h;){b.push(c=[]);for(var k=this[f],g=-1,m=k.length;++g<m;)(d=k[g])&&Pa(d,g,a,e),c.push(d)}return Ba(b,a)};var Ia=
+da([[W]]);Ia[0].parentNode=xa;g.select=function(a){return"string"===typeof a?Ia.select(a):da([[a]])};g.selectAll=function(a){return"string"===typeof a?Ia.selectAll(a):da([ha(a)])};var ma=[];g.selection.enter=Xc;g.selection.enter.prototype=ma;ma.append=C.append;ma.insert=C.insert;ma.empty=C.empty;ma.node=C.node;ma.select=function(a){for(var b=[],c,d,e,f,h,k=-1,g=this.length;++k<g;){e=(f=this[k]).update;b.push(c=[]);c.parentNode=f.parentNode;for(var m=-1,n=f.length;++m<n;)(h=f[m])?(c.push(e[m]=d=a.call(f.parentNode,
+h.__data__,m)),d.__data__=h.__data__):c.push(null)}return da(b)};var M=[],oe=0,Ja,mb={ease:function(a){if(0>=a)return 0;if(1<=a)return 1;var b=a*a,c=b*a;return 4*(.5>a?c:3*(a-b)+c-.75)},delay:0,duration:250};M.call=C.call;M.empty=C.empty;M.node=C.node;g.transition=function(a){return arguments.length?Ja?a.transition():a:Ia.transition()};g.transition.prototype=M;M.select=function(a){var b=this.id,c=[],d,e,f;"function"!==typeof a&&(a=Mc(a));for(var h=-1,k=this.length;++h<k;){c.push(d=[]);for(var g=this[h],
+m=-1,n=g.length;++m<n;)(f=g[m])&&(e=a.call(f,f.__data__,m))?("__data__"in f&&(e.__data__=f.__data__),Pa(e,m,b,f.__transition__[b]),d.push(e)):d.push(null)}return Ba(c,b)};M.selectAll=function(a){var b=this.id,c=[],d,e,f,h;"function"!==typeof a&&(a=Nc(a));for(var k=-1,g=this.length;++k<g;)for(var m=this[k],n=-1,p=m.length;++n<p;)if(d=m[n]){h=d.__transition__[b];e=a.call(d,d.__data__,n);c.push(d=[]);for(var q=-1,r=e.length;++q<r;)Pa(f=e[q],q,b,h),d.push(f)}return Ba(c,b)};M.filter=function(a){var b=
+[],c,d,e;"function"!==typeof a&&(a=Uc(a));for(var f=0,h=this.length;f<h;f++){b.push(c=[]);d=this[f];for(var k=0,g=d.length;k<g;k++)(e=d[k])&&a.call(e,e.__data__,k)&&c.push(e)}return Ba(b,this.id,this.time).ease(this.ease())};M.attr=function(a,b){function c(){this.removeAttribute(f)}function d(){this.removeAttributeNS(f.space,f.local)}if(2>arguments.length){for(b in a)this.attr(b,a[b]);return this}var e=xb(a),f=g.ns.qualify(a);return Ib(this,"attr."+a,b,function(a){function b(){var c=this.getAttribute(f),
+d;return c!==a&&(d=e(c,a),function(a){this.setAttribute(f,d(a))})}function g(){var b=this.getAttributeNS(f.space,f.local),c;return b!==a&&(c=e(b,a),function(a){this.setAttributeNS(f.space,f.local,c(a))})}return null==a?f.local?d:c:(a+="",f.local?g:b)})};M.attrTween=function(a,b){function c(a,c){var d=b.call(this,a,c,this.getAttribute(e));return d&&function(a){this.setAttribute(e,d(a))}}function d(a,c){var d=b.call(this,a,c,this.getAttributeNS(e.space,e.local));return d&&function(a){this.setAttributeNS(e.space,
+e.local,d(a))}}var e=g.ns.qualify(a);return this.tween("attr."+a,e.local?d:c)};M.style=function(a,b,c){function d(){this.style.removeProperty(a)}var e=arguments.length;if(3>e){if("string"!==typeof a){2>e&&(b="");for(c in a)this.style(c,a[c],b);return this}c=""}var f=xb(a);return Ib(this,"style."+a,b,function(b){function e(){var d=P.getComputedStyle(this,null).getPropertyValue(a),k;return d!==b&&(k=f(d,b),function(b){this.style.setProperty(a,k(b),c)})}return null==b?d:(b+="",e)})};M.styleTween=function(a,
+b,c){3>arguments.length&&(c="");return this.tween("style."+a,function(d,e){var f=b.call(this,d,e,P.getComputedStyle(this,null).getPropertyValue(a));return f&&function(b){this.style.setProperty(a,f(b),c)}})};M.text=function(a){return Ib(this,"text",a,cf)};M.remove=function(){return this.each("end.transition",function(){var a;!this.__transition__&&(a=this.parentNode)&&a.removeChild(this)})};M.ease=function(a){var b=this.id;if(1>arguments.length)return this.node().__transition__[b].ease;"function"!==
+typeof a&&(a=g.ease.apply(g,arguments));return ia(this,function(c){c.__transition__[b].ease=a})};M.delay=function(a){var b=this.id;return ia(this,"function"===typeof a?function(c,d,e){c.__transition__[b].delay=a.call(c,c.__data__,d,e)|0}:(a|=0,function(c){c.__transition__[b].delay=a}))};M.duration=function(a){var b=this.id;return ia(this,"function"===typeof a?function(c,d,e){c.__transition__[b].duration=Math.max(1,a.call(c,c.__data__,d,e)|0)}:(a=Math.max(1,a|0),function(c){c.__transition__[b].duration=
+a}))};M.each=function(a,b){var c=this.id;if(2>arguments.length){var d=mb,e=Ja;Ja=c;ia(this,function(b,d,e){mb=b.__transition__[c];a.call(b,b.__data__,d,e)});mb=d;Ja=e}else ia(this,function(d){d.__transition__[c].event.on(a,b)});return this};M.transition=function(){for(var a=this.id,b=++oe,c=[],d,e,f,h,k=0,g=this.length;k<g;k++){c.push(d=[]);e=this[k];for(var m=0,n=e.length;m<n;m++){if(f=e[m])h=Object.create(f.__transition__[a]),h.delay+=h.duration,Pa(f,m,b,h);d.push(f)}}return Ba(c,b)};M.tween=function(a,
+b){var c=this.id;return 2>arguments.length?this.node().__transition__[c].tween.get(a):ia(this,null==b?function(b){b.__transition__[c].tween.remove(a)}:function(d){d.__transition__[c].tween.set(a,b)})};var sg=0,Kb={},ua=null,Ra,Qa;g.timer=function(a,b,c){if(3>arguments.length){if(2>arguments.length)b=0;else if(!isFinite(b))return;c=Date.now()}var d=Kb[a.id];d&&d.callback===a?(d.then=c,d.delay=b):Kb[a.id=++sg]=ua={callback:a,then:c,delay:b,next:ua};Ra||(Qa=clearTimeout(Qa),Ra=1,Zc(Jb))};g.timer.flush=
+function(){for(var a,b=Date.now(),c=ua;c;)a=b-c.then,c.delay||(c.flush=c.callback(a)),c=c.next;Yc()};var Zc=P.requestAnimationFrame||P.webkitRequestAnimationFrame||P.mozRequestAnimationFrame||P.oRequestAnimationFrame||P.msRequestAnimationFrame||function(a){setTimeout(a,17)};g.mouse=function(a){return $c(a,Cc())};var Lb=/WebKit/.test(P.navigator.userAgent)?-1:0;g.touches=function(a,b){2>arguments.length&&(b=Cc().touches);return b?ha(b).map(function(b){var d=$c(a,b);d.identifier=b.identifier;return d}):
+[]};g.scale={};g.scale.linear=function(){return ad([0,1],[0,1],g.interpolate,!1)};g.scale.log=function(){return ed(g.scale.linear(),Ob)};var gf=g.format(".0e");Ob.pow=function(a){return Math.pow(10,a)};Ua.pow=function(a){return-Math.pow(10,-a)};g.scale.pow=function(){return fd(g.scale.linear(),1)};g.scale.sqrt=function(){return g.scale.pow().exponent(.5)};g.scale.ordinal=function(){return gd([],{t:"range",a:[[]]})};g.scale.category10=function(){return g.scale.ordinal().range(tg)};g.scale.category20=
+function(){return g.scale.ordinal().range(ug)};g.scale.category20b=function(){return g.scale.ordinal().range(vg)};g.scale.category20c=function(){return g.scale.ordinal().range(wg)};var tg="#1f77b4 #ff7f0e #2ca02c #d62728 #9467bd #8c564b #e377c2 #7f7f7f #bcbd22 #17becf".split(" "),ug="#1f77b4 #aec7e8 #ff7f0e #ffbb78 #2ca02c #98df8a #d62728 #ff9896 #9467bd #c5b0d5 #8c564b #c49c94 #e377c2 #f7b6d2 #7f7f7f #c7c7c7 #bcbd22 #dbdb8d #17becf #9edae5".split(" "),vg="#393b79 #5254a3 #6b6ecf #9c9ede #637939 #8ca252 #b5cf6b #cedb9c #8c6d31 #bd9e39 #e7ba52 #e7cb94 #843c39 #ad494a #d6616b #e7969c #7b4173 #a55194 #ce6dbd #de9ed6".split(" "),
+wg="#3182bd #6baed6 #9ecae1 #c6dbef #e6550d #fd8d3c #fdae6b #fdd0a2 #31a354 #74c476 #a1d99b #c7e9c0 #756bb1 #9e9ac8 #bcbddc #dadaeb #636363 #969696 #bdbdbd #d9d9d9".split(" ");g.scale.quantile=function(){return hd([],[])};g.scale.quantize=function(){return id(0,1,[0,1])};g.scale.threshold=function(){return jd([.5],[0,1])};g.scale.identity=function(){return kd([0,1])};g.svg={};g.svg.arc=function(){function a(){var a=b.apply(this,arguments),h=c.apply(this,arguments),k=d.apply(this,arguments)+na,g=e.apply(this,
+arguments)+na,m=(g<k&&(m=k,k=g,g=m),g-k),n=m<u?"0":"1",p=Math.cos(k),k=Math.sin(k),q=Math.cos(g),g=Math.sin(g);return m>=xg?a?"M0,"+h+"A"+h+","+h+" 0 1,1 0,"+-h+"A"+h+","+h+" 0 1,1 0,"+h+"M0,"+a+"A"+a+","+a+" 0 1,0 0,"+-a+"A"+a+","+a+" 0 1,0 0,"+a+"Z":"M0,"+h+"A"+h+","+h+" 0 1,1 0,"+-h+"A"+h+","+h+" 0 1,1 0,"+h+"Z":a?"M"+h*p+","+h*k+"A"+h+","+h+" 0 "+n+",1 "+h*q+","+h*g+"L"+a*q+","+a*g+"A"+a+","+a+" 0 "+n+",0 "+a*p+","+a*k+"Z":"M"+h*p+","+h*k+"A"+h+","+h+" 0 "+n+",1 "+h*q+","+h*g+"L0,0Z"}var b=hf,
+c=jf,d=ld,e=md;a.innerRadius=function(c){if(!arguments.length)return b;b=F(c);return a};a.outerRadius=function(b){if(!arguments.length)return c;c=F(b);return a};a.startAngle=function(b){if(!arguments.length)return d;d=F(b);return a};a.endAngle=function(b){if(!arguments.length)return e;e=F(b);return a};a.centroid=function(){var a=(b.apply(this,arguments)+c.apply(this,arguments))/2,h=(d.apply(this,arguments)+e.apply(this,arguments))/2+na;return[Math.cos(h)*a,Math.sin(h)*a]};return a};var na=-u/2,xg=
+2*u-1E-6;g.svg.line=function(){return nd(V)};var Qb=g.map({linear:U,"linear-closed":function(a){return U(a)+"Z"},"step-before":Rb,"step-after":Sb,basis:pd,"basis-open":function(a){if(4>a.length)return U(a);for(var b=[],c=-1,d=a.length,e,f=[0],h=[0];3>++c;)e=a[c],f.push(e[0]),h.push(e[1]);b.push(aa(va,f)+","+aa(va,h));for(--c;++c<d;)e=a[c],f.shift(),f.push(e[0]),h.shift(),h.push(e[1]),Da(b,f,h);return b.join("")},"basis-closed":function(a){for(var b,c=-1,d=a.length,e=d+4,f,h=[],g=[];4>++c;)f=a[c%d],
+h.push(f[0]),g.push(f[1]);b=[aa(va,h),",",aa(va,g)];for(--c;++c<e;)f=a[c%d],h.shift(),h.push(f[0]),g.shift(),g.push(f[1]),Da(b,h,g);return b.join("")},bundle:function(a,b){var c=a.length-1;if(c)for(var d=a[0][0],e=a[0][1],f=a[c][0]-d,h=a[c][1]-e,g=-1,l,m;++g<=c;)l=a[g],m=g/c,l[0]=b*l[0]+(1-b)*(d+m*f),l[1]=b*l[1]+(1-b)*(e+m*h);return pd(a)},cardinal:function(a,b){return 3>a.length?U(a):a[0]+Wa(a,Tb(a,b))},"cardinal-open":function(a,b){return 4>a.length?U(a):a[1]+Wa(a.slice(1,a.length-1),Tb(a,b))},
+"cardinal-closed":function(a,b){return 3>a.length?U(a):a[0]+Wa((a.push(a[0]),a),Tb([a[a.length-2]].concat(a,[a[1]]),b))},monotone:function(a){if(3>a.length)a=U(a);else{var b=a[0],c=[],d,e,f,h;d=0;e=a.length-1;var g=[];f=a[1];for(h=g[0]=Ub(a[0],f);++d<e;)g[d]=(h+(h=Ub(f,f=a[d+1])))/2;g[d]=h;for(var l=-1,m=a.length-1;++l<m;)d=Ub(a[l],a[l+1]),1E-6>Math.abs(d)?g[l]=g[l+1]=0:(e=g[l]/d,f=g[l+1]/d,h=e*e+f*f,9<h&&(h=3*d/Math.sqrt(h),g[l]=h*e,g[l+1]=h*f));for(l=-1;++l<=m;)h=(a[Math.min(m,l+1)][0]-a[Math.max(0,
+l-1)][0])/(6*(1+g[l]*g[l])),c.push([h||0,g[l]*h||0]);a=b+Wa(a,c)}return a}});Qb.forEach(function(a,b){b.key=a;b.closed=/-closed$/.test(a)});var qd=[0,2/3,1/3,0],rd=[0,1/3,2/3,0],va=[0,1/6,2/3,1/6];g.svg.line.radial=function(){var a=nd(sd);a.radius=a.x;delete a.x;a.angle=a.y;delete a.y;return a};Rb.reverse=Sb;Sb.reverse=Rb;g.svg.area=function(){return td(V)};g.svg.area.radial=function(){var a=td(sd);a.radius=a.x;delete a.x;a.innerRadius=a.x0;delete a.x0;a.outerRadius=a.x1;delete a.x1;a.angle=a.y;delete a.y;
+a.startAngle=a.y0;delete a.y0;a.endAngle=a.y1;delete a.y1;return a};g.svg.chord=function(){function a(a,f){var h=b(this,d,a,f),g=b(this,e,a,f);return"M"+h.p0+c(h.r,h.p1,h.a1-h.a0)+(h.a0==g.a0&&h.a1==g.a1?"Q 0,0 "+h.p0:"Q 0,0 "+g.p0+c(g.r,g.p1,g.a1-g.a0)+("Q 0,0 "+h.p0))+"Z"}function b(a,b,c,d){var e=b.call(a,c,d);b=f.call(a,e,d);c=h.call(a,e,d)+na;a=g.call(a,e,d)+na;return{r:b,a0:c,a1:a,p0:[b*Math.cos(c),b*Math.sin(c)],p1:[b*Math.cos(a),b*Math.sin(a)]}}function c(a,b,c){return"A"+a+","+a+" 0 "+ +(c>
+u)+",1 "+b}var d=sb,e=rb,f=kf,h=ld,g=md;a.radius=function(b){if(!arguments.length)return f;f=F(b);return a};a.source=function(b){if(!arguments.length)return d;d=F(b);return a};a.target=function(b){if(!arguments.length)return e;e=F(b);return a};a.startAngle=function(b){if(!arguments.length)return h;h=F(b);return a};a.endAngle=function(b){if(!arguments.length)return g;g=F(b);return a};return a};g.svg.diagonal=function(){function a(a,f){var h=b.call(this,a,f),g=c.call(this,a,f),l=(h.y+g.y)/2,h=[h,{x:h.x,
+y:l},{x:g.x,y:l},g],h=h.map(d);return"M"+h[0]+"C"+h[1]+" "+h[2]+" "+h[3]}var b=sb,c=rb,d=ud;a.source=function(c){if(!arguments.length)return b;b=F(c);return a};a.target=function(b){if(!arguments.length)return c;c=F(b);return a};a.projection=function(b){if(!arguments.length)return d;d=b;return a};return a};g.svg.diagonal.radial=function(){var a=g.svg.diagonal(),b=ud,c=a.projection;a.projection=function(a){return arguments.length?c(lf(b=a)):b};return a};g.svg.symbol=function(){function a(a,e){return(pe.get(b.call(this,
+a,e))||vd)(c.call(this,a,e))}var b=nf,c=mf;a.type=function(c){if(!arguments.length)return b;b=F(c);return a};a.size=function(b){if(!arguments.length)return c;c=F(b);return a};return a};var pe=g.map({circle:vd,cross:function(a){a=Math.sqrt(a/5)/2;return"M"+-3*a+","+-a+"H"+-a+"V"+-3*a+"H"+a+"V"+-a+"H"+3*a+"V"+a+"H"+a+"V"+3*a+"H"+-a+"V"+a+"H"+-3*a+"Z"},diamond:function(a){a=Math.sqrt(a/(2*qe));var b=a*qe;return"M0,"+-a+"L"+b+",0 0,"+a+" "+-b+",0Z"},square:function(a){a=Math.sqrt(a)/2;return"M"+-a+","+
+-a+"L"+a+","+-a+" "+a+","+a+" "+-a+","+a+"Z"},"triangle-down":function(a){a=Math.sqrt(a/nb);var b=a*nb/2;return"M0,"+b+"L"+a+","+-b+" "+-a+","+-b+"Z"},"triangle-up":function(a){a=Math.sqrt(a/nb);var b=a*nb/2;return"M0,"+-b+"L"+a+","+b+" "+-a+","+b+"Z"}});g.svg.symbolTypes=pe.keys();var nb=Math.sqrt(3),qe=Math.tan(30*w);g.svg.axis=function(){function a(a){a.each(function(){var a=g.select(this),p=null==l?b.ticks?b.ticks.apply(b,k):b.domain():l,s=null==m?b.tickFormat?b.tickFormat.apply(b,k):String:m,
+t=of(b,p,n),v=a.selectAll(".tick.minor").data(t,String),t=v.enter().insert("line",".tick").attr("class","tick minor").style("opacity",1E-6),x=g.transition(v.exit()).style("opacity",1E-6).remove(),v=g.transition(v).style("opacity",1),z=a.selectAll(".tick.major").data(p,String),p=z.enter().insert("g","path").attr("class","tick major").style("opacity",1E-6),y=g.transition(z.exit()).style("opacity",1E-6).remove(),G=g.transition(z).style("opacity",1),H,D=Sa(b),a=a.selectAll(".domain").data([0]),a=(a.enter().append("path").attr("class",
+"domain"),g.transition(a)),B=b.copy(),E=this.__chart__||B;this.__chart__=B;p.append("line");p.append("text");var u=p.select("line"),L=G.select("line"),s=z.select("text").text(s),z=p.select("text"),w=G.select("text");switch(c){case "bottom":H=wd;t.attr("y2",e);v.attr("x2",0).attr("y2",e);u.attr("y2",d);z.attr("y",Math.max(d,0)+h);L.attr("x2",0).attr("y2",d);w.attr("x",0).attr("y",Math.max(d,0)+h);s.attr("dy",".71em").style("text-anchor","middle");a.attr("d","M"+D[0]+","+f+"V0H"+D[1]+"V"+f);break;case "top":H=
+wd;t.attr("y2",-e);v.attr("x2",0).attr("y2",-e);u.attr("y2",-d);z.attr("y",-(Math.max(d,0)+h));L.attr("x2",0).attr("y2",-d);w.attr("x",0).attr("y",-(Math.max(d,0)+h));s.attr("dy","0em").style("text-anchor","middle");a.attr("d","M"+D[0]+","+-f+"V0H"+D[1]+"V"+-f);break;case "left":H=xd;t.attr("x2",-e);v.attr("x2",-e).attr("y2",0);u.attr("x2",-d);z.attr("x",-(Math.max(d,0)+h));L.attr("x2",-d).attr("y2",0);w.attr("x",-(Math.max(d,0)+h)).attr("y",0);s.attr("dy",".32em").style("text-anchor","end");a.attr("d",
+"M"+-f+","+D[0]+"H0V"+D[1]+"H"+-f);break;case "right":H=xd,t.attr("x2",e),v.attr("x2",e).attr("y2",0),u.attr("x2",d),z.attr("x",Math.max(d,0)+h),L.attr("x2",d).attr("y2",0),w.attr("x",Math.max(d,0)+h).attr("y",0),s.attr("dy",".32em").style("text-anchor","start"),a.attr("d","M"+f+","+D[0]+"H0V"+D[1]+"H"+f)}if(b.ticks)p.call(H,E),G.call(H,B),y.call(H,B),t.call(H,E),v.call(H,B),x.call(H,B);else{var fa=B.rangeBand()/2,t=function(a){return B(a)+fa};p.call(H,t);G.call(H,t)}})}var b=g.scale.linear(),c=re,
+d=6,e=6,f=6,h=3,k=[10],l=null,m,n=0;a.scale=function(c){if(!arguments.length)return b;b=c;return a};a.orient=function(b){if(!arguments.length)return c;c=b in yg?b+"":re;return a};a.ticks=function(){if(!arguments.length)return k;k=arguments;return a};a.tickValues=function(b){if(!arguments.length)return l;l=b;return a};a.tickFormat=function(b){if(!arguments.length)return m;m=b;return a};a.tickSize=function(b,c){if(!arguments.length)return d;var h=arguments.length-1;d=+b;e=1<h?+c:d;f=0<h?+arguments[h]:
+d;return a};a.tickPadding=function(b){if(!arguments.length)return h;h=+b;return a};a.tickSubdivide=function(b){if(!arguments.length)return n;n=+b;return a};return a};var re="bottom",yg={top:1,right:1,bottom:1,left:1};g.svg.brush=function(){function a(f){f.each(function(){var f=g.select(this),m=f.selectAll(".background").data([0]),p=f.selectAll(".extent").data([0]),n=f.selectAll(".resize").data(l,String);f.style("pointer-events","all").on("mousedown.brush",e).on("touchstart.brush",e);m.enter().append("rect").attr("class",
+"background").style("visibility","hidden").style("cursor","crosshair");p.enter().append("rect").attr("class","extent").style("cursor","move");n.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return zg[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden");n.style("display",a.empty()?"none":null);n.exit().remove();h&&(p=Sa(h),
+m.attr("x",p[0]).attr("width",p[1]-p[0]),c(f));k&&(p=Sa(k),m.attr("y",p[0]).attr("height",p[1]-p[0]),d(f));b(f)})}function b(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+m[+/e$/.test(a)][0]+","+m[+/^s/.test(a)][1]+")"})}function c(a){a.select(".extent").attr("x",m[0][0]);a.selectAll(".extent,.n>rect,.s>rect").attr("width",m[1][0]-m[0][0])}function d(a){a.select(".extent").attr("y",m[0][1]);a.selectAll(".extent,.e>rect,.w>rect").attr("height",m[1][1]-m[0][1])}function e(){function e(){var a=
+g.event.changedTouches;return a?g.touches(t,a)[0]:g.mouse(t)}function l(){var a=e(),f=!1;u&&(a[0]+=u[0],a[1]+=u[1]);D||(g.event.altKey?(B||(B=[(m[0][0]+m[1][0])/2,(m[0][1]+m[1][1])/2]),E[0]=m[+(a[0]<B[0])][0],E[1]=m[+(a[1]<B[1])][1]):B=null);G&&r(a,h,0)&&(c(z),f=!0);H&&r(a,k,1)&&(d(z),f=!0);f&&(b(z),x({type:"brush",mode:D?"move":"resize"}))}function r(a,b,c){var d=Sa(b);b=d[0];var e=d[1],d=E[c],f=m[1][c]-m[0][c];D&&(b-=d,e-=f+d);a=Math.max(b,Math.min(e,a[c]));D?b=(a+=d)+f:(B&&(d=Math.max(b,Math.min(e,
+2*B[c]-a))),d<a?(b=a,a=d):b=d);if(m[0][c]!==a||m[1][c]!==b)return n=null,m[0][c]=a,m[1][c]=b,!0}function s(){l();z.style("pointer-events","all").selectAll(".resize").style("display",a.empty()?"none":null);g.select("body").style("cursor",null);L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null);x({type:"brushend"});X()}var t=this,v=g.select(g.event.target),x=f.of(t,arguments),z=g.select(t),y=v.datum(),
+G=!/^(n|s)$/.test(y)&&h,H=!/^(e|w)$/.test(y)&&k,D=v.classed("extent"),B,E=e(),u,L=g.select(P).on("mousemove.brush",l).on("mouseup.brush",s).on("touchmove.brush",l).on("touchend.brush",s).on("keydown.brush",function(){32==g.event.keyCode&&(D||(B=null,E[0]-=m[1][0],E[1]-=m[1][1],D=2),X())}).on("keyup.brush",function(){32==g.event.keyCode&&2==D&&(E[0]+=m[1][0],E[1]+=m[1][1],D=0,X())});if(D)E[0]=m[0][0]-E[0],E[1]=m[0][1]-E[1];else if(y){var w=+/w$/.test(y),y=+/^n/.test(y);u=[m[1-w][0]-E[0],m[1-y][1]-
+E[1]];E[0]=m[w][0];E[1]=m[y][1]}else g.event.altKey&&(B=E.slice());z.style("pointer-events","none").selectAll(".resize").style("display",null);g.select("body").style("cursor",v.style("cursor"));x({type:"brushstart"});l();X()}var f=wb(a,"brushstart","brush","brushend"),h=null,k=null,l=vc[0],m=[[0,0],[0,0]],n;a.x=function(b){if(!arguments.length)return h;h=b;l=vc[!h<<1|!k];return a};a.y=function(b){if(!arguments.length)return k;k=b;l=vc[!h<<1|!k];return a};a.extent=function(b){var c,d,e,f,g;if(!arguments.length)return b=
+n||m,h&&(c=b[0][0],d=b[1][0],n||(c=m[0][0],d=m[1][0],h.invert&&(c=h.invert(c),d=h.invert(d)),d<c&&(g=c,c=d,d=g))),k&&(e=b[0][1],f=b[1][1],n||(e=m[0][1],f=m[1][1],k.invert&&(e=k.invert(e),f=k.invert(f)),f<e&&(g=e,e=f,f=g))),h&&k?[[c,e],[d,f]]:h?[c,d]:k&&[e,f];n=[[0,0],[0,0]];h&&(c=b[0],d=b[1],k&&(c=c[0],d=d[0]),n[0][0]=c,n[1][0]=d,h.invert&&(c=h(c),d=h(d)),d<c&&(g=c,c=d,d=g),m[0][0]=c|0,m[1][0]=d|0);k&&(e=b[0],f=b[1],h&&(e=e[1],f=f[1]),n[0][1]=e,n[1][1]=f,k.invert&&(e=k(e),f=k(f)),f<e&&(g=e,e=f,f=
+g),m[0][1]=e|0,m[1][1]=f|0);return a};a.clear=function(){n=null;m[0][0]=m[0][1]=m[1][0]=m[1][1]=0;return a};a.empty=function(){return h&&m[0][0]===m[1][0]||k&&m[0][1]===m[1][1]};return g.rebind(a,f,"on")};var zg={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},vc=["n e s w nw ne se sw".split(" "),["e","w"],["n","s"],[]];g.behavior={};g.behavior.drag=function(){function a(){this.on("mousedown.drag",b).on("touchstart.drag",
+b)}function b(){function a(){var b=k.parentNode;return null!=n?g.touches(b).filter(function(a){return a.identifier===n})[0]:g.mouse(b)}function b(){l({type:"dragend"});if(r&&(X(),g.event.target===m))s.on("click.drag",h,!0);s.on(null!=n?"touchmove.drag-"+n:"mousemove.drag",null).on(null!=n?"touchend.drag-"+n:"mouseup.drag",null)}function h(){X();s.on("click.drag",null)}var k=this,l=c.of(k,arguments),m=g.event.target,n=g.event.touches?g.event.changedTouches[0].identifier:null,p,q=a(),r=0,s=g.select(P).on(null!=
+n?"touchmove.drag-"+n:"mousemove.drag",function(){if(!k.parentNode)return b();var c=a(),d=c[0]-q[0],h=c[1]-q[1];r=r|d|h;q=c;X();l({type:"drag",x:c[0]+p[0],y:c[1]+p[1],dx:d,dy:h})}).on(null!=n?"touchend.drag-"+n:"mouseup.drag",b,!0);d?(p=d.apply(k,arguments),p=[p.x-q[0],p.y-q[1]]):p=[0,0];null==n&&X();l({type:"dragstart"})}var c=wb(a,"drag","dragstart","dragend"),d=null;a.origin=function(b){if(!arguments.length)return d;d=b;return a};return g.rebind(a,c,"on")};g.behavior.zoom=function(){function a(){this.on("mousedown.zoom",
+h).on("mousemove.zoom",l).on(Ag+".zoom",k).on("dblclick.zoom",m).on("touchstart.zoom",n).on("touchmove.zoom",p).on("touchend.zoom",n)}function b(a){return[(a[0]-q[0])/s,(a[1]-q[1])/s]}function c(a){s=Math.max(v[0],Math.min(v[1],a))}function d(a,b){b=[b[0]*s+q[0],b[1]*s+q[1]];q[0]+=a[0]-b[0];q[1]+=a[1]-b[1]}function e(){y&&y.domain(z.range().map(function(a){return(a-q[0])/s}).map(z.invert));H&&H.domain(G.range().map(function(a){return(a-q[1])/s}).map(G.invert))}function f(a){e();g.event.preventDefault();
+a({type:"zoom",scale:s,translate:q})}function h(){function a(){X();l.on("click.zoom",null)}var c=this,e=x.of(c,arguments),h=g.event.target,k=0,l=g.select(P).on("mousemove.zoom",function(){k=1;d(g.mouse(c),m);f(e)}).on("mouseup.zoom",function(){k&&X();l.on("mousemove.zoom",null).on("mouseup.zoom",null);if(k&&g.event.target===h)l.on("click.zoom",a,!0)}),m=b(g.mouse(c));P.focus();X()}function k(){r||(r=b(g.mouse(this)));c(Math.pow(2,.002*ob())*s);d(g.mouse(this),r);f(x.of(this,arguments))}function l(){r=
+null}function m(){var a=g.mouse(this),e=b(a),h=Math.log(s)/Math.LN2;c(Math.pow(2,g.event.shiftKey?Math.ceil(h)-1:Math.floor(h)+1));d(a,e);f(x.of(this,arguments))}function n(){var a=g.touches(this),e=Date.now();t=s;r={};a.forEach(function(a){r[a.identifier]=b(a)});X();if(1===a.length){if(500>e-D){var h=a[0],a=b(a[0]);c(2*s);d(h,a);f(x.of(this,arguments))}D=e}}function p(){var a=g.touches(this),b=a[0],e=r[b.identifier];if(a=a[1]){var h=r[a.identifier],b=[(b[0]+a[0])/2,(b[1]+a[1])/2],e=[(e[0]+h[0])/
+2,(e[1]+h[1])/2];c(g.event.scale*t)}d(b,e);D=null;f(x.of(this,arguments))}var q=[0,0],r,s=1,t,v=se,x=wb(a,"zoom"),z,y,G,H,D;a.translate=function(b){if(!arguments.length)return q;q=b.map(Number);e();return a};a.scale=function(b){if(!arguments.length)return s;s=+b;e();return a};a.scaleExtent=function(b){if(!arguments.length)return v;v=null==b?se:b.map(Number);return a};a.x=function(b){if(!arguments.length)return y;y=b;z=b.copy();q=[0,0];s=1;return a};a.y=function(b){if(!arguments.length)return H;H=
+b;G=b.copy();q=[0,0];s=1;return a};return g.rebind(a,x,"on")};var se=[0,Infinity],ob,Ag="onwheel"in document?(ob=function(){return-g.event.deltaY*(g.event.deltaMode?120:1)},"wheel"):"onmousewheel"in document?(ob=function(){return g.event.wheelDelta},"mousewheel"):(ob=function(){return-g.event.detail},"MozMousePixelScroll");g.layout={};g.layout.bundle=function(){return function(a){for(var b=[],c=-1,d=a.length;++c<d;)b.push(pf(a[c]));return b}};g.layout.chord=function(){function a(){var a={},c=[],r=
+g.range(h),s=[],t,v,x,z,y;d=[];e=[];t=0;for(z=-1;++z<h;){v=0;for(y=-1;++y<h;)v+=f[z][y];c.push(v);s.push(g.range(h));t+=v}l&&r.sort(function(a,b){return l(c[a],c[b])});m&&s.forEach(function(a,b){a.sort(function(a,c){return m(f[b][a],f[b][c])})});t=(2*u-k*h)/t;v=0;for(z=-1;++z<h;){x=v;for(y=-1;++y<h;){var G=r[z],H=s[G][y],D=f[G][H],B=v,E=v+=D*t;a[G+"-"+H]={index:G,subindex:H,startAngle:B,endAngle:E,value:D}}e[G]={index:G,startAngle:x,endAngle:v,value:(v-x)/t};v+=k}for(z=-1;++z<h;)for(y=z-1;++y<h;)r=
+a[z+"-"+y],s=a[y+"-"+z],(r.value||s.value)&&d.push(r.value<s.value?{source:s,target:r}:{source:r,target:s});n&&b()}function b(){d.sort(function(a,b){return n((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)})}var c={},d,e,f,h,k=0,l,m,n;c.matrix=function(a){if(!arguments.length)return f;h=(f=a)&&f.length;d=e=null;return c};c.padding=function(a){if(!arguments.length)return k;k=a;d=e=null;return c};c.sortGroups=function(a){if(!arguments.length)return l;l=a;d=e=null;return c};c.sortSubgroups=
+function(a){if(!arguments.length)return m;m=a;d=null;return c};c.sortChords=function(a){if(!arguments.length)return n;n=a;d&&b();return c};c.chords=function(){d||a();return d};c.groups=function(){e||a();return e};return c};g.layout.force=function(){function a(a){return function(b,c,d,e){if(b.point!==a){d=b.cx-a.x;var f=b.cy-a.y,h=1/Math.sqrt(d*d+f*f);if((e-c)*h<q)return c=b.charge*h*h,a.px-=d*c,a.py-=f*c,!0;b.point&&isFinite(h)&&(c=b.pointCharge*h*h,a.px-=d*c,a.py-=f*c)}return!b.charge}}function b(a){a.px=
+g.event.x;a.py=g.event.y;c.resume()}var c={},d=g.dispatch("start","tick","end"),e=[1,1],f,h,k=.9,l=Bg,m=Cg,n=-30,p=.1,q=.8,r=[],s=[],t,v,x;c.tick=function(){if(.005>(h*=.99))return d.end({type:"end",alpha:h=0}),!0;var b=r.length,c=s.length,f,l,m,q,u,w,L;for(f=0;f<c;++f)if(l=s[f],m=l.source,q=l.target,w=q.x-m.x,L=q.y-m.y,u=w*w+L*L)u=h*v[f]*((u=Math.sqrt(u))-t[f])/u,w*=u,L*=u,q.x-=w*(u=m.weight/(q.weight+m.weight)),q.y-=L*u,m.x+=w*(u=1-u),m.y+=L*u;if(u=h*p)if(w=e[0]/2,L=e[1]/2,f=-1,u)for(;++f<b;)l=
+r[f],l.x+=(w-l.x)*u,l.y+=(L-l.y)*u;if(n)for(zd(c=g.geom.quadtree(r),h,x),f=-1;++f<b;)(l=r[f]).fixed||c.visit(a(l));for(f=-1;++f<b;)l=r[f],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*k,l.y-=(l.py-(l.py=l.y))*k);d.tick({type:"tick",alpha:h})};c.nodes=function(a){if(!arguments.length)return r;r=a;return c};c.links=function(a){if(!arguments.length)return s;s=a;return c};c.size=function(a){if(!arguments.length)return e;e=a;return c};c.linkDistance=function(a){if(!arguments.length)return l;l="function"===
+typeof a?a:+a;return c};c.distance=c.linkDistance;c.linkStrength=function(a){if(!arguments.length)return m;m="function"===typeof a?a:+a;return c};c.friction=function(a){if(!arguments.length)return k;k=+a;return c};c.charge=function(a){if(!arguments.length)return n;n="function"===typeof a?a:+a;return c};c.gravity=function(a){if(!arguments.length)return p;p=+a;return c};c.theta=function(a){if(!arguments.length)return q;q=+a;return c};c.alpha=function(a){if(!arguments.length)return h;a=+a;h?h=0<a?a:
+0:0<a&&(d.start({type:"start",alpha:h=a}),g.timer(c.tick));return c};c.start=function(){function a(c,e){var g;if(!p){p=[];for(d=0;d<f;++d)p[d]=[];for(d=0;d<h;++d)g=s[d],p[g.source.index].push(g.target),p[g.target.index].push(g.source)}g=p[b];for(var k=-1,l=g.length,m;++k<l;)if(!isNaN(m=g[k][c]))return m;return Math.random()*e}var b,d,f=r.length,h=s.length,g=e[0],k=e[1],p,q;for(b=0;b<f;++b)(q=r[b]).index=b,q.weight=0;for(b=0;b<h;++b)q=s[b],"number"==typeof q.source&&(q.source=r[q.source]),"number"==
+typeof q.target&&(q.target=r[q.target]),++q.source.weight,++q.target.weight;for(b=0;b<f;++b)q=r[b],isNaN(q.x)&&(q.x=a("x",g)),isNaN(q.y)&&(q.y=a("y",k)),isNaN(q.px)&&(q.px=q.x),isNaN(q.py)&&(q.py=q.y);t=[];if("function"===typeof l)for(b=0;b<h;++b)t[b]=+l.call(this,s[b],b);else for(b=0;b<h;++b)t[b]=l;v=[];if("function"===typeof m)for(b=0;b<h;++b)v[b]=+m.call(this,s[b],b);else for(b=0;b<h;++b)v[b]=m;x=[];if("function"===typeof n)for(b=0;b<f;++b)x[b]=+n.call(this,r[b],b);else for(b=0;b<f;++b)x[b]=n;
+return c.resume()};c.resume=function(){return c.alpha(.1)};c.stop=function(){return c.alpha(0)};c.drag=function(){f||(f=g.behavior.drag().origin(V).on("dragstart.force",qf).on("drag.force",b).on("dragend.force",rf));if(!arguments.length)return f;this.on("mouseover.force",sf).on("mouseout.force",tf).call(f)};return g.rebind(c,d,"on")};var Bg=20,Cg=1;g.layout.partition=function(){function a(b,c,d,e){var g=b.children;b.x=c;b.y=b.depth*e;b.dx=d;b.dy=e;if(g&&(p=g.length)){var n=-1,p,q;for(d=b.value?d/
+b.value:0;++n<p;)a(q=g[n],c,b=q.value*d,e),c+=b}}function b(a){a=a.children;var c=0;if(a&&(e=a.length))for(var d=-1,e;++d<e;)c=Math.max(c,b(a[d]));return 1+c}function c(c,h){var g=d.call(this,c,h);a(g[0],0,e[0],e[1]/b(g[0]));return g}var d=g.layout.hierarchy(),e=[1,1];c.size=function(a){if(!arguments.length)return e;e=a;return c};return Ea(c,d)};g.layout.pie=function(){function a(f){var h=f.map(function(c,d){return+b.call(a,c,d)}),k=+("function"===typeof d?d.apply(this,arguments):d),l=(("function"===
+typeof e?e.apply(this,arguments):e)-d)/g.sum(h),m=g.range(f.length);null!=c&&m.sort(c===te?function(a,b){return h[b]-h[a]}:function(a,b){return c(f[a],f[b])});var n=[];m.forEach(function(a){var b;n[a]={data:f[a],value:b=h[a],startAngle:k,endAngle:k+=b*l}});return n}var b=Number,c=te,d=0,e=2*u;a.value=function(c){if(!arguments.length)return b;b=c;return a};a.sort=function(b){if(!arguments.length)return c;c=b;return a};a.startAngle=function(b){if(!arguments.length)return d;d=b;return a};a.endAngle=
+function(b){if(!arguments.length)return e;e=b;return a};return a};var te={};g.layout.stack=function(){function a(k,l){var m=k.map(function(c,d){return b.call(a,c,d)}),n=m.map(function(b){return b.map(function(b,c){return[f.call(a,b,c),h.call(a,b,c)]})}),p=c.call(a,n,l),m=g.permute(m,p),n=g.permute(n,p),p=d.call(a,n,l),q=m.length,r=m[0].length,s,t,v;for(t=0;t<r;++t)for(e.call(a,m[0][t],v=p[t],n[0][t][1]),s=1;s<q;++s)e.call(a,m[s][t],v+=n[s-1][t][1],n[s][t][1]);return k}var b=V,c=Vb,d=Wb,e=wf,f=uf,
+h=vf;a.values=function(c){if(!arguments.length)return b;b=c;return a};a.order=function(b){if(!arguments.length)return c;c="function"===typeof b?b:Dg.get(b)||Vb;return a};a.offset=function(b){if(!arguments.length)return d;d="function"===typeof b?b:Eg.get(b)||Wb;return a};a.x=function(b){if(!arguments.length)return f;f=b;return a};a.y=function(b){if(!arguments.length)return h;h=b;return a};a.out=function(b){if(!arguments.length)return e;e=b;return a};return a};var Dg=g.map({"inside-out":function(a){var b=
+a.length,c,d=a.map(xf),e=a.map(yf),f=g.range(b).sort(function(a,b){return d[a]-d[b]}),h=0,k=0,l=[],m=[];for(a=0;a<b;++a)c=f[a],h<k?(h+=e[c],l.push(c)):(k+=e[c],m.push(c));return m.reverse().concat(l)},reverse:function(a){return g.range(a.length).reverse()},"default":Vb}),Eg=g.map({silhouette:function(a){var b=a.length,c=a[0].length,d=[],e=0,f,h,g,l=[];for(h=0;h<c;++h){for(g=f=0;f<b;f++)g+=a[f][h][1];g>e&&(e=g);d.push(g)}for(h=0;h<c;++h)l[h]=(e-d[h])/2;return l},wiggle:function(a){var b=a.length,c=
+a[0],d=c.length,e,f,h,g,l,m,n,p,q,r=[];r[0]=p=q=0;for(f=1;f<d;++f){for(g=e=0;e<b;++e)g+=a[e][f][1];l=e=0;for(n=c[f][0]-c[f-1][0];e<b;++e){h=0;for(m=(a[e][f][1]-a[e][f-1][1])/(2*n);h<e;++h)m+=(a[h][f][1]-a[h][f-1][1])/n;l+=m*a[e][f][1]}r[f]=p-=g?l/g*n:0;p<q&&(q=p)}for(f=0;f<d;++f)r[f]-=q;return r},expand:function(a){var b=a.length,c=a[0].length,d=1/b,e,f,h,g=[];for(f=0;f<c;++f){for(h=e=0;e<b;e++)h+=a[e][f][1];if(h)for(e=0;e<b;e++)a[e][f][1]/=h;else for(e=0;e<b;e++)a[e][f][1]=d}for(f=0;f<c;++f)g[f]=
+0;return g},zero:Wb});g.layout.histogram=function(){function a(a,h){var k=[],l=a.map(c,this),m=d.call(this,l,h),n=e.call(this,m,l,h),p;h=-1;for(var q=l.length,r=n.length-1,s=b?1:1/q;++h<r;)p=k[h]=[],p.dx=n[h+1]-(p.x=n[h]),p.y=0;if(0<r)for(h=-1;++h<q;)p=l[h],p>=m[0]&&p<=m[1]&&(p=k[g.bisect(n,p,1,r)-1],p.y+=s,p.push(a[h]));return k}var b=!0,c=Number,d=Bf,e=Af;a.value=function(b){if(!arguments.length)return c;c=b;return a};a.range=function(b){if(!arguments.length)return d;d=F(b);return a};a.bins=function(b){if(!arguments.length)return e;
+e="number"===typeof b?function(a){return Ad(a,b)}:F(b);return a};a.frequency=function(c){if(!arguments.length)return b;b=!!c;return a};return a};g.layout.hierarchy=function(){function a(b,g,l){var m=e.call(c,b,g);b.depth=g;l.push(b);if(m&&(p=m.length)){var n=-1,p,q=b.children=[],r=0;g+=1;for(var s;++n<p;)s=a(m[n],g,l),s.parent=b,q.push(s),r+=s.value;d&&q.sort(d);f&&(b.value=r)}else f&&(b.value=+f.call(c,b,g)||0);return b}function b(a,d){var e=a.children,g=0;if(e&&(p=e.length))for(var n=-1,p,q=d+1;++n<
+p;)g+=b(e[n],q);else f&&(g=+f.call(c,a,d)||0);f&&(a.value=g);return g}function c(b){var c=[];a(b,0,c);return c}var d=Ff,e=Df,f=Ef;c.sort=function(a){if(!arguments.length)return d;d=a;return c};c.children=function(a){if(!arguments.length)return e;e=a;return c};c.value=function(a){if(!arguments.length)return f;f=a;return c};c.revalue=function(a){b(a,0);return a};return c};g.layout.pack=function(){function a(a,f){var h=b.call(this,a,f),g=h[0];g.x=0;g.y=0;ea(g,function(a){a.r=Math.sqrt(a.value)});ea(g,
+Dd);var l=d[0],m=d[1],n=Math.max(2*g.r/l,2*g.r/m);if(0<c){var p=c*n/2;ea(g,function(a){a.r+=p});ea(g,Dd);ea(g,function(a){a.r-=p});n=Math.max(2*g.r/l,2*g.r/m)}Fd(g,l/2,m/2,1/n);return h}var b=g.layout.hierarchy().sort(Gf),c=0,d=[1,1];a.size=function(b){if(!arguments.length)return d;d=b;return a};a.padding=function(b){if(!arguments.length)return c;c=+b;return a};return Ea(a,b)};g.layout.cluster=function(){function a(a,f){var h=b.call(this,a,f),g=h[0],l,m=0;ea(g,function(a){var b=a.children;b&&b.length?
+(a.x=Kf(b),a.y=Jf(b)):(a.x=l?m+=c(a,l):0,a.y=0,l=a)});var n=Gd(g),p=Hd(g),q=n.x-c(n,p)/2,r=p.x+c(p,n)/2;ea(g,function(a){a.x=(a.x-q)/(r-q)*d[0];a.y=(1-(g.y?a.y/g.y:1))*d[1]});return h}var b=g.layout.hierarchy().sort(null).value(null),c=Id,d=[1,1];a.separation=function(b){if(!arguments.length)return c;c=b;return a};a.size=function(b){if(!arguments.length)return d;d=b;return a};return Ea(a,b)};g.layout.tree=function(){function a(a,f){function h(a,b){var d=a.children,e=a._tree;if(d&&(f=d.length)){for(var f,
+g=d[0],k,l=g,m,p=-1;++p<f;){m=d[p];h(m,k);var n=m;if(k){for(var q=n,s=n,r=n.parent.children[0],t=q._tree.mod,u=s._tree.mod,w=k._tree.mod,C=r._tree.mod,A=void 0;k=Zb(k),q=Yb(q),k&&q;){r=Yb(r);s=Zb(s);s._tree.ancestor=n;A=k._tree.prelim+w-q._tree.prelim-t+c(k,q);if(0<A){var I=k._tree.ancestor.parent==n.parent?k._tree.ancestor:l,F=n,J=A,I=I._tree,F=F._tree,K=J/(F.number-I.number);I.change+=K;F.change-=K;F.shift+=J;F.prelim+=J;F.mod+=J;t+=A;u+=A}w+=k._tree.mod;t+=q._tree.mod;C+=r._tree.mod;u+=s._tree.mod}k&&
+!Zb(s)&&(s._tree.thread=k,s._tree.mod+=w-u);q&&!Yb(r)&&(r._tree.thread=q,r._tree.mod+=t-C,l=n)}k=m}f=d=0;p=a.children;for(n=p.length;0<=--n;)l=p[n]._tree,l.prelim+=d,l.mod+=d,d+=l.shift+(f+=l.change);g=.5*(g._tree.prelim+m._tree.prelim);b?(e.prelim=b._tree.prelim+c(a,b),e.mod=e.prelim-g):e.prelim=g}else b&&(e.prelim=b._tree.prelim+c(a,b))}function g(a,b){a.x=a._tree.prelim+b;var c=a.children;if(c&&(e=c.length)){var d=-1,e;for(b+=a._tree.mod;++d<e;)g(c[d],b)}}var l=b.call(this,a,f),m=l[0];ea(m,function(a,
+b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}});h(m);g(m,-m._tree.prelim);var n=Xa(m,Mf),p=Xa(m,Lf),q=Xa(m,Nf),r=n.x-c(n,p)/2,s=p.x+c(p,n)/2,t=q.depth||1;ea(m,function(a){a.x=(a.x-r)/(s-r)*d[0];a.y=a.depth/t*d[1];delete a._tree});return l}var b=g.layout.hierarchy().sort(null).value(null),c=Id,d=[1,1];a.separation=function(b){if(!arguments.length)return c;c=b;return a};a.size=function(b){if(!arguments.length)return d;d=b;return a};return Ea(a,b)};g.layout.treemap=
+function(){function a(a,b){for(var c=-1,d=a.length,e,f;++c<d;)f=(e=a[c]).value*(0>b?0:b),e.area=isNaN(f)||0>=f?0:f}function b(c){var e=c.children;if(e&&e.length){var f=m(c),h=[],g=e.slice(),k=Infinity,l,p="slice"===q?f.dx:"dice"===q?f.dy:"slice-dice"===q?c.depth&1?f.dy:f.dx:Math.min(f.dx,f.dy);a(g,f.dx*f.dy/c.value);for(h.area=0;0<(c=g.length);){h.push(c=g[c-1]);h.area+=c.area;if(!(c="squarify"!==q)){l=p;c=h.area;for(var n=void 0,u=0,w=Infinity,A=-1,C=h.length;++A<C;)if(n=h[A].area)n<w&&(w=n),n>u&&
+(u=n);c*=c;l*=l;c=(l=c?Math.max(l*u*r/c,c/(l*w*r)):Infinity)<=k}c?(g.pop(),k=l):(h.area-=h.pop().area,d(h,p,f,!1),p=Math.min(f.dx,f.dy),h.length=h.area=0,k=Infinity)}h.length&&(d(h,p,f,!0),h.length=h.area=0);e.forEach(b)}}function c(b){var e=b.children;if(e&&e.length){var f=m(b),h=e.slice(),g=[];a(h,f.dx*f.dy/b.value);for(g.area=0;b=h.pop();)g.push(b),g.area+=b.area,null!=b.z&&(d(g,b.z?f.dx:f.dy,f,!h.length),g.length=g.area=0);e.forEach(c)}}function d(a,b,c,d){var e=-1,f=a.length,g=c.x,k=c.y,l=b?
+h(a.area/b):0,m;if(b==c.dx){if(d||l>c.dy)l=c.dy;for(;++e<f;)m=a[e],m.x=g,m.y=k,m.dy=l,g+=m.dx=Math.min(c.x+c.dx-g,l?h(m.area/l):0);m.z=!0;m.dx+=c.x+c.dx-g;c.y+=l;c.dy-=l}else{if(d||l>c.dx)l=c.dx;for(;++e<f;)m=a[e],m.x=g,m.y=k,m.dx=l,k+=m.dy=Math.min(c.y+c.dy-k,l?h(m.area/l):0);m.z=!1;m.dy+=c.y+c.dy-k;c.x+=l;c.dx-=l}}function e(d){d=p||f(d);var e=d[0];e.x=0;e.y=0;e.dx=k[0];e.dy=k[1];p&&f.revalue(e);a([e],e.dx*e.dy/e.value);(p?c:b)(e);n&&(p=d);return d}var f=g.layout.hierarchy(),h=Math.round,k=[1,1],
+l=null,m=$b,n=!1,p,q="squarify",r=.5*(1+Math.sqrt(5));e.size=function(a){if(!arguments.length)return k;k=a;return e};e.padding=function(a){function b(c){var d=a.call(e,c,c.depth);return null==d?$b(c):Jd(c,"number"===typeof d?[d,d,d,d]:d)}function c(b){return Jd(b,a)}if(!arguments.length)return l;var d;m=null==(l=a)?$b:"function"===(d=typeof a)?b:"number"===d?(a=[a,a,a,a],c):c;return e};e.round=function(a){if(!arguments.length)return h!=Number;h=a?Math.round:Number;return e};e.sticky=function(a){if(!arguments.length)return n;
+n=a;p=null;return e};e.ratio=function(a){if(!arguments.length)return r;r=a;return e};e.mode=function(a){if(!arguments.length)return q;q=a+"";return e};return Ea(e,f)};g.csv=Kd(",","text/csv");g.tsv=Kd("\t","text/tab-separated-values");g.geo={};g.geo.stream=function(a,b){if(ue.hasOwnProperty(a.type))ue[a.type](a,b);else Ya(a,b)};var ue={Feature:function(a,b){Ya(a.geometry,b)},FeatureCollection:function(a,b){for(var c=a.features,d=-1,e=c.length;++d<e;)Ya(c[d].geometry,b)}},Ld={Sphere:function(a,b){b.sphere()},
+Point:function(a,b){var c=a.coordinates;b.point(c[0],c[1])},MultiPoint:function(a,b){for(var c=a.coordinates,d=-1,e=c.length,f;++d<e;)f=c[d],b.point(f[0],f[1])},LineString:function(a,b){ac(a.coordinates,b,0)},MultiLineString:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)ac(c[d],b,0)},Polygon:function(a,b){Md(a.coordinates,b)},MultiPolygon:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)Md(c[d],b)},GeometryCollection:function(a,b){for(var c=a.geometries,d=-1,e=c.length;++d<
+e;)Ya(c[d],b)}};g.geo.albersUsa=function(){function a(a){var h=a[0],g=a[1];return(50<g?c:-140>h?d:21>g?e:b)(a)}var b=g.geo.albers(),c=g.geo.albers().rotate([160,0]).center([0,60]).parallels([55,65]),d=g.geo.albers().rotate([160,0]).center([0,20]).parallels([8,18]),e=g.geo.albers().rotate([60,0]).center([0,10]).parallels([8,18]);a.scale=function(f){if(!arguments.length)return b.scale();b.scale(f);c.scale(.6*f);d.scale(f);e.scale(1.5*f);return a.translate(b.translate())};a.translate=function(f){if(!arguments.length)return b.translate();
+var h=b.scale(),g=f[0],l=f[1];b.translate(f);c.translate([g-.4*h,l+.17*h]);d.translate([g-.19*h,l+.2*h]);e.translate([g+.58*h,l+.43*h]);return a};return a.scale(b.scale())};(g.geo.albers=function(){var a=29.5*w,b=45.5*w,c=ic(Qd),d=c(a,b);d.parallels=function(d){return arguments.length?c(a=d[0]*w,b=d[1]*w):[a*O,b*O]};return d.rotate([98,0]).center([0,38]).scale(1E3)}).raw=Qd;var ve=Fa(function(a){return Math.sqrt(2/(1+a))},function(a){return 2*Math.asin(a/2)});(g.geo.azimuthalEqualArea=function(){return la(ve)}).raw=
+ve;var we=Fa(function(a){return(a=Math.acos(a))&&a/Math.sin(a)},V);(g.geo.azimuthalEquidistant=function(){return la(we)}).raw=we;g.geo.bounds=Rd(V);g.geo.centroid=function(a){N=Y=J=K=I=0;g.geo.stream(a,Z);var b;if(Y&&Math.abs(b=Math.sqrt(J*J+K*K+I*I))>A)return[Math.atan2(K,J)*O,Math.asin(Math.max(-1,Math.min(1,I/b)))*O]};var N,Y,J,K,I,Z={sphere:function(){2>N&&(N=2,Y=J=K=I=0)},point:Sd,lineStart:dc,lineEnd:ec,polygonStart:function(){2>N&&(N=2,Y=J=K=I=0);Z.lineStart=Of},polygonEnd:function(){Z.lineStart=
+dc}};g.geo.circle=function(){function a(){var a="function"===typeof b?b.apply(this,arguments):b,c=ae(-a[0]*w,-a[1]*w,0).invert,d=[];e(null,null,1,{point:function(a,b){d.push(a=c(a,b));a[0]*=O;a[1]*=O}});return{type:"Polygon",coordinates:[d]}}var b=[0,0],c,d=6,e;a.origin=function(c){if(!arguments.length)return b;b=c;return a};a.angle=function(b){if(!arguments.length)return c;e=fc((c=+b)*w,d*w);return a};a.precision=function(b){if(!arguments.length)return d;e=fc(c*w,(d=+b)*w);return a};return a.angle(90)};
+var be=Ud(za,function(a){var b=NaN,c=NaN,d=NaN,e;return{lineStart:function(){a.lineStart();e=1},point:function(f,h){var g=0<f?u:-u,l=Math.abs(f-b);if(Math.abs(l-u)<A)a.point(b,c=0<(c+h)/2?u/2:-u/2),a.point(d,c),a.lineEnd(),a.lineStart(),a.point(g,c),a.point(f,c),e=0;else if(d!==g&&l>=u){Math.abs(b-d)<A&&(b-=d*A);Math.abs(f-g)<A&&(f-=g*A);var l=b,m=c,n=f,p,q,r=Math.sin(l-n);c=Math.abs(r)>A?Math.atan((Math.sin(m)*(q=Math.cos(h))*Math.sin(n)-Math.sin(h)*(p=Math.cos(m))*Math.sin(l))/(p*q*r)):(m+h)/2;
+a.point(d,c);a.lineEnd();a.lineStart();a.point(g,c);e=0}a.point(b=f,c=h);d=g},lineEnd:function(){a.lineEnd();b=c=NaN},clean:function(){return 2-e}}},function(a,b,c,d){null==a?(c=c*u/2,d.point(-u,c),d.point(0,c),d.point(u,c),d.point(u,0),d.point(u,-c),d.point(0,-c),d.point(-u,-c),d.point(-u,0),d.point(-u,c)):Math.abs(a[0]-b[0])>A?(a=(a[0]<b[0]?1:-1)*u,c=c*a/2,d.point(-a,c),d.point(0,c),d.point(a,c)):d.point(b[0],b[1])});(g.geo.equirectangular=function(){return la(ab).scale(250/u)}).raw=ab.invert=ab;
+var xe=Fa(function(a){return 1/a},Math.atan);(g.geo.gnomonic=function(){return la(xe)}).raw=xe;g.geo.graticule=function(){function a(){return{type:"MultiLineString",coordinates:b()}}function b(){return g.range(Math.ceil(d/h)*h,c,h).map(l).concat(g.range(Math.ceil(f/k)*k,e,k).map(m))}var c,d,e,f,h=22.5,k=h,l,m,n=2.5;a.lines=function(){return b().map(function(a){return{type:"LineString",coordinates:a}})};a.outline=function(){return{type:"Polygon",coordinates:[l(d).concat(m(e).slice(1),l(c).reverse().slice(1),
+m(f).reverse().slice(1))]}};a.extent=function(b){if(!arguments.length)return[[d,f],[c,e]];d=+b[0][0];c=+b[1][0];f=+b[0][1];e=+b[1][1];d>c&&(b=d,d=c,c=b);f>e&&(b=f,f=e,e=b);return a.precision(n)};a.step=function(b){if(!arguments.length)return[h,k];h=+b[0];k=+b[1];return a};a.precision=function(b){if(!arguments.length)return n;n=+b;l=Uf(f,e,n);m=Vf(d,c,n);return a};return a.extent([[-180+A,-90+A],[180-A,90-A]])};g.geo.interpolate=function(a,b){return Wf(a[0]*w,a[1]*w,b[0]*w,b[1]*w)};g.geo.greatArc=
+function(){function a(){for(var a=c||b.apply(this,arguments),l=e||d.apply(this,arguments),m=h||g.geo.interpolate(a,l),n=0,p=f/m.distance,a=[a];1>(n+=p);)a.push(m(n));a.push(l);return{type:"LineString",coordinates:a}}var b=sb,c,d=rb,e,f=6*w,h;a.distance=function(){return(h||g.geo.interpolate(c||b.apply(this,arguments),e||d.apply(this,arguments))).distance};a.source=function(d){if(!arguments.length)return b;b=d;h=(c="function"===typeof d?null:d)&&e?g.geo.interpolate(c,e):null;return a};a.target=function(b){if(!arguments.length)return d;
+d=b;e="function"===typeof b?null:b;h=c&&e?g.geo.interpolate(c,e):null;return a};a.precision=function(b){if(!arguments.length)return f/w;f=b*w;return a};return a};gc.invert=function(a,b){return[2*u*a,2*Math.atan(Math.exp(2*u*b))-u/2]};(g.geo.mercator=function(){return la(gc).scale(500)}).raw=gc;var ye=Fa(function(){return 1},Math.asin);(g.geo.orthographic=function(){return la(ye)}).raw=ye;g.geo.path=function(){function a(a){a&&g.geo.stream(a,e(f.pointRadius("function"===typeof b?+b.apply(this,arguments):
+b)));return f.result()}var b=4.5,c,d,e,f;a.area=function(a){pb=0;g.geo.stream(a,e(ja));return pb};a.centroid=function(a){N=J=K=I=0;g.geo.stream(a,e($));return I?[J/I,K/I]:void 0};a.bounds=function(a){return Rd(e)(a)};a.projection=function(b){if(!arguments.length)return c;e=(c=b)?b.stream||Xf(b):V;return a};a.context=function(b){if(!arguments.length)return d;f=null==(d=b)?new Yf:new Zf(b);return a};a.pointRadius=function(c){if(!arguments.length)return b;b="function"===typeof c?c:+c;return a};return a.projection(g.geo.albersUsa()).context(null)};
+var pb,bb,ja={point:T,lineStart:T,lineEnd:T,polygonStart:function(){bb=0;ja.lineStart=$f},polygonEnd:function(){ja.lineStart=ja.lineEnd=ja.point=T;pb+=Math.abs(bb/2)}},$={point:hc,lineStart:Zd,lineEnd:$d,polygonStart:function(){$.lineStart=ag},polygonEnd:function(){$.point=hc;$.lineStart=Zd;$.lineEnd=$d}};g.geo.area=function(a){ya=0;g.geo.stream(a,ka);return ya};var ya,cb,db,ka={sphere:function(){ya+=4*u},point:T,lineStart:T,lineEnd:T,polygonStart:function(){cb=1;db=0;ka.lineStart=bg},polygonEnd:function(){var a=
+2*Math.atan2(db,cb);ya+=0>a?4*u+a:a;ka.lineStart=ka.lineEnd=ka.point=T}};g.geo.projection=la;g.geo.projectionMutator=ic;var ze=Fa(function(a){return 1/(1+a)},function(a){return 2*Math.atan(a)});(g.geo.stereographic=function(){return la(ze)}).raw=ze;g.geom={};g.geom.hull=function(a){if(3>a.length)return[];var b=a.length,c=b-1,d=[],e=[],f,h=0,g,l,m,n,p,q,r;for(f=1;f<b;++f)a[f][1]<a[h][1]?h=f:a[f][1]==a[h][1]&&(h=a[f][0]<a[h][0]?f:h);for(f=0;f<b;++f)f!==h&&(l=a[f][1]-a[h][1],g=a[f][0]-a[h][0],d.push({angle:Math.atan2(l,
+g),index:f}));d.sort(function(a,b){return a.angle-b.angle});r=d[0].angle;q=d[0].index;p=0;for(f=1;f<c;++f)b=d[f].index,r==d[f].angle?(g=a[q][0]-a[h][0],l=a[q][1]-a[h][1],m=a[b][0]-a[h][0],n=a[b][1]-a[h][1],g*g+l*l>=m*m+n*n?d[f].index=-1:(d[p].index=-1,r=d[f].angle,p=f,q=b)):(r=d[f].angle,p=f,q=b);e.push(h);for(b=f=0;2>f;++b)-1!==d[b].index&&(e.push(d[b].index),f++);for(h=e.length;b<c;++b)if(-1!==d[b].index){for(;!dg(e[h-2],e[h-1],d[b].index,a);)--h;e[h++]=d[b].index}c=[];for(f=0;f<h;++f)c.push(a[e[f]]);
+return c};g.geom.polygon=function(a){a.area=function(){for(var b=0,c=a.length,d=a[c-1][1]*a[0][0]-a[c-1][0]*a[0][1];++b<c;)d+=a[b-1][1]*a[b][0]-a[b-1][0]*a[b][1];return.5*d};a.centroid=function(b){var c=-1,d=a.length,e=0,f=0,h,g=a[d-1],l;for(arguments.length||(b=-1/(6*a.area()));++c<d;)h=g,g=a[c],l=h[0]*g[1]-g[0]*h[1],e+=(h[0]+g[0])*l,f+=(h[1]+g[1])*l;return[e*b,f*b]};a.clip=function(b){for(var c,d=-1,e=a.length,f,h,g=a[e-1],l,m,n;++d<e;){c=b.slice();b.length=0;l=a[d];m=c[(h=c.length)-1];for(f=-1;++f<
+h;)n=c[f],jc(n,g,l)?(jc(m,g,l)||b.push(fe(m,n,g,l)),b.push(n)):jc(m,g,l)&&b.push(fe(m,n,g,l)),m=n;g=l}return b};return a};g.geom.voronoi=function(a){var b=a.map(function(){return[]});ge(a,function(a){var d,e,f,g;1===a.a&&0<=a.b?(d=a.ep.r,e=a.ep.l):(d=a.ep.l,e=a.ep.r);1===a.a?(f=d?d.y:-1E6,d=a.c-a.b*f,g=e?e.y:1E6,e=a.c-a.b*g):(d=d?d.x:-1E6,f=a.c-a.a*d,e=e?e.x:1E6,g=a.c-a.a*e);d=[d,f];e=[e,g];b[a.region.l.index].push(d,e);b[a.region.r.index].push(d,e)});b=b.map(function(b,d){var e=a[d][0],f=a[d][1],
+h=b.map(function(a){return Math.atan2(a[0]-e,a[1]-f)}),k=g.range(b.length).sort(function(a,b){return h[a]-h[b]});return k.filter(function(a,b){return!b||h[a]-h[k[b-1]]>A}).map(function(a){return b[a]})});b.forEach(function(b,d){var e=b.length;if(!e)return b.push([-1E6,-1E6],[-1E6,1E6],[1E6,1E6],[1E6,-1E6]);if(!(2<e)){var f=a[d],g=b[0],k=b[1],e=f[0],f=f[1],l=g[0],g=g[1],m=k[0],n=k[1],p=Math.abs(m-l),k=n-g;Math.abs(k)<A?(e=f<g?-1E6:1E6,b.push([-1E6,e],[1E6,e])):p<A?(e=e<l?-1E6:1E6,b.push([e,-1E6],[e,
+1E6])):(e=(m-l)*(g-f)<(l-e)*(n-g)?1E6:-1E6,f=Math.abs(k)-p,Math.abs(f)<A?b.push([0>k?e:-e,e]):(0<f&&(e*=-1),b.push([-1E6,e],[1E6,e])))}});return b};var kc={l:"r",r:"l"};g.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];ge(a,function(c){b[c.region.l.index].push(a[c.region.r.index])});b.forEach(function(b,e){var f=a[e],g=f[0],k=f[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-g,a[1]-k)});b.sort(function(a,b){return a.angle-b.angle});for(var l=0,m=b.length-1;l<m;l++)c.push([f,b[l],
+b[l+1]])});return c};g.geom.quadtree=function(a,b,c,d,e){function f(a,b,c,d,e,f){if(!isNaN(b.x)&&!isNaN(b.y))if(a.leaf){var k=a.point;k?(.01>Math.abs(k.x-b.x)+Math.abs(k.y-b.y)||(a.point=null,g(a,k,c,d,e,f)),g(a,b,c,d,e,f)):a.point=b}else g(a,b,c,d,e,f)}function g(a,b,c,d,e,h){var k=.5*(c+e),l=.5*(d+h),m=b.x>=k,n=b.y>=l,u=(n<<1)+m;a.leaf=!1;a=a.nodes[u]||(a.nodes[u]={leaf:!0,nodes:[],point:null});m?c=k:e=k;n?d=l:h=l;f(a,b,c,d,e,h)}var k,l=-1,m=a.length;if(5>arguments.length)if(3===arguments.length)e=
+c,d=b,c=b=0;else for(b=c=Infinity,d=e=-Infinity;++l<m;)k=a[l],k.x<b&&(b=k.x),k.y<c&&(c=k.y),k.x>d&&(d=k.x),k.y>e&&(e=k.y);k=d-b;l=e-c;k>l?e=c+k:d=b+l;var n={leaf:!0,nodes:[],point:null,add:function(a){f(n,a,b,c,d,e)},visit:function(a){Ga(a,n,b,c,d,e)}};a.forEach(n.add);return n};g.time={};var R=Date;oa.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},
+getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ga.setUTCDate.apply(this._,arguments)},setDay:function(){ga.setUTCDay.apply(this._,arguments)},setFullYear:function(){ga.setUTCFullYear.apply(this._,
+arguments)},setHours:function(){ga.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ga.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ga.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ga.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ga.setUTCSeconds.apply(this._,arguments)},setTime:function(){ga.setTime.apply(this._,arguments)}};var ga=Date.prototype,Ae="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Be="Sun Mon Tue Wed Thu Fri Sat".split(" "),
+wc="January February March April May June July August September October November December".split(" "),xc="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");g.time.format=function(a){function b(b){for(var e=[],f=-1,g=0,k,l;++f<c;)if(37===a.charCodeAt(f)){e.push(a.substring(g,f));null!=(k=Fg[g=a.charAt(++f)])&&(g=a.charAt(++f));if(l=qb[g])g=l(b,null==k?"e"===g?" ":"0":k);e.push(g);g=f+1}e.push(a.substring(g,f));return e.join("")}var c=a.length;b.parse=function(b){var c={y:1900,m:0,d:1,H:0,
+M:0,S:0,L:0};if(eb(c,a,b,0)!=b.length)return null;"p"in c&&(c.H=c.H%12+12*c.p);b=new R;b.setFullYear(c.y,c.m,c.d);b.setHours(c.H,c.M,c.S,c.L);return b};b.toString=function(){return a};return b};var Ce=fb(Ae),De=fb(Be),Ee=fb(wc),Gg=he(wc),Fe=fb(xc),Hg=he(xc),Fg={"-":"",_:" ",0:"0"},qb={a:function(a){return Be[a.getDay()]},A:function(a){return Ae[a.getDay()]},b:function(a){return xc[a.getMonth()]},B:function(a){return wc[a.getMonth()]},c:g.time.format("%a %b %e %X %Y"),d:function(a,b){return S(a.getDate(),
+b,2)},e:function(a,b){return S(a.getDate(),b,2)},H:function(a,b){return S(a.getHours(),b,2)},I:function(a,b){return S(a.getHours()%12||12,b,2)},j:function(a,b){return S(1+g.time.dayOfYear(a),b,3)},L:function(a,b){return S(a.getMilliseconds(),b,3)},m:function(a,b){return S(a.getMonth()+1,b,2)},M:function(a,b){return S(a.getMinutes(),b,2)},p:function(a){return 12<=a.getHours()?"PM":"AM"},S:function(a,b){return S(a.getSeconds(),b,2)},U:function(a,b){return S(g.time.sundayOfYear(a),b,2)},w:function(a){return a.getDay()},
+W:function(a,b){return S(g.time.mondayOfYear(a),b,2)},x:g.time.format("%m/%d/%Y"),X:g.time.format("%H:%M:%S"),y:function(a,b){return S(a.getFullYear()%100,b,2)},Y:function(a,b){return S(a.getFullYear()%1E4,b,4)},Z:function(a){var b=a.getTimezoneOffset();a=0<b?"-":"+";var c=~~(Math.abs(b)/60),b=Math.abs(b)%60;return a+S(c,"0",2)+S(b,"0",2)},"%":function(){return"%"}},eg={a:function(a,b,c){De.lastIndex=0;return(a=De.exec(b.substring(c)))?c+a[0].length:-1},A:function(a,b,c){Ce.lastIndex=0;return(a=Ce.exec(b.substring(c)))?
+c+a[0].length:-1},b:function(a,b,c){Fe.lastIndex=0;return(b=Fe.exec(b.substring(c)))?(a.m=Hg.get(b[0].toLowerCase()),c+b[0].length):-1},B:function(a,b,c){Ee.lastIndex=0;return(b=Ee.exec(b.substring(c)))?(a.m=Gg.get(b[0].toLowerCase()),c+b[0].length):-1},c:function(a,b,c){return eb(a,qb.c.toString(),b,c)},d:ie,e:ie,H:je,I:je,L:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+3)))?(a.L=+b[0],c+b[0].length):-1},m:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.m=b[0]-
+1,c+b[0].length):-1},M:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.M=+b[0],c+b[0].length):-1},p:function(a,b,c){b=Ig.get(b.substring(c,c+=2).toLowerCase());return null==b?-1:(a.p=b,c)},S:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+2)))?(a.S=+b[0],c+b[0].length):-1},x:function(a,b,c){return eb(a,qb.x.toString(),b,c)},X:function(a,b,c){return eb(a,qb.X.toString(),b,c)},y:function(a,b,c){Q.lastIndex=0;if(b=Q.exec(b.substring(c,c+2))){var d=+b[0];a=(a.y=d+(68<
+d?1900:2E3),c+b[0].length)}else a=-1;return a},Y:function(a,b,c){Q.lastIndex=0;return(b=Q.exec(b.substring(c,c+4)))?(a.y=+b[0],c+b[0].length):-1}},Q=/^\s*\d+/,Ig=g.map({am:0,pm:1});g.time.format.utc=function(a){function b(a){try{R=oa;var b=new R;b._=a;return c(b)}finally{R=Date}}var c=g.time.format(a);b.parse=function(a){try{R=oa;var b=c.parse(a);return b&&b._}finally{R=Date}};b.toString=c.toString;return b};var Ge=g.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");g.time.format.iso=Date.prototype.toISOString?
+lc:Ge;lc.parse=function(a){a=new Date(a);return isNaN(a)?null:a};lc.toString=Ge.toString;g.time.second=pa(function(a){return new R(1E3*Math.floor(a/1E3))},function(a,b){a.setTime(a.getTime()+1E3*Math.floor(b))},function(a){return a.getSeconds()});g.time.seconds=g.time.second.range;g.time.seconds.utc=g.time.second.utc.range;g.time.minute=pa(function(a){return new R(6E4*Math.floor(a/6E4))},function(a,b){a.setTime(a.getTime()+6E4*Math.floor(b))},function(a){return a.getMinutes()});g.time.minutes=g.time.minute.range;
+g.time.minutes.utc=g.time.minute.utc.range;g.time.hour=pa(function(a){var b=a.getTimezoneOffset()/60;return new R(36E5*(Math.floor(a/36E5-b)+b))},function(a,b){a.setTime(a.getTime()+36E5*Math.floor(b))},function(a){return a.getHours()});g.time.hours=g.time.hour.range;g.time.hours.utc=g.time.hour.utc.range;g.time.day=pa(function(a){var b=new R(1970,0);b.setFullYear(a.getFullYear(),a.getMonth(),a.getDate());return b},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1});g.time.days=
+g.time.day.range;g.time.days.utc=g.time.day.utc.range;g.time.dayOfYear=function(a){var b=g.time.year(a);return Math.floor((a-b-6E4*(a.getTimezoneOffset()-b.getTimezoneOffset()))/864E5)};"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ").forEach(function(a,b){a=a.toLowerCase();b=7-b;var c=g.time[a]=pa(function(a){(a=g.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7);return a},function(a,b){a.setDate(a.getDate()+7*Math.floor(b))},function(a){var c=g.time.year(a).getDay();return Math.floor((g.time.dayOfYear(a)+
+(c+b)%7)/7)-(c!==b)});g.time[a+"s"]=c.range;g.time[a+"s"].utc=c.utc.range;g.time[a+"OfYear"]=function(a){var c=g.time.year(a).getDay();return Math.floor((g.time.dayOfYear(a)+(c+b)%7)/7)}});g.time.week=g.time.sunday;g.time.weeks=g.time.sunday.range;g.time.weeks.utc=g.time.sunday.utc.range;g.time.weekOfYear=g.time.sundayOfYear;g.time.month=pa(function(a){a=g.time.day(a);a.setDate(1);return a},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()});g.time.months=g.time.month.range;
+g.time.months.utc=g.time.month.utc.range;g.time.year=pa(function(a){a=g.time.day(a);a.setMonth(0,1);return a},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()});g.time.years=g.time.year.range;g.time.years.utc=g.time.year.utc.range;var hb=[1E3,5E3,15E3,3E4,6E4,3E5,9E5,18E5,36E5,108E5,216E5,432E5,864E5,1728E5,6048E5,2592E6,7776E6,31536E6],yc=[[g.time.second,1],[g.time.second,5],[g.time.second,15],[g.time.second,30],[g.time.minute,1],[g.time.minute,5],[g.time.minute,
+15],[g.time.minute,30],[g.time.hour,1],[g.time.hour,3],[g.time.hour,6],[g.time.hour,12],[g.time.day,1],[g.time.day,2],[g.time.week,1],[g.time.month,1],[g.time.month,3],[g.time.year,1]],Jg=[[g.time.format("%Y"),za],[g.time.format("%B"),function(a){return a.getMonth()}],[g.time.format("%b %d"),function(a){return 1!=a.getDate()}],[g.time.format("%a %d"),function(a){return a.getDay()&&1!=a.getDate()}],[g.time.format("%I %p"),function(a){return a.getHours()}],[g.time.format("%I:%M"),function(a){return a.getMinutes()}],
+[g.time.format(":%S"),function(a){return a.getSeconds()}],[g.time.format(".%L"),function(a){return a.getMilliseconds()}]],He=g.scale.linear(),Kg=ke(Jg);yc.year=function(a,b){return He.domain(a.map(fg)).ticks(b).map(oc)};g.time.scale=function(){return mc(g.scale.linear(),yc,Kg)};var Ie=yc.map(function(a){return[a[0].utc,a[1]]}),Lg=[[g.time.format.utc("%Y"),za],[g.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[g.time.format.utc("%b %d"),function(a){return 1!=a.getUTCDate()}],[g.time.format.utc("%a %d"),
+function(a){return a.getUTCDay()&&1!=a.getUTCDate()}],[g.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[g.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[g.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[g.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],Mg=ke(Lg);Ie.year=function(a,b){return He.domain(a.map(gg)).ticks(b).map(pc)};g.time.scale.utc=function(){return mc(g.scale.linear(),Ie,Mg)};return g}();