# HG changeset patch # User Pawel Solyga # Date 1222888869 0 # Node ID 325fb70c61a93df59ea56d6dbb8d36f2c24b48be # Parent 95e0b84e71c5294115928d0b019db4bbada954cc Replace common module with validate module. Move validation function from feed module to validate module and remove feed.py. Correct any usage of validation functions from common and feed modules into validate module. Patch by: Pawel Solyga Review by: to-be-reviewed diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/logic/common.py --- a/app/soc/logic/common.py Wed Oct 01 19:17:13 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -#!/usr/bin/python2.5 -# -# Copyright 2008 the Melange authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Common helper functions. -""" - -__authors__ = [ - '"Pawel Solyga" ', - ] - - -import re - - -LINKNAME_PATTERN = r'''(?x) - ^ - [0-9a-z] # start with ASCII digit or lowercase - ( - [0-9a-z] # additional ASCII digit or lowercase - | # -OR- - _[0-9a-z] # underscore and ASCII digit or lowercase - )* # zero or more of OR group - $ -''' - -LINKNAME_REGEX = re.compile(LINKNAME_PATTERN) - -def isLinkNameFormatValid(link_name): - """Returns True if link_name is in a valid format. - - Args: - link_name: link name used in URLs for identification - """ - if LINKNAME_REGEX.match(link_name): - return True - return False \ No newline at end of file diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/logic/feed.py --- a/app/soc/logic/feed.py Wed Oct 01 19:17:13 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -#!/usr/bin/python2.5 -# -# Copyright 2008 the Melange authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Feeds helpers functions. -""" - -__authors__ = [ - '"Pawel Solyga" ', - ] - -from google.appengine.api import urlfetch -import feedparser - -def isFeedURLValid(feed_url=None): - """Returns True if provided url is valid ATOM or RSS. - - Args: - feed_url: ATOM or RSS feed url - """ - if feed_url: - result = urlfetch.fetch(feed_url) - if result.status_code == 200: - parsed_feed = feedparser.parse(result.content) - if parsed_feed.version and (parsed_feed.version != ''): - return True - return False - diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/logic/validate.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/soc/logic/validate.py Wed Oct 01 19:21:09 2008 +0000 @@ -0,0 +1,68 @@ +#!/usr/bin/python2.5 +# +# Copyright 2008 the Melange authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Common validation helper functions. +""" + +__authors__ = [ + '"Pawel Solyga" ', + ] + + +import re + +from google.appengine.api import urlfetch + +import feedparser + + +def isFeedURLValid(feed_url=None): + """Returns True if provided url is valid ATOM or RSS. + + Args: + feed_url: ATOM or RSS feed url + """ + if feed_url: + result = urlfetch.fetch(feed_url) + if result.status_code == 200: + parsed_feed = feedparser.parse(result.content) + if parsed_feed.version and (parsed_feed.version != ''): + return True + return False + + +LINKNAME_PATTERN = r'''(?x) + ^ + [0-9a-z] # start with ASCII digit or lowercase + ( + [0-9a-z] # additional ASCII digit or lowercase + | # -OR- + _[0-9a-z] # underscore and ASCII digit or lowercase + )* # zero or more of OR group + $ +''' + +LINKNAME_REGEX = re.compile(LINKNAME_PATTERN) + +def isLinkNameFormatValid(link_name): + """Returns True if link_name is in a valid format. + + Args: + link_name: link name used in URLs for identification + """ + if LINKNAME_REGEX.match(link_name): + return True + return False \ No newline at end of file diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/views/site/home.py --- a/app/soc/views/site/home.py Wed Oct 01 19:17:13 2008 +0000 +++ b/app/soc/views/site/home.py Wed Oct 01 19:21:09 2008 +0000 @@ -34,7 +34,7 @@ from django import newforms as forms from soc.logic import out_of_band -from soc.logic import feed +from soc.logic import validate from soc.logic.site import id_user from soc.views import simple from soc.views.helpers import custom_widgets @@ -82,7 +82,7 @@ # feed url not supplied (which is OK), so do not try to validate it return None - if not feed.isFeedURLValid(feed_url): + if not validate.isFeedURLValid(feed_url): raise forms.ValidationError('This URL is not a valid ATOM or RSS feed.') return feed_url diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/views/site/user/profile.py --- a/app/soc/views/site/user/profile.py Wed Oct 01 19:17:13 2008 +0000 +++ b/app/soc/views/site/user/profile.py Wed Oct 01 19:21:09 2008 +0000 @@ -28,7 +28,7 @@ from django import newforms as forms from django.utils.translation import ugettext_lazy -from soc.logic import common +from soc.logic import validate from soc.logic import out_of_band from soc.logic.site import id_user from soc.views import simple @@ -70,7 +70,7 @@ # link name not supplied (which is OK), so do not try to validate it return None - if not common.isLinkNameFormatValid(link_name): + if not validate.isLinkNameFormatValid(link_name): raise forms.ValidationError('This link name is in wrong format.') return link_name @@ -213,7 +213,7 @@ def clean_link_name(self): link_name = self.cleaned_data.get('link_name') - if not common.isLinkNameFormatValid(link_name): + if not validate.isLinkNameFormatValid(link_name): raise forms.ValidationError("This link name is in wrong format.") else: key_name = self.data.get('key_name') @@ -365,7 +365,7 @@ def clean_link_name(self): link_name = self.cleaned_data.get('link_name') - if not common.isLinkNameFormatValid(link_name): + if not validate.LinkNameFormatValid(link_name): raise forms.ValidationError("This link name is in wrong format.") else: if id_user.doesLinkNameExist(link_name): diff -r 95e0b84e71c5 -r 325fb70c61a9 app/soc/views/user/profile.py --- a/app/soc/views/user/profile.py Wed Oct 01 19:17:13 2008 +0000 +++ b/app/soc/views/user/profile.py Wed Oct 01 19:21:09 2008 +0000 @@ -28,7 +28,7 @@ from django import newforms as forms from django.utils.translation import ugettext_lazy -from soc.logic import common +from soc.logic import validate from soc.logic import out_of_band from soc.logic.site import id_user from soc.views import simple @@ -53,7 +53,7 @@ def clean_link_name(self): link_name = self.cleaned_data.get('link_name') - if not common.isLinkNameFormatValid(link_name): + if not validate.isLinkNameFormatValid(link_name): raise forms.ValidationError("This link name is in wrong format.") elif not id_user.isLinkNameAvailableForId(link_name): raise forms.ValidationError("This link name is already in use.")