def validate_python(self, field_dict, state): from hubspace.controllers import permission_or_owner user_id = field_dict['id'] user = User.get(user_id) if permission_or_owner(user.homeplace, None, 'manage_users'): if 'active' not in field_dict or field_dict['active'] == False: if identity.current.user.id == user_id: raise Invalid("You Cannot Deactivate Your Own Profile", field_dict, state, error_dict={'active':"You Cannot Deactivate Your Own Profile"})
def _get_invoice(self): return User.get(self.userID)
def get_churn_stats(self): """ -> [((2009, 3), 13, 4), ((2009, 4), 2, 5), ...] ^ members left ^ members back """ tariff_ids = (resource.id for resource in self.location.resources if resource.type == 'tariff') dateptr = get_last_months_limits(self.start)[0] tariff_usages = (ru for ru in self.get_usages_for_period(dateptr, self.end) if ru.resourceID in tariff_ids) prev_month = get_last_months_limits(dateptr) stats = [] while dateptr <= self.end: current_month = get_this_months_limits(dateptr) members_then = set(ru.userID for ru in get_usages_for_period(self.location.id, *prev_month)) members_now = set(ru.userID for ru in get_usages_for_period(self.location.id, *current_month)) members_left = len(members_then.difference(members_now)) members_back = len([m_id for m_id in members_now.difference(members_then) if User.get(m_id).created < prev_month[0]]) stats.append(("%s %s" % (calendar.month_abbr[dateptr.month], dateptr.year), (members_left, members_back))) dateptr = current_month[-1] + datetime.timedelta(1) prev_month = current_month return stats
def _get_user(self): return User.get(self.userID)