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 Parabola Wiki: Recent changes feed 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.

      diff --git a/templates/packages/search.html b/templates/packages/search.html index 4a61298e..bb5c1c8b 100644 --- a/templates/packages/search.html +++ b/templates/packages/search.html @@ -165,7 +165,7 @@

      Package Search

      You are browsing the Parabola package database. From here you can find detailed information about packages located in the official supported repositories. If you need the sourceball from where a package is built, you can look at our sources repo.

      diff --git a/templates/public/about.html b/templates/public/about.html index a01a33fe..099d5513 100644 --- a/templates/public/about.html +++ b/templates/public/about.html @@ -53,7 +53,7 @@

      Participate

    • Host repositories. Mirrors are not abundant.
    • -
    • Take a look at our TODO list
    • +
    • Take a look at our TODO list
    diff --git a/templates/public/donate.html b/templates/public/donate.html index ef7f252d..c6e055f5 100644 --- a/templates/public/donate.html +++ b/templates/public/donate.html @@ -18,7 +18,7 @@

    We don't accept any money donations

    anything, because we are a really small community of hackers.

    If you want, we have a pretty nice TODO list you can check to help us by donating some of your time. That will be very much appreciated by us :)

    diff --git a/templates/public/download.html b/templates/public/download.html index 207414dc..2e1024b0 100644 --- a/templates/public/download.html +++ b/templates/public/download.html @@ -23,14 +23,14 @@

    Release Info

  • Resources:
  • Instructions: @@ -42,7 +42,7 @@

    Existing Arch Users

    If you are an Arch user, there is no need to download the ISO to update your existing system to Parabola. You can just follow the instructions in our wiki to convert your existing Arch system into a free - as in freedom one. More here.

    BitTorrent Download (recommended)

    @@ -68,12 +68,12 @@

    BitTorrent Download (recommended)

    - Download - Download @@ -94,10 +94,10 @@

    BitTorrent Download (recommended)

    Core Image - Download - Download HTTP/FTP Direct Downloads image matches the checksum from the MD5SUMS or SHA256SUMS file in the same directory as the image.

    -

    Go to the Parabola ISOs directory.

    {%endwith%} diff --git a/templates/public/feeds.html b/templates/public/feeds.html index da70e6ee..69789150 100644 --- a/templates/public/feeds.html +++ b/templates/public/feeds.html @@ -17,10 +17,10 @@

    News and Activity Feeds

    the Parabola staff.

    The Parabola Wiki: Recent changes feed is also available to track document changes from the - Parabola Wiki.

    Package Feeds

    diff --git a/templates/public/https.html b/templates/public/https.html index 7cfe44e9..e53dc8e9 100644 --- a/templates/public/https.html +++ b/templates/public/https.html @@ -19,9 +19,8 @@

    Parabola GNU/Linux-libre

    I just want to get the ISOs

    You can proceed to our ISOs download page on our wiki (which isn't secured - yet, sadly).

    + href="https://wiki.parabolagnulinux.org/get">ISOs download page on our wiki.

    I want to do this the right way

    diff --git a/templates/public/index.html b/templates/public/index.html index 044b586f..188c572f 100644 --- a/templates/public/index.html +++ b/templates/public/index.html @@ -112,22 +112,22 @@

    Recent Updates (Documentation

    Community

    @@ -152,9 +152,9 @@

    Development

    title="View/search the package repository database">Packages
  • Package Groups
  • -
  • Projects in Git
  • -
  • Issue Tracker
  • Todo Lists
  • @@ -166,7 +166,7 @@

    About

  • About Parabola
  • Download Parabola
  • -
  • Media Appearances
  • Logos & Artwork
  • News Archives
  • diff --git a/templates/public/svn.html b/templates/public/svn.html index 80367eaf..4321f7c2 100644 --- a/templates/public/svn.html +++ b/templates/public/svn.html @@ -4,7 +4,7 @@

    SVN Repositories

    Parabola doesn't use any SVN repositories. But you can find our Projects on git!

    -- cgit v1.2.3-54-g00ecf