From d5063bd1d2cae79df7ce6e826c7413fed61ff9db Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Wed, 5 Oct 2011 15:45:44 -0500
Subject: Add package visualizations page
Why the hell not? Have fun clicking all the pretty buttons.
Signed-off-by: Dan McGee
---
settings.py | 1 +
1 file changed, 1 insertion(+)
(limited to 'settings.py')
diff --git a/settings.py b/settings.py
index 18437098..51f9fcf6 100644
--- a/settings.py
+++ b/settings.py
@@ -109,6 +109,7 @@
'public',
'south', # database migration support
'releng',
+ 'visualize',
)
PGP_SERVER = 'pgp.mit.edu:11371'
--
cgit v1.2.3-54-g00ecf
From 12408702eaf89ea338670ba808da9ef49e35c562 Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Mon, 14 Nov 2011 12:19:17 -0600
Subject: Allow population of signoff specs with SVN commit messages
This pulls them from the latest SVN commit on trunk. We don't have a
failproof method of getting the exact right commit, but this should be
close if it is run on a regular basis via cron (aka hourly).
Note that running locally, I needed the development version of South to
get the migration included here to apply because of information_schema
changes in the current version of MySQL.
Signed-off-by: Dan McGee
---
packages/management/commands/populate_signoffs.py | 89 +++++++++++
packages/management/commands/signoff_report.py | 2 +-
...11_auto__chg_field_signoffspecification_user.py | 165 +++++++++++++++++++++
packages/models.py | 2 +-
packages/views/signoff.py | 5 +
settings.py | 4 +
templates/packages/signoffs.html | 2 +-
7 files changed, 266 insertions(+), 3 deletions(-)
create mode 100644 packages/management/commands/populate_signoffs.py
create mode 100644 packages/migrations/0011_auto__chg_field_signoffspecification_user.py
(limited to 'settings.py')
diff --git a/packages/management/commands/populate_signoffs.py b/packages/management/commands/populate_signoffs.py
new file mode 100644
index 00000000..5b5acbaf
--- /dev/null
+++ b/packages/management/commands/populate_signoffs.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+"""
+populate_signoffs command
+
+Pull the latest commit message from SVN for a given package that is
+signoff-eligible and does not have an existing comment attached.
+
+Usage: ./manage.py populate_signoffs
+"""
+
+from datetime import datetime
+import logging
+import subprocess
+import sys
+from xml.etree.ElementTree import XML
+
+from django.conf import settings
+from django.contrib.auth.models import User
+from django.core.management.base import NoArgsCommand
+
+from ...models import SignoffSpecification
+from ...utils import get_signoff_groups
+
+logging.basicConfig(
+ level=logging.INFO,
+ format='%(asctime)s -> %(levelname)s: %(message)s',
+ datefmt='%Y-%m-%d %H:%M:%S',
+ stream=sys.stderr)
+logger = logging.getLogger()
+
+class Command(NoArgsCommand):
+ help = "Pull the latest commit message from SVN for a given package that is signoff-eligible and does not have an existing comment attached"
+
+ def handle_noargs(self, **options):
+ v = int(options.get('verbosity', None))
+ if v == 0:
+ logger.level = logging.ERROR
+ elif v == 1:
+ logger.level = logging.INFO
+ elif v == 2:
+ logger.level = logging.DEBUG
+
+ return add_signoff_comments()
+
+def svn_log(pkgbase, repo):
+ path = '%s%s/%s/trunk/' % (settings.SVN_BASE_URL, repo.svn_root, pkgbase)
+ cmd = ['svn', 'log', '--limit=1', '--xml', path]
+ log_data = subprocess.check_output(cmd)
+ # the XML format is very very simple, especially with only one revision
+ xml = XML(log_data)
+ revision = int(xml.find('logentry').get('revision'))
+ date = datetime.strptime(xml.findtext('logentry/date'),
+ '%Y-%m-%dT%H:%M:%S.%fZ')
+ return {
+ 'revision': revision,
+ 'date': date,
+ 'author': xml.findtext('logentry/author'),
+ 'message': xml.findtext('logentry/msg'),
+ }
+
+def create_specification(package, log):
+ trimmed_message = log['message'].strip()
+ spec = SignoffSpecification(pkgbase=package.pkgbase,
+ pkgver=package.pkgver, pkgrel=package.pkgrel,
+ epoch=package.epoch, arch=package.arch, repo=package.repo,
+ comments=trimmed_message)
+ try:
+ spec.user = User.objects.get(username=log['author'])
+ except User.DoesNotExist:
+ pass
+
+ return spec
+
+def add_signoff_comments():
+ logger.info("getting all signoff groups")
+ groups = get_signoff_groups()
+ logger.info("%d signoff groups found", len(groups))
+
+ for group in groups:
+ if not group.default_spec:
+ continue
+
+ logger.debug("getting SVN log for %s (%s)", group.pkgbase, group.repo)
+ log = svn_log(group.pkgbase, group.repo)
+ logger.info("creating spec with SVN message for %s", group.pkgbase)
+ spec = create_specification(group.packages[0], log)
+ spec.save()
+
+# vim: set ts=4 sw=4 et:
diff --git a/packages/management/commands/signoff_report.py b/packages/management/commands/signoff_report.py
index 3357bc1e..3b67f518 100644
--- a/packages/management/commands/signoff_report.py
+++ b/packages/management/commands/signoff_report.py
@@ -22,7 +22,7 @@
from operator import attrgetter
import sys
-from main.models import Package, Repo
+from main.models import Repo
from packages.models import Signoff
from packages.utils import get_signoff_groups
diff --git a/packages/migrations/0011_auto__chg_field_signoffspecification_user.py b/packages/migrations/0011_auto__chg_field_signoffspecification_user.py
new file mode 100644
index 00000000..f6e3cdd9
--- /dev/null
+++ b/packages/migrations/0011_auto__chg_field_signoffspecification_user.py
@@ -0,0 +1,165 @@
+# encoding: utf-8
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ db.alter_column('packages_signoffspecification', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True))
+
+ def backwards(self, orm):
+ db.alter_column('packages_signoffspecification', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['auth.User']))
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('main.models.PositiveBigIntegerField', [], {}),
+ 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('main.models.PositiveBigIntegerField', [], {}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pgp_signature': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_category': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'staging': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'packages.conflict': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Conflict'},
+ 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conflicts'", 'to': "orm['main.Package']"}),
+ 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
+ },
+ 'packages.license': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'License'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagegroup': {
+ 'Meta': {'object_name': 'PackageGroup'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagerelation': {
+ 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
+ 'created': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
+ },
+ 'packages.provision': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Provision'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'provides'", 'to': "orm['main.Package']"}),
+ 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
+ },
+ 'packages.replacement': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Replacement'},
+ 'comparison': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'replaces'", 'to': "orm['main.Package']"}),
+ 'version': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'})
+ },
+ 'packages.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
+ 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {}),
+ 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
+ 'revoked': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_signoffs'", 'to': "orm['auth.User']"})
+ },
+ 'packages.signoffspecification': {
+ 'Meta': {'object_name': 'SignoffSpecification'},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Arch']"}),
+ 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {}),
+ 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'epoch': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'known_bad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Repo']"}),
+ 'required': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
+ }
+ }
+
+ complete_apps = ['packages']
diff --git a/packages/models.py b/packages/models.py
index b70c21bf..0d02ab31 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -73,7 +73,7 @@ class SignoffSpecification(models.Model):
epoch = models.PositiveIntegerField(default=0)
arch = models.ForeignKey('main.Arch')
repo = models.ForeignKey('main.Repo')
- user = models.ForeignKey(User)
+ user = models.ForeignKey(User, null=True)
created = models.DateTimeField(editable=False)
required = models.PositiveIntegerField(default=2,
help_text="How many signoffs are required for this package?")
diff --git a/packages/views/signoff.py b/packages/views/signoff.py
index 26b6e710..e57b4d9a 100644
--- a/packages/views/signoff.py
+++ b/packages/views/signoff.py
@@ -98,7 +98,10 @@ def _signoff_options_all(request, name, repo):
pkgver=package.pkgver, pkgrel=package.pkgrel,
epoch=package.epoch, arch=package.arch,
repo=package.repo)
+
+ if spec.user is None:
spec.user = request.user
+
form = SignoffOptionsForm(request.POST, instance=spec)
if form.is_valid():
form.save()
@@ -122,6 +125,8 @@ def signoff_options(request, name, repo, arch):
spec = SignoffSpecification(pkgbase=package.pkgbase,
pkgver=package.pkgver, pkgrel=package.pkgrel,
epoch=package.epoch, arch=package.arch, repo=package.repo)
+
+ if spec.user is None:
spec.user = request.user
if request.POST:
diff --git a/settings.py b/settings.py
index 51f9fcf6..80e024af 100644
--- a/settings.py
+++ b/settings.py
@@ -134,4 +134,8 @@
# URL to fetch a current list of available ISOs
ISO_LIST_URL = 'http://releng.archlinux.org/isos/'
+# URL for SVN access for fetching commit messages (note absence of packages or
+# community bit on the end, repo.svn_root is appended)
+SVN_BASE_URL = 'svn+ssh://svn.archlinux.org/srv/svn-'
+
# vim: set ts=4 sw=4 et:
diff --git a/templates/packages/signoffs.html b/templates/packages/signoffs.html
index f4511f75..bd84289c 100644
--- a/templates/packages/signoffs.html
+++ b/templates/packages/signoffs.html
@@ -71,7 +71,7 @@ Filter Displayed Signoffs
{% if spec.required != 2 %}Required signoffs: {{ spec.required }}
{% endif %}
{% if not spec.enabled %}Signoffs are not currently enabled
{% endif %}
{% if spec.known_bad %}Package is known to be bad
{% endif %}
- {{ spec.comments|default:""|linebreaks }}
+ {{ spec.comments|default:""|linebreaksbr }}
{% endwith %}{% endif %}
{% endfor %}
--
cgit v1.2.3-54-g00ecf
From 84679f90a772e591dae2dea28194730d5453e6cf Mon Sep 17 00:00:00 2001
From: Dan McGee
Date: Tue, 15 Nov 2011 14:37:46 -0600
Subject: Move certain settings above local settings import
This ensures one can override them in local_settings.py if necesary.
Signed-off-by: Dan McGee
---
settings.py | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
(limited to 'settings.py')
diff --git a/settings.py b/settings.py
index 80e024af..77f84ba2 100644
--- a/settings.py
+++ b/settings.py
@@ -112,8 +112,16 @@
'visualize',
)
+## Server used for linking to PGP keysearch results
PGP_SERVER = 'pgp.mit.edu:11371'
+# URL to fetch a current list of available ISOs
+ISO_LIST_URL = 'http://releng.archlinux.org/isos/'
+
+# URL for SVN access for fetching commit messages (note absence of packages or
+# community bit on the end, repo.svn_root is appended)
+SVN_BASE_URL = 'svn+ssh://svn.archlinux.org/srv/svn-'
+
## Import local settings
from local_settings import *
@@ -131,11 +139,4 @@
INSTALLED_APPS = list(INSTALLED_APPS) + [ 'debug_toolbar' ]
-# URL to fetch a current list of available ISOs
-ISO_LIST_URL = 'http://releng.archlinux.org/isos/'
-
-# URL for SVN access for fetching commit messages (note absence of packages or
-# community bit on the end, repo.svn_root is appended)
-SVN_BASE_URL = 'svn+ssh://svn.archlinux.org/srv/svn-'
-
# vim: set ts=4 sw=4 et:
--
cgit v1.2.3-54-g00ecf
From 623e0453cee5e3f663a0b18d68db0396cc812983 Mon Sep 17 00:00:00 2001
From: Luke Shumaker
Date: Thu, 1 Dec 2011 23:35:41 -0500
Subject: I think this fixes all the broken links (that point to
parabolagnulinux.org anyway)
---
devel/views.py | 2 +-
settings.py | 2 +-
templates/base.html | 2 +-
templates/packages/flaghelp.html | 2 +-
templates/public/art.html | 2 +-
templates/public/download.html | 2 +-
templates/public/feeds.html | 2 +-
templates/public/index.html | 4 ++--
todolists/views.py | 2 +-
9 files changed, 10 insertions(+), 10 deletions(-)
(limited to 'settings.py')
diff --git a/devel/views.py b/devel/views.py
index 7cc45419..b9bd7cce 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -292,7 +292,7 @@ def save(self, commit=True):
send_mail("Your new parabolaweb account",
template.render(ctx),
- 'Parabola ',
+ 'Parabola ',
[user.email],
fail_silently=False)
diff --git a/settings.py b/settings.py
index cb17c96c..e1fc45d5 100644
--- a/settings.py
+++ b/settings.py
@@ -13,7 +13,7 @@
MANAGERS = ADMINS
# Package out-of-date emails for orphans
-NOTIFICATIONS = ['packages@list.parabolagnulinux.org']
+NOTIFICATIONS = ['dev@lists.parabolagnulinux.org']
# Full path to the data directory
DEPLOY_PATH = os.path.dirname(os.path.realpath(__file__))
diff --git a/templates/base.html b/templates/base.html
index ca492281..b537c603 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -39,7 +39,7 @@
Architecture Differences
Archives
Dev Clocks
{% if user.is_staff %}
diff --git a/templates/packages/flaghelp.html b/templates/packages/flaghelp.html
index e33ba0f5..d60018fa 100644
--- a/templates/packages/flaghelp.html
+++ b/templates/packages/flaghelp.html
@@ -25,7 +25,7 @@ Flagging Packages
The message box portion of the flag utility is optional, and meant
for short messages only. If you need more than 200 characters for your
message, then file a bug report, email the maintainer directly, or send
- an email to the parabola mailing list
with your additional text.
diff --git a/templates/public/art.html b/templates/public/art.html
index 68179f23..3a92b8b4 100644
--- a/templates/public/art.html
+++ b/templates/public/art.html
@@ -10,7 +10,7 @@ Parabola Logos and Artwork
You can help by creating artwork for Parabola GNU/Linux-libre.
- Send your designs to web@list.parabolagnulinux.org and state they are CC-by-sa
+
Send your designs to dev@lists.parabolagnulinux.org and state they are CC-by-sa
or another free culture friendly license.
diff --git a/templates/public/download.html b/templates/public/download.html
index 7a1cd855..207414dc 100644
--- a/templates/public/download.html
+++ b/templates/public/download.html
@@ -23,7 +23,7 @@ Release Info
Resources:
diff --git a/templates/public/feeds.html b/templates/public/feeds.html
index 79e8a1aa..da70e6ee 100644
--- a/templates/public/feeds.html
+++ b/templates/public/feeds.html
@@ -17,7 +17,7 @@ News and Activity Feeds
the Parabola staff.
The is also available to track document changes from the
Mailing Lists
-
Dev Archives
IRC Channels
diff --git a/todolists/views.py b/todolists/views.py
index 43763545..233102cf 100644
--- a/todolists/views.py
+++ b/todolists/views.py
@@ -161,7 +161,7 @@ def send_todolist_emails(todo_list, new_packages):
template = loader.get_template('todolists/email_notification.txt')
send_mail('Packages added to todo list \'%s\'' % todo_list.name,
template.render(ctx),
- 'Parabola ',
+ 'Parabola ',
[maint],
fail_silently=True)
--
cgit v1.2.3-54-g00ecf
From a10b6d884f4f102f5216f4b341f35bb341cee176 Mon Sep 17 00:00:00 2001
From: Luke Shumaker
Date: Thu, 1 Dec 2011 23:55:27 -0500
Subject: Normalize the URI scheme used for inbound links. Don't use one when
possible, else use https
---
README | 2 +-
packages/templatetags/package_extras.py | 8 ++++----
public/views.py | 2 +-
settings.py | 2 +-
templates/base.html | 12 ++++++------
templates/packages/flag.html | 2 +-
templates/packages/flaghelp.html | 4 ++--
templates/packages/search.html | 2 +-
templates/public/about.html | 2 +-
templates/public/donate.html | 2 +-
templates/public/download.html | 16 ++++++++--------
templates/public/feeds.html | 4 ++--
templates/public/https.html | 5 ++---
templates/public/index.html | 18 +++++++++---------
templates/public/svn.html | 2 +-
15 files changed, 41 insertions(+), 42 deletions(-)
(limited to 'settings.py')
diff --git a/README b/README
index 0e9d19af..acd8b8f9 100644
--- a/README
+++ b/README
@@ -94,7 +94,7 @@ for your install.
10. To optionally populate the database with real data:
- $ wget http://repo.parabolagnulinux.org/core/os/i686/core.db.tar.gz
+ $ wget https://repo.parabolagnulinux.org/core/os/i686/core.db.tar.gz
$ ./manage.py reporead i686 core.db.tar.gz
$ ./manage.py syncisos
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index 01d9afd6..c8c88ca7 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -74,7 +74,7 @@ def userpkgs(user):
@register.simple_tag
def get_wiki_link(package):
- url = "https://wiki.parabolagnulinux.org/index.php"
+ url = "//wiki.parabolagnulinux.org/index.php"
data = {
'title': "Special:Search",
'search': package.pkgname,
@@ -92,7 +92,7 @@ def svn_trunk(package):
@register.simple_tag
def bugs_list(package):
- url = "https://bugs.parabolagnulinux.org/bugs/issue?"
+ url = "//bugs.parabolagnulinux.org/bugs/issue?"
data = {
'@action': 'search',
'title': package.pkgname,
@@ -101,7 +101,7 @@ def bugs_list(package):
@register.simple_tag
def bug_report(package):
- url = "https://bugs.parabolagnulinux.org/bugs/issue?"
+ url = "//bugs.parabolagnulinux.org/bugs/issue?"
data = {
'@template': 'item',
'keyword': 'packages',
@@ -118,5 +118,5 @@ def flag_unfree(package):
'priority': 'critical',
'title': '[%s] Please put your reasons here (register first if you haven\'t)' % package.pkgname,
}
- return "https://bugs.parabolagnulinux.org/bugs/issue?%s" % urlencode(data)
+ return "//bugs.parabolagnulinux.org/bugs/issue?%s" % urlencode(data)
# vim: set ts=4 sw=4 et:
diff --git a/public/views.py b/public/views.py
index bb9cd454..43b46b12 100644
--- a/public/views.py
+++ b/public/views.py
@@ -52,7 +52,7 @@ def donate(request):
return direct_to_template(request, 'public/donate.html', context)
def download(request):
- return redirect('http://wiki.parabolagnulinux.org/get', permanent=True)
+ return redirect('//wiki.parabolagnulinux.org/get', permanent=True)
def feeds(request):
context = {
diff --git a/settings.py b/settings.py
index e1fc45d5..ed12bbec 100644
--- a/settings.py
+++ b/settings.py
@@ -132,6 +132,6 @@
INSTALLED_APPS = list(INSTALLED_APPS) + [ 'debug_toolbar' ]
# URL to fetch a current list of available ISOs
-ISO_LIST_URL = 'http://repo.parabolagnulinux.org/isos/'
+ISO_LIST_URL = 'https://repo.parabolagnulinux.org/isos/'
# vim: set ts=4 sw=4 et:
diff --git a/templates/base.html b/templates/base.html
index b537c603..746c6cf4 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -19,10 +19,10 @@
@@ -32,14 +32,14 @@
{% if user.is_authenticated %}
- Dashboard
- - Projects
+ - Projects
- News
- Signoffs
- Todos
- Architecture Differences
- Archives
- Dev Clocks
{% if user.is_staff %}
diff --git a/templates/packages/flag.html b/templates/packages/flag.html
index 4bb23b85..ea199618 100644
--- a/templates/packages/flag.html
+++ b/templates/packages/flag.html
@@ -29,7 +29,7 @@ Flag Package: {{ package.pkgname }} {{ package.full_version }} ({{ package.a
Note: Do not use this facility if the
package is broken! The package will be unflagged and the report will be ignored!
- Use the
+ Use the
bugtracker to file a bug instead.
Please confirm your flag request for {{package.pkgname}}:
diff --git a/templates/packages/flaghelp.html b/templates/packages/flaghelp.html
index d60018fa..eac13f83 100644
--- a/templates/packages/flaghelp.html
+++ b/templates/packages/flaghelp.html
@@ -25,12 +25,12 @@ Flagging Packages
The message box portion of the flag utility is optional, and meant
for short messages only. If you need more than 200 characters for your
message, then file a bug report, email the maintainer directly, or send
- an email to the parabola mailing list
with your additional text.
Note: Please do not use this facility if the
- package is broken! Use the bugtracker instead.