'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),
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:
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})