Merge pull request #438 from alexbarcelo/autocodestyle

More Code Style --PEP8-centric
This commit is contained in:
Jonathan Barratt 2016-10-28 10:44:55 +07:00 committed by GitHub
commit 44fd60970b
18 changed files with 372 additions and 357 deletions

View File

@ -20,9 +20,13 @@ install:
- pip install argparse
- pip install coverage
- pip install codecov
- pip install pep8
- pip install -q Django==$DJANGO
- pip install -q -r requirements.txt
before_script:
- "pep8 --exclude=migrations,south_migrations --ignore=E501 helpdesk"
script:
- coverage run --source='.' quicktest.py helpdesk

View File

@ -24,7 +24,7 @@ You should pass in the keyword argument 'agent' to the name of your program,
when you create an Akismet instance. This sets the ``user-agent`` to a useful
value.
The default is : ::
The default is::
Python Interface by Fuzzyman | akismet.py/0.2.0
@ -70,7 +70,7 @@ __all__ = (
'Akismet',
'AkismetError',
'APIKeyError',
)
)
__author__ = 'Michael Foord <fuzzyman AT voidspace DOT org DOT uk>'
@ -203,13 +203,13 @@ class Akismet(object):
worked out.
"""
data['comment_content'] = comment
if not 'user_ip' in data:
if 'user_ip' not in data:
try:
val = os.environ['REMOTE_ADDR']
except KeyError:
raise AkismetError("No 'user_ip' supplied")
data['user_ip'] = val
if not 'user_agent' in data:
if 'user_agent' not in data:
try:
val = os.environ['HTTP_USER_AGENT']
except KeyError:

View File

@ -35,6 +35,7 @@ class CustomFieldMixin(object):
"""
Mixin that provides a method to turn CustomFields into an actual field
"""
def customfield_to_field(self, field, instanceargs):
if field.data_type == 'varchar':
fieldclass = forms.CharField
@ -76,6 +77,7 @@ class CustomFieldMixin(object):
class EditTicketForm(CustomFieldMixin, forms.ModelForm):
class Meta:
model = Ticket
exclude = ('created', 'modified', 'status', 'on_hold', 'resolution', 'last_escalation', 'assigned_to')
@ -118,6 +120,7 @@ class EditTicketForm(CustomFieldMixin, forms.ModelForm):
class EditFollowUpForm(forms.ModelForm):
class Meta:
model = FollowUp
exclude = ('date', 'user',)
@ -138,14 +141,14 @@ class TicketForm(CustomFieldMixin, forms.Form):
title = forms.CharField(
max_length=100,
required=True,
widget=forms.TextInput(attrs={'size':'60'}),
widget=forms.TextInput(attrs={'size': '60'}),
label=_('Summary of the problem'),
)
submitter_email = forms.EmailField(
required=False,
label=_('Submitter E-Mail Address'),
widget=forms.TextInput(attrs={'size':'60'}),
widget=forms.TextInput(attrs={'size': '60'}),
help_text=_('This e-mail address will receive copies of all public '
'updates to this ticket.'),
)
@ -551,12 +554,14 @@ class UserSettingsForm(forms.Form):
class EmailIgnoreForm(forms.ModelForm):
class Meta:
model = IgnoreEmail
exclude = []
class TicketCCForm(forms.ModelForm):
class Meta:
model = TicketCC
exclude = ('ticket',)
@ -571,6 +576,7 @@ class TicketCCForm(forms.ModelForm):
class TicketDependencyForm(forms.ModelForm):
class Meta:
model = TicketDependency
exclude = ('ticket',)

View File

@ -233,7 +233,7 @@ def safe_template_context(ticket):
context = {
'queue': {},
'ticket': {},
'ticket': {}
}
queue = ticket.queue

View File

@ -21,6 +21,7 @@ from helpdesk.models import EscalationExclusion, Queue
class Command(BaseCommand):
def __init__(self):
BaseCommand.__init__(self)

View File

@ -25,6 +25,7 @@ from helpdesk.models import Queue
class Command(BaseCommand):
def __init__(self):
BaseCommand.__init__(self)
@ -71,4 +72,3 @@ class Command(BaseCommand):
)
except IntegrityError:
self.stdout.write(" .. permission already existed, skipping")

View File

@ -28,6 +28,7 @@ from helpdesk.lib import send_templated_mail, safe_template_context
class Command(BaseCommand):
def __init__(self):
BaseCommand.__init__(self)
@ -88,16 +89,16 @@ def escalate_tickets(queues, verbose):
print("Processing: %s" % q)
for t in q.ticket_set.filter(
Q(status=Ticket.OPEN_STATUS)
| Q(status=Ticket.REOPENED_STATUS)
Q(status=Ticket.OPEN_STATUS) |
Q(status=Ticket.REOPENED_STATUS)
).exclude(
priority=1
).filter(
Q(on_hold__isnull=True)
| Q(on_hold=False)
Q(on_hold__isnull=True) |
Q(on_hold=False)
).filter(
Q(last_escalation__lte=req_last_escl_date)
| Q(last_escalation__isnull=True, created__lte=req_last_escl_date)
Q(last_escalation__lte=req_last_escl_date) |
Q(last_escalation__isnull=True, created__lte=req_last_escl_date)
):
t.last_escalation = timezone.now()
@ -136,7 +137,7 @@ def escalate_tickets(queues, verbose):
if verbose:
print(" - Esclating %s from %s>%s" % (
t.ticket,
t.priority+1,
t.priority + 1,
t.priority
)
)

View File

@ -48,7 +48,9 @@ STRIPPED_SUBJECT_STRINGS = [
"Automatic reply: ",
]
class Command(BaseCommand):
def __init__(self):
BaseCommand.__init__(self)
@ -74,7 +76,7 @@ def process_email(quiet=False):
allow_email_submission=True):
if not q.email_box_last_check:
q.email_box_last_check = timezone.now()-timedelta(minutes=30)
q.email_box_last_check = timezone.now() - timedelta(minutes=30)
if not q.email_box_interval:
q.email_box_interval = 0
@ -221,7 +223,7 @@ def ticket_from_message(message, queue, quiet):
return False
return True
matchobj = re.match(r".*\["+queue.slug+"-(?P<id>\d+)\]", subject)
matchobj = re.match(r".*\[" + queue.slug + "-(?P<id>\d+)\]", subject)
if matchobj:
# This is a reply or forward.
ticket = matchobj.group('id')
@ -400,4 +402,3 @@ def ticket_from_message(message, queue, quiet):
if __name__ == '__main__':
process_email()

View File

@ -180,7 +180,6 @@ class Queue(models.Model):
help_text=_('Name used in the django.contrib.auth permission system'),
)
email_box_interval = models.IntegerField(
_('E-Mail Check Interval'),
help_text=_('How often do you wish to check this mailbox? (in Minutes)'),
@ -479,7 +478,8 @@ class Ticket(models.Model):
Displays the ticket status, with an "On Hold" message if needed.
"""
held_msg = ''
if self.on_hold: held_msg = _(' - On Hold')
if self.on_hold:
held_msg = _(' - On Hold')
dep_msg = ''
if not self.can_be_resolved:
dep_msg = _(' - Open dependencies')
@ -569,6 +569,7 @@ class Ticket(models.Model):
class FollowUpManager(models.Manager):
def private_followups(self):
return self.filter(public=False)
@ -597,7 +598,7 @@ class FollowUp(models.Model):
date = models.DateTimeField(
_('Date'),
default = timezone.now
default=timezone.now
)
title = models.CharField(
@ -639,7 +640,7 @@ class FollowUp(models.Model):
objects = FollowUpManager()
class Meta:
ordering = ['date']
ordering = ('date',)
verbose_name = _('Follow-up')
verbose_name_plural = _('Follow-ups')
@ -711,7 +712,7 @@ def attachment_path(instance, filename):
import os
from django.conf import settings
os.umask(0)
path = 'helpdesk/attachments/%s/%s' % (instance.followup.ticket.ticket_for_url, instance.followup.id )
path = 'helpdesk/attachments/%s/%s' % (instance.followup.ticket.ticket_for_url, instance.followup.id)
att_path = os.path.join(settings.MEDIA_ROOT, path)
if settings.DEFAULT_FILE_STORAGE == "django.core.files.storage.FileSystemStorage":
if not os.path.exists(att_path):
@ -765,7 +766,7 @@ class Attachment(models.Model):
return '%s' % self.filename
class Meta:
ordering = ['filename',]
ordering = ('filename',)
verbose_name = _('Attachment')
verbose_name_plural = _('Attachments')
@ -783,7 +784,7 @@ class PreSetReply(models.Model):
queue, and the body text is fetched via AJAX.
"""
class Meta:
ordering = ['name', ]
ordering = ('name',)
verbose_name = _('Pre-set reply')
verbose_name_plural = _('Pre-set replies')
@ -904,7 +905,7 @@ class EmailTemplate(models.Model):
return '%s' % self.template_name
class Meta:
ordering = ['template_name', 'locale']
ordering = ('template_name', 'locale')
verbose_name = _('e-mail template')
verbose_name_plural = _('e-mail templates')
@ -933,7 +934,7 @@ class KBCategory(models.Model):
return '%s' % self.title
class Meta:
ordering = ['title',]
ordering = ('title',)
verbose_name = _('Knowledge base category')
verbose_name_plural = _('Knowledge base categories')
@ -1000,7 +1001,7 @@ class KBItem(models.Model):
return '%s' % self.title
class Meta:
ordering = ['title',]
ordering = ('title',)
verbose_name = _('Knowledge base item')
verbose_name_plural = _('Knowledge base items')
@ -1263,6 +1264,7 @@ class TicketCC(models.Model):
class CustomFieldManager(models.Manager):
def get_queryset(self):
return super(CustomFieldManager, self).get_queryset().order_by('ordering')

View File

@ -11,6 +11,7 @@ class PublicActionsTestCase(TestCase):
- Add a followup
- Close resolved case
"""
def setUp(self):
"""
Create a queue & ticket we can use for later tests.
@ -59,7 +60,7 @@ class PublicActionsTestCase(TestCase):
self.assertTemplateNotUsed(response, 'helpdesk/public_view_form.html')
self.assertEqual(ticket.status, Ticket.CLOSED_STATUS)
self.assertEqual(ticket.resolution, resolution_text)
self.assertEqual(current_followups+1, ticket.followup_set.all().count())
self.assertEqual(current_followups + 1, ticket.followup_set.all().count())
ticket.resolution = old_resolution
ticket.status = old_status

View File

@ -67,7 +67,7 @@ class TicketBasicsTestCase(TestCase):
self.assertEqual(urlparts.path, reverse('helpdesk_public_view'))
# Ensure submitter, new-queue + update-queue were all emailed.
self.assertEqual(email_count+3, len(mail.outbox))
self.assertEqual(email_count + 3, len(mail.outbox))
def test_create_ticket_private(self):
email_count = len(mail.outbox)
@ -122,4 +122,4 @@ class TicketBasicsTestCase(TestCase):
self.assertEqual(urlparts.path, reverse('helpdesk_public_view'))
# Ensure only two e-mails were sent - submitter & updated.
self.assertEqual(email_count+2, len(mail.outbox))
self.assertEqual(email_count + 2, len(mail.outbox))

View File

@ -109,6 +109,7 @@ def api_return(status, text='', json=False):
class API:
def __init__(self, request):
self.request = request

View File

@ -168,4 +168,3 @@ class OpenTicketsByQueue(Feed):
return item.assigned_to.get_username()
else:
return _('Unassigned')

View File

@ -227,7 +227,7 @@ def followup_edit(request, ticket_id, followup_id):
new_followup.user = followup.user
new_followup.save()
# get list of old attachments & link them to new_followup
attachments = Attachment.objects.filter(followup = followup)
attachments = Attachment.objects.filter(followup=followup)
for attachment in attachments:
attachment.followup = new_followup
attachment.save()
@ -299,7 +299,6 @@ def view_ticket(request, ticket_id):
else:
users = User.objects.filter(is_active=True).order_by(User.USERNAME_FIELD)
# TODO: shouldn't this template get a form to begin with?
form = TicketForm(initial={'due_date': ticket.due_date})
@ -521,7 +520,7 @@ def update_ticket(request, ticket_id, public=False):
c.save()
ticket.due_date = due_date
if new_status in [ Ticket.RESOLVED_STATUS, Ticket.CLOSED_STATUS ]:
if new_status in (Ticket.RESOLVED_STATUS, Ticket.CLOSED_STATUS):
if new_status == Ticket.RESOLVED_STATUS or ticket.resolution is None:
ticket.resolution = comment
@ -831,13 +830,12 @@ def ticket_list(request):
# Query deserialization failed. (E.g. was a pickled query)
return HttpResponseRedirect(reverse('helpdesk_list'))
elif not ('queue' in request.GET
or 'assigned_to' in request.GET
or 'status' in request.GET
or 'q' in request.GET
or 'sort' in request.GET
or 'sortreverse' in request.GET
):
elif not ('queue' in request.GET or
'assigned_to' in request.GET or
'status' in request.GET or
'q' in request.GET or
'sort' in request.GET or
'sortreverse' in request.GET):
# Fall-back if no querying is being done, force the list to only
# show open/reopened/resolved (not closed) cases sorted by creation
@ -1113,7 +1111,8 @@ def run_report(request, report):
# a second table for more complex queries
summarytable2 = defaultdict(int)
month_name = lambda m: MONTHS_3[m].title()
def month_name(m):
MONTHS_3[m].title()
first_ticket = Ticket.objects.all().order_by('created')[0]
first_month = first_ticket.created.month
@ -1501,7 +1500,7 @@ def days_since_created(today, ticket):
def date_rel_to_today(today, offset):
return today - timedelta(days = offset)
return today - timedelta(days=offset)
def sort_string(begin, end):