Commit 00247e8ccbe7e6ba7294fb0bef898b2fc094cdba

Authored by Gust
1 parent 6b94127b

Adding new initial migrations and install readme

-Remove database dependency
-Add detailed installation of colab and all of its tools

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Showing 48 changed files with 635 additions and 5037 deletions   Show diff stats
README.rst
... ... @@ -43,6 +43,10 @@ to get results: natively in XML or JSON, PHP, Ruby and Python and then treatment
43 43 Installation (Development Environment)
44 44 ==========================================
45 45  
  46 +A detailed installation steps can be found in:
  47 +
  48 +`Detailed full environment installation <install.rst>`_
  49 +
46 50 Here we'll cover how to setup a development environment using a Vagrant
47 51 virtual machine.
48 52  
... ... @@ -64,7 +68,7 @@ First you will need to clone the repository:
64 68  
65 69 .. code-block::
66 70  
67   - git clone git@github.com:interlegis/colab.git
  71 + git clone git@github.com:colab-community/colab.git
68 72  
69 73  
70 74 *NOTE:*
... ...
install.rst 0 → 100644
... ... @@ -0,0 +1,214 @@
  1 +.. -*- coding: utf-8 -*-
  2 +
  3 +.. highlight:: rest
  4 +
  5 +.. _colab_software:
  6 +
  7 +=================================
  8 +Installing a full colab environment
  9 +=================================
  10 +
  11 +This file will guide you through the installation of colab's dependencys,
  12 +external tools and its integration with colab to help you start using/working.
  13 +
  14 +The dependecys installation steps will be based of Ubuntu 13.04 but the tools,
  15 +integrations and the colab itself runs in a virtual machine so it'll be the same regardless of your system.
  16 +
  17 +
  18 +Fabric + VirtualBox + Vagrant
  19 +==============
  20 +
  21 +You can easily install fabric using pip with
  22 +
  23 +.. code-block::
  24 +
  25 + sudo apt-get install python-pip
  26 + sudo pip install fabric
  27 +
  28 +You can also instal Virtual Box with apt-get
  29 +
  30 +.. code-block::
  31 +
  32 + sudo apt-get install virtualbox
  33 +
  34 +Now, vagrant has an apt-get but its not supported anymore, so you'll have to manually download and install it from the site
  35 +
  36 + https://www.vagrantup.com/downloads.html
  37 +
  38 +Starting the VM and environment
  39 +===============================
  40 +
  41 +Clone the repository to your system
  42 +
  43 +.. code-block::
  44 +
  45 + git clone https://github.com/colab-community/colab.git
  46 + cd colab
  47 +
  48 +Create your local configuration file(we'll adjust it later)
  49 +
  50 +.. code-block::
  51 +
  52 + cp src/colab/local_settings-dev.py src/colab/local_settings.py
  53 +
  54 +To startup the VM simple do
  55 +
  56 +.. code-block::
  57 +
  58 + vagrant up
  59 +
  60 +*NOTE*
  61 +
  62 + In case you have problems creating the virtual machine you might need to download the linux header files
  63 +
  64 + .. code-block::
  65 +
  66 + linux-headers-generic
  67 +
  68 +Accessing the VM and configurating the database
  69 +===============================================
  70 +
  71 +You should now be able to access your VM through
  72 +
  73 +.. code-block::
  74 +
  75 + vagrant ssh
  76 +
  77 +*NOTE*
  78 +
  79 + In case you get a connection port refused or ssh error, you might need to activate manually an ssh server(rare)
  80 +
  81 + .. code-block::
  82 +
  83 + sudo apt-get install ssh; sudo service ssh start;
  84 +
  85 +The VM doesnt come with a databse so, you'll need to install one inside it.
  86 +Inside de VM download and install postgresql
  87 +
  88 +.. code-block::
  89 +
  90 + sudo apt-get install postgresql
  91 +
  92 +Access the postgresql database and create a new database and user colab user
  93 +
  94 +.. code-block::
  95 +
  96 + sudo -u postgres psql
  97 + CREATE USER colab SUPERUSER INHERIT CREATEDB CREATEROLE;
  98 + ALTER USER colab PASSWORD 'colab';
  99 + CREATE DATABASE colab;
  100 +
  101 +Also, create the Trac's database(note it needs to support UTF8)
  102 +
  103 +.. code-block::
  104 +
  105 + create database "trac_colab" with owner "colab" encoding 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE=template0;
  106 + \q
  107 +
  108 +That's the database used for Trac, but its needed so colab can make its migrations correctly and adjust solr accordinly
  109 +
  110 +Installing Trac on the VM
  111 +=========================
  112 +
  113 +Inside the VM(vagrant ssh) download e install trac
  114 +
  115 +.. code-block::
  116 +
  117 + sudo apt-get install trac
  118 + sudo pip install --upgrade Trac
  119 +
  120 +Now you'll need to configure trac so it can access the previously created database.
  121 +
  122 +.. code-block::
  123 +
  124 + mkdir -p /var/local/trac
  125 + sudo trac-admin /var/local/trac initenv
  126 +
  127 +Set the project name to 'Colab' when asked, and the following postgresql connection string
  128 +
  129 +.. code-block::
  130 +
  131 + postgres://colab:colab@/trac_colab?host=localhost
  132 +
  133 +The trac database should be populated with relations, now need to give trac write access to its folders
  134 +
  135 +.. code-block::
  136 +
  137 + sudo chown -R www-data /var/local/trac
  138 + sudo chmod -R 775 /var/local/trac
  139 +
  140 +Finally, trac can be run by
  141 +
  142 +.. code-block::
  143 +
  144 + tracd --port 5000 /var/local/trac
  145 +
  146 +Use port 8000 and access it on port 8080 in your local machine to see it works if you'd like(vagrant has port redirects)
  147 +
  148 +Setting up Colab
  149 +=========================
  150 +
  151 +You can exit the vagrant VM ('exit' inside the ssh shell) but for now leave it running Trac and start a new terminal tab
  152 +
  153 +Open the /src/colab/local_settings.py file
  154 +
  155 +Change COLAB_TRAC_URL to
  156 +
  157 +.. code-block::
  158 +
  159 + COLAB_TRAC_URL = 'http://localhost:5000/trac/'
  160 +
  161 +Or the port you're using to Trac
  162 +
  163 +Use fabric at colab's root to update the requirements to your VM
  164 +
  165 +.. code-block::
  166 +
  167 + fabric runserver:update
  168 +
  169 +*NOTE:*
  170 +
  171 + The fabric installation on ubuntu through 'pip install' might not be added to the path so you'll need to find
  172 + where it was installed if thats your case
  173 +
  174 +Now simply run fabric again to run the server (it'll also sync and migrate colab's database)
  175 +
  176 +.. code-block::
  177 +
  178 + fabric runserver
  179 +
  180 +You should be able to see colab with its cms service already working at port 8000(because of vagrant redirects)
  181 +
  182 +*NOTE*
  183 +
  184 + In case login doesn't work, change the SITE_URL in src/colab/local_settings.py the reflect the django's port
  185 + Also, add the following line riht bellow it
  186 + BROWSERID_AUDIENCES = [SITE_URL, SITE_URL.replace('https', 'http')]
  187 +
  188 +Installing Solr and indexing colab's schemas
  189 +==========================================
  190 +In Progress of making it readable
  191 + #http servlet jetty
  192 + sudo apt-get install jetty
  193 +
  194 + #solr
  195 + wget http://ftp.unicamp.br/pub/apache/lucene/solr/4.6.1/solr-4.6.1.tgz
  196 + tar xvzf solr-4.6.1.tgz
  197 + sudo mv solr-4.6.1 /usr/share/solr
  198 +
  199 + sudo cp /usr/share/solr/example/webapps/solr.war /usr/share/solr/example/solr/solr.war
  200 +
  201 + python manage.py build_solr_schema >> schema.xml
  202 + #existe mais de uma referencia a stopwords_en
  203 + trocar no schema.xml stopwords_en.txt por lang/stopwords_en.txt
  204 +
  205 + sudo cp schema.xml /usr/share/solr/example/solr/collection1/conf
  206 +
  207 + #inclusive a tag
  208 + Remova <updateLog> em solrconfig.xml localizado em /usr/share/solr/example/solr/collection1/conf
  209 +
  210 + #executa servidor
  211 + cd /usr/share/solr/example/; java -jar start.jar;
  212 +
  213 + #indexa
  214 + python manage.py update_index
0 215 \ No newline at end of file
... ...
src/accounts/migrations/0001_initial.py 0 → 100644
... ... @@ -0,0 +1,116 @@
  1 +# -*- coding: utf-8 -*-
  2 +import datetime
  3 +from south.db import db
  4 +from south.v2 import SchemaMigration
  5 +from django.db import models
  6 +
  7 +
  8 +class Migration(SchemaMigration):
  9 +
  10 + def forwards(self, orm):
  11 + # Adding model 'User'
  12 + db.create_table(u'accounts_user', (
  13 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  14 + ('password', self.gf('django.db.models.fields.CharField')(max_length=128)),
  15 + ('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
  16 + ('is_superuser', self.gf('django.db.models.fields.BooleanField')(default=False)),
  17 + ('username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
  18 + ('first_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
  19 + ('last_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
  20 + ('email', self.gf('django.db.models.fields.EmailField')(unique=True, max_length=75, blank=True)),
  21 + ('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
  22 + ('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
  23 + ('date_joined', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
  24 + ('institution', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
  25 + ('role', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
  26 + ('twitter', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
  27 + ('facebook', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
  28 + ('google_talk', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True, blank=True)),
  29 + ('github', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
  30 + ('webpage', self.gf('django.db.models.fields.CharField')(max_length=256, null=True, blank=True)),
  31 + ('verification_hash', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)),
  32 + ('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
  33 + ('bio', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
  34 + ))
  35 + db.send_create_signal(u'accounts', ['User'])
  36 +
  37 + # Adding M2M table for field groups on 'User'
  38 + m2m_table_name = db.shorten_name(u'accounts_user_groups')
  39 + db.create_table(m2m_table_name, (
  40 + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
  41 + ('user', models.ForeignKey(orm[u'accounts.user'], null=False)),
  42 + ('group', models.ForeignKey(orm[u'auth.group'], null=False))
  43 + ))
  44 + db.create_unique(m2m_table_name, ['user_id', 'group_id'])
  45 +
  46 + # Adding M2M table for field user_permissions on 'User'
  47 + m2m_table_name = db.shorten_name(u'accounts_user_user_permissions')
  48 + db.create_table(m2m_table_name, (
  49 + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
  50 + ('user', models.ForeignKey(orm[u'accounts.user'], null=False)),
  51 + ('permission', models.ForeignKey(orm[u'auth.permission'], null=False))
  52 + ))
  53 + db.create_unique(m2m_table_name, ['user_id', 'permission_id'])
  54 +
  55 +
  56 + def backwards(self, orm):
  57 + # Deleting model 'User'
  58 + db.delete_table(u'accounts_user')
  59 +
  60 + # Removing M2M table for field groups on 'User'
  61 + db.delete_table(db.shorten_name(u'accounts_user_groups'))
  62 +
  63 + # Removing M2M table for field user_permissions on 'User'
  64 + db.delete_table(db.shorten_name(u'accounts_user_user_permissions'))
  65 +
  66 +
  67 + models = {
  68 + u'accounts.user': {
  69 + 'Meta': {'object_name': 'User'},
  70 + 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
  71 + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
  72 + 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
  73 + 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  74 + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
  75 + 'github': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  76 + 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
  77 + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
  78 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  79 + 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  80 + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
  81 + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  82 + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  83 + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
  84 + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
  85 + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
  86 + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
  87 + 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  88 + 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  89 + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
  90 + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
  91 + 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
  92 + 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
  93 + },
  94 + u'auth.group': {
  95 + 'Meta': {'object_name': 'Group'},
  96 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  97 + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
  98 + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
  99 + },
  100 + u'auth.permission': {
  101 + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
  102 + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  103 + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
  104 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  105 + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
  106 + },
  107 + u'contenttypes.contenttype': {
  108 + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
  109 + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  110 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  111 + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  112 + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
  113 + }
  114 + }
  115 +
  116 + complete_apps = ['accounts']
0 117 \ No newline at end of file
... ...
src/accounts/migrations/0001_rename_auth_user_to_accounts_user.py
... ... @@ -1,59 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - db.rename_table('auth_user', 'accounts_user')
12   - db.rename_table('auth_user_groups', 'accounts_user_groups')
13   - db.rename_table('auth_user_user_permissions', 'accounts_user_user_permissions')
14   -
15   - def backwards(self, orm):
16   - db.rename_table('accounts_user', 'auth_user')
17   - db.rename_table('accounts_user_groups', 'auth_user_groups')
18   - db.rename_table('accounts_user_user_permissions', 'auth_user_user_permissions')
19   -
20   - models = {
21   - u'accounts.user': {
22   - 'Meta': {'object_name': 'User'},
23   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
24   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
25   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
26   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
27   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
28   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
29   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
30   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
31   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
32   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
33   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
34   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
35   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
36   - },
37   - u'auth.group': {
38   - 'Meta': {'object_name': 'Group'},
39   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
40   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
41   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
42   - },
43   - u'auth.permission': {
44   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
45   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
46   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
47   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
48   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
49   - },
50   - u'contenttypes.contenttype': {
51   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
52   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
56   - }
57   - }
58   -
59   - complete_apps = ['accounts']
src/accounts/migrations/0002_delete_sussumu_dup.py
... ... @@ -1,138 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import DataMigration
5   -from django.db import models
6   -
7   -class Migration(DataMigration):
8   -
9   - def forwards(self, orm):
10   - try:
11   - sussumu = orm['accounts.User'].objects.get(username='Sussumu')
12   - except orm['accounts.User'].DoesNotExist:
13   - return
14   - profile = orm['super_archives.UserProfile'].objects.get(user_id=sussumu.pk)
15   - sussumu.delete()
16   - profile.delete()
17   -
18   - def backwards(self, orm):
19   - "Write your backwards methods here."
20   -
21   - models = {
22   - u'accounts.user': {
23   - 'Meta': {'object_name': 'User'},
24   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
25   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
26   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
27   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
28   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
29   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
30   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
31   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
32   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
33   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
34   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
35   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
36   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
37   - },
38   - u'auth.group': {
39   - 'Meta': {'object_name': 'Group'},
40   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
41   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
42   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
43   - },
44   - u'auth.permission': {
45   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
46   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
47   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
48   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
49   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
50   - },
51   - u'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - u'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': u"orm['accounts.User']"})
65   - },
66   - u'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - u'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
80   - },
81   - u'super_archives.message': {
82   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
85   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
87   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
88   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - u'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - u'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - u'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
111   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
112   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
113   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
114   - },
115   - u'super_archives.userprofile': {
116   - 'Meta': {'object_name': 'UserProfile'},
117   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
118   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
119   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
120   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
123   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['accounts.User']", 'unique': 'True'}),
124   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
125   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
126   - },
127   - u'super_archives.vote': {
128   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
129   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
130   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
132   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
133   - }
134   - }
135   -
136   - complete_apps = ['accounts', 'super_archives']
137   - symmetrical = True
138   -
src/accounts/migrations/0003_auto__add_field_user_institution__add_field_user_role__add_field_user_.py
... ... @@ -1,122 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'User.institution'
12   - db.add_column(u'accounts_user', 'institution',
13   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True),
14   - keep_default=False)
15   -
16   - # Adding field 'User.role'
17   - db.add_column(u'accounts_user', 'role',
18   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True),
19   - keep_default=False)
20   -
21   - # Adding field 'User.twitter'
22   - db.add_column(u'accounts_user', 'twitter',
23   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True),
24   - keep_default=False)
25   -
26   - # Adding field 'User.facebook'
27   - db.add_column(u'accounts_user', 'facebook',
28   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True),
29   - keep_default=False)
30   -
31   - # Adding field 'User.google_talk'
32   - db.add_column(u'accounts_user', 'google_talk',
33   - self.gf('django.db.models.fields.EmailField')(max_length=75, null=True),
34   - keep_default=False)
35   -
36   - # Adding field 'User.webpage'
37   - db.add_column(u'accounts_user', 'webpage',
38   - self.gf('django.db.models.fields.CharField')(max_length=256, null=True),
39   - keep_default=False)
40   -
41   - # Adding field 'User.verification_hash'
42   - db.add_column(u'accounts_user', 'verification_hash',
43   - self.gf('django.db.models.fields.CharField')(max_length=32, null=True),
44   - keep_default=False)
45   -
46   - # Adding unique constraint on 'User', fields ['email']
47   - db.create_unique(u'accounts_user', ['email'])
48   -
49   -
50   - def backwards(self, orm):
51   - # Removing unique constraint on 'User', fields ['email']
52   - db.delete_unique(u'accounts_user', ['email'])
53   -
54   - # Deleting field 'User.institution'
55   - db.delete_column(u'accounts_user', 'institution')
56   -
57   - # Deleting field 'User.role'
58   - db.delete_column(u'accounts_user', 'role')
59   -
60   - # Deleting field 'User.twitter'
61   - db.delete_column(u'accounts_user', 'twitter')
62   -
63   - # Deleting field 'User.facebook'
64   - db.delete_column(u'accounts_user', 'facebook')
65   -
66   - # Deleting field 'User.google_talk'
67   - db.delete_column(u'accounts_user', 'google_talk')
68   -
69   - # Deleting field 'User.webpage'
70   - db.delete_column(u'accounts_user', 'webpage')
71   -
72   - # Deleting field 'User.verification_hash'
73   - db.delete_column(u'accounts_user', 'verification_hash')
74   -
75   -
76   - models = {
77   - u'accounts.user': {
78   - 'Meta': {'object_name': 'User'},
79   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
80   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
81   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
82   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
83   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
84   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
85   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
87   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
88   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
89   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
90   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
91   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
92   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
93   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
94   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
95   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
96   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
97   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
98   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
99   - },
100   - u'auth.group': {
101   - 'Meta': {'object_name': 'Group'},
102   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
104   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
105   - },
106   - u'auth.permission': {
107   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
108   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
109   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
110   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
112   - },
113   - u'contenttypes.contenttype': {
114   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
115   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
116   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
118   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
119   - }
120   - }
121   -
122   - complete_apps = ['accounts']
123 0 \ No newline at end of file
src/accounts/migrations/0004_copy_profile_data.py
... ... @@ -1,81 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import DataMigration
5   -from django.db import models
6   -
7   -class Migration(DataMigration):
8   -
9   - def forwards(self, orm):
10   - fields = ('institution', 'role', 'twitter', 'facebook',
11   - 'google_talk', 'webpage')
12   -
13   - for userprofile in orm['super_archives.UserProfile'].objects.iterator():
14   - user = orm['accounts.User'].objects.get(id=userprofile.user_id)
15   - for field in fields:
16   - setattr(user, field, getattr(userprofile, field))
17   - user.save()
18   -
19   - def backwards(self, orm):
20   - "Write your backwards methods here."
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
26   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
27   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
28   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
29   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
30   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
33   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
34   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
39   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
40   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
41   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
42   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
43   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
44   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
45   - },
46   - u'auth.group': {
47   - 'Meta': {'object_name': 'Group'},
48   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
49   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
50   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
51   - },
52   - u'auth.permission': {
53   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
54   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
55   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
56   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
58   - },
59   - u'contenttypes.contenttype': {
60   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
61   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
63   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
64   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
65   - },
66   - u'super_archives.userprofile': {
67   - 'Meta': {'object_name': 'UserProfile'},
68   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
69   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
70   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
72   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
73   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
74   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['accounts.User']", 'unique': 'True'}),
75   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
76   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
77   - }
78   - }
79   -
80   - complete_apps = ['accounts']
81   - symmetrical = True
src/accounts/migrations/0005_remove_host_from_social_accounts.py
... ... @@ -1,74 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -import urlparse
4   -from south.db import db
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -class Migration(DataMigration):
9   -
10   - def forwards(self, orm):
11   - for user in orm.User.objects.iterator():
12   - if user.twitter:
13   - user.twitter = user.twitter.split('/')[-1]
14   - if user.facebook:
15   - if '?' in user.facebook:
16   - query_string = user.facebook.split('?')[-1]
17   - query_dict = dict(urlparse.parse_qsl(query_string))
18   - user.facebook = query_dict.get('id')
19   - else:
20   - user.facebook = user.facebook.split('/')[-1]
21   -
22   - user.save()
23   -
24   - def backwards(self, orm):
25   - "Write your backwards methods here."
26   -
27   - models = {
28   - u'accounts.user': {
29   - 'Meta': {'object_name': 'User'},
30   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
31   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
32   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
34   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
35   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
36   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
37   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
39   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
40   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
41   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
42   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
43   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
44   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
45   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
46   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
47   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
48   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
49   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
50   - },
51   - u'auth.group': {
52   - 'Meta': {'object_name': 'Group'},
53   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
55   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
56   - },
57   - u'auth.permission': {
58   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
59   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
61   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
63   - },
64   - u'contenttypes.contenttype': {
65   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
66   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
69   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
70   - }
71   - }
72   -
73   - complete_apps = ['accounts']
74   - symmetrical = True
src/accounts/migrations/0006_auto__add_field_user_modified.py
... ... @@ -1,69 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -from south.db import db
3   -from south.v2 import SchemaMigration
4   -from django.db import models
5   -from django.utils import timezone
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'User.modified'
12   - db.add_column(u'accounts_user', 'modified',
13   - self.gf('django.db.models.fields.DateTimeField')(auto_now=True, default=timezone.now, blank=True),
14   - keep_default=False)
15   -
16   -
17   - def backwards(self, orm):
18   - # Deleting field 'User.modified'
19   - db.delete_column(u'accounts_user', 'modified')
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
26   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
27   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
28   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
29   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
30   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
34   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
39   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
40   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
41   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
42   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
43   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
44   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
45   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
46   - },
47   - u'auth.group': {
48   - 'Meta': {'object_name': 'Group'},
49   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
51   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
52   - },
53   - u'auth.permission': {
54   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
55   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
57   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
58   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
59   - },
60   - u'contenttypes.contenttype': {
61   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
62   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
63   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
65   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
66   - }
67   - }
68   -
69   - complete_apps = ['accounts']
src/accounts/migrations/0007_remove_at_from_username.py
... ... @@ -1,69 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import DataMigration
5   -from django.db import models
6   -
7   -class Migration(DataMigration):
8   -
9   - def forwards(self, orm):
10   - "Write your forwards methods here."
11   - # Note: Don't use "from appname.models import ModelName".
12   - # Use orm.ModelName to refer to models in this application,
13   - # and orm['appname.ModelName'] for models in other applications.
14   - for u in orm.User.objects.filter(username__contains='@'):
15   - u.username = u.username.split('@')[0]
16   - u.save()
17   -
18   - def backwards(self, orm):
19   - pass
20   -
21   - models = {
22   - u'accounts.user': {
23   - 'Meta': {'object_name': 'User'},
24   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
25   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
26   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
27   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
28   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
29   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
30   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
31   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
32   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
33   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
34   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
36   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
37   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
38   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
39   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
40   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
41   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
42   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
43   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
44   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
45   - },
46   - u'auth.group': {
47   - 'Meta': {'object_name': 'Group'},
48   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
49   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
50   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
51   - },
52   - u'auth.permission': {
53   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
54   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
55   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
56   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
58   - },
59   - u'contenttypes.contenttype': {
60   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
61   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
63   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
64   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
65   - }
66   - }
67   -
68   - complete_apps = ['accounts']
69   - symmetrical = True
src/accounts/migrations/0008_auto__add_field_user_bio.py
... ... @@ -1,70 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'User.bio'
12   - db.add_column(u'accounts_user', 'bio',
13   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
14   - keep_default=False)
15   -
16   -
17   - def backwards(self, orm):
18   - # Deleting field 'User.bio'
19   - db.delete_column(u'accounts_user', 'bio')
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
26   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
27   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
28   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
29   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
30   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
31   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
32   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
34   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
35   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
37   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
39   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
40   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
41   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
42   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
43   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
44   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
45   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
46   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
47   - },
48   - u'auth.group': {
49   - 'Meta': {'object_name': 'Group'},
50   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
52   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
53   - },
54   - u'auth.permission': {
55   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
56   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
57   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
58   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
60   - },
61   - u'contenttypes.contenttype': {
62   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
63   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
64   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
66   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
67   - }
68   - }
69   -
70   - complete_apps = ['accounts']
71 0 \ No newline at end of file
src/accounts/migrations/0009_auto__add_field_user_identi_ca.py
... ... @@ -1,71 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'User.identi_ca'
12   - db.add_column(u'accounts_user', 'identi_ca',
13   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
14   - keep_default=False)
15   -
16   -
17   - def backwards(self, orm):
18   - # Deleting field 'User.identi_ca'
19   - db.delete_column(u'accounts_user', 'identi_ca')
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
26   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
27   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
28   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
29   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
30   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
31   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
32   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'identi_ca': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
34   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
35   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
36   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
37   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
38   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
39   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
41   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
42   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
43   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
44   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
45   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
46   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
47   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
48   - },
49   - u'auth.group': {
50   - 'Meta': {'object_name': 'Group'},
51   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
53   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
54   - },
55   - u'auth.permission': {
56   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
57   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
58   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
59   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
61   - },
62   - u'contenttypes.contenttype': {
63   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
64   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
65   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
66   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
67   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
68   - }
69   - }
70   -
71   - complete_apps = ['accounts']
72 0 \ No newline at end of file
src/accounts/migrations/0010_auto__del_field_user_identi_ca__add_field_user_github.py
... ... @@ -1,79 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Deleting field 'User.identi_ca'
12   - db.delete_column(u'accounts_user', 'identi_ca')
13   -
14   - # Adding field 'User.github'
15   - db.add_column(u'accounts_user', 'github',
16   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
17   - keep_default=False)
18   -
19   -
20   - def backwards(self, orm):
21   - # Adding field 'User.identi_ca'
22   - db.add_column(u'accounts_user', 'identi_ca',
23   - self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
24   - keep_default=False)
25   -
26   - # Deleting field 'User.github'
27   - db.delete_column(u'accounts_user', 'github')
28   -
29   -
30   - models = {
31   - u'accounts.user': {
32   - 'Meta': {'object_name': 'User'},
33   - 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
34   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
35   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
36   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
37   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'github': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
39   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
41   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
43   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
44   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
46   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
47   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
48   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
49   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
50   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
51   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
52   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
53   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
54   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
55   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
56   - },
57   - u'auth.group': {
58   - 'Meta': {'object_name': 'Group'},
59   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
61   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
62   - },
63   - u'auth.permission': {
64   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
65   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
66   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
69   - },
70   - u'contenttypes.contenttype': {
71   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
72   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
73   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
74   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
75   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
76   - }
77   - }
78   -
79   - complete_apps = ['accounts']
80 0 \ No newline at end of file
src/badger/migrations/0001_initial.py
... ... @@ -11,13 +11,14 @@ class Migration(SchemaMigration):
11 11 # Adding model 'Badge'
12 12 db.create_table(u'badger_badge', (
13 13 (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
15   - ('description', self.gf('django.db.models.fields.CharField')(max_length=200)),
16   - ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
  14 + ('title', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
  15 + ('description', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
  16 + ('image_base64', self.gf('django.db.models.fields.TextField')()),
17 17 ('type', self.gf('django.db.models.fields.CharField')(max_length=200)),
18 18 ('user_attr', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
19 19 ('comparison', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)),
20 20 ('value', self.gf('django.db.models.fields.PositiveSmallIntegerField')(null=True, blank=True)),
  21 + ('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=100)),
21 22 ))
22 23 db.send_create_signal(u'badger', ['Badge'])
23 24  
... ... @@ -30,22 +31,43 @@ class Migration(SchemaMigration):
30 31 ))
31 32 db.create_unique(m2m_table_name, ['badge_id', 'user_id'])
32 33  
  34 + # Adding model 'BadgeI18N'
  35 + db.create_table(u'badger_badgei18n', (
  36 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  37 + ('i18n_language', self.gf('django.db.models.fields.CharField')(max_length=10)),
  38 + ('title', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
  39 + ('description', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
  40 + ('i18n_source', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', to=orm['badger.Badge'])),
  41 + ))
  42 + db.send_create_signal(u'badger', ['BadgeI18N'])
  43 +
  44 + # Adding unique constraint on 'BadgeI18N', fields ['i18n_source', 'i18n_language']
  45 + db.create_unique(u'badger_badgei18n', ['i18n_source_id', 'i18n_language'])
  46 +
33 47  
34 48 def backwards(self, orm):
  49 + # Removing unique constraint on 'BadgeI18N', fields ['i18n_source', 'i18n_language']
  50 + db.delete_unique(u'badger_badgei18n', ['i18n_source_id', 'i18n_language'])
  51 +
35 52 # Deleting model 'Badge'
36 53 db.delete_table(u'badger_badge')
37 54  
38 55 # Removing M2M table for field awardees on 'Badge'
39 56 db.delete_table(db.shorten_name(u'badger_badge_awardees'))
40 57  
  58 + # Deleting model 'BadgeI18N'
  59 + db.delete_table(u'badger_badgei18n')
  60 +
41 61  
42 62 models = {
43 63 u'accounts.user': {
44 64 'Meta': {'object_name': 'User'},
  65 + 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
45 66 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46 67 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
47 68 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
48 69 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
  70 + 'github': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
49 71 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
50 72 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
51 73 u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
... ... @@ -55,6 +77,7 @@ class Migration(SchemaMigration):
55 77 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56 78 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57 79 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
  80 + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
58 81 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59 82 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
60 83 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
... ... @@ -77,17 +100,26 @@ class Migration(SchemaMigration):
77 100 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
78 101 },
79 102 u'badger.badge': {
80   - 'Meta': {'object_name': 'Badge'},
  103 + 'Meta': {'ordering': "['order']", 'object_name': 'Badge'},
81 104 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
82 105 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
83   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
  106 + 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
84 107 u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
86   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
  108 + 'image_base64': ('django.db.models.fields.TextField', [], {}),
  109 + 'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
  110 + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
87 111 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
88 112 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
89 113 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
90 114 },
  115 + u'badger.badgei18n': {
  116 + 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
  117 + 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
  118 + 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
  119 + 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
  120 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  121 + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
  122 + },
91 123 u'contenttypes.contenttype': {
92 124 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
93 125 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
... ...
src/badger/migrations/0002_auto__add_field_badge_title_en__add_field_badge_title_es__add_field_ba.py
... ... @@ -1,120 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'Badge.title_en'
12   - db.add_column(u'badger_badge', 'title_en',
13   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
14   - keep_default=False)
15   -
16   - # Adding field 'Badge.title_es'
17   - db.add_column(u'badger_badge', 'title_es',
18   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
19   - keep_default=False)
20   -
21   - # Adding field 'Badge.description_en'
22   - db.add_column(u'badger_badge', 'description_en',
23   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
24   - keep_default=False)
25   -
26   - # Adding field 'Badge.description_es'
27   - db.add_column(u'badger_badge', 'description_es',
28   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
29   - keep_default=False)
30   -
31   -
32   - # Changing field 'Badge.description'
33   - db.alter_column(u'badger_badge', 'description', self.gf('django.db.models.fields.CharField')(max_length=200, null=True))
34   -
35   - # Changing field 'Badge.title'
36   - db.alter_column(u'badger_badge', 'title', self.gf('django.db.models.fields.CharField')(max_length=200, null=True))
37   -
38   - def backwards(self, orm):
39   - # Deleting field 'Badge.title_en'
40   - db.delete_column(u'badger_badge', 'title_en')
41   -
42   - # Deleting field 'Badge.title_es'
43   - db.delete_column(u'badger_badge', 'title_es')
44   -
45   - # Deleting field 'Badge.description_en'
46   - db.delete_column(u'badger_badge', 'description_en')
47   -
48   - # Deleting field 'Badge.description_es'
49   - db.delete_column(u'badger_badge', 'description_es')
50   -
51   -
52   - # Changing field 'Badge.description'
53   - db.alter_column(u'badger_badge', 'description', self.gf('django.db.models.fields.CharField')(default='', max_length=200))
54   -
55   - # Changing field 'Badge.title'
56   - db.alter_column(u'badger_badge', 'title', self.gf('django.db.models.fields.CharField')(default='', max_length=200))
57   -
58   - models = {
59   - u'accounts.user': {
60   - 'Meta': {'object_name': 'User'},
61   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
62   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
63   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
64   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
65   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
66   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
69   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
70   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
71   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
72   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
73   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
74   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
75   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
76   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
77   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
78   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
79   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
80   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
81   - },
82   - u'auth.group': {
83   - 'Meta': {'object_name': 'Group'},
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
86   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
87   - },
88   - u'auth.permission': {
89   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
90   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
91   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
92   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
93   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
94   - },
95   - u'badger.badge': {
96   - 'Meta': {'object_name': 'Badge'},
97   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
98   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
99   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
100   - 'description_en': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
101   - 'description_es': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
102   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
104   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
105   - 'title_en': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
106   - 'title_es': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
107   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
108   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
109   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
110   - },
111   - u'contenttypes.contenttype': {
112   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
113   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
114   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
115   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
116   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
117   - }
118   - }
119   -
120   - complete_apps = ['badger']
121 0 \ No newline at end of file
src/badger/migrations/0003_auto__add_badgei18n__add_unique_badgei18n_i18n_source_i18n_language__d.py
... ... @@ -1,131 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding model 'BadgeI18N'
12   - db.create_table(u'badger_badgei18n', (
13   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('i18n_language', self.gf('django.db.models.fields.CharField')(max_length=10)),
15   - ('title', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
16   - ('description', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
17   - ('i18n_source', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', to=orm['badger.Badge'])),
18   - ))
19   - db.send_create_signal(u'badger', ['BadgeI18N'])
20   -
21   - # Adding unique constraint on 'BadgeI18N', fields ['i18n_source', 'i18n_language']
22   - db.create_unique(u'badger_badgei18n', ['i18n_source_id', 'i18n_language'])
23   -
24   - # Deleting field 'Badge.title_en'
25   - db.delete_column(u'badger_badge', 'title_en')
26   -
27   - # Deleting field 'Badge.description_en'
28   - db.delete_column(u'badger_badge', 'description_en')
29   -
30   - # Deleting field 'Badge.title_es'
31   - db.delete_column(u'badger_badge', 'title_es')
32   -
33   - # Deleting field 'Badge.description_es'
34   - db.delete_column(u'badger_badge', 'description_es')
35   -
36   -
37   - def backwards(self, orm):
38   - # Removing unique constraint on 'BadgeI18N', fields ['i18n_source', 'i18n_language']
39   - db.delete_unique(u'badger_badgei18n', ['i18n_source_id', 'i18n_language'])
40   -
41   - # Deleting model 'BadgeI18N'
42   - db.delete_table(u'badger_badgei18n')
43   -
44   - # Adding field 'Badge.title_en'
45   - db.add_column(u'badger_badge', 'title_en',
46   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
47   - keep_default=False)
48   -
49   - # Adding field 'Badge.description_en'
50   - db.add_column(u'badger_badge', 'description_en',
51   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
52   - keep_default=False)
53   -
54   - # Adding field 'Badge.title_es'
55   - db.add_column(u'badger_badge', 'title_es',
56   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
57   - keep_default=False)
58   -
59   - # Adding field 'Badge.description_es'
60   - db.add_column(u'badger_badge', 'description_es',
61   - self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
62   - keep_default=False)
63   -
64   -
65   - models = {
66   - u'accounts.user': {
67   - 'Meta': {'object_name': 'User'},
68   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
70   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
71   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
72   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
73   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
74   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
75   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
76   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
77   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
78   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
79   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
80   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
81   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
82   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
83   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
84   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
85   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
86   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
87   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
88   - },
89   - u'auth.group': {
90   - 'Meta': {'object_name': 'Group'},
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
93   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
94   - },
95   - u'auth.permission': {
96   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
97   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
98   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
99   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
101   - },
102   - u'badger.badge': {
103   - 'Meta': {'object_name': 'Badge'},
104   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
105   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
106   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
107   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
109   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
110   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
111   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
112   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
113   - },
114   - u'badger.badgei18n': {
115   - 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
116   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
117   - 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
118   - 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
119   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
120   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
121   - },
122   - u'contenttypes.contenttype': {
123   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
124   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
125   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
127   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
128   - }
129   - }
130   -
131   - complete_apps = ['badger']
132 0 \ No newline at end of file
src/badger/migrations/0004_auto__add_field_badge_order.py
... ... @@ -1,89 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'Badge.order'
12   - db.add_column(u'badger_badge', 'order',
13   - self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=100),
14   - keep_default=False)
15   -
16   -
17   - def backwards(self, orm):
18   - # Deleting field 'Badge.order'
19   - db.delete_column(u'badger_badge', 'order')
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
26   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
27   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
28   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
29   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
30   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
34   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
39   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
40   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
41   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
42   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
43   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
44   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
45   - },
46   - u'auth.group': {
47   - 'Meta': {'object_name': 'Group'},
48   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
49   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
50   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
51   - },
52   - u'auth.permission': {
53   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
54   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
55   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
56   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
58   - },
59   - u'badger.badge': {
60   - 'Meta': {'ordering': "['order']", 'object_name': 'Badge'},
61   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
62   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
63   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
64   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
66   - 'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
67   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
68   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
69   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
70   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
71   - },
72   - u'badger.badgei18n': {
73   - 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
74   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
75   - 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
76   - 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
77   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
79   - },
80   - u'contenttypes.contenttype': {
81   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
82   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
83   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
85   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
86   - }
87   - }
88   -
89   - complete_apps = ['badger']
90 0 \ No newline at end of file
src/badger/migrations/0005_auto__add_field_badge_image_base64.py
... ... @@ -1,91 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding field 'Badge.image_base64'
12   - db.add_column(u'badger_badge', 'image_base64',
13   - self.gf('django.db.models.fields.TextField')(default=''),
14   - keep_default=False)
15   -
16   -
17   - def backwards(self, orm):
18   - # Deleting field 'Badge.image_base64'
19   - db.delete_column(u'badger_badge', 'image_base64')
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
26   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
27   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
28   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
29   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
30   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
34   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
39   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
40   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
41   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
42   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
43   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
44   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
45   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
46   - },
47   - u'auth.group': {
48   - 'Meta': {'object_name': 'Group'},
49   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
51   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
52   - },
53   - u'auth.permission': {
54   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
55   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
57   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
58   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
59   - },
60   - u'badger.badge': {
61   - 'Meta': {'ordering': "['order']", 'object_name': 'Badge'},
62   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
63   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
64   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
65   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
66   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
67   - 'image_base64': ('django.db.models.fields.TextField', [], {}),
68   - 'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
69   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
70   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
71   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
72   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
73   - },
74   - u'badger.badgei18n': {
75   - 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
76   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
77   - 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
78   - 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
79   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
80   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
81   - },
82   - u'contenttypes.contenttype': {
83   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
84   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
85   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
87   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
88   - }
89   - }
90   -
91   - complete_apps = ['badger']
92 0 \ No newline at end of file
src/badger/migrations/0006_imgpath_to_base64_field.py
... ... @@ -1,94 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import base64
3   -import os
4   -
5   -import datetime
6   -from south.db import db
7   -from south.v2 import DataMigration
8   -from django.db import models
9   -from django.conf import settings
10   -
11   -class Migration(DataMigration):
12   -
13   - def forwards(self, orm):
14   - for obj in orm.Badge.objects.all():
15   - img = open(os.path.join(settings.MEDIA_ROOT, obj.image.path))
16   - obj.image_base64 = base64.b64encode(img.read())
17   - obj.save()
18   -
19   - def backwards(self, orm):
20   - for obj in orm.Badge.objects.all():
21   - obj.image_base64 = ''
22   - obj.save()
23   -
24   - models = {
25   - u'accounts.user': {
26   - 'Meta': {'object_name': 'User'},
27   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
28   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
29   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
30   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
31   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
32   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
33   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
34   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
35   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
36   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
37   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
38   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
39   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
41   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
42   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
43   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
44   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
45   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
46   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
47   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
48   - },
49   - u'auth.group': {
50   - 'Meta': {'object_name': 'Group'},
51   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
53   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
54   - },
55   - u'auth.permission': {
56   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
57   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
58   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
59   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
61   - },
62   - u'badger.badge': {
63   - 'Meta': {'ordering': "['order']", 'object_name': 'Badge'},
64   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
65   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
66   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
69   - 'image_base64': ('django.db.models.fields.TextField', [], {}),
70   - 'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
71   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
72   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
73   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
74   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
75   - },
76   - u'badger.badgei18n': {
77   - 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
78   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
79   - 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
80   - 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
81   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
82   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
83   - },
84   - u'contenttypes.contenttype': {
85   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
86   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
87   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
89   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
90   - }
91   - }
92   -
93   - complete_apps = ['badger']
94   - symmetrical = True
src/badger/migrations/0007_auto__del_field_badge_image.py
... ... @@ -1,90 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Deleting field 'Badge.image'
12   - db.delete_column(u'badger_badge', 'image')
13   -
14   -
15   - def backwards(self, orm):
16   - # Adding field 'Badge.image'
17   - db.add_column(u'badger_badge', 'image',
18   - self.gf('django.db.models.fields.files.ImageField')(default='', max_length=100),
19   - keep_default=False)
20   -
21   -
22   - models = {
23   - u'accounts.user': {
24   - 'Meta': {'object_name': 'User'},
25   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
26   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
27   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
28   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
29   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
30   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
34   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
35   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
36   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
38   - 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
39   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
40   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
41   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
42   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
43   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
44   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
45   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
46   - },
47   - u'auth.group': {
48   - 'Meta': {'object_name': 'Group'},
49   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
51   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
52   - },
53   - u'auth.permission': {
54   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
55   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
57   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
58   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
59   - },
60   - u'badger.badge': {
61   - 'Meta': {'ordering': "['order']", 'object_name': 'Badge'},
62   - 'awardees': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['accounts.User']", 'null': 'True', 'blank': 'True'}),
63   - 'comparison': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
64   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
65   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
66   - 'image_base64': ('django.db.models.fields.TextField', [], {}),
67   - 'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '100'}),
68   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
69   - 'type': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
70   - 'user_attr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
71   - 'value': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
72   - },
73   - u'badger.badgei18n': {
74   - 'Meta': {'unique_together': "(('i18n_source', 'i18n_language'),)", 'object_name': 'BadgeI18N'},
75   - 'description': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
76   - 'i18n_language': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
77   - 'i18n_source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': u"orm['badger.Badge']"}),
78   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79   - 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
80   - },
81   - u'contenttypes.contenttype': {
82   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
83   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
86   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
87   - }
88   - }
89   -
90   - complete_apps = ['badger']
91 0 \ No newline at end of file
src/proxy/migrations/0001_create_views.py
... ... @@ -1,115 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from django.db import connections
4   -from south.db import db
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -
9   -class Migration(DataMigration):
10   -
11   - def forwards(self, orm):
12   - # Selecting trac database
13   - connection = connections['trac']
14   -
15   - cursor = connection.cursor()
16   - cursor.execute('''
17   - CREATE OR REPLACE VIEW wiki_view AS SELECT
18   - wiki.name AS name,
19   - (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
20   - AND wiki2.version = MAX(wiki.version)) AS wiki_text,
21   - (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
22   - AND wiki3.version = 1) AS author,
23   - string_agg(DISTINCT wiki.author, ', ') AS collaborators,
24   - TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS created,
25   - TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS modified
26   - FROM wiki
27   - GROUP BY wiki.name;
28   -
29   - CREATE OR REPLACE VIEW ticket_view AS SELECT
30   - ticket.id AS id,
31   - ticket.summary as summary,
32   - ticket.description as description,
33   - ticket.milestone as milestone,
34   - ticket.priority as priority,
35   - ticket.component as component,
36   - ticket.version as version,
37   - ticket.severity as severity,
38   - ticket.reporter as reporter,
39   - ticket.reporter as author,
40   - ticket.status as status,
41   - ticket.keywords as keywords,
42   - (SELECT
43   - string_agg(DISTINCT ticket_change.author, ', ')
44   - FROM ticket_change WHERE ticket_change.ticket = ticket.id
45   - GROUP BY ticket_change.ticket) as collaborators,
46   - TIMESTAMP WITH TIME ZONE 'epoch' + (time/1000000)* INTERVAL '1s' AS created,
47   - TIMESTAMP WITH TIME ZONE 'epoch' + (changetime/1000000) * INTERVAL '1s' AS modified
48   - FROM ticket;
49   -
50   - CREATE OR REPLACE VIEW revision_view AS SELECT
51   - revision.rev,
52   - revision.author,
53   - revision.message,
54   - repository.value AS repository_name,
55   - TIMESTAMP WITH TIME ZONE 'epoch' + (revision.time/1000000) * INTERVAL '1s' AS created
56   - FROM revision
57   - INNER JOIN repository ON(
58   - repository.id = revision.repos
59   - AND repository.name = 'name'
60   - AND repository.value != ''
61   - );
62   - ''')
63   -
64   - def backwards(self, orm):
65   - # Selecting trac database
66   - connection = connections['trac']
67   -
68   - cursor = connection.cursor()
69   - cursor.execute('''
70   - DROP VIEW IF EXISTS revision_view;
71   - DROP VIEW IF EXISTS ticket_view;
72   - DROP VIEW IF EXISTS wiki_view;
73   - ''')
74   -
75   -
76   - models = {
77   - u'proxy.revision': {
78   - 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
79   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
80   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
81   - 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
82   - 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
83   - 'rev': ('django.db.models.fields.TextField', [], {'primary_key': 'True'})
84   - },
85   - u'proxy.ticket': {
86   - 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
87   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
88   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
89   - 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
90   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
91   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
92   - 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
93   - 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
94   - 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
95   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
96   - 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
97   - 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
98   - 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
99   - 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
100   - 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
101   - 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
102   - },
103   - u'proxy.wiki': {
104   - 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
105   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
106   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
107   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
108   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
109   - 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
110   - 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
111   - }
112   - }
113   -
114   - complete_apps = ['proxy']
115   - symmetrical = True
src/proxy/migrations/0001_initial.py 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +# -*- coding: utf-8 -*-
  2 +import datetime
  3 +from south.db import db
  4 +from south.v2 import SchemaMigration
  5 +from django.db import models
  6 +
  7 +
  8 +class Migration(SchemaMigration):
  9 +
  10 + def forwards(self, orm):
  11 + pass
  12 +
  13 + def backwards(self, orm):
  14 + pass
  15 +
  16 + models = {
  17 + u'proxy.attachment': {
  18 + 'Meta': {'object_name': 'Attachment', 'db_table': "'attachment_view'", 'managed': 'False'},
  19 + 'attach_id': ('django.db.models.fields.TextField', [], {}),
  20 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  21 + 'created': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
  22 + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  23 + 'filename': ('django.db.models.fields.TextField', [], {}),
  24 + 'mimetype': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  25 + 'size': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
  26 + 'url': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  27 + 'used_by': ('django.db.models.fields.TextField', [], {})
  28 + },
  29 + u'proxy.revision': {
  30 + 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
  31 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  32 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  33 + 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  34 + 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  35 + 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  36 + 'rev': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  37 + },
  38 + u'proxy.ticket': {
  39 + 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
  40 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  41 + 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  42 + 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  43 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  44 + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  45 + 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
  46 + 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  47 + 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  48 + 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  49 + 'modified_by': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  50 + 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  51 + 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  52 + 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  53 + 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  54 + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  55 + 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  56 + },
  57 + u'proxy.ticketcollabcount': {
  58 + 'Meta': {'object_name': 'TicketCollabCount', 'db_table': "'ticket_collab_count_view'", 'managed': 'False'},
  59 + 'author': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  60 + 'count': ('django.db.models.fields.IntegerField', [], {})
  61 + },
  62 + u'proxy.wiki': {
  63 + 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
  64 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  65 + 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  66 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  67 + 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  68 + 'modified_by': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  69 + 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  70 + 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  71 + },
  72 + u'proxy.wikicollabcount': {
  73 + 'Meta': {'object_name': 'WikiCollabCount', 'db_table': "'wiki_collab_count_view'", 'managed': 'False'},
  74 + 'author': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  75 + 'count': ('django.db.models.fields.IntegerField', [], {})
  76 + }
  77 + }
  78 +
  79 + complete_apps = ['proxy']
0 80 \ No newline at end of file
... ...
src/proxy/migrations/0002_add_key_to_revision_view.py
... ... @@ -1,79 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from django.db import connections
4   -from south.db import db
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -class Migration(DataMigration):
9   -
10   - def forwards(self, orm):
11   - # Selecting trac database
12   - connection = connections['trac']
13   -
14   - cursor = connection.cursor()
15   - cursor.execute('''
16   - CREATE OR REPLACE VIEW revision_view AS SELECT
17   - revision.rev,
18   - revision.author,
19   - revision.message,
20   - repository.value AS repository_name,
21   - TIMESTAMP WITH TIME ZONE 'epoch' + (revision.time/1000000) * INTERVAL '1s' AS created,
22   - CONCAT(revision.repos, '-', revision.rev) AS key
23   - FROM revision
24   - INNER JOIN repository ON(
25   - repository.id = revision.repos
26   - AND repository.name = 'name'
27   - AND repository.value != ''
28   - );
29   - ''')
30   -
31   - def backwards(self, orm):
32   - # Selecting trac database
33   - connection = connections['trac']
34   -
35   - cursor = connection.cursor()
36   - cursor.execute('''
37   - ALTER VIEW revision_view ALTER COLUMN key DROP DEFAULT;
38   - ''')
39   -
40   - models = {
41   - u'proxy.revision': {
42   - 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
43   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
44   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
45   - 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
46   - 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
47   - 'rev': ('django.db.models.fields.TextField', [], {'primary_key': 'True'})
48   - },
49   - u'proxy.ticket': {
50   - 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
51   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
52   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
53   - 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
54   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
55   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
56   - 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
57   - 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
58   - 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
59   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
60   - 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
61   - 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
62   - 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
63   - 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
64   - 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
65   - 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
66   - },
67   - u'proxy.wiki': {
68   - 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
69   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
70   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
71   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
72   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
73   - 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
74   - 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
75   - }
76   - }
77   -
78   - complete_apps = ['proxy']
79   - symmetrical = True
src/proxy/migrations/0003_create_attachment_view.py
... ... @@ -1,87 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from django.db import connections
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -class Migration(DataMigration):
9   -
10   - def forwards(self, orm):
11   - # Selecting trac database
12   - connection = connections['trac']
13   -
14   - cursor = connection.cursor()
15   - cursor.execute('''
16   - CREATE OR REPLACE VIEW attachment_view AS SELECT
17   - CONCAT(attachment.type, '/' , attachment.id, '/', attachment.filename) AS url,
18   - attachment.type AS used_by,
19   - attachment.filename AS filename,
20   - attachment.id as attach_id,
21   - (SELECT LOWER(SUBSTRING(attachment.filename FROM '\.(\w+)$'))) AS mimetype,
22   - attachment.author AS author,
23   - attachment.description AS description,
24   - attachment.size AS size,
25   - TIMESTAMP WITH TIME ZONE 'epoch' + (attachment.time/1000000)* INTERVAL '1s' AS created
26   - FROM attachment;
27   - ''')
28   -
29   - def backwards(self, orm):
30   - # Selecting trac database
31   - connection = connections['trac']
32   -
33   - cursor = connection.cursor()
34   - cursor.execute('DROP VIEW IF EXISTS attachment_view;')
35   -
36   - models = {
37   - u'proxy.attachment': {
38   - 'Meta': {'object_name': 'Attachment', 'db_table': "'attachment'", 'managed': 'False'},
39   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
40   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
41   - 'filename': ('django.db.models.fields.TextField', [], {}),
42   - 'id': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
43   - 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
44   - 'size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
45   - 'time': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
46   - 'type': ('django.db.models.fields.TextField', [], {})
47   - },
48   - u'proxy.revision': {
49   - 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
50   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
51   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
52   - 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
53   - 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
54   - 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
55   - 'rev': ('django.db.models.fields.TextField', [], {'blank': 'True'})
56   - },
57   - u'proxy.ticket': {
58   - 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
59   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
60   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
61   - 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
62   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
63   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
64   - 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
65   - 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
66   - 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
67   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
68   - 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
69   - 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
70   - 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
71   - 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
72   - 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
73   - 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
74   - },
75   - u'proxy.wiki': {
76   - 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
77   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
78   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
79   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
80   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
81   - 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
82   - 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
83   - }
84   - }
85   -
86   - complete_apps = ['proxy']
87   - symmetrical = True
src/proxy/migrations/0004_replace_wiki_view.py
... ... @@ -1,102 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from django.db import connections
4   -from south.db import db
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -class Migration(DataMigration):
9   -
10   - def forwards(self, orm):
11   - # Selecting trac database
12   - connection = connections['trac']
13   -
14   - cursor = connection.cursor()
15   -
16   - cursor.execute('''
17   - CREATE OR REPLACE VIEW wiki_view AS SELECT
18   - wiki.name AS name,
19   - (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
20   - AND wiki2.version = MAX(wiki.version)) AS wiki_text,
21   - (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
22   - AND wiki3.version = 1) AS author,
23   - string_agg(DISTINCT wiki.author, ', ') AS collaborators,
24   - TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS created,
25   - TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS modified
26   - FROM wiki
27   - GROUP BY wiki.name;
28   - ''')
29   -
30   - def backwards(self, orm):
31   - # Selecting trac database
32   - connection = connections['trac']
33   -
34   - cursor = connection.cursor()
35   -
36   - cursor.execute('''
37   - CREATE OR REPLACE VIEW wiki_view AS SELECT
38   - wiki.name AS name,
39   - (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
40   - AND wiki2.version = MAX(wiki.version)) AS wiki_text,
41   - (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
42   - AND wiki3.version = 1) AS author,
43   - string_agg(DISTINCT wiki.author, ', ') AS collaborators,
44   - TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS created,
45   - TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS modified
46   - FROM wiki
47   - GROUP BY wiki.name;
48   - ''')
49   -
50   - models = {
51   - u'proxy.attachment': {
52   - 'Meta': {'object_name': 'Attachment', 'db_table': "'attachment_view'", 'managed': 'False'},
53   - 'attach_id': ('django.db.models.fields.TextField', [], {}),
54   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
55   - 'created': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
56   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
57   - 'filename': ('django.db.models.fields.TextField', [], {}),
58   - 'mimetype': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
59   - 'size': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
60   - 'url': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
61   - 'used_by': ('django.db.models.fields.TextField', [], {})
62   - },
63   - u'proxy.revision': {
64   - 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
65   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
66   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
67   - 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
68   - 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
69   - 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
70   - 'rev': ('django.db.models.fields.TextField', [], {'blank': 'True'})
71   - },
72   - u'proxy.ticket': {
73   - 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
74   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
75   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
76   - 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
77   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
78   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
79   - 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
80   - 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
81   - 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
82   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
83   - 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
84   - 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
85   - 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
86   - 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
87   - 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
88   - 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
89   - },
90   - u'proxy.wiki': {
91   - 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
92   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
93   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
94   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
95   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
96   - 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
97   - 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
98   - }
99   - }
100   -
101   - complete_apps = ['proxy']
102   - symmetrical = True
src/proxy/migrations/0005_adding_modified_by.py
... ... @@ -1,125 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from django.db import connections
4   -from south.db import db
5   -from south.v2 import DataMigration
6   -from django.db import models
7   -
8   -class Migration(DataMigration):
9   -
10   - def forwards(self, orm):
11   - # Selecting trac database
12   - connection = connections['trac']
13   -
14   - cursor = connection.cursor()
15   - cursor.execute('''
16   - CREATE OR REPLACE VIEW wiki_view AS SELECT
17   - wiki.name AS name,
18   - (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
19   - AND wiki2.version = MAX(wiki.version)) AS wiki_text,
20   - (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
21   - AND wiki3.version = 1) AS author,
22   - string_agg(DISTINCT wiki.author, ', ') AS collaborators,
23   - TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS created,
24   - TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS modified,
25   - (SELECT wiki4.author FROM wiki AS wiki4 WHERE wiki4.name = wiki.name
26   - AND wiki4.version = MAX(wiki.version)) AS modified_by
27   - FROM wiki
28   - GROUP BY wiki.name;
29   -
30   - CREATE OR REPLACE VIEW ticket_view AS SELECT
31   - ticket.id AS id,
32   - ticket.summary as summary,
33   - ticket.description as description,
34   - ticket.milestone as milestone,
35   - ticket.priority as priority,
36   - ticket.component as component,
37   - ticket.version as version,
38   - ticket.severity as severity,
39   - ticket.reporter as reporter,
40   - ticket.reporter as author,
41   - ticket.status as status,
42   - ticket.keywords as keywords,
43   - (SELECT
44   - string_agg(DISTINCT ticket_change.author, ', ')
45   - FROM ticket_change WHERE ticket_change.ticket = ticket.id
46   - GROUP BY ticket_change.ticket) as collaborators,
47   - TIMESTAMP WITH TIME ZONE 'epoch' + (time/1000000)* INTERVAL '1s' AS created,
48   - TIMESTAMP WITH TIME ZONE 'epoch' + (changetime/1000000) * INTERVAL '1s' AS modified,
49   - (SELECT
50   - ticket_change.author
51   - FROM ticket_change
52   - WHERE ticket_change.ticket = ticket.id
53   - AND ticket_change.time = ticket.changetime
54   - LIMIT 1
55   - ) AS modified_by
56   - FROM ticket;
57   - ''')
58   -
59   -
60   - def backwards(self, orm):
61   - # Selecting trac database
62   - connection = connections['trac']
63   -
64   - cursor = connection.cursor()
65   - cursor.execute('''
66   - ALTER VIEW wiki_view ALTER COLUMN modified_by DROP DEFAULT;
67   - ALTER VIEW ticket_view ALTER COLUMN modified_by DROP DEFAULT;
68   - ''')
69   -
70   -
71   - models = {
72   - u'proxy.attachment': {
73   - 'Meta': {'object_name': 'Attachment', 'db_table': "'attachment_view'", 'managed': 'False'},
74   - 'attach_id': ('django.db.models.fields.TextField', [], {}),
75   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
76   - 'created': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
77   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
78   - 'filename': ('django.db.models.fields.TextField', [], {}),
79   - 'mimetype': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
80   - 'size': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
81   - 'url': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
82   - 'used_by': ('django.db.models.fields.TextField', [], {})
83   - },
84   - u'proxy.revision': {
85   - 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
86   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
87   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
88   - 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
89   - 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
90   - 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
91   - 'rev': ('django.db.models.fields.TextField', [], {'blank': 'True'})
92   - },
93   - u'proxy.ticket': {
94   - 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
95   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
96   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
97   - 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
98   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
99   - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
100   - 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
101   - 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
102   - 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
103   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
104   - 'modified_by': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
105   - 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
106   - 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
107   - 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
108   - 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
109   - 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
110   - 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
111   - },
112   - u'proxy.wiki': {
113   - 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
114   - 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
115   - 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
116   - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
117   - 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
118   - 'modified_by': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
119   - 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
120   - 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
121   - }
122   - }
123   -
124   - complete_apps = ['proxy']
125   - symmetrical = True
src/proxy/migrations/0006_views_to_count_collabs.py
... ... @@ -1,46 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -from django.db import connections
3   -from south.v2 import DataMigration
4   -
5   -class Migration(DataMigration):
6   -
7   - def forwards(self, orm):
8   - # Selecting trac database
9   - connection = connections['trac']
10   -
11   - cursor = connection.cursor()
12   - cursor.execute('''
13   - CREATE OR REPLACE VIEW ticket_collab_count_view AS
14   - SELECT
15   - COALESCE (t1.author, t2.author) as author,
16   - (COALESCE(t1.count, 0) + COALESCE(t2.count, 0)) as count
17   - FROM
18   - (SELECT author, count(*) as count
19   - FROM ticket_change
20   - GROUP BY author
21   - ORDER BY author
22   - ) AS t1
23   - FULL OUTER JOIN
24   - (SELECT reporter as author, count(*) as count
25   - FROM ticket
26   - GROUP BY reporter
27   - ORDER BY reporter
28   - ) AS t2
29   - ON t1.author = t2.author;
30   -
31   - CREATE OR REPLACE VIEW wiki_collab_count_view AS
32   - SELECT author, count(*) from wiki GROUP BY author;
33   - ''')
34   -
35   - def backwards(self, orm):
36   - # Selecting trac database
37   - connection = connections['trac']
38   -
39   - cursor = connection.cursor()
40   - cursor.execute('''
41   - DROP VIEW ticket_collab_count_view;
42   - DROP VIEW wiki_collab_count_view;
43   - ''')
44   -
45   - complete_apps = ['proxy']
46   - symmetrical = True
src/super_archives/migrations/0001_initial.py
1   -# encoding: utf-8
  1 +# -*- coding: utf-8 -*-
2 2 import datetime
3 3 from south.db import db
4 4 from south.v2 import SchemaMigration
5 5 from django.db import models
6 6  
  7 +
7 8 class Migration(SchemaMigration):
8 9  
9 10 def forwards(self, orm):
10   -
11   - # Adding model 'PageHit'
12   - db.create_table('super_archives_pagehit', (
13   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('url_path', self.gf('django.db.models.fields.CharField')(unique=True, max_length=2048, db_index=True)),
15   - ('hit_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
  11 + # Adding model 'EmailAddressValidation'
  12 + db.create_table(u'super_archives_emailaddressvalidation', (
  13 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  14 + ('address', self.gf('django.db.models.fields.EmailField')(unique=True, max_length=75)),
  15 + ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='emails_not_validated', null=True, to=orm['accounts.User'])),
  16 + ('validation_key', self.gf('django.db.models.fields.CharField')(default='143df80aa814429f9938d3b165148480', max_length=32, null=True)),
  17 + ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
16 18 ))
17   - db.send_create_signal('super_archives', ['PageHit'])
  19 + db.send_create_signal(u'super_archives', ['EmailAddressValidation'])
  20 +
  21 + # Adding unique constraint on 'EmailAddressValidation', fields ['user', 'address']
  22 + db.create_unique(u'super_archives_emailaddressvalidation', ['user_id', 'address'])
18 23  
19 24 # Adding model 'EmailAddress'
20   - db.create_table('super_archives_emailaddress', (
21   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
22   - ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='emails', null=True, to=orm['auth.User'])),
  25 + db.create_table(u'super_archives_emailaddress', (
  26 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  27 + ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='emails', null=True, on_delete=models.SET_NULL, to=orm['accounts.User'])),
23 28 ('address', self.gf('django.db.models.fields.EmailField')(unique=True, max_length=75)),
24   - ('real_name', self.gf('django.db.models.fields.CharField')(max_length=64, blank=True)),
  29 + ('real_name', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=64, blank=True)),
25 30 ('md5', self.gf('django.db.models.fields.CharField')(max_length=32, null=True)),
26 31 ))
27   - db.send_create_signal('super_archives', ['EmailAddress'])
28   -
29   - # Adding model 'UserProfile'
30   - db.create_table('super_archives_userprofile', (
31   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
32   - ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
33   - ('institution', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
34   - ('role', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
35   - ('twitter', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
36   - ('facebook', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
37   - ('google_talk', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)),
38   - ('webpage', self.gf('django.db.models.fields.CharField')(max_length=256)),
39   - ))
40   - db.send_create_signal('super_archives', ['UserProfile'])
  32 + db.send_create_signal(u'super_archives', ['EmailAddress'])
41 33  
42 34 # Adding model 'MailingList'
43   - db.create_table('super_archives_mailinglist', (
44   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  35 + db.create_table(u'super_archives_mailinglist', (
  36 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
45 37 ('name', self.gf('django.db.models.fields.CharField')(max_length=80)),
46 38 ('email', self.gf('django.db.models.fields.EmailField')(max_length=75)),
47 39 ('description', self.gf('django.db.models.fields.TextField')()),
48 40 ('logo', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
49 41 ('last_imported_index', self.gf('django.db.models.fields.IntegerField')(default=0)),
50 42 ))
51   - db.send_create_signal('super_archives', ['MailingList'])
  43 + db.send_create_signal(u'super_archives', ['MailingList'])
52 44  
53 45 # Adding model 'MailingListMembership'
54   - db.create_table('super_archives_mailinglistmembership', (
55   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
56   - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
  46 + db.create_table(u'super_archives_mailinglistmembership', (
  47 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  48 + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User'])),
57 49 ('mailinglist', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.MailingList'])),
58 50 ))
59   - db.send_create_signal('super_archives', ['MailingListMembership'])
  51 + db.send_create_signal(u'super_archives', ['MailingListMembership'])
  52 +
  53 + # Adding model 'Keyword'
  54 + db.create_table(u'super_archives_keyword', (
  55 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  56 + ('keyword', self.gf('django.db.models.fields.CharField')(max_length='128')),
  57 + ('weight', self.gf('django.db.models.fields.IntegerField')(default=0)),
  58 + ('thread', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.Thread'])),
  59 + ))
  60 + db.send_create_signal(u'super_archives', ['Keyword'])
60 61  
61 62 # Adding model 'Thread'
62   - db.create_table('super_archives_thread', (
63   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  63 + db.create_table(u'super_archives_thread', (
  64 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
64 65 ('subject_token', self.gf('django.db.models.fields.CharField')(max_length=512)),
65 66 ('mailinglist', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.MailingList'])),
66 67 ('latest_message', self.gf('django.db.models.fields.related.OneToOneField')(related_name='+', unique=True, null=True, to=orm['super_archives.Message'])),
  68 + ('score', self.gf('django.db.models.fields.IntegerField')(default=0)),
  69 + ('spam', self.gf('django.db.models.fields.BooleanField')(default=False)),
67 70 ))
68   - db.send_create_signal('super_archives', ['Thread'])
  71 + db.send_create_signal(u'super_archives', ['Thread'])
69 72  
70 73 # Adding unique constraint on 'Thread', fields ['subject_token', 'mailinglist']
71   - db.create_unique('super_archives_thread', ['subject_token', 'mailinglist_id'])
  74 + db.create_unique(u'super_archives_thread', ['subject_token', 'mailinglist_id'])
72 75  
73 76 # Adding model 'Vote'
74   - db.create_table('super_archives_vote', (
75   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
76   - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
  77 + db.create_table(u'super_archives_vote', (
  78 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  79 + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User'])),
77 80 ('message', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.Message'])),
  81 + ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
78 82 ))
79   - db.send_create_signal('super_archives', ['Vote'])
  83 + db.send_create_signal(u'super_archives', ['Vote'])
80 84  
81 85 # Adding unique constraint on 'Vote', fields ['user', 'message']
82   - db.create_unique('super_archives_vote', ['user_id', 'message_id'])
  86 + db.create_unique(u'super_archives_vote', ['user_id', 'message_id'])
83 87  
84 88 # Adding model 'Message'
85   - db.create_table('super_archives_message', (
86   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  89 + db.create_table(u'super_archives_message', (
  90 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
87 91 ('from_address', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.EmailAddress'])),
88   - ('mailinglist', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.MailingList'])),
89 92 ('thread', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.Thread'], null=True)),
90   - ('subject', self.gf('django.db.models.fields.CharField')(max_length=512)),
91   - ('subject_clean', self.gf('django.db.models.fields.CharField')(max_length=512)),
  93 + ('subject', self.gf('django.db.models.fields.CharField')(max_length=512, db_index=True)),
  94 + ('subject_clean', self.gf('django.db.models.fields.CharField')(max_length=512, db_index=True)),
92 95 ('body', self.gf('django.db.models.fields.TextField')(default='')),
93   - ('received_time', self.gf('django.db.models.fields.DateTimeField')()),
  96 + ('received_time', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
94 97 ('message_id', self.gf('django.db.models.fields.CharField')(max_length=512)),
  98 + ('spam', self.gf('django.db.models.fields.BooleanField')(default=False)),
95 99 ))
96   - db.send_create_signal('super_archives', ['Message'])
  100 + db.send_create_signal(u'super_archives', ['Message'])
  101 +
  102 + # Adding unique constraint on 'Message', fields ['thread', 'message_id']
  103 + db.create_unique(u'super_archives_message', ['thread_id', 'message_id'])
  104 +
  105 + # Adding model 'MessageBlock'
  106 + db.create_table(u'super_archives_messageblock', (
  107 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  108 + ('message', self.gf('django.db.models.fields.related.ForeignKey')(related_name='blocks', to=orm['super_archives.Message'])),
  109 + ('text', self.gf('django.db.models.fields.TextField')()),
  110 + ('is_reply', self.gf('django.db.models.fields.BooleanField')()),
  111 + ('order', self.gf('django.db.models.fields.IntegerField')()),
  112 + ))
  113 + db.send_create_signal(u'super_archives', ['MessageBlock'])
97 114  
98 115 # Adding model 'MessageMetadata'
99   - db.create_table('super_archives_messagemetadata', (
100   - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
  116 + db.create_table(u'super_archives_messagemetadata', (
  117 + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
101 118 ('Message', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.Message'])),
102 119 ('name', self.gf('django.db.models.fields.CharField')(max_length=512)),
103 120 ('value', self.gf('django.db.models.fields.TextField')()),
104 121 ))
105   - db.send_create_signal('super_archives', ['MessageMetadata'])
  122 + db.send_create_signal(u'super_archives', ['MessageMetadata'])
106 123  
107 124  
108 125 def backwards(self, orm):
109   -
  126 + # Removing unique constraint on 'Message', fields ['thread', 'message_id']
  127 + db.delete_unique(u'super_archives_message', ['thread_id', 'message_id'])
  128 +
110 129 # Removing unique constraint on 'Vote', fields ['user', 'message']
111   - db.delete_unique('super_archives_vote', ['user_id', 'message_id'])
  130 + db.delete_unique(u'super_archives_vote', ['user_id', 'message_id'])
112 131  
113 132 # Removing unique constraint on 'Thread', fields ['subject_token', 'mailinglist']
114   - db.delete_unique('super_archives_thread', ['subject_token', 'mailinglist_id'])
  133 + db.delete_unique(u'super_archives_thread', ['subject_token', 'mailinglist_id'])
115 134  
116   - # Deleting model 'PageHit'
117   - db.delete_table('super_archives_pagehit')
  135 + # Removing unique constraint on 'EmailAddressValidation', fields ['user', 'address']
  136 + db.delete_unique(u'super_archives_emailaddressvalidation', ['user_id', 'address'])
118 137  
119   - # Deleting model 'EmailAddress'
120   - db.delete_table('super_archives_emailaddress')
  138 + # Deleting model 'EmailAddressValidation'
  139 + db.delete_table(u'super_archives_emailaddressvalidation')
121 140  
122   - # Deleting model 'UserProfile'
123   - db.delete_table('super_archives_userprofile')
  141 + # Deleting model 'EmailAddress'
  142 + db.delete_table(u'super_archives_emailaddress')
124 143  
125 144 # Deleting model 'MailingList'
126   - db.delete_table('super_archives_mailinglist')
  145 + db.delete_table(u'super_archives_mailinglist')
127 146  
128 147 # Deleting model 'MailingListMembership'
129   - db.delete_table('super_archives_mailinglistmembership')
  148 + db.delete_table(u'super_archives_mailinglistmembership')
  149 +
  150 + # Deleting model 'Keyword'
  151 + db.delete_table(u'super_archives_keyword')
130 152  
131 153 # Deleting model 'Thread'
132   - db.delete_table('super_archives_thread')
  154 + db.delete_table(u'super_archives_thread')
133 155  
134 156 # Deleting model 'Vote'
135   - db.delete_table('super_archives_vote')
  157 + db.delete_table(u'super_archives_vote')
136 158  
137 159 # Deleting model 'Message'
138   - db.delete_table('super_archives_message')
  160 + db.delete_table(u'super_archives_message')
  161 +
  162 + # Deleting model 'MessageBlock'
  163 + db.delete_table(u'super_archives_messageblock')
139 164  
140 165 # Deleting model 'MessageMetadata'
141   - db.delete_table('super_archives_messagemetadata')
  166 + db.delete_table(u'super_archives_messagemetadata')
142 167  
143 168  
144 169 models = {
145   - 'auth.group': {
146   - 'Meta': {'object_name': 'Group'},
147   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
148   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
149   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
150   - },
151   - 'auth.permission': {
152   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
153   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
154   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
155   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
156   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
157   - },
158   - 'auth.user': {
  170 + u'accounts.user': {
159 171 'Meta': {'object_name': 'User'},
  172 + 'bio': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
160 173 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
161   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
  174 + 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
  175 + 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
162 176 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
163   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
164   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  177 + 'github': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  178 + 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
  179 + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
  180 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  181 + 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
165 182 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
166 183 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
167 184 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
168 185 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
169 186 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
  187 + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
170 188 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
171   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
172   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
  189 + 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  190 + 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
  191 + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
  192 + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
  193 + 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
  194 + 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
  195 + },
  196 + u'auth.group': {
  197 + 'Meta': {'object_name': 'Group'},
  198 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  199 + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
  200 + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
  201 + },
  202 + u'auth.permission': {
  203 + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
  204 + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
  205 + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
  206 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  207 + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
173 208 },
174   - 'contenttypes.contenttype': {
  209 + u'contenttypes.contenttype': {
175 210 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
176 211 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
177   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  212 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
178 213 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
179 214 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
180 215 },
181   - 'super_archives.emailaddress': {
182   - 'Meta': {'object_name': 'EmailAddress'},
  216 + u'super_archives.emailaddress': {
  217 + 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
183 218 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
184   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  219 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
185 220 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
186   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
187   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
  221 + 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
  222 + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
  223 + },
  224 + u'super_archives.emailaddressvalidation': {
  225 + 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
  226 + 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
  227 + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
  228 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  229 + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
  230 + 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'aa4ac05f39464a05932308e9fda2daf5'", 'max_length': '32', 'null': 'True'})
188 231 },
189   - 'super_archives.mailinglist': {
  232 + u'super_archives.keyword': {
  233 + 'Meta': {'ordering': "('?',)", 'object_name': 'Keyword'},
  234 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  235 + 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
  236 + 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
  237 + 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
  238 + },
  239 + u'super_archives.mailinglist': {
190 240 'Meta': {'object_name': 'MailingList'},
191 241 'description': ('django.db.models.fields.TextField', [], {}),
192 242 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
193   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  243 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
194 244 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
195 245 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
196 246 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
197 247 },
198   - 'super_archives.mailinglistmembership': {
  248 + u'super_archives.mailinglistmembership': {
199 249 'Meta': {'object_name': 'MailingListMembership'},
200   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
201   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
202   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
  250 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  251 + 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
  252 + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
203 253 },
204   - 'super_archives.message': {
205   - 'Meta': {'object_name': 'Message'},
  254 + u'super_archives.message': {
  255 + 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
206 256 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
207   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
208   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
209   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
  257 + 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
  258 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
210 259 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
211   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
212   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
213   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
214   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
  260 + 'received_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
  261 + 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
  262 + 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
  263 + 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
  264 + 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
  265 + },
  266 + u'super_archives.messageblock': {
  267 + 'Meta': {'ordering': "('order',)", 'object_name': 'MessageBlock'},
  268 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  269 + 'is_reply': ('django.db.models.fields.BooleanField', [], {}),
  270 + 'message': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'blocks'", 'to': u"orm['super_archives.Message']"}),
  271 + 'order': ('django.db.models.fields.IntegerField', [], {}),
  272 + 'text': ('django.db.models.fields.TextField', [], {})
215 273 },
216   - 'super_archives.messagemetadata': {
217   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
  274 + u'super_archives.messagemetadata': {
  275 + 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
218 276 'Meta': {'object_name': 'MessageMetadata'},
219   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  277 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
220 278 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
221 279 'value': ('django.db.models.fields.TextField', [], {})
222 280 },
223   - 'super_archives.pagehit': {
224   - 'Meta': {'object_name': 'PageHit'},
225   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
226   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
227   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
228   - },
229   - 'super_archives.thread': {
230   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
231   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
232   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
233   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
  281 + u'super_archives.thread': {
  282 + 'Meta': {'ordering': "('-latest_message__received_time',)", 'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
  283 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  284 + 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
  285 + 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
  286 + 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
  287 + 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
234 288 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
235 289 },
236   - 'super_archives.userprofile': {
237   - 'Meta': {'object_name': 'UserProfile'},
238   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
239   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
240   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
241   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
242   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
243   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
244   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
245   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
246   - },
247   - 'super_archives.vote': {
  290 + u'super_archives.vote': {
248 291 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
249   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
251   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
  292 + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
  293 + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
  294 + 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
  295 + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
252 296 }
253 297 }
254 298  
255 299 - complete_apps = ['super_archives']
  300 + complete_apps = ['super_archives']
256 301 \ No newline at end of file
... ...
src/super_archives/migrations/0002_auto__add_field_userprofile_verification_hash.py
... ... @@ -1,133 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding field 'UserProfile.verification_hash'
12   - db.add_column('super_archives_userprofile', 'verification_hash', self.gf('django.db.models.fields.CharField')(max_length=32, null=True), keep_default=False)
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # Deleting field 'UserProfile.verification_hash'
18   - db.delete_column('super_archives_userprofile', 'verification_hash')
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
87   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
88   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - 'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - 'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - 'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
111   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
112   - },
113   - 'super_archives.userprofile': {
114   - 'Meta': {'object_name': 'UserProfile'},
115   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
116   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
117   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
119   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
120   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
122   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
123   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
124   - },
125   - 'super_archives.vote': {
126   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
127   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
129   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
130   - }
131   - }
132   -
133   - complete_apps = ['super_archives']
src/super_archives/migrations/0003_auto__add_field_thread_score.py
... ... @@ -1,134 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding field 'Thread.score'
12   - db.add_column('super_archives_thread', 'score', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # Deleting field 'Thread.score'
18   - db.delete_column('super_archives_thread', 'score')
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
87   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
88   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - 'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - 'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - 'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
111   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
112   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
113   - },
114   - 'super_archives.userprofile': {
115   - 'Meta': {'object_name': 'UserProfile'},
116   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
117   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
118   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
120   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
123   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
124   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
125   - },
126   - 'super_archives.vote': {
127   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
128   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
130   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
131   - }
132   - }
133   -
134   - complete_apps = ['super_archives']
src/super_archives/migrations/0004_auto__add_field_vote_created.py
... ... @@ -1,135 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding field 'Vote.created'
12   - db.add_column('super_archives_vote', 'created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2012, 1, 19, 18, 8, 46, 813949), blank=True), keep_default=False)
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # Deleting field 'Vote.created'
18   - db.delete_column('super_archives_vote', 'created')
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
87   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
88   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - 'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - 'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - 'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
111   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
112   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
113   - },
114   - 'super_archives.userprofile': {
115   - 'Meta': {'object_name': 'UserProfile'},
116   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
117   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
118   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
120   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
123   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
124   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
125   - },
126   - 'super_archives.vote': {
127   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
128   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
129   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
131   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
132   - }
133   - }
134   -
135   - complete_apps = ['super_archives']
src/super_archives/migrations/0005_auto__add_field_message_spam__add_field_thread_spam.py
... ... @@ -1,143 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding field 'Message.spam'
12   - db.add_column('super_archives_message', 'spam', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
13   -
14   - # Adding field 'Thread.spam'
15   - db.add_column('super_archives_thread', 'spam', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
16   -
17   -
18   - def backwards(self, orm):
19   -
20   - # Deleting field 'Message.spam'
21   - db.delete_column('super_archives_message', 'spam')
22   -
23   - # Deleting field 'Thread.spam'
24   - db.delete_column('super_archives_thread', 'spam')
25   -
26   -
27   - models = {
28   - 'auth.group': {
29   - 'Meta': {'object_name': 'Group'},
30   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
31   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
32   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
33   - },
34   - 'auth.permission': {
35   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
36   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
37   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
38   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
39   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
40   - },
41   - 'auth.user': {
42   - 'Meta': {'object_name': 'User'},
43   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
44   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
45   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
46   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
47   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
48   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
49   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
50   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
51   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
52   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
53   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
54   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
55   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
56   - },
57   - 'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - 'super_archives.emailaddress': {
65   - 'Meta': {'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
71   - },
72   - 'super_archives.mailinglist': {
73   - 'Meta': {'object_name': 'MailingList'},
74   - 'description': ('django.db.models.fields.TextField', [], {}),
75   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
76   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
78   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
79   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
80   - },
81   - 'super_archives.mailinglistmembership': {
82   - 'Meta': {'object_name': 'MailingListMembership'},
83   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
85   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
86   - },
87   - 'super_archives.message': {
88   - 'Meta': {'object_name': 'Message'},
89   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
90   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
91   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
93   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
94   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
95   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
96   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
97   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
99   - },
100   - 'super_archives.messagemetadata': {
101   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
102   - 'Meta': {'object_name': 'MessageMetadata'},
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
105   - 'value': ('django.db.models.fields.TextField', [], {})
106   - },
107   - 'super_archives.pagehit': {
108   - 'Meta': {'object_name': 'PageHit'},
109   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
110   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
112   - },
113   - 'super_archives.thread': {
114   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
115   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
116   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
117   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
118   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
119   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
120   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
121   - },
122   - 'super_archives.userprofile': {
123   - 'Meta': {'object_name': 'UserProfile'},
124   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
125   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
126   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
127   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
128   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
129   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
130   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
131   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
132   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
133   - },
134   - 'super_archives.vote': {
135   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
136   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
137   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
139   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
140   - }
141   - }
142   -
143   - complete_apps = ['super_archives']
src/super_archives/migrations/0006_auto.py
... ... @@ -1,143 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding index on 'Message', fields ['subject_clean']
12   - db.create_index('super_archives_message', ['subject_clean'])
13   -
14   - # Adding index on 'Message', fields ['subject']
15   - db.create_index('super_archives_message', ['subject'])
16   -
17   -
18   - def backwards(self, orm):
19   -
20   - # Removing index on 'Message', fields ['subject']
21   - db.delete_index('super_archives_message', ['subject'])
22   -
23   - # Removing index on 'Message', fields ['subject_clean']
24   - db.delete_index('super_archives_message', ['subject_clean'])
25   -
26   -
27   - models = {
28   - 'auth.group': {
29   - 'Meta': {'object_name': 'Group'},
30   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
31   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
32   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
33   - },
34   - 'auth.permission': {
35   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
36   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
37   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
38   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
39   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
40   - },
41   - 'auth.user': {
42   - 'Meta': {'object_name': 'User'},
43   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
44   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
45   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
46   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
47   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
48   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
49   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
50   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
51   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
52   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
53   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
54   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
55   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
56   - },
57   - 'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - 'super_archives.emailaddress': {
65   - 'Meta': {'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
71   - },
72   - 'super_archives.mailinglist': {
73   - 'Meta': {'object_name': 'MailingList'},
74   - 'description': ('django.db.models.fields.TextField', [], {}),
75   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
76   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
78   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
79   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
80   - },
81   - 'super_archives.mailinglistmembership': {
82   - 'Meta': {'object_name': 'MailingListMembership'},
83   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
85   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
86   - },
87   - 'super_archives.message': {
88   - 'Meta': {'object_name': 'Message'},
89   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
90   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
91   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
93   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
94   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
95   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
96   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
97   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
98   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
99   - },
100   - 'super_archives.messagemetadata': {
101   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
102   - 'Meta': {'object_name': 'MessageMetadata'},
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
105   - 'value': ('django.db.models.fields.TextField', [], {})
106   - },
107   - 'super_archives.pagehit': {
108   - 'Meta': {'object_name': 'PageHit'},
109   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
110   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
112   - },
113   - 'super_archives.thread': {
114   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
115   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
116   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
117   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
118   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
119   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
120   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
121   - },
122   - 'super_archives.userprofile': {
123   - 'Meta': {'object_name': 'UserProfile'},
124   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
125   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
126   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
127   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
128   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
129   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
130   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
131   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
132   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
133   - },
134   - 'super_archives.vote': {
135   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
136   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
137   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
139   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
140   - }
141   - }
142   -
143   - complete_apps = ['super_archives']
src/super_archives/migrations/0007_auto.py
... ... @@ -1,137 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding index on 'EmailAddress', fields ['real_name']
12   - db.create_index('super_archives_emailaddress', ['real_name'])
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # Removing index on 'EmailAddress', fields ['real_name']
18   - db.delete_index('super_archives_emailaddress', ['real_name'])
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
87   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
88   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
89   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
90   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
91   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
92   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
93   - },
94   - 'super_archives.messagemetadata': {
95   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
96   - 'Meta': {'object_name': 'MessageMetadata'},
97   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
98   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
99   - 'value': ('django.db.models.fields.TextField', [], {})
100   - },
101   - 'super_archives.pagehit': {
102   - 'Meta': {'object_name': 'PageHit'},
103   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
104   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
105   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
106   - },
107   - 'super_archives.thread': {
108   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
109   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
110   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
111   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
112   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
113   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
114   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
115   - },
116   - 'super_archives.userprofile': {
117   - 'Meta': {'object_name': 'UserProfile'},
118   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
119   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
120   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
121   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
123   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
124   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
125   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
126   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
127   - },
128   - 'super_archives.vote': {
129   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
130   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
131   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
132   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
133   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
134   - }
135   - }
136   -
137   - complete_apps = ['super_archives']
src/super_archives/migrations/0008_add_mailinglist_name_to_url.py
... ... @@ -1,142 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import DataMigration
5   -from django.db import models
6   -
7   -class Migration(DataMigration):
8   -
9   - def forwards(self, orm):
10   - page_hits = orm.PageHit.objects.all()
11   - for page_hit in page_hits:
12   - if page_hit.url_path.startswith('/archives/thread/'):
13   - token = page_hit.url_path.split('/')[-1]
14   - threads = orm.Thread.objects.filter(subject_token=token)
15   - if not len(threads): continue
16   - thread = threads[0]
17   - new_url = '/archives/thread/%s/%s' % (thread.mailinglist.name,
18   - thread.subject_token)
19   - page_hit.url_path = new_url
20   - page_hit.save()
21   -
22   -
23   - def backwards(self, orm):
24   - raise RuntimeError("Cannot reverse this migration.")
25   -
26   - models = {
27   - 'auth.group': {
28   - 'Meta': {'object_name': 'Group'},
29   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
31   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
32   - },
33   - 'auth.permission': {
34   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
35   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
36   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
37   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
38   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
39   - },
40   - 'auth.user': {
41   - 'Meta': {'object_name': 'User'},
42   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
43   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
44   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
45   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
46   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
48   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
49   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
50   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
51   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
52   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
53   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
54   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
55   - },
56   - 'contenttypes.contenttype': {
57   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
58   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
59   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
61   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
62   - },
63   - 'super_archives.emailaddress': {
64   - 'Meta': {'object_name': 'EmailAddress'},
65   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
66   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
68   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
69   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
70   - },
71   - 'super_archives.mailinglist': {
72   - 'Meta': {'object_name': 'MailingList'},
73   - 'description': ('django.db.models.fields.TextField', [], {}),
74   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
75   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
77   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
78   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
79   - },
80   - 'super_archives.mailinglistmembership': {
81   - 'Meta': {'object_name': 'MailingListMembership'},
82   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
84   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
85   - },
86   - 'super_archives.message': {
87   - 'Meta': {'object_name': 'Message'},
88   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
89   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
90   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
91   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
92   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
93   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
94   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
95   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
96   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
97   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
98   - },
99   - 'super_archives.messagemetadata': {
100   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
101   - 'Meta': {'object_name': 'MessageMetadata'},
102   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
104   - 'value': ('django.db.models.fields.TextField', [], {})
105   - },
106   - 'super_archives.pagehit': {
107   - 'Meta': {'object_name': 'PageHit'},
108   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
109   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
110   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
111   - },
112   - 'super_archives.thread': {
113   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
114   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
115   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
116   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
117   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
118   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
119   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
120   - },
121   - 'super_archives.userprofile': {
122   - 'Meta': {'object_name': 'UserProfile'},
123   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
124   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
125   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
127   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
128   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
129   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
130   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
131   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
132   - },
133   - 'super_archives.vote': {
134   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
135   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
136   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
137   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
138   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
139   - }
140   - }
141   -
142   - complete_apps = ['super_archives']
src/super_archives/migrations/0009_auto__del_field_message_mailinglist.py
... ... @@ -1,136 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Deleting field 'Message.mailinglist'
12   - db.delete_column('super_archives_message', 'mailinglist_id')
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # User chose to not deal with backwards NULL issues for 'Message.mailinglist'
18   - raise RuntimeError("Cannot reverse this migration. 'Message.mailinglist' and its values cannot be restored.")
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
87   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
88   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - 'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - 'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - 'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
111   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
112   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
113   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
114   - },
115   - 'super_archives.userprofile': {
116   - 'Meta': {'object_name': 'UserProfile'},
117   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
118   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
119   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
120   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
123   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
124   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
125   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
126   - },
127   - 'super_archives.vote': {
128   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
129   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
130   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
132   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
133   - }
134   - }
135   -
136   - complete_apps = ['super_archives']
src/super_archives/migrations/0010_auto__add_unique_message_message_id_thread.py
... ... @@ -1,136 +0,0 @@
1   -# encoding: utf-8
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -class Migration(SchemaMigration):
8   -
9   - def forwards(self, orm):
10   -
11   - # Adding unique constraint on 'Message', fields ['message_id', 'thread']
12   - db.create_unique('super_archives_message', ['message_id', 'thread_id'])
13   -
14   -
15   - def backwards(self, orm):
16   -
17   - # Removing unique constraint on 'Message', fields ['message_id', 'thread']
18   - db.delete_unique('super_archives_message', ['message_id', 'thread_id'])
19   -
20   -
21   - models = {
22   - 'auth.group': {
23   - 'Meta': {'object_name': 'Group'},
24   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27   - },
28   - 'auth.permission': {
29   - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34   - },
35   - 'auth.user': {
36   - 'Meta': {'object_name': 'User'},
37   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
38   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
46   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50   - },
51   - 'contenttypes.contenttype': {
52   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57   - },
58   - 'super_archives.emailaddress': {
59   - 'Meta': {'object_name': 'EmailAddress'},
60   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
61   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
63   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
64   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': "orm['auth.User']"})
65   - },
66   - 'super_archives.mailinglist': {
67   - 'Meta': {'object_name': 'MailingList'},
68   - 'description': ('django.db.models.fields.TextField', [], {}),
69   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
70   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
72   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
73   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
74   - },
75   - 'super_archives.mailinglistmembership': {
76   - 'Meta': {'object_name': 'MailingListMembership'},
77   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
79   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
80   - },
81   - 'super_archives.message': {
82   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
83   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
84   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.EmailAddress']"}),
85   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
86   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
87   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
88   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
89   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
90   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Thread']", 'null': 'True'})
92   - },
93   - 'super_archives.messagemetadata': {
94   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
95   - 'Meta': {'object_name': 'MessageMetadata'},
96   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
98   - 'value': ('django.db.models.fields.TextField', [], {})
99   - },
100   - 'super_archives.pagehit': {
101   - 'Meta': {'object_name': 'PageHit'},
102   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
103   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
105   - },
106   - 'super_archives.thread': {
107   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
108   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': "orm['super_archives.Message']"}),
110   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.MailingList']"}),
111   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
112   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
113   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
114   - },
115   - 'super_archives.userprofile': {
116   - 'Meta': {'object_name': 'UserProfile'},
117   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
118   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
119   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
120   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
123   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}),
124   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
125   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256'})
126   - },
127   - 'super_archives.vote': {
128   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
129   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
130   - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['super_archives.Message']"}),
132   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
133   - }
134   - }
135   -
136   - complete_apps = ['super_archives']
src/super_archives/migrations/0011_auto__chg_field_userprofile_webpage.py
... ... @@ -1,135 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   -
12   - # Changing field 'UserProfile.webpage'
13   - db.alter_column(u'super_archives_userprofile', 'webpage', self.gf('django.db.models.fields.CharField')(max_length=256, null=True))
14   -
15   - def backwards(self, orm):
16   -
17   - # User chose to not deal with backwards NULL issues for 'UserProfile.webpage'
18   - raise RuntimeError("Cannot reverse this migration. 'UserProfile.webpage' and its values cannot be restored.")
19   -
20   - models = {
21   - u'auth.group': {
22   - 'Meta': {'object_name': 'Group'},
23   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
24   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
25   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
26   - },
27   - u'auth.permission': {
28   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
29   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
30   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
31   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
33   - },
34   - u'auth.user': {
35   - 'Meta': {'object_name': 'User'},
36   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
37   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
38   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
39   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
40   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
41   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
42   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
43   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
45   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
46   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
47   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
48   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
49   - },
50   - u'contenttypes.contenttype': {
51   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
52   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
56   - },
57   - u'super_archives.emailaddress': {
58   - 'Meta': {'object_name': 'EmailAddress'},
59   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
62   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
63   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': u"orm['auth.User']"})
64   - },
65   - u'super_archives.mailinglist': {
66   - 'Meta': {'object_name': 'MailingList'},
67   - 'description': ('django.db.models.fields.TextField', [], {}),
68   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
69   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
70   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
71   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
72   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
73   - },
74   - u'super_archives.mailinglistmembership': {
75   - 'Meta': {'object_name': 'MailingListMembership'},
76   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
78   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"})
79   - },
80   - u'super_archives.message': {
81   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
82   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
83   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
86   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
87   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
88   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
89   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
90   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
91   - },
92   - u'super_archives.messagemetadata': {
93   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
94   - 'Meta': {'object_name': 'MessageMetadata'},
95   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
96   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
97   - 'value': ('django.db.models.fields.TextField', [], {})
98   - },
99   - u'super_archives.pagehit': {
100   - 'Meta': {'object_name': 'PageHit'},
101   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
102   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
104   - },
105   - u'super_archives.thread': {
106   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
107   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
109   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
110   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
111   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
112   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
113   - },
114   - u'super_archives.userprofile': {
115   - 'Meta': {'object_name': 'UserProfile'},
116   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
117   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
118   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
120   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
121   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
122   - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}),
123   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
124   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
125   - },
126   - u'super_archives.vote': {
127   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
128   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
129   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
131   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"})
132   - }
133   - }
134   -
135   - complete_apps = ['super_archives']
136 0 \ No newline at end of file
src/super_archives/migrations/0012_auto__del_userprofile__chg_field_vote_user__chg_field_emailaddress_use.py
... ... @@ -1,159 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Deleting model 'UserProfile'
12   - db.delete_table(u'super_archives_userprofile')
13   -
14   -
15   - # Changing field 'Vote.user'
16   - db.alter_column(u'super_archives_vote', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User']))
17   -
18   - # Changing field 'EmailAddress.user'
19   - db.alter_column(u'super_archives_emailaddress', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['accounts.User']))
20   -
21   - # Changing field 'MailingListMembership.user'
22   - db.alter_column(u'super_archives_mailinglistmembership', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User']))
23   -
24   - def backwards(self, orm):
25   - # Adding model 'UserProfile'
26   - db.create_table(u'super_archives_userprofile', (
27   - ('google_talk', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)),
28   - ('facebook', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
29   - ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
30   - ('webpage', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)),
31   - ('role', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
32   - ('twitter', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
33   - ('verification_hash', self.gf('django.db.models.fields.CharField')(max_length=32, null=True)),
34   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
35   - ('institution', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
36   - ))
37   - db.send_create_signal(u'super_archives', ['UserProfile'])
38   -
39   -
40   - # Changing field 'Vote.user'
41   - db.alter_column(u'super_archives_vote', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User']))
42   -
43   - # Changing field 'EmailAddress.user'
44   - db.alter_column(u'super_archives_emailaddress', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['auth.User']))
45   -
46   - # Changing field 'MailingListMembership.user'
47   - db.alter_column(u'super_archives_mailinglistmembership', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User']))
48   -
49   - models = {
50   - u'accounts.user': {
51   - 'Meta': {'object_name': 'User'},
52   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
53   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
54   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
55   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
56   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True'}),
57   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
58   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
60   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
61   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
62   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
63   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
64   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
65   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
66   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
67   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
68   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
69   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
70   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
71   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'})
72   - },
73   - u'auth.group': {
74   - 'Meta': {'object_name': 'Group'},
75   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
77   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
78   - },
79   - u'auth.permission': {
80   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
81   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
82   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
83   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
85   - },
86   - u'contenttypes.contenttype': {
87   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
88   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
89   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
90   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
91   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
92   - },
93   - u'super_archives.emailaddress': {
94   - 'Meta': {'object_name': 'EmailAddress'},
95   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
96   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
98   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
99   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': u"orm['accounts.User']"})
100   - },
101   - u'super_archives.mailinglist': {
102   - 'Meta': {'object_name': 'MailingList'},
103   - 'description': ('django.db.models.fields.TextField', [], {}),
104   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
105   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
106   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
107   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
108   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
109   - },
110   - u'super_archives.mailinglistmembership': {
111   - 'Meta': {'object_name': 'MailingListMembership'},
112   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
114   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
115   - },
116   - u'super_archives.message': {
117   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
118   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
119   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
120   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
121   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
122   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
123   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
124   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
125   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
126   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
127   - },
128   - u'super_archives.messagemetadata': {
129   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
130   - 'Meta': {'object_name': 'MessageMetadata'},
131   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
132   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
133   - 'value': ('django.db.models.fields.TextField', [], {})
134   - },
135   - u'super_archives.pagehit': {
136   - 'Meta': {'object_name': 'PageHit'},
137   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
138   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
139   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
140   - },
141   - u'super_archives.thread': {
142   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
143   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
144   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
145   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
146   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
147   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
148   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
149   - },
150   - u'super_archives.vote': {
151   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
152   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
153   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
155   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
156   - }
157   - }
158   -
159   - complete_apps = ['super_archives']
160 0 \ No newline at end of file
src/super_archives/migrations/0013_auto__add_emailaddressvalidation.py
... ... @@ -1,145 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding model 'EmailAddressValidation'
12   - db.create_table(u'super_archives_emailaddressvalidation', (
13   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('address', self.gf('django.db.models.fields.EmailField')(unique=True, max_length=75)),
15   - ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='emails_not_validated', null=True, to=orm['accounts.User'])),
16   - ('validation_key', self.gf('django.db.models.fields.CharField')(default='2a261e5a2f944d36b252629b1a108e7b', max_length=32)),
17   - ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
18   - ))
19   - db.send_create_signal(u'super_archives', ['EmailAddressValidation'])
20   -
21   -
22   - def backwards(self, orm):
23   - # Deleting model 'EmailAddressValidation'
24   - db.delete_table(u'super_archives_emailaddressvalidation')
25   -
26   -
27   - models = {
28   - u'accounts.user': {
29   - 'Meta': {'object_name': 'User'},
30   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
31   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
32   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
34   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
35   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
36   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
37   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
39   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
40   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
41   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
42   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
43   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
44   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
45   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
46   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
47   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
48   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
49   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
50   - },
51   - u'auth.group': {
52   - 'Meta': {'object_name': 'Group'},
53   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
55   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
56   - },
57   - u'auth.permission': {
58   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
59   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
61   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
63   - },
64   - u'contenttypes.contenttype': {
65   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
66   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
69   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
70   - },
71   - u'super_archives.emailaddress': {
72   - 'Meta': {'object_name': 'EmailAddress'},
73   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
74   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
75   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
76   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': u"orm['accounts.User']"})
78   - },
79   - u'super_archives.emailaddressvalidation': {
80   - 'Meta': {'object_name': 'EmailAddressValidation'},
81   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
82   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
83   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
85   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'0dd1ae4b49bc43ff904c1cfa3b2e6ef6'", 'max_length': '32'})
86   - },
87   - u'super_archives.mailinglist': {
88   - 'Meta': {'object_name': 'MailingList'},
89   - 'description': ('django.db.models.fields.TextField', [], {}),
90   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
93   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
94   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
95   - },
96   - u'super_archives.mailinglistmembership': {
97   - 'Meta': {'object_name': 'MailingListMembership'},
98   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
99   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
100   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
101   - },
102   - u'super_archives.message': {
103   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
104   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
105   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
106   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
108   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
109   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
110   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
111   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
112   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
113   - },
114   - u'super_archives.messagemetadata': {
115   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
116   - 'Meta': {'object_name': 'MessageMetadata'},
117   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
119   - 'value': ('django.db.models.fields.TextField', [], {})
120   - },
121   - u'super_archives.pagehit': {
122   - 'Meta': {'object_name': 'PageHit'},
123   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
124   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
125   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
126   - },
127   - u'super_archives.thread': {
128   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
129   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
131   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
132   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
133   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
134   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
135   - },
136   - u'super_archives.vote': {
137   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
138   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
139   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
141   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
142   - }
143   - }
144   -
145   - complete_apps = ['super_archives']
146 0 \ No newline at end of file
src/super_archives/migrations/0014_auto__chg_field_emailaddressvalidation_validation_key.py
... ... @@ -1,138 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   -
12   - # Changing field 'EmailAddressValidation.validation_key'
13   - db.alter_column(u'super_archives_emailaddressvalidation', 'validation_key', self.gf('django.db.models.fields.CharField')(max_length=32, null=True))
14   -
15   - def backwards(self, orm):
16   -
17   - # Changing field 'EmailAddressValidation.validation_key'
18   - db.alter_column(u'super_archives_emailaddressvalidation', 'validation_key', self.gf('django.db.models.fields.CharField')(max_length=32))
19   -
20   - models = {
21   - u'accounts.user': {
22   - 'Meta': {'object_name': 'User'},
23   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
24   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
25   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
26   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
27   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
28   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
29   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
31   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
32   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
33   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
34   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
35   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
36   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
37   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
39   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
40   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
41   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
42   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
43   - },
44   - u'auth.group': {
45   - 'Meta': {'object_name': 'Group'},
46   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
48   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
49   - },
50   - u'auth.permission': {
51   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
52   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
54   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
56   - },
57   - u'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - u'super_archives.emailaddress': {
65   - 'Meta': {'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'to': u"orm['accounts.User']"})
71   - },
72   - u'super_archives.emailaddressvalidation': {
73   - 'Meta': {'object_name': 'EmailAddressValidation'},
74   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
75   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
76   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
78   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'30a2065c72c1402986a11e7c5369f5a5'", 'max_length': '32', 'null': 'True'})
79   - },
80   - u'super_archives.mailinglist': {
81   - 'Meta': {'object_name': 'MailingList'},
82   - 'description': ('django.db.models.fields.TextField', [], {}),
83   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
86   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
87   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
88   - },
89   - u'super_archives.mailinglistmembership': {
90   - 'Meta': {'object_name': 'MailingListMembership'},
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
93   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
94   - },
95   - u'super_archives.message': {
96   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
97   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
98   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
99   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
101   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
102   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
103   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
104   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
105   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
106   - },
107   - u'super_archives.messagemetadata': {
108   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
109   - 'Meta': {'object_name': 'MessageMetadata'},
110   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
112   - 'value': ('django.db.models.fields.TextField', [], {})
113   - },
114   - u'super_archives.pagehit': {
115   - 'Meta': {'object_name': 'PageHit'},
116   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
117   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
119   - },
120   - u'super_archives.thread': {
121   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
122   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
123   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
124   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
125   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
126   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
127   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
128   - },
129   - u'super_archives.vote': {
130   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
131   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
132   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
134   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
135   - }
136   - }
137   -
138   - complete_apps = ['super_archives']
139 0 \ No newline at end of file
src/super_archives/migrations/0015_auto__chg_field_emailaddress_user.py
... ... @@ -1,138 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   -
12   - # Changing field 'EmailAddress.user'
13   - db.alter_column(u'super_archives_emailaddress', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['accounts.User']))
14   -
15   - def backwards(self, orm):
16   -
17   - # Changing field 'EmailAddress.user'
18   - db.alter_column(u'super_archives_emailaddress', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['accounts.User']))
19   -
20   - models = {
21   - u'accounts.user': {
22   - 'Meta': {'object_name': 'User'},
23   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
24   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
25   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
26   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
27   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
28   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
29   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
31   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
32   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
33   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
34   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
35   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
36   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
37   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
39   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
40   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
41   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
42   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
43   - },
44   - u'auth.group': {
45   - 'Meta': {'object_name': 'Group'},
46   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
48   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
49   - },
50   - u'auth.permission': {
51   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
52   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
54   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
56   - },
57   - u'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - u'super_archives.emailaddress': {
65   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
71   - },
72   - u'super_archives.emailaddressvalidation': {
73   - 'Meta': {'object_name': 'EmailAddressValidation'},
74   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
75   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
76   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
78   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'a9cfbe23d1be41e4beeafa7790325e26'", 'max_length': '32', 'null': 'True'})
79   - },
80   - u'super_archives.mailinglist': {
81   - 'Meta': {'object_name': 'MailingList'},
82   - 'description': ('django.db.models.fields.TextField', [], {}),
83   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
86   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
87   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
88   - },
89   - u'super_archives.mailinglistmembership': {
90   - 'Meta': {'object_name': 'MailingListMembership'},
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
93   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
94   - },
95   - u'super_archives.message': {
96   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
97   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
98   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
99   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
101   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
102   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
103   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
104   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
105   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
106   - },
107   - u'super_archives.messagemetadata': {
108   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
109   - 'Meta': {'object_name': 'MessageMetadata'},
110   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
112   - 'value': ('django.db.models.fields.TextField', [], {})
113   - },
114   - u'super_archives.pagehit': {
115   - 'Meta': {'object_name': 'PageHit'},
116   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
117   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
119   - },
120   - u'super_archives.thread': {
121   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
122   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
123   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
124   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
125   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
126   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
127   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
128   - },
129   - u'super_archives.vote': {
130   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
131   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
132   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
134   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
135   - }
136   - }
137   -
138   - complete_apps = ['super_archives']
139 0 \ No newline at end of file
src/super_archives/migrations/0016_auto__add_unique_emailaddressvalidation_user_address.py
... ... @@ -1,138 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding unique constraint on 'EmailAddressValidation', fields ['user', 'address']
12   - db.create_unique(u'super_archives_emailaddressvalidation', ['user_id', 'address'])
13   -
14   -
15   - def backwards(self, orm):
16   - # Removing unique constraint on 'EmailAddressValidation', fields ['user', 'address']
17   - db.delete_unique(u'super_archives_emailaddressvalidation', ['user_id', 'address'])
18   -
19   -
20   - models = {
21   - u'accounts.user': {
22   - 'Meta': {'object_name': 'User'},
23   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
24   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
25   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
26   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
27   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
28   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
29   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
31   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
32   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
33   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
34   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
35   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
36   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
37   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
39   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
40   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
41   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
42   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
43   - },
44   - u'auth.group': {
45   - 'Meta': {'object_name': 'Group'},
46   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
48   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
49   - },
50   - u'auth.permission': {
51   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
52   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
54   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
56   - },
57   - u'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - u'super_archives.emailaddress': {
65   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
71   - },
72   - u'super_archives.emailaddressvalidation': {
73   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
74   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
75   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
76   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
78   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'cfda46852e7e4e4a9e34a57c3d3b2330'", 'max_length': '32', 'null': 'True'})
79   - },
80   - u'super_archives.mailinglist': {
81   - 'Meta': {'object_name': 'MailingList'},
82   - 'description': ('django.db.models.fields.TextField', [], {}),
83   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
84   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
86   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
87   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
88   - },
89   - u'super_archives.mailinglistmembership': {
90   - 'Meta': {'object_name': 'MailingListMembership'},
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
93   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
94   - },
95   - u'super_archives.message': {
96   - 'Meta': {'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
97   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
98   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
99   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
101   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
102   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
103   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
104   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
105   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
106   - },
107   - u'super_archives.messagemetadata': {
108   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
109   - 'Meta': {'object_name': 'MessageMetadata'},
110   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
112   - 'value': ('django.db.models.fields.TextField', [], {})
113   - },
114   - u'super_archives.pagehit': {
115   - 'Meta': {'object_name': 'PageHit'},
116   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
117   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
119   - },
120   - u'super_archives.thread': {
121   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
122   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
123   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
124   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
125   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
126   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
127   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
128   - },
129   - u'super_archives.vote': {
130   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
131   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
132   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
134   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
135   - }
136   - }
137   -
138   - complete_apps = ['super_archives']
139 0 \ No newline at end of file
src/super_archives/migrations/0017_auto__add_keyword.py
... ... @@ -1,151 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding model 'Keyword'
12   - db.create_table(u'super_archives_keyword', (
13   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('keyword', self.gf('django.db.models.fields.CharField')(max_length='128')),
15   - ('weight', self.gf('django.db.models.fields.IntegerField')(default=0)),
16   - ('thread', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['super_archives.Thread'])),
17   - ))
18   - db.send_create_signal(u'super_archives', ['Keyword'])
19   -
20   -
21   - def backwards(self, orm):
22   - # Deleting model 'Keyword'
23   - db.delete_table(u'super_archives_keyword')
24   -
25   -
26   - models = {
27   - u'accounts.user': {
28   - 'Meta': {'object_name': 'User'},
29   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
30   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
31   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
32   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
33   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
34   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
35   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
37   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
38   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
39   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
40   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
41   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
42   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
43   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
44   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
45   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
46   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
47   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
48   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
49   - },
50   - u'auth.group': {
51   - 'Meta': {'object_name': 'Group'},
52   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
54   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
55   - },
56   - u'auth.permission': {
57   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
58   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
59   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
62   - },
63   - u'contenttypes.contenttype': {
64   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
65   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
66   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
68   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
69   - },
70   - u'super_archives.emailaddress': {
71   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
72   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
73   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
74   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
75   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
76   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
77   - },
78   - u'super_archives.emailaddressvalidation': {
79   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
80   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
81   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
82   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
84   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'e2d18f1f8d6445fc91c04d17acdbe23a'", 'max_length': '32', 'null': 'True'})
85   - },
86   - u'super_archives.keyword': {
87   - 'Meta': {'object_name': 'Keyword'},
88   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
89   - 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
90   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
91   - 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
92   - },
93   - u'super_archives.mailinglist': {
94   - 'Meta': {'object_name': 'MailingList'},
95   - 'description': ('django.db.models.fields.TextField', [], {}),
96   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
97   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
98   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
99   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
100   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
101   - },
102   - u'super_archives.mailinglistmembership': {
103   - 'Meta': {'object_name': 'MailingListMembership'},
104   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
105   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
106   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
107   - },
108   - u'super_archives.message': {
109   - 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
110   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
111   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
112   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
114   - 'received_time': ('django.db.models.fields.DateTimeField', [], {}),
115   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
116   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
117   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
118   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
119   - },
120   - u'super_archives.messagemetadata': {
121   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
122   - 'Meta': {'object_name': 'MessageMetadata'},
123   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
125   - 'value': ('django.db.models.fields.TextField', [], {})
126   - },
127   - u'super_archives.pagehit': {
128   - 'Meta': {'object_name': 'PageHit'},
129   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
130   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
132   - },
133   - u'super_archives.thread': {
134   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
135   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
136   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
137   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
138   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
139   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
140   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
141   - },
142   - u'super_archives.vote': {
143   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
144   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
145   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
146   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
147   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
148   - }
149   - }
150   -
151   - complete_apps = ['super_archives']
152 0 \ No newline at end of file
src/super_archives/migrations/0018_auto__add_index_message_received_time.py
... ... @@ -1,145 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding index on 'Message', fields ['received_time']
12   - db.create_index(u'super_archives_message', ['received_time'])
13   -
14   -
15   - def backwards(self, orm):
16   - # Removing index on 'Message', fields ['received_time']
17   - db.delete_index(u'super_archives_message', ['received_time'])
18   -
19   -
20   - models = {
21   - u'accounts.user': {
22   - 'Meta': {'object_name': 'User'},
23   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
24   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
25   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
26   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
27   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
28   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
29   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
31   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
32   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
33   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
34   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
35   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
36   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
37   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
39   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
40   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
41   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
42   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
43   - },
44   - u'auth.group': {
45   - 'Meta': {'object_name': 'Group'},
46   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
48   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
49   - },
50   - u'auth.permission': {
51   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
52   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
53   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
54   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
56   - },
57   - u'contenttypes.contenttype': {
58   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
59   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
63   - },
64   - u'super_archives.emailaddress': {
65   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
66   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
69   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
70   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
71   - },
72   - u'super_archives.emailaddressvalidation': {
73   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
74   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
75   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
76   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
78   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'1775e2bdc5e341a9b9b8a6346eec1024'", 'max_length': '32', 'null': 'True'})
79   - },
80   - u'super_archives.keyword': {
81   - 'Meta': {'ordering': "('?',)", 'object_name': 'Keyword'},
82   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83   - 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
84   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
85   - 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
86   - },
87   - u'super_archives.mailinglist': {
88   - 'Meta': {'object_name': 'MailingList'},
89   - 'description': ('django.db.models.fields.TextField', [], {}),
90   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
91   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
93   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
94   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
95   - },
96   - u'super_archives.mailinglistmembership': {
97   - 'Meta': {'object_name': 'MailingListMembership'},
98   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
99   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
100   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
101   - },
102   - u'super_archives.message': {
103   - 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
104   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
105   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
106   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
108   - 'received_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
109   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
110   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
111   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
112   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
113   - },
114   - u'super_archives.messagemetadata': {
115   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
116   - 'Meta': {'object_name': 'MessageMetadata'},
117   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
119   - 'value': ('django.db.models.fields.TextField', [], {})
120   - },
121   - u'super_archives.pagehit': {
122   - 'Meta': {'object_name': 'PageHit'},
123   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
124   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
125   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
126   - },
127   - u'super_archives.thread': {
128   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
129   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
131   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
132   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
133   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
134   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
135   - },
136   - u'super_archives.vote': {
137   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
138   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
139   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
141   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
142   - }
143   - }
144   -
145   - complete_apps = ['super_archives']
146 0 \ No newline at end of file
src/super_archives/migrations/0019_auto__add_messageblock.py
... ... @@ -1,160 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Adding model 'MessageBlock'
12   - db.create_table(u'super_archives_messageblock', (
13   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14   - ('message', self.gf('django.db.models.fields.related.ForeignKey')(related_name='blocks', to=orm['super_archives.Message'])),
15   - ('text', self.gf('django.db.models.fields.TextField')()),
16   - ('is_reply', self.gf('django.db.models.fields.BooleanField')()),
17   - ('order', self.gf('django.db.models.fields.IntegerField')()),
18   - ))
19   - db.send_create_signal(u'super_archives', ['MessageBlock'])
20   -
21   -
22   - def backwards(self, orm):
23   - # Deleting model 'MessageBlock'
24   - db.delete_table(u'super_archives_messageblock')
25   -
26   -
27   - models = {
28   - u'accounts.user': {
29   - 'Meta': {'object_name': 'User'},
30   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
31   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
32   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
33   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
34   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
35   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
36   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
37   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
38   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
39   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
40   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
41   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
42   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
43   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
44   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
45   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
46   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
47   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
48   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
49   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
50   - },
51   - u'auth.group': {
52   - 'Meta': {'object_name': 'Group'},
53   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
55   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
56   - },
57   - u'auth.permission': {
58   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
59   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
60   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
61   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
62   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
63   - },
64   - u'contenttypes.contenttype': {
65   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
66   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
67   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
69   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
70   - },
71   - u'super_archives.emailaddress': {
72   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
73   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
74   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
75   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
76   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
77   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
78   - },
79   - u'super_archives.emailaddressvalidation': {
80   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
81   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
82   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
83   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
85   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'f7c4c15797f34834bf5a8b9bd84fabee'", 'max_length': '32', 'null': 'True'})
86   - },
87   - u'super_archives.keyword': {
88   - 'Meta': {'ordering': "('?',)", 'object_name': 'Keyword'},
89   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
90   - 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
91   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
92   - 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
93   - },
94   - u'super_archives.mailinglist': {
95   - 'Meta': {'object_name': 'MailingList'},
96   - 'description': ('django.db.models.fields.TextField', [], {}),
97   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
98   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
99   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
100   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
101   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
102   - },
103   - u'super_archives.mailinglistmembership': {
104   - 'Meta': {'object_name': 'MailingListMembership'},
105   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
106   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
107   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
108   - },
109   - u'super_archives.message': {
110   - 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
111   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
112   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
113   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
114   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
115   - 'received_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
116   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
117   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
118   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
119   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
120   - },
121   - u'super_archives.messageblock': {
122   - 'Meta': {'ordering': "('order',)", 'object_name': 'MessageBlock'},
123   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124   - 'is_reply': ('django.db.models.fields.BooleanField', [], {}),
125   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'blocks'", 'to': u"orm['super_archives.Message']"}),
126   - 'order': ('django.db.models.fields.IntegerField', [], {}),
127   - 'text': ('django.db.models.fields.TextField', [], {})
128   - },
129   - u'super_archives.messagemetadata': {
130   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
131   - 'Meta': {'object_name': 'MessageMetadata'},
132   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
134   - 'value': ('django.db.models.fields.TextField', [], {})
135   - },
136   - u'super_archives.pagehit': {
137   - 'Meta': {'object_name': 'PageHit'},
138   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
139   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
141   - },
142   - u'super_archives.thread': {
143   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
144   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
146   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
147   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
148   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
149   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
150   - },
151   - u'super_archives.vote': {
152   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
153   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
154   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
155   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
156   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
157   - }
158   - }
159   -
160   - complete_apps = ['super_archives']
161 0 \ No newline at end of file
src/super_archives/migrations/0020_pagehit_to_hitcounter.py
... ... @@ -1,190 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -import datetime
4   -
5   -from south.db import db
6   -from south.logger import _logger
7   -from south.v2 import DataMigration
8   -from django.core.urlresolvers import resolve
9   -from django.db import models
10   -
11   -
12   -class Migration(DataMigration):
13   -
14   - def forwards(self, orm):
15   - """Migrate all data from the PageHit model to the given object with
16   - the HitCounterMixin."""
17   -
18   - content_type = orm['contenttypes.ContentType'].objects.get(
19   - model='thread',
20   - app_label='super_archives'
21   - )
22   -
23   - for obj in orm.PageHit.objects.all():
24   - view = resolve(obj.url_path)
25   -
26   - try:
27   - thread = orm.Thread.objects.get(
28   - subject_token=view.kwargs.get('thread_token'),
29   - mailinglist__name=view.kwargs.get('mailinglist'),
30   - )
31   - except orm.Thread.DoesNotExist:
32   - continue
33   -
34   - hit_obj, created = orm['hitcounter.Hit'].objects.get_or_create(
35   - content_type=content_type,
36   - object_pk=thread.pk,
37   - defaults={'hits': obj.hit_count},
38   - )
39   -
40   - if not created:
41   - hit_obj.hits = obj.hit_count
42   - hit_obj.save()
43   -
44   - def backwards(self, orm):
45   - _logger.warning(u"This backwards don't get the data of PageHit back.")
46   -
47   - models = {
48   - u'accounts.user': {
49   - 'Meta': {'object_name': 'User'},
50   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
51   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
52   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
53   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
54   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
55   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
56   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
58   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
59   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
60   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
61   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
62   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
63   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
64   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
65   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
66   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
67   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
68   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
69   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
70   - },
71   - u'auth.group': {
72   - 'Meta': {'object_name': 'Group'},
73   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
74   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
75   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
76   - },
77   - u'auth.permission': {
78   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
79   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
80   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
81   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
82   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
83   - },
84   - u'contenttypes.contenttype': {
85   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
86   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
87   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
89   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
90   - },
91   - u'hitcounter.hit': {
92   - 'Meta': {'unique_together': "(('content_type', 'object_pk'),)", 'object_name': 'Hit'},
93   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
94   - 'created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
95   - 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
96   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
98   - 'updated': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'})
99   - },
100   - u'super_archives.emailaddress': {
101   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
102   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
103   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
105   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
106   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
107   - },
108   - u'super_archives.emailaddressvalidation': {
109   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
110   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
111   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
112   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
114   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'60d2bcbd9d924d9f8139c2d1227223ed'", 'max_length': '32', 'null': 'True'})
115   - },
116   - u'super_archives.keyword': {
117   - 'Meta': {'ordering': "('?',)", 'object_name': 'Keyword'},
118   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119   - 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
120   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
121   - 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
122   - },
123   - u'super_archives.mailinglist': {
124   - 'Meta': {'object_name': 'MailingList'},
125   - 'description': ('django.db.models.fields.TextField', [], {}),
126   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
127   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
129   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
130   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
131   - },
132   - u'super_archives.mailinglistmembership': {
133   - 'Meta': {'object_name': 'MailingListMembership'},
134   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
135   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
136   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
137   - },
138   - u'super_archives.message': {
139   - 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
140   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
141   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
142   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
143   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
144   - 'received_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
145   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
146   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
147   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
148   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
149   - },
150   - u'super_archives.messageblock': {
151   - 'Meta': {'ordering': "('order',)", 'object_name': 'MessageBlock'},
152   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
153   - 'is_reply': ('django.db.models.fields.BooleanField', [], {}),
154   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'blocks'", 'to': u"orm['super_archives.Message']"}),
155   - 'order': ('django.db.models.fields.IntegerField', [], {}),
156   - 'text': ('django.db.models.fields.TextField', [], {})
157   - },
158   - u'super_archives.messagemetadata': {
159   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
160   - 'Meta': {'object_name': 'MessageMetadata'},
161   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
162   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
163   - 'value': ('django.db.models.fields.TextField', [], {})
164   - },
165   - u'super_archives.pagehit': {
166   - 'Meta': {'object_name': 'PageHit'},
167   - 'hit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
168   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
169   - 'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'})
170   - },
171   - u'super_archives.thread': {
172   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
173   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
175   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
176   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
177   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
178   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
179   - },
180   - u'super_archives.vote': {
181   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
182   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
183   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
185   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
186   - }
187   - }
188   -
189   - complete_apps = ['hitcounter', 'super_archives']
190   - symmetrical = True
src/super_archives/migrations/0021_auto__del_pagehit.py
... ... @@ -1,152 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -import datetime
3   -from south.db import db
4   -from south.v2 import SchemaMigration
5   -from django.db import models
6   -
7   -
8   -class Migration(SchemaMigration):
9   -
10   - def forwards(self, orm):
11   - # Deleting model 'PageHit'
12   - db.delete_table(u'super_archives_pagehit')
13   -
14   -
15   - def backwards(self, orm):
16   - # Adding model 'PageHit'
17   - db.create_table(u'super_archives_pagehit', (
18   - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
19   - ('hit_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
20   - ('url_path', self.gf('django.db.models.fields.CharField')(max_length=2048, unique=True, db_index=True)),
21   - ))
22   - db.send_create_signal(u'super_archives', ['PageHit'])
23   -
24   -
25   - models = {
26   - u'accounts.user': {
27   - 'Meta': {'object_name': 'User'},
28   - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
29   - 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'blank': 'True'}),
30   - 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
31   - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
32   - 'google_talk': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
33   - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
34   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
35   - 'institution': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
36   - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
37   - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
38   - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
39   - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
40   - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
41   - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
42   - 'role': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
43   - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
44   - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
45   - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
46   - 'verification_hash': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
47   - 'webpage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'})
48   - },
49   - u'auth.group': {
50   - 'Meta': {'object_name': 'Group'},
51   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52   - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
53   - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
54   - },
55   - u'auth.permission': {
56   - 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
57   - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
58   - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
59   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
61   - },
62   - u'contenttypes.contenttype': {
63   - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
64   - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
65   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
66   - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
67   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
68   - },
69   - u'super_archives.emailaddress': {
70   - 'Meta': {'ordering': "('id',)", 'object_name': 'EmailAddress'},
71   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
72   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
73   - 'md5': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
74   - 'real_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'}),
75   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"})
76   - },
77   - u'super_archives.emailaddressvalidation': {
78   - 'Meta': {'unique_together': "(('user', 'address'),)", 'object_name': 'EmailAddressValidation'},
79   - 'address': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75'}),
80   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
81   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
82   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails_not_validated'", 'null': 'True', 'to': u"orm['accounts.User']"}),
83   - 'validation_key': ('django.db.models.fields.CharField', [], {'default': "'dabb0135cf6c436da11caf5dac7e8c10'", 'max_length': '32', 'null': 'True'})
84   - },
85   - u'super_archives.keyword': {
86   - 'Meta': {'ordering': "('?',)", 'object_name': 'Keyword'},
87   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88   - 'keyword': ('django.db.models.fields.CharField', [], {'max_length': "'128'"}),
89   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']"}),
90   - 'weight': ('django.db.models.fields.IntegerField', [], {'default': '0'})
91   - },
92   - u'super_archives.mailinglist': {
93   - 'Meta': {'object_name': 'MailingList'},
94   - 'description': ('django.db.models.fields.TextField', [], {}),
95   - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
96   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97   - 'last_imported_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
98   - 'logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
99   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '80'})
100   - },
101   - u'super_archives.mailinglistmembership': {
102   - 'Meta': {'object_name': 'MailingListMembership'},
103   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
105   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
106   - },
107   - u'super_archives.message': {
108   - 'Meta': {'ordering': "('received_time',)", 'unique_together': "(('thread', 'message_id'),)", 'object_name': 'Message'},
109   - 'body': ('django.db.models.fields.TextField', [], {'default': "''"}),
110   - 'from_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.EmailAddress']"}),
111   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
112   - 'message_id': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
113   - 'received_time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
114   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
115   - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
116   - 'subject_clean': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
117   - 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Thread']", 'null': 'True'})
118   - },
119   - u'super_archives.messageblock': {
120   - 'Meta': {'ordering': "('order',)", 'object_name': 'MessageBlock'},
121   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
122   - 'is_reply': ('django.db.models.fields.BooleanField', [], {}),
123   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'blocks'", 'to': u"orm['super_archives.Message']"}),
124   - 'order': ('django.db.models.fields.IntegerField', [], {}),
125   - 'text': ('django.db.models.fields.TextField', [], {})
126   - },
127   - u'super_archives.messagemetadata': {
128   - 'Message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
129   - 'Meta': {'object_name': 'MessageMetadata'},
130   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131   - 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
132   - 'value': ('django.db.models.fields.TextField', [], {})
133   - },
134   - u'super_archives.thread': {
135   - 'Meta': {'unique_together': "(('subject_token', 'mailinglist'),)", 'object_name': 'Thread'},
136   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
137   - 'latest_message': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'unique': 'True', 'null': 'True', 'to': u"orm['super_archives.Message']"}),
138   - 'mailinglist': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.MailingList']"}),
139   - 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
140   - 'spam': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
141   - 'subject_token': ('django.db.models.fields.CharField', [], {'max_length': '512'})
142   - },
143   - u'super_archives.vote': {
144   - 'Meta': {'unique_together': "(('user', 'message'),)", 'object_name': 'Vote'},
145   - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
146   - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
147   - 'message': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['super_archives.Message']"}),
148   - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
149   - }
150   - }
151   -
152   - complete_apps = ['super_archives']
153 0 \ No newline at end of file