mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-06-24 03:21:23 +02:00
Merge pull request #438 from alexbarcelo/autocodestyle
More Code Style --PEP8-centric
This commit is contained in:
commit
44fd60970b
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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',)
|
||||
|
@ -233,7 +233,7 @@ def safe_template_context(ticket):
|
||||
|
||||
context = {
|
||||
'queue': {},
|
||||
'ticket': {},
|
||||
'ticket': {}
|
||||
}
|
||||
queue = ticket.queue
|
||||
|
||||
|
@ -21,6 +21,7 @@ from helpdesk.models import EscalationExclusion, Queue
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
def __init__(self):
|
||||
BaseCommand.__init__(self)
|
||||
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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
|
||||
)
|
||||
)
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -109,6 +109,7 @@ def api_return(status, text='', json=False):
|
||||
|
||||
|
||||
class API:
|
||||
|
||||
def __init__(self, request):
|
||||
self.request = request
|
||||
|
||||
|
@ -168,4 +168,3 @@ class OpenTicketsByQueue(Feed):
|
||||
return item.assigned_to.get_username()
|
||||
else:
|
||||
return _('Unassigned')
|
||||
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user