def action(self): logging.info('Starting Action') self.trello_overdue_cards_notify = 'RAN: ' + str(datetime.now()) overdue_cards = self.get_or_check_cards(check_only=False) self.due_cards_len = len(overdue_cards) logging.info('getting client') client = get_client(self.default_user) logging.info('Client found') logging.info('client type: {}'.format(type(client))) notify_users = defaultdict(list) logging.info('starting loop of overdue_cards') for card in overdue_cards: if card.idMemberCreator is None or card.idMemberCreator is False: logging.info('getting card creator: {}'.format(card.idCard)) # get card creator if not set in model creator = get_card_creator(card.idCard, client) logging.info('Creator is: {}'.format(creator)) if creator is None: continue card.idMemberCreator = creator card.save() notify_users[card.idMemberCreator].append(card.shortUrl) for user in notify_users: try: trello_user = TrelloUserInfo.get(trello_id=user) if trello_user.email == '': to = self.default_user else: to = trello_user.email send_email(to, '{id} the following cards are ' 'overdue:\n{tlist}'.format( id=trello_user.trello_fullname, tlist='\n'.join(notify_users.get(user)) )) except Exception as e: # if the user is not found, then let the last actor know logging.error(str(e)) send_email(self.default_user, 'could not find user: {}'.format(user)) # Assuming no issues, disable cards for card in overdue_cards: card.overdue_notice_sent = True card.save() logging.info('Script Finished...')
def callback(request): logging.debug('webhook received!') logging.debug('what in the world') try: webhook = Webhook.get(model_id=request.GET['id']) except Exception as e: logging.info('ERROR: %s' % (str(e))) user = request.GET['user'] client = get_client(user) logging.debug(client) comment_data = None card_json = None if request.BODY == '': # this is a test webhook for setup. return ok. return '200 OK' if 'card' in request.BODY['action']['data']: logging.debug('update or create card!') card_json = client.fetch_json('cards/%s?checklists=all&' % request.BODY['action']['data']['card']['id']) try: card, new = card_json_to_model(card_json, user) logging.debug(card.idMemberCreator) if card.idMemberCreator is None or card.idMemberCreator is False: card_creator = get_card_creator(card.idCard, client) card.idMemberCreator = card_creator card.save() except Exception as e: logging.debug(str(e)) comment_data = client.fetch_json('cards/%s?actions=commentCard' % request.BODY['action']['data']['card']['id']) logging.debug(comment_data) board_admins = [admin.get('username') for admin in client.fetch_json('boards/%s/members/admins' % request.BODY['action']['data']['board']['id']) if admin.get('username')] logging.debug(board_admins) p = Process.objects.create() p.hook_data = request.BODY p.card_data = card_json p.comment_data = comment_data p.board_admins = board_admins p.handle_trello_webhook = True p.default_user = user p.save() logging.debug(p) return '200 OK'
def action(self): self.trello_copy_template = "RAN: {}".format(datetime.now()) logging.info("start action") client = get_client(self.default_user) logging.info("client found") card = TrelloCard.get(idCard=self.idCard, user=self.default_user) card = template_checklist_setup(card, client) self.template_idList = card.template_idList logging.info("template_list {}".format(card.template_idList)) # self.json_data = card.card_json # self.description = self.json_data.get('description') logging.info("card updated") out = copy_template_card(client, card) self.out = out.id # if new_card is not None: # self.new_id = new_card.id logging.info("finished")