You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2014/01/10 22:23:00 UTC
[04/36] PEP8 cleanup
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeTracker/forgetracker/widgets/admin_custom_fields.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/admin_custom_fields.py b/ForgeTracker/forgetracker/widgets/admin_custom_fields.py
index 52af881..2938685 100644
--- a/ForgeTracker/forgetracker/widgets/admin_custom_fields.py
+++ b/ForgeTracker/forgetracker/widgets/admin_custom_fields.py
@@ -25,32 +25,34 @@ from pylons import tmpl_context as c
from forgetracker import model
from formencode import validators as fev
+
class MilestonesAdmin(ffw.SortableTable):
- defaults=dict(
+ defaults = dict(
ffw.SortableTable.defaults,
button=ffw.AdminField(field=ew.InputField(
- css_class='add', field_type='button',
- value='New Milestone')),
+ css_class='add', field_type='button',
+ value='New Milestone')),
empty_msg='No milestones have been created.',
nonempty_msg='Drag and drop the milestones to reorder.',
repetitions=0)
fields = [
ew.HiddenField(name='old_name'),
- ffw.Radio(name='default', label='Default', css_class='default-milestone'),
+ ffw.Radio(name='default', label='Default',
+ css_class='default-milestone'),
ew.Checkbox(name='complete', show_label=True, suppress_label=True),
ew.TextField(name='name',
- attrs={'style':'width: 80px'}),
+ attrs={'style': 'width: 80px'}),
ffw.DateField(name='due_date',
- attrs={'style':'width: 80px'}),
+ attrs={'style': 'width: 80px'}),
ffw.AutoResizeTextarea(
name='description',
- attrs={'style':'height:1em; width: 150px'}),
+ attrs={'style': 'height:1em; width: 150px'}),
ew.InputField(
label='Delete',
field_type='button',
- attrs={'class':'delete', 'value':'Delete'}),
- ]
- button = ew.InputField(
+ attrs={'class': 'delete', 'value': 'Delete'}),
+ ]
+ button = ew.InputField(
css_class='add', field_type='button', value='New Milestone')
def prepare_context(self, context):
@@ -62,38 +64,41 @@ class MilestonesAdmin(ffw.SortableTable):
return response
def resources(self):
- for r in super(MilestonesAdmin, self).resources(): yield r
+ for r in super(MilestonesAdmin, self).resources():
+ yield r
yield ew.CSSScript('''div.state-field table{ width: 700px; }''')
+
class CustomFieldAdminDetail(ffw.StateField):
- template='jinja:forgetracker:templates/tracker_widgets/custom_field_admin_detail.html'
- defaults=dict(
+ template = 'jinja:forgetracker:templates/tracker_widgets/custom_field_admin_detail.html'
+ defaults = dict(
ffw.StateField.defaults,
selector=ffw.AdminField(field=ew.SingleSelectField(
- name='type',
- options=[
- ew.Option(py_value='string', label='Text'),
- ew.Option(py_value='number', label='Number'),
- ew.Option(py_value='boolean', label='Boolean'),
- ew.Option(py_value='select', label='Select'),
- ew.Option(py_value='milestone', label='Milestone'),
- ew.Option(py_value='user', label='User'),
- ],
- )),
+ name='type',
+ options=[
+ ew.Option(py_value='string', label='Text'),
+ ew.Option(py_value='number', label='Number'),
+ ew.Option(py_value='boolean', label='Boolean'),
+ ew.Option(py_value='select', label='Select'),
+ ew.Option(py_value='milestone', label='Milestone'),
+ ew.Option(py_value='user', label='User'),
+ ],
+ )),
states=dict(
select=ffw.FieldCluster(
fields=[
ffw.AdminField(field=ew.TextField(name='options',
- label='Options (separate with spaces; quote if containing spaces; prefix with * to set a default)',
- )) ],
+ label='Options (separate with spaces; quote if containing spaces; prefix with * to set a default)',
+ ))],
show_labels=False),
milestone=ffw.FieldCluster(
# name='milestones',
- fields=[ MilestonesAdmin(name='milestones') ])
- ))
+ fields=[MilestonesAdmin(name='milestones')])
+ ))
+
class CustomFieldAdmin(ew.CompoundField):
- template='jinja:forgetracker:templates/tracker_widgets/custom_field_admin.html'
+ template = 'jinja:forgetracker:templates/tracker_widgets/custom_field_admin.html'
def resources(self):
for r in super(CustomFieldAdmin, self).resources():
@@ -108,14 +113,17 @@ class CustomFieldAdmin(ew.CompoundField):
label='Show in list view',
show_label=True,
suppress_label=True),
- CustomFieldAdminDetail() ]
+ CustomFieldAdminDetail()]
+
class TrackerFieldAdmin(f.ForgeForm):
- submit_text=None
+ submit_text = None
+
class fields(ew_core.NameList):
open_status_names = ew.TextField(label='Open Statuses')
closed_status_names = ew.TextField(label='Closed Statuses')
custom_fields = ffw.SortableRepeatedField(field=CustomFieldAdmin())
+
class buttons(ew_core.NameList):
save = ew.SubmitButton(label='Save')
cancel = ew.SubmitButton(
@@ -127,18 +135,23 @@ class TrackerFieldAdmin(f.ForgeForm):
for rr in self.fields['custom_fields'].resources():
yield rr
+
class CustomFieldDisplay(ew.CompoundField):
- template='jinja:forgetracker:templates/tracker_widgets/custom_field_display.html'
+ template = 'jinja:forgetracker:templates/tracker_widgets/custom_field_display.html'
+
class CustomFieldsDisplay(ew.RepeatedField):
- template='jinja:forgetracker:templates/tracker_widgets/custom_fields_display.html'
+ template = 'jinja:forgetracker:templates/tracker_widgets/custom_fields_display.html'
+
class TrackerFieldDisplay(f.ForgeForm):
+
class fields(ew_core.NameList):
milestone_names = ew.TextField()
open_status_names = ew.TextField(label='Open Statuses')
closed_status_names = ew.TextField(label='Open Statuses')
custom_fields = CustomFieldsDisplay()
+
def resources(self):
for rr in self.fields['custom_fields'].resources():
yield rr
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeTracker/forgetracker/widgets/bin_form.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/bin_form.py b/ForgeTracker/forgetracker/widgets/bin_form.py
index 9777dcf..a62026e 100644
--- a/ForgeTracker/forgetracker/widgets/bin_form.py
+++ b/ForgeTracker/forgetracker/widgets/bin_form.py
@@ -22,19 +22,21 @@ from allura.lib import validators as V
from forgetracker import model
from formencode import validators as fev
+
class BinForm(ew.SimpleForm):
- template='jinja:forgetracker:templates/tracker_widgets/bin_form.html'
- defaults=dict(
+ template = 'jinja:forgetracker:templates/tracker_widgets/bin_form.html'
+ defaults = dict(
ew.SimpleForm.defaults,
- submit_text = "Save Bin")
+ submit_text="Save Bin")
class hidden_fields(ew.NameList):
- _id=jinja2_ew.HiddenField(validator=V.Ming(model.Bin), if_missing=None)
+ _id = jinja2_ew.HiddenField(
+ validator=V.Ming(model.Bin), if_missing=None)
class fields(ew.NameList):
- summary=jinja2_ew.TextField(
+ summary = jinja2_ew.TextField(
label='Bin Name',
validator=fev.UnicodeString(not_empty=True))
- terms=jinja2_ew.TextField(
+ terms = jinja2_ew.TextField(
label='Search Terms',
validator=fev.UnicodeString(not_empty=True))
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeTracker/forgetracker/widgets/ticket_form.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/ticket_form.py b/ForgeTracker/forgetracker/widgets/ticket_form.py
index 2bdf61b..0a0d816 100644
--- a/ForgeTracker/forgetracker/widgets/ticket_form.py
+++ b/ForgeTracker/forgetracker/widgets/ticket_form.py
@@ -25,8 +25,9 @@ from allura import model as M
from allura.lib.widgets import form_fields as ffw
from allura.lib import helpers as h
+
class TicketCustomFields(ew.CompoundField):
- template='jinja:forgetracker:templates/tracker_widgets/ticket_custom_fields.html'
+ template = 'jinja:forgetracker:templates/tracker_widgets/ticket_custom_fields.html'
def __init__(self, *args, **kwargs):
super(TicketCustomFields, self).__init__(*args, **kwargs)
@@ -49,8 +50,9 @@ class TicketCustomFields(ew.CompoundField):
self._fields.append(TicketCustomField.make(cf))
return self._fields
+
class GenericTicketForm(ew.SimpleForm):
- defaults=dict(
+ defaults = dict(
ew.SimpleForm.defaults,
name="ticket_form",
submit_text='Save',
@@ -74,7 +76,8 @@ class GenericTicketForm(ew.SimpleForm):
display = field.display(**ctx)
if ctx['errors'] and field.show_errors and not ignore_errors:
- display = "%s<div class='error'>%s</div>" % (display, ctx['errors'])
+ display = "%s<div class='error'>%s</div>" % (display,
+ ctx['errors'])
return display
def _add_current_value_to_user_field(self, field, user):
@@ -97,21 +100,30 @@ class GenericTicketForm(ew.SimpleForm):
def fields(self):
fields = [
ew.TextField(name='summary', label='Title',
- attrs={'style':'width: 425px','placeholder':'Title'},
- validator=fev.UnicodeString(not_empty=True, messages={'empty':"You must provide a Title"})),
- ffw.MarkdownEdit(label='Description',name='description',
- attrs={'style':'width: 95%'}),
+ attrs={'style': 'width: 425px',
+ 'placeholder': 'Title'},
+ validator=fev.UnicodeString(
+ not_empty=True, messages={
+ 'empty': "You must provide a Title"})),
+ ffw.MarkdownEdit(label='Description', name='description',
+ attrs={'style': 'width: 95%'}),
ew.SingleSelectField(name='status', label='Status',
- options=lambda: c.app.globals.all_status_names.split()),
+ options=lambda: c.app.globals.all_status_names.split(
+ )),
ffw.ProjectUserCombo(name='assigned_to', label='Owner'),
- ffw.LabelEdit(label='Labels',name='labels', className='ticket_form_tags'),
- ew.Checkbox(name='private', label='Mark as Private', attrs={'class':'unlabeled'}),
- ew.InputField(name='attachment', label='Attachment', field_type='file', attrs={'multiple': 'True'}, validator=fev.FieldStorageUploadConverter(if_missing=None)),
+ ffw.LabelEdit(label='Labels', name='labels',
+ className='ticket_form_tags'),
+ ew.Checkbox(name='private', label='Mark as Private',
+ attrs={'class': 'unlabeled'}),
+ ew.InputField(name='attachment', label='Attachment', field_type='file', attrs={
+ 'multiple': 'True'}, validator=fev.FieldStorageUploadConverter(if_missing=None)),
ffw.MarkdownEdit(name='comment', label='Comment',
- attrs={'style':'min-height:7em; width:97%'}),
- ew.SubmitButton(label=self.submit_text,name='submit',
- attrs={'class':"ui-button ui-widget ui-state-default ui-button-text-only"}),
- ew.HiddenField(name='ticket_num', validator=fev.Int(if_missing=None)),
+ attrs={'style': 'min-height:7em; width:97%'}),
+ ew.SubmitButton(label=self.submit_text, name='submit',
+ attrs={
+ 'class': "ui-button ui-widget ui-state-default ui-button-text-only"}),
+ ew.HiddenField(name='ticket_num',
+ validator=fev.Int(if_missing=None)),
]
# milestone is kind of special because of the layout
# add it to the main form rather than handle with the other customs
@@ -122,8 +134,10 @@ class GenericTicketForm(ew.SimpleForm):
break
return ew_core.NameList(fields)
+
class TicketForm(GenericTicketForm):
- template='jinja:forgetracker:templates/tracker_widgets/ticket_form.html'
+ template = 'jinja:forgetracker:templates/tracker_widgets/ticket_form.html'
+
@property
def fields(self):
fields = ew_core.NameList(super(TicketForm, self).fields)
@@ -132,7 +146,8 @@ class TicketForm(GenericTicketForm):
return fields
def resources(self):
- for r in super(TicketForm, self).resources(): yield r
+ for r in super(TicketForm, self).resources():
+ yield r
yield ew.JSScript('''
$(function(){
$('#show_attach').click(function(evt) {
@@ -153,18 +168,21 @@ class TicketForm(GenericTicketForm):
});
});''')
+
class TicketCustomField(object):
def _select(field):
options = []
- field_options = h.split_select_field_options(h.really_unicode(field.options))
+ field_options = h.split_select_field_options(
+ h.really_unicode(field.options))
for opt in field_options:
selected = False
if opt.startswith('*'):
opt = opt[1:]
selected = True
- options.append(ew.Option(label=opt,html_value=opt,py_value=opt,selected=selected))
+ options.append(
+ ew.Option(label=opt, html_value=opt, py_value=opt, selected=selected))
return ew.SingleSelectField(label=field.label, name=str(field.name), options=options)
def _milestone(field):
@@ -206,8 +224,9 @@ class TicketCustomField(object):
factory = cls.SELECTOR.get(field.get('type'), cls._default)
return factory(field)
+
class MilestoneField(ew.SingleSelectField):
- template=ew.Snippet('''<select {{widget.j2_attrs({
+ template = ew.Snippet('''<select {{widget.j2_attrs({
'id':id,
'name':rendered_name,
'multiple':multiple,
@@ -229,8 +248,10 @@ class MilestoneField(ew.SingleSelectField):
context = super(MilestoneField, self).prepare_context(context)
# group open / closed milestones
- context['open_milestones'] = [opt for opt in self.options if not opt.complete]
- context['closed_milestones'] = [opt for opt in self.options if opt.complete]
+ context['open_milestones'] = [
+ opt for opt in self.options if not opt.complete]
+ context['closed_milestones'] = [
+ opt for opt in self.options if opt.complete]
# filter closed milestones entirely
#value = context['value']
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeTracker/forgetracker/widgets/ticket_search.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/ticket_search.py b/ForgeTracker/forgetracker/widgets/ticket_search.py
index 2369512..453ed68 100644
--- a/ForgeTracker/forgetracker/widgets/ticket_search.py
+++ b/ForgeTracker/forgetracker/widgets/ticket_search.py
@@ -25,9 +25,10 @@ import ew.jinja2_ew as ew
from allura.lib.widgets import form_fields as ffw
from allura.lib.widgets import forms
+
class TicketSearchResults(ew_core.SimpleForm):
- template='jinja:forgetracker:templates/tracker_widgets/ticket_search_results.html'
- defaults=dict(
+ template = 'jinja:forgetracker:templates/tracker_widgets/ticket_search_results.html'
+ defaults = dict(
ew_core.SimpleForm.defaults,
solr_error=None,
count=None,
@@ -40,9 +41,9 @@ class TicketSearchResults(ew_core.SimpleForm):
columns=None)
class fields(ew_core.NameList):
- page_list=ffw.PageList()
- page_size=ffw.PageSize()
- lightbox=ffw.Lightbox(name='col_list',trigger='#col_menu')
+ page_list = ffw.PageList()
+ page_size = ffw.PageSize()
+ lightbox = ffw.Lightbox(name='col_list', trigger='#col_menu')
def resources(self):
yield ew.JSLink('tracker_js/ticket-list.js')
@@ -50,9 +51,10 @@ class TicketSearchResults(ew_core.SimpleForm):
for r in super(TicketSearchResults, self).resources():
yield r
+
class MassEdit(ew_core.SimpleForm):
- template='jinja:forgetracker:templates/tracker_widgets/mass_edit.html'
- defaults=dict(
+ template = 'jinja:forgetracker:templates/tracker_widgets/mass_edit.html'
+ defaults = dict(
ew_core.SimpleForm.defaults,
count=None,
limit=None,
@@ -62,9 +64,9 @@ class MassEdit(ew_core.SimpleForm):
sort=None)
class fields(ew_core.NameList):
- page_list=ffw.PageList()
- page_size=ffw.PageSize()
- lightbox=ffw.Lightbox(name='col_list',trigger='#col_menu')
+ page_list = ffw.PageList()
+ page_size = ffw.PageSize()
+ lightbox = ffw.Lightbox(name='col_list', trigger='#col_menu')
def resources(self):
yield ew.JSLink('tracker_js/ticket-list.js')
@@ -72,9 +74,10 @@ class MassEdit(ew_core.SimpleForm):
for r in super(MassEdit, self).resources():
yield r
+
class MassEditForm(ew_core.Widget):
- template='jinja:forgetracker:templates/tracker_widgets/mass_edit_form.html'
- defaults=dict(
+ template = 'jinja:forgetracker:templates/tracker_widgets/mass_edit_form.html'
+ defaults = dict(
ew_core.Widget.defaults,
globals=None,
query=None,
@@ -85,8 +88,9 @@ class MassEditForm(ew_core.Widget):
def resources(self):
yield ew.JSLink('tracker_js/mass-edit.js')
+
class MassMoveForm(forms.MoveTicketForm):
- defaults=dict(
+ defaults = dict(
forms.MoveTicketForm.defaults,
action='.')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeTracker/setup.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/setup.py b/ForgeTracker/setup.py
index 1934cc2..71b069c 100644
--- a/ForgeTracker/setup.py
+++ b/ForgeTracker/setup.py
@@ -16,7 +16,8 @@
# under the License.
from setuptools import setup, find_packages
-import sys, os
+import sys
+import os
from forgetracker.version import __version__
@@ -25,7 +26,8 @@ setup(name='ForgeTracker',
description="",
long_description="""\
""",
- classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ classifiers=[],
keywords='',
author='',
author_email='',
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/__init__.py b/ForgeUserStats/forgeuserstats/__init__.py
index 77505f1..144e298 100644
--- a/ForgeUserStats/forgeuserstats/__init__.py
+++ b/ForgeUserStats/forgeuserstats/__init__.py
@@ -14,4 +14,3 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/controllers/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/controllers/__init__.py b/ForgeUserStats/forgeuserstats/controllers/__init__.py
index 77505f1..144e298 100644
--- a/ForgeUserStats/forgeuserstats/controllers/__init__.py
+++ b/ForgeUserStats/forgeuserstats/controllers/__init__.py
@@ -14,4 +14,3 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/controllers/userstats.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/controllers/userstats.py b/ForgeUserStats/forgeuserstats/controllers/userstats.py
index 0624a31..c0ecfc3 100644
--- a/ForgeUserStats/forgeuserstats/controllers/userstats.py
+++ b/ForgeUserStats/forgeuserstats/controllers/userstats.py
@@ -29,14 +29,15 @@ from allura.lib import validators as V
stats_preferences_form = StatsPreferencesForm()
+
class ForgeUserStatsCatController(BaseController):
@expose()
def _lookup(self, category, *remainder):
cat = M.TroveCategory.query.get(shortname=category)
- return ForgeUserStatsCatController(category = cat), remainder
+ return ForgeUserStatsCatController(category=cat), remainder
- def __init__(self, category = None):
+ def __init__(self, category=None):
self.category = category
super(ForgeUserStatsCatController, self).__init__()
@@ -59,6 +60,7 @@ class ForgeUserStatsCatController(BaseController):
ret_dict['category'] = self.category
return ret_dict
+
class ForgeUserStatsController(BaseController):
category = ForgeUserStatsCatController()
@@ -74,9 +76,9 @@ class ForgeUserStatsController(BaseController):
if not self.user.stats:
UserStats.create(self.user)
return dict(
- user = self.user,
- form = StatsPreferencesForm(
- action = c.project.url() + 'userstats/change_settings'))
+ user=self.user,
+ form=StatsPreferencesForm(
+ action=c.project.url() + 'userstats/change_settings'))
@expose()
@require_post()
@@ -115,30 +117,30 @@ class ForgeUserStatsController(BaseController):
ret_dict['last_login'] = stats.last_login
if stats.last_login:
ret_dict['last_login_days'] = \
- (datetime.utcnow()-stats.last_login).days
+ (datetime.utcnow() - stats.last_login).days
categories = {}
for p in self.user.my_projects():
for cat in p.trove_topic:
- cat = M.TroveCategory.query.get(_id = cat)
+ cat = M.TroveCategory.query.get(_id=cat)
if categories.get(cat):
categories[cat] += 1
else:
categories[cat] = 1
- categories = sorted(categories.items(), key=lambda (x,y): y,reverse=True)
+ categories = sorted(categories.items(),
+ key=lambda (x, y): y, reverse=True)
ret_dict['lastmonth_logins'] = stats.getLastMonthLogins()
ret_dict['categories'] = categories
days = ret_dict['days']
if days >= 30:
ret_dict['permonthlogins'] = \
- round(stats.tot_logins_count*30.0/days,2)
+ round(stats.tot_logins_count * 30.0 / days, 2)
else:
ret_dict['permonthlogins'] = 'n/a'
return ret_dict
-
@expose('jinja:forgeuserstats:templates/commits.html')
@with_trailing_slash
def commits(self, **kw):
@@ -154,8 +156,8 @@ class ForgeUserStatsController(BaseController):
commits = stats.getCommitsByCategory()
return dict(
- user = self.user,
- data = commits)
+ user=self.user,
+ data=commits)
@expose('jinja:forgeuserstats:templates/artifacts.html')
@with_trailing_slash
@@ -173,8 +175,8 @@ class ForgeUserStatsController(BaseController):
stats = self.user.stats
artifacts = stats.getArtifactsByCategory(detailed=True)
return dict(
- user = self.user,
- data = artifacts)
+ user=self.user,
+ data=artifacts)
@expose('jinja:forgeuserstats:templates/tickets.html')
@with_trailing_slash
@@ -215,22 +217,22 @@ def _getDataForCategory(category, stats):
days = (datetime.utcnow() - stats.start_date).days
if days >= 30:
pmartifacts = dict(
- created = round(totartifacts['created']*30.0/days,2),
- modified=round(totartifacts['modified']*30.0/days,2))
+ created=round(totartifacts['created'] * 30.0 / days, 2),
+ modified=round(totartifacts['modified'] * 30.0 / days, 2))
pmcommits = dict(
- number=round(totcommits['number']*30.0/days,2),
- lines=round(totcommits['lines']*30.0/days,2))
+ number=round(totcommits['number'] * 30.0 / days, 2),
+ lines=round(totcommits['lines'] * 30.0 / days, 2))
pmtickets = dict(
- assigned=round(tottickets['assigned']*30.0/days,2),
- revoked=round(tottickets['revoked']*30.0/days,2),
- solved=round(tottickets['solved']*30.0/days,2),
+ assigned=round(tottickets['assigned'] * 30.0 / days, 2),
+ revoked=round(tottickets['revoked'] * 30.0 / days, 2),
+ solved=round(tottickets['solved'] * 30.0 / days, 2),
averagesolvingtime='n/a')
for key in artifacts_by_type:
value = artifacts_by_type[key]
artifacts_by_type[key]['pmcreated'] = \
- round(value['created']*30.0/days,2)
- artifacts_by_type[key]['pmmodified']= \
- round(value['modified']*30.0/days,2)
+ round(value['created'] * 30.0 / days, 2)
+ artifacts_by_type[key]['pmmodified'] = \
+ round(value['modified'] * 30.0 / days, 2)
else:
pmartifacts = dict(created='n/a', modified='n/a')
pmcommits = dict(number='n/a', lines='n/a')
@@ -241,18 +243,18 @@ def _getDataForCategory(category, stats):
averagesolvingtime='n/a')
for key in artifacts_by_type:
artifacts_by_type[key]['pmcreated'] = 'n/a'
- artifacts_by_type[key]['pmmodified']= 'n/a'
+ artifacts_by_type[key]['pmmodified'] = 'n/a'
return dict(
- days = days,
- totcommits = totcommits,
- lastmonthcommits = lmcommits,
- lastmonthtickets = lm_tickets,
- tottickets = tottickets,
- permonthcommits = pmcommits,
- totartifacts = totartifacts,
- lastmonthartifacts = lm_totartifacts,
- permonthartifacts = pmartifacts,
- artifacts_by_type = artifacts_by_type,
- lastmonth_artifacts_by_type = lm_artifacts_by_type,
- permonthtickets = pmtickets)
+ days=days,
+ totcommits=totcommits,
+ lastmonthcommits=lmcommits,
+ lastmonthtickets=lm_tickets,
+ tottickets=tottickets,
+ permonthcommits=pmcommits,
+ totartifacts=totartifacts,
+ lastmonthartifacts=lm_totartifacts,
+ permonthartifacts=pmartifacts,
+ artifacts_by_type=artifacts_by_type,
+ lastmonth_artifacts_by_type=lm_artifacts_by_type,
+ permonthtickets=pmtickets)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/main.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/main.py b/ForgeUserStats/forgeuserstats/main.py
index 62aba4b..44e606b 100644
--- a/ForgeUserStats/forgeuserstats/main.py
+++ b/ForgeUserStats/forgeuserstats/main.py
@@ -38,7 +38,9 @@ from ming.orm import session
log = logging.getLogger(__name__)
+
class UserStatsListener(EventsListener):
+
def newArtifact(self, art_type, art_datetime, project, user):
stats = user.stats
if not stats:
@@ -67,7 +69,8 @@ class UserStatsListener(EventsListener):
elif event_type == "revoked":
stats.addRevokedTicket(ticket.mod_date, project)
elif event_type == "closed":
- stats.addClosedTicket(ticket.created_date,ticket.mod_date,project)
+ stats.addClosedTicket(
+ ticket.created_date, ticket.mod_date, project)
def newCommit(self, newcommit, project, user):
stats = user.stats
@@ -86,25 +89,26 @@ class UserStatsListener(EventsListener):
def newOrganization(self, organization):
pass
+
class ForgeUserStatsApp(Application):
__version__ = version.__version__
- tool_label='UserStats'
- default_mount_label='Stats'
- default_mount_point='stats'
+ tool_label = 'UserStats'
+ default_mount_label = 'Stats'
+ default_mount_point = 'stats'
permissions = ['configure', 'read', 'write',
- 'unmoderated_post', 'post', 'moderate', 'admin']
+ 'unmoderated_post', 'post', 'moderate', 'admin']
permissions_desc = {
'read': 'View user stats.',
'admin': 'Toggle stats visibility.',
}
max_instances = 0
- ordinal=15
+ ordinal = 15
config_options = Application.config_options
default_external_feeds = []
- icons={
- 24:'userstats/images/stats_24.png',
- 32:'userstats/images/stats_32.png',
- 48:'userstats/images/stats_48.png'
+ icons = {
+ 24: 'userstats/images/stats_24.png',
+ 32: 'userstats/images/stats_32.png',
+ 48: 'userstats/images/stats_48.png'
}
root = ForgeUserStatsController()
@@ -129,7 +133,7 @@ class ForgeUserStatsApp(Application):
menu_id = self.config.options.mount_label
with h.push_config(c, app=self):
return [
- SitemapEntry(menu_id, '.')[self.sidebar_menu()] ]
+ SitemapEntry(menu_id, '.')[self.sidebar_menu()]]
@property
def show_discussion(self):
@@ -149,16 +153,16 @@ class ForgeUserStatsApp(Application):
def admin_menu(self):
links = [SitemapEntry(
- 'Settings', c.project.url() + 'userstats/settings')]
+ 'Settings', c.project.url() + 'userstats/settings')]
return links
def install(self, project):
- #It doesn't make any sense to install the tool twice on the same
- #project therefore, if it already exists, it doesn't install it
- #a second time.
+ # It doesn't make any sense to install the tool twice on the same
+ # project therefore, if it already exists, it doesn't install it
+ # a second time.
for tool in project.app_configs:
if tool.tool_name == 'userstats':
- if self.config.options.mount_point!=tool.options.mount_point:
+ if self.config.options.mount_point != tool.options.mount_point:
project.uninstall_app(self.config.options.mount_point)
return
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/model/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/model/__init__.py b/ForgeUserStats/forgeuserstats/model/__init__.py
index 77505f1..144e298 100644
--- a/ForgeUserStats/forgeuserstats/model/__init__.py
+++ b/ForgeUserStats/forgeuserstats/model/__init__.py
@@ -14,4 +14,3 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/model/stats.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/model/stats.py b/ForgeUserStats/forgeuserstats/model/stats.py
index 493b1c3..03d6e83 100644
--- a/ForgeUserStats/forgeuserstats/model/stats.py
+++ b/ForgeUserStats/forgeuserstats/model/stats.py
@@ -25,25 +25,27 @@ from allura.lib import plugin
from allura.model.session import main_orm_session
from allura.model import Stats
+
class UserStats(Stats):
+
class __mongometa__:
- name='userstats'
+ name = 'userstats'
session = main_orm_session
- unique_indexes = [ '_id', 'user_id']
+ unique_indexes = ['_id', 'user_id']
- tot_logins_count = FieldProperty(int, if_missing = 0)
+ tot_logins_count = FieldProperty(int, if_missing=0)
last_login = FieldProperty(datetime)
- lastmonthlogins=FieldProperty([datetime])
+ lastmonthlogins = FieldProperty([datetime])
user_id = FieldProperty(S.ObjectId)
@classmethod
def create(cls, user):
auth_provider = plugin.AuthenticationProvider.get(request)
reg_date = auth_provider.user_registration_date(user)
- stats = cls.query.get(user_id = user._id)
+ stats = cls.query.get(user_id=user._id)
if stats:
return stats
- stats = cls(user_id=user._id, registration_date = reg_date)
+ stats = cls(user_id=user._id, registration_date=reg_date)
user.stats_id = stats._id
return stats
@@ -64,5 +66,5 @@ class UserStats(Stats):
self.tot_logins_count += 1
self.lastmonthlogins.append(login_datetime)
self.checkOldArtifacts()
-
+
Mapper.compile_all()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/tests/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/__init__.py b/ForgeUserStats/forgeuserstats/tests/__init__.py
index 77505f1..144e298 100644
--- a/ForgeUserStats/forgeuserstats/tests/__init__.py
+++ b/ForgeUserStats/forgeuserstats/tests/__init__.py
@@ -14,4 +14,3 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/tests/test_model.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/test_model.py b/ForgeUserStats/forgeuserstats/tests/test_model.py
index 6940385..aef4db7 100644
--- a/ForgeUserStats/forgeuserstats/tests/test_model.py
+++ b/ForgeUserStats/forgeuserstats/tests/test_model.py
@@ -31,8 +31,12 @@ from allura import model as M
from forgeuserstats.model import stats as USM
-test_project_with_repo = 'test2' # important to be distinct from 'test' which ForgeGit uses, so that the tests can run in parallel and not clobber each other
-with_git = td.with_tool(test_project_with_repo, 'Git', 'src-git', 'Git', type='git')
+# important to be distinct from 'test' which ForgeGit uses, so that the
+# tests can run in parallel and not clobber each other
+test_project_with_repo = 'test2'
+with_git = td.with_tool(test_project_with_repo, 'Git',
+ 'src-git', 'Git', type='git')
+
class TestUserStats(unittest.TestCase):
@@ -96,12 +100,16 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified']
assert art_wiki['created'] == init_art_wiki['created'] + 1
assert art_wiki['modified'] == init_art_wiki['modified']
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created'] + 1
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified']
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created'] + 1
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified']
-
- #In that case, last month stats should not be changed
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created'] + 1
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified']
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created'] + 1
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified']
+
+ # In that case, last month stats should not be changed
new_date = datetime.utcnow() + timedelta(-32)
self.user.stats.addNewArtifact('Wiki', new_date, p)
lm_art = self.user.stats.getLastMonthArtifacts()
@@ -116,10 +124,14 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified']
assert art_wiki['created'] == init_art_wiki['created'] + 2
assert art_wiki['modified'] == init_art_wiki['modified']
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created'] + 2
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified']
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created'] + 1
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified']
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created'] + 2
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified']
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created'] + 1
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified']
p.trove_topic = [topic._id]
@@ -138,15 +150,21 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified']
assert art_wiki['created'] == init_art_wiki['created'] + 3
assert art_wiki['modified'] == init_art_wiki['modified']
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created'] + 3
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified']
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created'] + 2
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified']
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created'] + 3
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified']
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created'] + 2
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified']
assert art_sci['created'] == init_art_sci['created'] + 1
assert art_sci['modified'] == init_art_sci['modified']
- assert dict(messagetype='Wiki', created= 1, modified = 0) in art_by_cat[topic]
+ assert dict(messagetype='Wiki', created=1,
+ modified=0) in art_by_cat[topic]
art_by_cat = self.user.stats.getArtifactsByCategory(detailed=False)
- assert art_by_cat[topic]['created'] == 1 and art_by_cat[topic]['modified'] == 0
+ assert art_by_cat[topic]['created'] == 1 and art_by_cat[
+ topic]['modified'] == 0
@td.with_user_project('test-user-2')
def test_modify_artifact_stats(self):
@@ -173,12 +191,16 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified'] + 1
assert art_wiki['created'] == init_art_wiki['created']
assert art_wiki['modified'] == init_art_wiki['modified'] + 1
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created']
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified'] + 1
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created']
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified'] + 1
-
- #In that case, last month stats should not be changed
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created']
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified'] + 1
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created']
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified'] + 1
+
+ # In that case, last month stats should not be changed
new_date = datetime.utcnow() + timedelta(-32)
self.user.stats.addModifiedArtifact('Wiki', new_date, p)
lm_art = self.user.stats.getLastMonthArtifacts()
@@ -193,10 +215,14 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified'] + 2
assert art_wiki['created'] == init_art_wiki['created']
assert art_wiki['modified'] == init_art_wiki['modified'] + 2
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created']
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified'] + 2
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created']
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified'] + 1
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created']
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified'] + 2
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created']
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified'] + 1
p.trove_topic = [topic._id]
@@ -215,15 +241,21 @@ class TestUserStats(unittest.TestCase):
assert artifacts['modified'] == init_art['modified'] + 3
assert art_wiki['created'] == init_art_wiki['created']
assert art_wiki['modified'] == init_art_wiki['modified'] + 3
- assert art_by_type['Wiki']['created'] == init_art_by_type['Wiki']['created']
- assert art_by_type['Wiki']['modified'] == init_art_by_type['Wiki']['modified'] + 3
- assert lm_art_by_type['Wiki']['created'] == init_lm_art_by_type['Wiki']['created']
- assert lm_art_by_type['Wiki']['modified'] == init_lm_art_by_type['Wiki']['modified'] +2
+ assert art_by_type['Wiki'][
+ 'created'] == init_art_by_type['Wiki']['created']
+ assert art_by_type['Wiki'][
+ 'modified'] == init_art_by_type['Wiki']['modified'] + 3
+ assert lm_art_by_type['Wiki'][
+ 'created'] == init_lm_art_by_type['Wiki']['created']
+ assert lm_art_by_type['Wiki'][
+ 'modified'] == init_lm_art_by_type['Wiki']['modified'] + 2
assert art_sci['created'] == init_art_sci['created']
assert art_sci['modified'] == init_art_sci['modified'] + 1
- assert dict(messagetype='Wiki', created=0, modified=1) in art_by_cat[topic]
+ assert dict(messagetype='Wiki', created=0,
+ modified=1) in art_by_cat[topic]
art_by_cat = self.user.stats.getArtifactsByCategory(detailed=False)
- assert art_by_cat[topic]['created'] == 0 and art_by_cat[topic]['modified'] == 1
+ assert art_by_cat[topic]['created'] == 0 and art_by_cat[
+ topic]['modified'] == 1
@td.with_user_project('test-user-2')
def test_ticket_stats(self):
@@ -231,14 +263,16 @@ class TestUserStats(unittest.TestCase):
topic = TroveCategory.query.get(shortname='scientific')
create_time = datetime.utcnow() + timedelta(-5)
- init_lm_tickets_art = self.user.stats.getLastMonthArtifacts(art_type='Ticket')
+ init_lm_tickets_art = self.user.stats.getLastMonthArtifacts(
+ art_type='Ticket')
init_tickets_art = self.user.stats.getArtifacts(art_type='Ticket')
init_tickets_sci_art = self.user.stats.getArtifacts(category=topic._id)
init_tickets = self.user.stats.getTickets()
init_lm_tickets = self.user.stats.getLastMonthTickets()
self.user.stats.addNewArtifact('Ticket', create_time, p)
- lm_tickets_art = self.user.stats.getLastMonthArtifacts(art_type='Ticket')
+ lm_tickets_art = self.user.stats.getLastMonthArtifacts(
+ art_type='Ticket')
tickets_art = self.user.stats.getArtifacts(art_type='Ticket')
tickets_sci_art = self.user.stats.getArtifacts(category=topic._id)
@@ -276,7 +310,8 @@ class TestUserStats(unittest.TestCase):
assert lm_tickets['solved'] == init_lm_tickets['solved']
assert lm_tickets['averagesolvingtime'] is None
- self.user.stats.addClosedTicket(create_time, create_time + timedelta(1), p)
+ self.user.stats.addClosedTicket(
+ create_time, create_time + timedelta(1), p)
tickets = self.user.stats.getTickets()
lm_tickets = self.user.stats.getLastMonthTickets()
@@ -284,7 +319,7 @@ class TestUserStats(unittest.TestCase):
assert tickets['revoked'] == init_tickets['revoked'] + 1
assert tickets['solved'] == init_tickets['solved'] + 1
- solving_time = dict(seconds=0,minutes=0,days=1,hours=0)
+ solving_time = dict(seconds=0, minutes=0, days=1, hours=0)
assert tickets['averagesolvingtime'] == solving_time
assert lm_tickets['assigned'] == init_lm_tickets['assigned'] + 1
assert lm_tickets['revoked'] == init_lm_tickets['revoked']
@@ -292,11 +327,12 @@ class TestUserStats(unittest.TestCase):
assert lm_tickets['averagesolvingtime'] == solving_time
p.trove_topic = []
- self.user.stats.addClosedTicket(create_time, create_time + timedelta(3), p)
+ self.user.stats.addClosedTicket(
+ create_time, create_time + timedelta(3), p)
tickets = self.user.stats.getTickets()
lm_tickets = self.user.stats.getLastMonthTickets()
- solving_time = dict(seconds=0,minutes=0,days=2,hours=0)
+ solving_time = dict(seconds=0, minutes=0, days=2, hours=0)
assert tickets['assigned'] == init_tickets['assigned'] + 1
assert tickets['revoked'] == init_tickets['revoked'] + 1
@@ -309,7 +345,7 @@ class TestUserStats(unittest.TestCase):
by_cat = self.user.stats.getTicketsByCategory()
lm_by_cat = self.user.stats.getLastMonthTicketsByCategory()
- solving_time=dict(days=1,hours=0,minutes=0,seconds=0)
+ solving_time = dict(days=1, hours=0, minutes=0, seconds=0)
assert by_cat[topic]['assigned'] == 1
assert by_cat[topic]['revoked'] == 1
@@ -360,7 +396,8 @@ class TestUserStats(unittest.TestCase):
assert lm_by_cat[topic]['number'] == 1
assert lm_by_cat[topic]['lines'] == 1
- self.user.stats.addCommit(commit, datetime.utcnow() + timedelta(-40), p)
+ self.user.stats.addCommit(
+ commit, datetime.utcnow() + timedelta(-40), p)
commits = self.user.stats.getCommits()
assert commits['number'] == init_commits['number'] + 2
assert commits['lines'] == init_commits['lines'] + 2
@@ -385,48 +422,55 @@ class TestUserStats(unittest.TestCase):
lm_logins = self.user.stats.getLastMonthLogins()
assert logins == init_logins + 1
assert lm_logins == init_lm_logins + 1
- assert abs(self.user.stats.last_login - login_datetime) < timedelta(seconds=1)
+ assert abs(self.user.stats.last_login -
+ login_datetime) < timedelta(seconds=1)
self.user.stats.addLogin(datetime.utcnow() + timedelta(-32))
logins = self.user.stats.tot_logins_count
lm_logins = self.user.stats.getLastMonthLogins()
assert logins == init_logins + 2
assert lm_logins == init_lm_logins + 1
- assert abs(self.user.stats.last_login - login_datetime) < timedelta(seconds=1)
+ assert abs(self.user.stats.last_login -
+ login_datetime) < timedelta(seconds=1)
def test_start_date(self):
- stats = USM.UserStats(registration_date=datetime(2012,04,01))
- self.assertEqual(stats.start_date, datetime(2012,04,01))
+ stats = USM.UserStats(registration_date=datetime(2012, 04, 01))
+ self.assertEqual(stats.start_date, datetime(2012, 04, 01))
with h.push_config(config, **{'userstats.start_date': '2013-04-01'}):
- self.assertEqual(stats.start_date, datetime(2013,04,01))
+ self.assertEqual(stats.start_date, datetime(2013, 04, 01))
with h.push_config(config, **{'userstats.start_date': '2011-04-01'}):
- self.assertEqual(stats.start_date, datetime(2012,04,01))
+ self.assertEqual(stats.start_date, datetime(2012, 04, 01))
@mock.patch('allura.model.stats.difflib.unified_diff')
def test_count_loc(self, unified_diff):
stats = USM.UserStats()
newcommit = mock.Mock(
- parent_ids=['deadbeef'],
- diffs=mock.Mock(
- changed=[mock.MagicMock()],
- copied=[mock.MagicMock()],
- added=[mock.MagicMock()],
- ),
- )
- unified_diff.return_value = ['+++','---','+line']
+ parent_ids=['deadbeef'],
+ diffs=mock.Mock(
+ changed=[mock.MagicMock()],
+ copied=[mock.MagicMock()],
+ added=[mock.MagicMock()],
+ ),
+ )
+ unified_diff.return_value = ['+++', '---', '+line']
newcommit.tree.get_blob_by_path.return_value = mock.MagicMock()
- newcommit.tree.get_blob_by_path.return_value.__iter__.return_value = ['one']
- newcommit.repo.commit().tree.get_blob_by_path.return_value = mock.MagicMock()
- newcommit.repo.commit().tree.get_blob_by_path.return_value.__iter__.return_value = ['two']
+ newcommit.tree.get_blob_by_path.return_value.__iter__.return_value = [
+ 'one']
+ newcommit.repo.commit(
+ ).tree.get_blob_by_path.return_value = mock.MagicMock()
+ newcommit.repo.commit().tree.get_blob_by_path.return_value.__iter__.return_value = [
+ 'two']
commit_datetime = datetime.utcnow()
project = mock.Mock(
- trove_topic=[],
- trove_language=[],
- )
+ trove_topic=[],
+ trove_language=[],
+ )
stats.addCommit(newcommit, commit_datetime, project)
- self.assertEqual(stats.general[0].commits[0], {'lines': 3, 'number': 1, 'language': None})
+ self.assertEqual(stats.general[0].commits[0],
+ {'lines': 3, 'number': 1, 'language': None})
unified_diff.reset_mock()
with h.push_config(config, **{'userstats.count_lines_of_code': 'false'}):
stats.addCommit(newcommit, commit_datetime, project)
- self.assertEqual(stats.general[0].commits[0], {'lines': 3, 'number': 2, 'language': None})
+ self.assertEqual(stats.general[0].commits[0],
+ {'lines': 3, 'number': 2, 'language': None})
unified_diff.assert_not_called()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/tests/test_stats.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/test_stats.py b/ForgeUserStats/forgeuserstats/tests/test_stats.py
index 0f8efa9..20fbc3b 100644
--- a/ForgeUserStats/forgeuserstats/tests/test_stats.py
+++ b/ForgeUserStats/forgeuserstats/tests/test_stats.py
@@ -31,8 +31,11 @@ from forgewiki import model as WM
from forgetracker import model as TM
-test_project_with_repo = 'test2' # important to be distinct from 'test' which ForgeGit uses, so that the tests can run in parallel and not clobber each other
-with_git = td.with_tool(test_project_with_repo, 'Git', 'src-git', 'Git', type='git')
+# important to be distinct from 'test' which ForgeGit uses, so that the
+# tests can run in parallel and not clobber each other
+test_project_with_repo = 'test2'
+with_git = td.with_tool(test_project_with_repo, 'Git',
+ 'src-git', 'Git', type='git')
class TestStats(TestController):
@@ -46,7 +49,7 @@ class TestStats(TestController):
user = User.by_username('test-user')
init_logins = user.stats.tot_logins_count
r = self.app.post('/auth/do_login', params=dict(
- username=user.username, password='foo'))
+ username=user.username, password='foo'))
assert user.stats.tot_logins_count == 1 + init_logins
assert user.stats.getLastMonthLogins() == 1 + init_logins
@@ -57,8 +60,8 @@ class TestStats(TestController):
initial_artifacts = c.user.stats.getArtifacts()
initial_wiki = c.user.stats.getArtifacts(art_type="Wiki")
self.app.post('/wiki/TestPage/update',
- params=dict(title='TestPage', text='some text'),
- extra_environ=dict(username=str(c.user.username)))
+ params=dict(title='TestPage', text='some text'),
+ extra_environ=dict(username=str(c.user.username)))
artifacts = c.user.stats.getArtifacts()
wiki = c.user.stats.getArtifacts(art_type="Wiki")
@@ -69,8 +72,8 @@ class TestStats(TestController):
assert wiki['modified'] == initial_wiki['modified']
self.app.post('/wiki/TestPage2/update',
- params=dict(title='TestPage2', text='some text'),
- extra_environ=dict(username=str(c.user.username)))
+ params=dict(title='TestPage2', text='some text'),
+ extra_environ=dict(username=str(c.user.username)))
artifacts = c.user.stats.getArtifacts()
wiki = c.user.stats.getArtifacts(art_type="Wiki")
@@ -81,8 +84,9 @@ class TestStats(TestController):
assert wiki['modified'] == initial_wiki['modified']
self.app.post('/wiki/TestPage2/update',
- params=dict(title='TestPage2', text='some modified text'),
- extra_environ=dict(username=str(c.user.username)))
+ params=dict(title='TestPage2',
+ text='some modified text'),
+ extra_environ=dict(username=str(c.user.username)))
artifacts = c.user.stats.getArtifacts()
wiki = c.user.stats.getArtifacts(art_type="Wiki")
@@ -95,12 +99,13 @@ class TestStats(TestController):
@td.with_tool('test', 'tickets', mount_point='tickets', mount_label='tickets', username='test-admin')
def test_tracker_stats(self):
initial_tickets = c.user.stats.getTickets()
- initial_tickets_artifacts = c.user.stats.getArtifacts(art_type="Ticket")
+ initial_tickets_artifacts = c.user.stats.getArtifacts(
+ art_type="Ticket")
r = self.app.post('/tickets/save_ticket',
- params={'ticket_form.summary':'test',
- 'ticket_form.assigned_to' : str(c.user.username)},
- extra_environ=dict(username=str(c.user.username)))
+ params={'ticket_form.summary': 'test',
+ 'ticket_form.assigned_to': str(c.user.username)},
+ extra_environ=dict(username=str(c.user.username)))
ticketnum = str(TM.Ticket.query.get(summary='test').ticket_num)
@@ -110,14 +115,16 @@ class TestStats(TestController):
assert tickets['assigned'] == initial_tickets['assigned'] + 1
assert tickets['solved'] == initial_tickets['solved']
assert tickets['revoked'] == initial_tickets['revoked']
- assert tickets_artifacts['created'] == initial_tickets_artifacts['created'] + 1
- assert tickets_artifacts['modified'] == initial_tickets_artifacts['modified']
+ assert tickets_artifacts[
+ 'created'] == initial_tickets_artifacts['created'] + 1
+ assert tickets_artifacts[
+ 'modified'] == initial_tickets_artifacts['modified']
r = self.app.post('/tickets/%s/update_ticket_from_widget' % ticketnum,
- params={'ticket_form.ticket_num' : ticketnum,
- 'ticket_form.summary':'footext3',
- 'ticket_form.status' : 'closed'},
- extra_environ=dict(username=str(c.user.username)))
+ params={'ticket_form.ticket_num': ticketnum,
+ 'ticket_form.summary': 'footext3',
+ 'ticket_form.status': 'closed'},
+ extra_environ=dict(username=str(c.user.username)))
tickets = c.user.stats.getTickets()
tickets_artifacts = c.user.stats.getArtifacts(art_type="Ticket")
@@ -125,12 +132,14 @@ class TestStats(TestController):
assert tickets['assigned'] == initial_tickets['assigned'] + 1
assert tickets['solved'] == initial_tickets['solved'] + 1
assert tickets['revoked'] == initial_tickets['revoked']
- assert tickets_artifacts['created'] == initial_tickets_artifacts['created'] + 1
- assert tickets_artifacts['modified'] == initial_tickets_artifacts['modified'] + 1
+ assert tickets_artifacts[
+ 'created'] == initial_tickets_artifacts['created'] + 1
+ assert tickets_artifacts[
+ 'modified'] == initial_tickets_artifacts['modified'] + 1
r = self.app.post('/tickets/save_ticket',
- params={'ticket_form.summary':'test2'},
- extra_environ=dict(username=str(c.user.username)))
+ params={'ticket_form.summary': 'test2'},
+ extra_environ=dict(username=str(c.user.username)))
ticketnum = str(TM.Ticket.query.get(summary='test2').ticket_num)
@@ -140,14 +149,16 @@ class TestStats(TestController):
assert tickets['assigned'] == initial_tickets['assigned'] + 1
assert tickets['solved'] == initial_tickets['solved'] + 1
assert tickets['revoked'] == initial_tickets['revoked']
- assert tickets_artifacts['created'] == initial_tickets_artifacts['created'] + 2
- assert tickets_artifacts['modified'] == initial_tickets_artifacts['modified'] + 1
+ assert tickets_artifacts[
+ 'created'] == initial_tickets_artifacts['created'] + 2
+ assert tickets_artifacts[
+ 'modified'] == initial_tickets_artifacts['modified'] + 1
r = self.app.post('/tickets/%s/update_ticket_from_widget' % ticketnum,
- params={'ticket_form.ticket_num' : ticketnum,
- 'ticket_form.summary':'test2',
- 'ticket_form.assigned_to' : str(c.user.username)},
- extra_environ=dict(username=str(c.user.username)))
+ params={'ticket_form.ticket_num': ticketnum,
+ 'ticket_form.summary': 'test2',
+ 'ticket_form.assigned_to': str(c.user.username)},
+ extra_environ=dict(username=str(c.user.username)))
tickets = c.user.stats.getTickets()
tickets_artifacts = c.user.stats.getArtifacts(art_type="Ticket")
@@ -155,14 +166,16 @@ class TestStats(TestController):
assert tickets['assigned'] == initial_tickets['assigned'] + 2
assert tickets['solved'] == initial_tickets['solved'] + 1
assert tickets['revoked'] == initial_tickets['revoked']
- assert tickets_artifacts['created'] == initial_tickets_artifacts['created'] + 2
- assert tickets_artifacts['modified'] == initial_tickets_artifacts['modified'] + 2
+ assert tickets_artifacts[
+ 'created'] == initial_tickets_artifacts['created'] + 2
+ assert tickets_artifacts[
+ 'modified'] == initial_tickets_artifacts['modified'] + 2
r = self.app.post('/tickets/%s/update_ticket_from_widget' % ticketnum,
- params={'ticket_form.ticket_num' : ticketnum,
- 'ticket_form.summary':'test2',
- 'ticket_form.assigned_to' : 'test-user'},
- extra_environ=dict(username=str(c.user.username)))
+ params={'ticket_form.ticket_num': ticketnum,
+ 'ticket_form.summary': 'test2',
+ 'ticket_form.assigned_to': 'test-user'},
+ extra_environ=dict(username=str(c.user.username)))
tickets = c.user.stats.getTickets()
tickets_artifacts = c.user.stats.getArtifacts(art_type="Ticket")
@@ -170,8 +183,11 @@ class TestStats(TestController):
assert tickets['assigned'] == initial_tickets['assigned'] + 2
assert tickets['solved'] == initial_tickets['solved'] + 1
assert tickets['revoked'] == initial_tickets['revoked'] + 1
- assert tickets_artifacts['created'] == initial_tickets_artifacts['created'] + 2
- assert tickets_artifacts['modified'] == initial_tickets_artifacts['modified'] + 3
+ assert tickets_artifacts[
+ 'created'] == initial_tickets_artifacts['created'] + 2
+ assert tickets_artifacts[
+ 'modified'] == initial_tickets_artifacts['modified'] + 3
+
class TestGitCommit(TestController, unittest.TestCase):
@@ -189,7 +205,8 @@ class TestGitCommit(TestController, unittest.TestCase):
@td.with_wiki
def setup_with_tools(self):
setup_global_objects()
- h.set_context(test_project_with_repo, 'src-git', neighborhood='Projects')
+ h.set_context(test_project_with_repo, 'src-git',
+ neighborhood='Projects')
repo_dir = pkg_resources.resource_filename(
'forgeuserstats', 'tests/data')
c.app.repo.fs_path = repo_dir
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/widgets/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/widgets/__init__.py b/ForgeUserStats/forgeuserstats/widgets/__init__.py
index 77505f1..144e298 100644
--- a/ForgeUserStats/forgeuserstats/widgets/__init__.py
+++ b/ForgeUserStats/forgeuserstats/widgets/__init__.py
@@ -14,4 +14,3 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/forgeuserstats/widgets/forms.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/widgets/forms.py b/ForgeUserStats/forgeuserstats/widgets/forms.py
index 0ea3a20..c7b987f 100644
--- a/ForgeUserStats/forgeuserstats/widgets/forms.py
+++ b/ForgeUserStats/forgeuserstats/widgets/forms.py
@@ -23,17 +23,17 @@ from formencode import validators as fev
import ew as ew_core
import ew.jinja2_ew as ew
+
class StatsPreferencesForm(ForgeForm):
- defaults=dict(ForgeForm.defaults)
+ defaults = dict(ForgeForm.defaults)
class fields(ew_core.NameList):
visible = ew.Checkbox(
label='Make my personal statistics visible to other users.')
-
+
def display(self, **kw):
if kw.get('user').stats.visible:
- self.fields['visible'].attrs = {'checked':'true'}
+ self.fields['visible'].attrs = {'checked': 'true'}
else:
- self.fields['visible'].attrs = {}
+ self.fields['visible'].attrs = {}
return super(ForgeForm, self).display(**kw)
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeUserStats/setup.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/setup.py b/ForgeUserStats/setup.py
index c8cb39b..ab57945 100644
--- a/ForgeUserStats/setup.py
+++ b/ForgeUserStats/setup.py
@@ -16,7 +16,8 @@
# under the License.
from setuptools import setup, find_packages
-import sys, os
+import sys
+import os
from forgeuserstats.version import __version__
@@ -25,7 +26,8 @@ setup(name='ForgeUserStats',
description="",
long_description="""\
""",
- classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ classifiers=[],
keywords='',
author='',
author_email='',
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/converters.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/converters.py b/ForgeWiki/forgewiki/converters.py
index 4439d08..95b88f7 100644
--- a/ForgeWiki/forgewiki/converters.py
+++ b/ForgeWiki/forgewiki/converters.py
@@ -64,9 +64,9 @@ def mediawiki2markdown(source):
raise ImportError("""This operation requires GPL libraries:
"mediawiki" (https://github.com/zikzakmedia/python-mediawiki.git)
"html2text" (https://github.com/aaronsw/html2text.git)""")
-
+
html2text.BODY_WIDTH = 0
-
+
wiki_content = wiki2html(source, True)
wiki_content = _convert_toc(wiki_content)
markdown_text = html2text.html2text(wiki_content)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/model/wiki.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/model/wiki.py b/ForgeWiki/forgewiki/model/wiki.py
index 11ad589..18bfb85 100644
--- a/ForgeWiki/forgewiki/model/wiki.py
+++ b/ForgeWiki/forgewiki/model/wiki.py
@@ -17,7 +17,8 @@
from datetime import datetime
import difflib
-from pylons import app_globals as g #g is a namespace for globally accessable app helpers
+# g is a namespace for globally accessable app helpers
+from pylons import app_globals as g
from pylons import tmpl_context as context
from ming import schema
@@ -25,16 +26,16 @@ from ming.orm import FieldProperty, ForeignIdProperty, Mapper, session
from ming.orm.declarative import MappedClass
from allura.model import (
- VersionedArtifact,
- Snapshot,
- Feed,
- Thread,
- Post,
- User,
- BaseAttachment,
- Notification,
- project_orm_session,
- Shortlink,
+ VersionedArtifact,
+ Snapshot,
+ Feed,
+ Thread,
+ Post,
+ User,
+ BaseAttachment,
+ Notification,
+ project_orm_session,
+ Shortlink,
)
from allura.model.timeline import ActivityObject
from allura.model.types import MarkdownCache
@@ -45,22 +46,25 @@ from allura.lib import utils
config = utils.ConfigProxy(
common_suffix='forgemail.domain')
+
class Globals(MappedClass):
class __mongometa__:
name = 'wiki-globals'
session = project_orm_session
- indexes = [ 'app_config_id' ]
+ indexes = ['app_config_id']
type_s = 'WikiGlobals'
_id = FieldProperty(schema.ObjectId)
- app_config_id = ForeignIdProperty('AppConfig', if_missing=lambda:context.app.config._id)
+ app_config_id = ForeignIdProperty(
+ 'AppConfig', if_missing=lambda: context.app.config._id)
root = FieldProperty(str)
class PageHistory(Snapshot):
+
class __mongometa__:
- name='page_history'
+ name = 'page_history'
def original(self):
return Page.query.get(_id=self.artifact_id)
@@ -92,17 +96,18 @@ class PageHistory(Snapshot):
def email_address(self):
return self.original().email_address
+
class Page(VersionedArtifact, ActivityObject):
+
class __mongometa__:
- name='page'
+ name = 'page'
history_class = PageHistory
unique_indexes = [('app_config_id', 'title')]
-
- title=FieldProperty(str)
- text=FieldProperty(schema.String, if_missing='')
+ title = FieldProperty(str)
+ text = FieldProperty(schema.String, if_missing='')
text_cache = FieldProperty(MarkdownCache)
- viewable_by=FieldProperty([str])
+ viewable_by = FieldProperty([str])
type_s = 'Wiki'
@property
@@ -127,14 +132,14 @@ class Page(VersionedArtifact, ActivityObject):
ss = VersionedArtifact.commit(self)
session(self).flush()
if self.version > 1:
- v1 = self.get_version(self.version-1)
+ v1 = self.get_version(self.version - 1)
v2 = self
- la = [ line + '\n' for line in v1.text.splitlines() ]
- lb = [ line + '\n' for line in v2.text.splitlines() ]
+ la = [line + '\n' for line in v1.text.splitlines()]
+ lb = [line + '\n' for line in v2.text.splitlines()]
diff = ''.join(difflib.unified_diff(
- la, lb,
- 'v%d' % v1.version,
- 'v%d' % v2.version))
+ la, lb,
+ 'v%d' % v1.version,
+ 'v%d' % v2.version))
description = '<pre>' + diff + '</pre>'
if v1.title != v2.title:
subject = '%s renamed page %s to %s' % (
@@ -153,7 +158,8 @@ class Page(VersionedArtifact, ActivityObject):
@property
def email_address(self):
- domain = '.'.join(reversed(self.app.url[1:-1].split('/'))).replace('_', '-')
+ domain = '.'.join(
+ reversed(self.app.url[1:-1].split('/'))).replace('_', '-')
return '%s@%s%s' % (self.title.replace('/', '.'), domain, config.common_suffix)
@property
@@ -161,7 +167,8 @@ class Page(VersionedArtifact, ActivityObject):
return 'Discussion for %s page' % self.title
def url(self):
- s = self.app_config.url() + h.urlquote(self.title.encode('utf-8')) + '/'
+ s = self.app_config.url() + \
+ h.urlquote(self.title.encode('utf-8')) + '/'
if self.deleted:
s += '?deleted=True'
return s
@@ -182,7 +189,7 @@ class Page(VersionedArtifact, ActivityObject):
def upsert(cls, title, version=None):
"""Update page with `title` or insert new page with that name"""
if version is None:
- #Check for existing page object
+ # Check for existing page object
obj = cls.query.get(
app_config_id=context.app.config._id,
title=title)
@@ -190,14 +197,15 @@ class Page(VersionedArtifact, ActivityObject):
obj = cls(
title=title,
app_config_id=context.app.config._id,
- )
+ )
Thread.new(discussion_id=obj.app_config.discussion_id,
ref_id=obj.index_id())
return obj
else:
pg = cls.upsert(title)
HC = cls.__mongometa__.history_class
- ss = HC.query.find({'artifact_id':pg._id, 'version':int(version)}).one()
+ ss = HC.query.find(
+ {'artifact_id': pg._id, 'version': int(version)}).one()
return ss
@classmethod
@@ -226,7 +234,7 @@ class Page(VersionedArtifact, ActivityObject):
t[user.username] = user.id
return t.values()
user_ids = uniq([r.author for r in self.history().all()])
- return User.query.find({'_id':{'$in':user_ids}}).all()
+ return User.query.find({'_id': {'$in': user_ids}}).all()
def delete(self):
Shortlink.query.remove(dict(ref_id=self.index_id()))
@@ -234,10 +242,12 @@ class Page(VersionedArtifact, ActivityObject):
suffix = " {:%Y-%m-%d %H:%M:%S.%f}".format(datetime.utcnow())
self.title += suffix
+
class WikiAttachment(BaseAttachment):
- ArtifactType=Page
+ ArtifactType = Page
+
class __mongometa__:
- polymorphic_identity='WikiAttachment'
- attachment_type=FieldProperty(str, if_missing='WikiAttachment')
+ polymorphic_identity = 'WikiAttachment'
+ attachment_type = FieldProperty(str, if_missing='WikiAttachment')
Mapper.compile_all()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki2markdown/extractors.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki2markdown/extractors.py b/ForgeWiki/forgewiki/scripts/wiki2markdown/extractors.py
index 7815ba9..b70672c 100644
--- a/ForgeWiki/forgewiki/scripts/wiki2markdown/extractors.py
+++ b/ForgeWiki/forgewiki/scripts/wiki2markdown/extractors.py
@@ -25,6 +25,7 @@ log = logging.getLogger(__name__)
class MediawikiExtractor(object):
+
"""Base class for MediaWiki data provider"""
def __init__(self, options):
@@ -40,6 +41,7 @@ class MediawikiExtractor(object):
class MySQLExtractor(MediawikiExtractor):
+
"""Extract MediaWiki data to json.
Use connection to MySQL database as a data source.
@@ -60,7 +62,8 @@ class MySQLExtractor(MediawikiExtractor):
try:
import MySQLdb
except ImportError:
- raise ImportError('GPL library MySQL-python is required for this operation')
+ raise ImportError(
+ 'GPL library MySQL-python is required for this operation')
if not self._connection:
self._connection = MySQLdb.connect(**self.db_options)
@@ -147,7 +150,7 @@ class MySQLExtractor(MediawikiExtractor):
# so we need to build path to file as follows
md5 = hashlib.md5(name).hexdigest()
path = os.path.join(self.options.attachments_dir,
- md5[:1], md5[:2], name)
+ md5[:1], md5[:2], name)
if os.path.isfile(path):
yield path
@@ -185,4 +188,5 @@ class MySQLExtractor(MediawikiExtractor):
for filepath in self._attachments(page_id):
self._save_attachment(filepath, 'pages', str(page_id),
'attachments')
- log.info('Extracted attachments for page %s (%s)', page_id, page['title'])
+ log.info('Extracted attachments for page %s (%s)',
+ page_id, page['title'])
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki2markdown/loaders.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki2markdown/loaders.py b/ForgeWiki/forgewiki/scripts/wiki2markdown/loaders.py
index 588fa64..a3e1e29 100644
--- a/ForgeWiki/forgewiki/scripts/wiki2markdown/loaders.py
+++ b/ForgeWiki/forgewiki/scripts/wiki2markdown/loaders.py
@@ -34,6 +34,7 @@ log = logging.getLogger(__name__)
class MediawikiLoader(object):
+
"""Load MediaWiki data from json to Allura wiki tool"""
TIMESTAMP_FMT = '%Y%m%d%H%M%S'
@@ -42,13 +43,13 @@ class MediawikiLoader(object):
self.nbhd = M.Neighborhood.query.get(name=options.nbhd)
if not self.nbhd:
raise ValueError("Can't find neighborhood with name %s"
- % options.nbhd)
+ % options.nbhd)
self.project = M.Project.query.get(shortname=options.project,
neighborhood_id=self.nbhd._id)
if not self.project:
raise ValueError("Can't find project with shortname %s "
- "and neighborhood_id %s"
- % (options.project, self.nbhd._id))
+ "and neighborhood_id %s"
+ % (options.project, self.nbhd._id))
self.wiki = self.project.app_instance('wiki')
if not self.wiki:
@@ -132,10 +133,10 @@ class MediawikiLoader(object):
p = WM.Page.upsert(page['title'])
p.viewable_by = ['all']
p.text = mediawiki_internal_links2markdown(
- mediawiki2markdown(page['text']),
- page['title'])
+ mediawiki2markdown(page['text']),
+ page['title'])
timestamp = datetime.datetime.strptime(page['timestamp'],
- self.TIMESTAMP_FMT)
+ self.TIMESTAMP_FMT)
p.mod_date = timestamp
c.user = (M.User.query.get(username=page['username'].lower())
or M.User.anonymous())
@@ -147,7 +148,8 @@ class MediawikiLoader(object):
gl = WM.Globals.query.get(app_config_id=self.wiki.config._id)
if gl is not None:
gl.root = page['title']
- log.info('Loaded history of page %s (%s)', page['page_id'], page['title'])
+ log.info('Loaded history of page %s (%s)',
+ page['page_id'], page['title'])
self.load_talk(page_dir, page['title'])
self.load_attachments(page_dir, page['title'])
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki2markdown/wiki2markdown.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki2markdown/wiki2markdown.py b/ForgeWiki/forgewiki/scripts/wiki2markdown/wiki2markdown.py
index 7d5b2b4..8a6e79e 100644
--- a/ForgeWiki/forgewiki/scripts/wiki2markdown/wiki2markdown.py
+++ b/ForgeWiki/forgewiki/scripts/wiki2markdown/wiki2markdown.py
@@ -32,43 +32,46 @@ log = logging.getLogger(__name__)
class Wiki2Markdown(ScriptTask):
+
"""Import MediaWiki to Allura Wiki tool"""
@classmethod
def parser(cls):
parser = argparse.ArgumentParser(description='Import wiki from'
- 'mediawiki-dump to allura wiki')
+ 'mediawiki-dump to allura wiki')
parser.add_argument('-e', '--extract-only', action='store_true',
- dest='extract',
- help='Store data from the mediawiki-dump '
- 'on the local filesystem; not load into Allura')
- parser.add_argument('-l', '--load-only', action='store_true', dest='load',
- help='Load into Allura previously-extracted data')
+ dest='extract',
+ help='Store data from the mediawiki-dump '
+ 'on the local filesystem; not load into Allura')
+ parser.add_argument(
+ '-l', '--load-only', action='store_true', dest='load',
+ help='Load into Allura previously-extracted data')
parser.add_argument('-d', '--dump-dir', dest='dump_dir', default='',
- help='Directory for dump files')
+ help='Directory for dump files')
parser.add_argument('-n', '--neighborhood', dest='nbhd', default='',
- help='Neighborhood name to load data')
+ help='Neighborhood name to load data')
parser.add_argument('-p', '--project', dest='project', default='',
- help='Project shortname to load data into')
+ help='Project shortname to load data into')
parser.add_argument('-a', '--attachments-dir', dest='attachments_dir',
- help='Path to directory with mediawiki attachments dump',
- default='')
+ help='Path to directory with mediawiki attachments dump',
+ default='')
parser.add_argument('--db_config_prefix', dest='db_config_prefix',
- help='Key prefix (e.g. "legacy.") in ini file to '
- 'use instead of commandline db params')
+ help='Key prefix (e.g. "legacy.") in ini file to '
+ 'use instead of commandline db params')
parser.add_argument('-s', '--source', dest='source', default='mysql',
- help='Database type to extract from (only mysql for now)')
+ help='Database type to extract from (only mysql for now)')
parser.add_argument('--db_name', dest='db_name', default='mediawiki',
- help='Database name')
+ help='Database name')
parser.add_argument('--host', dest='host', default='localhost',
- help='Database host')
+ help='Database host')
parser.add_argument('--port', dest='port', type=int, default=0,
- help='Database port')
+ help='Database port')
parser.add_argument('--user', dest='user', default='',
- help='User for database connection')
+ help='User for database connection')
parser.add_argument('--password', dest='password', default='',
- help='Password for database connection')
- parser.add_argument('--keep-dumps', action='store_true', dest='keep_dumps',
- help='Leave dump files on disk after run')
+ help='Password for database connection')
+ parser.add_argument(
+ '--keep-dumps', action='store_true', dest='keep_dumps',
+ help='Leave dump files on disk after run')
return parser
@classmethod
@@ -93,14 +96,15 @@ class Wiki2Markdown(ScriptTask):
if not options.dump_dir:
if options.load and not options.extract:
- raise ValueError('You must specify directory containing dump files')
+ raise ValueError(
+ 'You must specify directory containing dump files')
else:
options.dump_dir = tempfile.mkdtemp()
log.info("Writing temp files to %s", options.dump_dir)
if options.load and (not options.project or not options.nbhd):
raise ValueError('You must specify neighborhood and project '
- 'to load data')
+ 'to load data')
if options.extract:
if options.db_config_prefix:
@@ -112,12 +116,14 @@ class Wiki2Markdown(ScriptTask):
if options.source == 'mysql':
pass
elif options.source in ('sqlite', 'postgres', 'sql-dump'):
- raise ValueError('This source not implemented yet. Only mysql for now')
+ raise ValueError(
+ 'This source not implemented yet. Only mysql for now')
else:
raise ValueError('You must specify a valid data source')
if not options.attachments_dir:
- raise ValueError('You must specify path to directory with mediawiki attachmets dump.')
+ raise ValueError(
+ 'You must specify path to directory with mediawiki attachmets dump.')
return options
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki_from_trac/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki_from_trac/__init__.py b/ForgeWiki/forgewiki/scripts/wiki_from_trac/__init__.py
index 8d3f8b7..625362c 100644
--- a/ForgeWiki/forgewiki/scripts/wiki_from_trac/__init__.py
+++ b/ForgeWiki/forgewiki/scripts/wiki_from_trac/__init__.py
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-from .wiki_from_trac import WikiFromTrac
\ No newline at end of file
+from .wiki_from_trac import WikiFromTrac
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki_from_trac/extractors.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki_from_trac/extractors.py b/ForgeWiki/forgewiki/scripts/wiki_from_trac/extractors.py
index 6415bbf..7f146e6 100644
--- a/ForgeWiki/forgewiki/scripts/wiki_from_trac/extractors.py
+++ b/ForgeWiki/forgewiki/scripts/wiki_from_trac/extractors.py
@@ -129,7 +129,7 @@ class WikiExporter(object):
if type is None:
return url
glue = '&' if '?' in suburl else '?'
- return url + glue + 'format=' + type
+ return url + glue + 'format=' + type
def fetch(self, url):
return urlopen(url)
@@ -201,6 +201,7 @@ class WikiExporter(object):
internal_url = urlsplit(self.base_url).path + 'wiki/'
internal_link_re = r'\[([^]]+)\]\(%s([^)]*)\)' % internal_url
internal_link = re.compile(internal_link_re, re.UNICODE)
+
def sub(match):
caption = match.group(1)
page = self.convert_title(match.group(2))
@@ -232,8 +233,10 @@ class WikiExporter(object):
a = []
for line in text.split('\n'):
if not line.startswith(' '):
- line = re.sub(r'\[(https?://[^\s\[\]]+)\s([^\[\]]+)\]', r'[\2](\1)', line)
- line = re.sub(r'\[(wiki:[^\s\[\]]+)\s([^\[\]]+)\]', r'[\2](/\1/)', line)
+ line = re.sub(
+ r'\[(https?://[^\s\[\]]+)\s([^\[\]]+)\]', r'[\2](\1)', line)
+ line = re.sub(r'\[(wiki:[^\s\[\]]+)\s([^\[\]]+)\]',
+ r'[\2](/\1/)', line)
line = re.sub(r'\!(([A-Z][a-z0-9]+){2,})', r'\1', line)
line = re.sub(r'\'\'\'(.*?)\'\'\'', r'*\1*', line)
line = re.sub(r'\'\'(.*?)\'\'', r'_\1_', line)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c93733ac/ForgeWiki/forgewiki/scripts/wiki_from_trac/loaders.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/scripts/wiki_from_trac/loaders.py b/ForgeWiki/forgewiki/scripts/wiki_from_trac/loaders.py
index 55e4480..45d056c 100644
--- a/ForgeWiki/forgewiki/scripts/wiki_from_trac/loaders.py
+++ b/ForgeWiki/forgewiki/scripts/wiki_from_trac/loaders.py
@@ -41,13 +41,15 @@ def load_data(doc_file_name=None, optparser=None, options=None):
if not isinstance(k, basestring) or not isinstance(v, basestring):
raise ValueError
except ValueError:
- optparser.error('--user-map should specify JSON file with format {"original_user": "sf_user", ...}')
+ optparser.error(
+ '--user-map should specify JSON file with format {"original_user": "sf_user", ...}')
finally:
f.close()
import_options['user_map'] = user_map
- cli = AlluraImportApiClient(options.base_url, options.api_key, options.secret_key, options.verbose)
+ cli = AlluraImportApiClient(
+ options.base_url, options.api_key, options.secret_key, options.verbose)
doc_txt = open(doc_file_name).read()
if options.wiki: