app/soc/modules/ghop/logic/cleaning.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Fri, 04 Sep 2009 22:42:47 +0200
changeset 2860 ea9909161840
parent 2820 eb57ebee8b91
child 2861 17d5cfe85faf
permissions -rw-r--r--
Added cleaning method to validate a list of mentor's link_ids. Reviewed by: Lennard de Rijk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2820
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
#
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
#
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
#
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
#
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
"""GHOP module cleaning methods.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
"""
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
__authors__ = [
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
    '"Madhusudan.C.S" <madhusudancs@gmail.com>',
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
    ]
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    23
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    24
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    25
from django import forms
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
from django.utils.translation import ugettext
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
2860
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    28
from soc.logic import cleaning
2820
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
def cleanTaskComment(comment_field, action_field, ws_field):
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
  """Cleans the comment form and checks to see if there is either
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
  action or comment content.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
  Raises ValidationError if:
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
    -There is no action taking place and no comment present
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
    -The action is needs_review and there is no comment or work submission
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
     present
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
  """
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    39
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
  def wrapper(self):
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
    """Decorator wrapper method.
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
    """
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
    cleaned_data = self.cleaned_data
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    44
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    45
    content = cleaned_data.get(comment_field)
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    46
    action = cleaned_data.get(action_field)
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    47
    work_submission = cleaned_data.get(ws_field)
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    48
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    49
    if action == 'noaction' and not content:
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    50
      raise forms.ValidationError(
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    51
          ugettext('You cannot have comment field empty with no action.'))
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
    if action == 'needs_review' and not content and not work_submission:
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
      raise forms.ValidationError(
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    54
          ugettext('You cannot have both comment field and work '
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    55
                   'submission fields empty.'))
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    56
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    57
    return cleaned_data
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    58
eb57ebee8b91 Added GHOP Form cleaning module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    59
  return wrapper
2860
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    60
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    61
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    62
def clean_mentors_list(field_name):
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    63
  """Clean method to check and validate list of mentor's link_ids.
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    64
  """
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    65
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    66
  @check_field_is_empty(field_name)
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    67
  def wrapper(self):
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    68
    """Decorator wrapped method.
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    69
    """
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    70
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    71
    from soc.modules.ghop.logic.models.mentor import logic as ghop_mentor_logic
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    72
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    73
    mentors_list_str = cleaning.str2set(field_name)
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    74
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    75
    filter = {
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    76
        'scope_path': self.cleaned_data.get('scope_path'),
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    77
        'status': ['active']
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    78
        }
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    79
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    80
    mentors_list = []
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    81
    for link_id in mentors_list_str:
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    82
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    83
      if not validate.isLinkIdFormatValid(link_id):
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    84
        raise forms.ValidationError(
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    85
            "%s is not a valid link ID." % link_id)
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    86
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    87
      filter['link_id'] = link_id
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    88
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    89
      if not ghop_mentor_logic.getFromKeyFields(filter):
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    90
        raise forms.ValidationError(
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    91
            'link_id "%s" is not a valid Mentor.' % link_id)
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    92
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    93
      mentors_list.append(link_id)
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    94
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    95
    return mentors_list
ea9909161840 Added cleaning method to validate a list of mentor's link_ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2820
diff changeset
    96
  return wrapper