X-Git-Url: http://git.onelab.eu/?p=plcapi.git;a=blobdiff_plain;f=PLC%2FSites.py;h=2075409243700f25d46a64049e74844ca8745ca3;hp=fca3b14f98fd3161d85e9c0de524d7bacedc203d;hb=13901cd4465288b634103c1997a5653500f2b5cc;hpb=00b458601d8f318b617b43d11cb4fdb93e89967c diff --git a/PLC/Sites.py b/PLC/Sites.py index fca3b14..2075409 100644 --- a/PLC/Sites.py +++ b/PLC/Sites.py @@ -1,5 +1,3 @@ -# $Id$ -# $URL$ from types import StringTypes import string @@ -28,7 +26,7 @@ class Site(Row): 'site_id': Parameter(int, "Site identifier"), 'name': Parameter(str, "Full site name", max = 254), 'abbreviated_name': Parameter(str, "Abbreviated site name", max = 50), - 'login_base': Parameter(str, "Site slice prefix", max = 20), + 'login_base': Parameter(str, "Site slice prefix", max = 32), 'is_public': Parameter(bool, "Publicly viewable site"), 'enabled': Parameter(bool, "Has been enabled"), 'latitude': Parameter(float, "Decimal latitude of the site", min = -90.0, max = 90.0, nullok = True), @@ -71,8 +69,8 @@ class Site(Row): if not len(login_base): raise PLCInvalidArgument, "Login base must be specified" - if not set(login_base).issubset(string.lowercase + string.digits): - raise PLCInvalidArgument, "Login base must consist only of lowercase ASCII letters or numbers" + if not set(login_base).issubset(string.lowercase + string.digits + '.'): + raise PLCInvalidArgument, "Login base must consist only of lowercase ASCII letters or numbers or dots" conflicts = Sites(self.api, [login_base]) for site in conflicts: @@ -260,7 +258,8 @@ class Sites(Table): site_filter = Filter(Site.fields, {'site_id': ints, 'login_base': strs}) sql += " AND (%s) %s" % site_filter.sql(api, "OR") elif isinstance(site_filter, dict): - site_filter = Filter(Site.fields, site_filter) + allowed_fields=dict(Site.fields.items()+Site.tags.items()) + site_filter = Filter(allowed_fields, site_filter) sql += " AND (%s) %s" % site_filter.sql(api, "AND") elif isinstance (site_filter, StringTypes): site_filter = Filter(Site.fields, {'login_base':site_filter})