from PLC.Method import Method
from PLC.Parameter import Parameter, Mixed
from PLC.Addresses import Address, Addresses
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
+
+can_update = lambda (field, value): field in \
+ ['line1', 'line2', 'line3',
+ 'city', 'state', 'postalcode', 'country']
class UpdateAddress(Method):
"""
roles = ['admin', 'pi']
- can_update = lambda (field, value): field in \
- ['line1', 'line2', 'line3',
- 'city', 'state', 'postalcode', 'country']
- update_fields = dict(filter(can_update, Address.fields.items()))
+ address_fields = dict(filter(can_update, Address.fields.items()))
accepts = [
- PasswordAuth(),
+ Auth(),
Address.fields['address_id'],
- update_fields
+ address_fields
]
returns = Parameter(int, '1 if successful')
def call(self, auth, address_id, address_fields):
- if filter(lambda field: field not in self.update_fields, address_fields):
- raise PLCInvalidArgument, "Invalid field specified"
+ address_fields = dict(filter(can_update, address_fields.items()))
# Get associated address details
- addresses = Addresses(self.api, [address_id]).values()
+ addresses = Addresses(self.api, [address_id])
if not addresses:
raise PLCInvalidArgument, "No such address"
address = addresses[0]
address.update(address_fields)
address.sync()
-
- return 1
+
+ # Logging variables
+ self.object_ids = [address['address_id']]
+ self.message = 'Address %d updated: %s' % \
+ (address['address_id'], ", ".join(address_fields.keys()))
+
+ return 1