X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSites.py;h=2075409243700f25d46a64049e74844ca8745ca3;hb=HEAD;hp=dafa8cbe854fad6844b9e8071bc02088f834522b;hpb=f7ce7ce813d4c44502629820a3583f32a99a98f7;p=plcapi.git diff --git a/PLC/Sites.py b/PLC/Sites.py index dafa8cb..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,13 +258,14 @@ 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]}) + site_filter = Filter(Site.fields, {'login_base':site_filter}) sql += " AND (%s) %s" % site_filter.sql(api, "AND") - elif isinstance (site_filter, int): - site_filter = Filter(Site.fields, {'site_id':[site_filter]}) + elif isinstance (site_filter, (int, long)): + site_filter = Filter(Site.fields, {'site_id':site_filter}) sql += " AND (%s) %s" % site_filter.sql(api, "AND") else: raise PLCInvalidArgument, "Wrong site filter %r"%site_filter