def is_camel_case(name):
    for (i,char) in enumerate(name):
        if (i>=1) and (name[i-1].islower()) and (char.isupper()):
            return True
    return False

def is_missing_underscore(fieldName):
   if (fieldName == "kuser_id"):
       # this one is okay
       return False

   {% for model in generator.all %}
       pos = fieldName.find("{{ model }}")
       if (pos > 0) and (fieldName[pos-1] != "_"):
           return True
   {% endfor %}

       return False

def stylecheck_model_name(name):
   if name.endswith("s"):
       print "model '%s' name ends with 's'" % name

def stylecheck_field_name(modelName, fieldName):
   if is_camel_case(fieldName):
       print "field '%s.%s' has camelcase" % (modelName, fieldName)
   if is_missing_underscore(fieldName):
       print "field '%s.%s' is missing underscore" % (modelName, fieldName)

def stylecheck_field_plural(modelName, fieldName):
   if is_camel_case(fieldName):
       print "m2m field '%s.%s' has camelcase" % (modelName, fieldName)
   if is_missing_underscore(fieldName):
       print "m2m field '%s.%s' is missing underscore" % (modelName, fieldName)

def main():
{% for obj in generator.all %}
   stylecheck_model_name("{{ obj.camel }}");
{% for ref in obj.refs %}
   stylecheck_field_plural("{{ obj.camel }}", "{{ ref.plural }}");
{% endfor %}
{% for prop in obj.props %}
   stylecheck_field_name("{{ obj.camel }}", "{{ prop }}");
{% endfor %}
{% endfor %}

main()
