def delete_order_from_users_google_calendar(order_id, target_users=None): from orders_manager.models import User, Order from orders_manager.google_apis import GoogleApiHandler logger = get_task_logger(__name__) google_api_handler = GoogleApiHandler() order = Order.objects.get(id=order_id) if target_users is None: target_users = set([i.user_id for i in order.program_executors.all()]) target_users.update([ i.executor.user_id for i in order.additional_services_executors.all() ]) results = {} try: for user_id in target_users: user = User.objects.get(id=user_id) res = google_api_handler.delete_event_from_user_calendar( user, order.hex_id()) results.update({user.get_full_name(): res}) send_order_notice_to_email(order, user, action_type='delete') except Exception as ex: logger.error(ex.args[0]) return ex.args[0] return results
def __init__(self, template_name): super(OAuthLogin, self).__init__() self.google_oauth = GoogleApiHandler(grant_type='online') self.template_name = template_name
def send_order_to_users_google_calendar(order_id, send_email=True, is_full_description=None, is_new_order=False): from orders_manager.models import Order, UserProfile from orders_manager.google_apis import GoogleApiHandler logger = get_task_logger(__name__) google_api_handler = GoogleApiHandler() order = Order.objects.get(id=order_id) if is_full_description is None: dt = datetime.datetime.strptime( '%s %s' % (order.celebrate_date, '00:00:00'), '%Y-%m-%d %H:%M:%S') today = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) dt_lim = today + datetime.timedelta(2) is_full_description = 0 < (dt_lim - dt).days <= 2 date_str = '{0} {1}'.format(order.celebrate_date, order.celebrate_time) event_start = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S') event_duration = int(order.duration) event_end = event_start + datetime.timedelta(0, event_duration * 60) event_start = event_start.isoformat() event_end = event_end.isoformat() logger.debug('Sending order \'%s\' start \'%s\'' % (order.program.title, event_start)) executor_to_event_title = {} description = _get_order_description(order, is_full_description) for program_executor in order.program_executors.all(): executor_to_event_title[program_executor.user_id] = order.program.title for service_to_executors in order.additional_services_executors.all(): if executor_to_event_title.get(service_to_executors.executor.user_id): executor_to_event_title[service_to_executors.executor.user_id] += \ ' + %s' % service_to_executors.additional_service.title else: executor_to_event_title[service_to_executors.executor.user_id] = \ service_to_executors.additional_service.title for user_id, title in executor_to_event_title.items(): executor = UserProfile.objects.get(user_id=user_id) try: summary = _get_order_summary(order, is_full_description) summary = summary.format(title=title) google_api_handler.send_event_to_user_calendar( executor, order.hex_id(), event_start, event_end, summary, description) if send_email is True: send_order_notice_to_email( order, executor, 'create' if is_new_order else 'update') except Exception as ex: logger.error(ex.args[0]) return '{0} was updated.'.format(order.program.title)