def getHTML(self, info, selfInfo, event): super(CommonRenderer, self).getHTML(info, selfInfo, event) # build html for company name comp = u"" if info['company_name']: if 'company_detail_url' in info and info['company_detail_url']: comp += "<a href='%s'>%s</a>" % ( cgi.escape(mr(info['company_detail_url'])), cgi.escape(mr(info['company_name']))) else: comp += cgi.escape(mr(info['company_name'])) # build html for contact name cont = u"" if info['contact_name']: if 'contact_detail_url' in info and info['contact_detail_url']: cont += "<a href='%s'>%s</a>" %( cgi.escape(mr(info['contact_detail_url'])), cgi.escape(mr(info['contact_name']))) else: cont += cgi.escape(mr(info['contact_name'])) # build actual html section html = u"<b>%s:</b>\n" % cgi.escape(_("Attendee")) if cont: html += cont if comp: html += " (" + comp + ")" elif comp: html += comp if 'Duration' in event: duration = int(float(event['Duration'])) html += "\n\n<b>%s:</b> " % cgi.escape(_("Duration")) html += "%d\'%02d\"\n" % (duration / 60, duration % 60) return html
def getHTML(self, particiantInfo, selfInfo, event): super(GOForgeRenderer, self).getHTML(particiantInfo, selfInfo, event) if not 'company_id' in particiantInfo: return "" company_id = particiantInfo['company_id'] if not company_id: return "" # prepare result result = [] html = "" # Connect to GOforge db sess = self.env.getDatabaseSession("fetcher-goforge") # obtain GOforge internal customer id res = sess.execute(select(['customer_id'], Column(String(), name='customer_unique_ldap_attribute').__eq__(company_id), 'customer')) if res.rowcount == 1: row = res.fetchone() # fetch tickets from database m = MetaData() bug = Table('bug', m, Column('bug_id', Integer), Column('summary', String), Column('group_id', String), Column('status_id', Integer), Column('assigned_to', Integer), Column('customer_id', Integer)) user = Table('user', m, Column('user_name', String), Column('user_id', Integer)) rows = sess.execute(select([bug.c.bug_id, bug.c.summary, bug.c.group_id, user.c.user_name], and_(bug.c.status_id == 1, bug.c.assigned_to == user.c.user_id, bug.c.customer_id == row[0]), [bug, user]).limit(29)).fetchall() # put results into dictionary for row in rows: result.append({'id': row[0], 'summary': row[1], 'group_id': row[2], 'assigned': row[3]}) if len(result) == 0: sess.close() return "" html = u"<b>%s</b>" % _("GOForge tickets") for row in result: html += u"\n<a href='%s'>%s</a> %s" %( self.forge_url + "/bugs/?func=detailbug" \ + "&bug_id=" + str(row['id']) \ + "&group_id=" + str(row['group_id']), row['id'], cgi.escape(mr(row['summary']))) sess.close() return html
def getHTML(self, particiantInfo, selfInfo, event): super(DoingReportRenderer, self).getHTML(particiantInfo, selfInfo, event) if event["Type"] != "CallEnded": return "" if not "Duration" in event: return "" ldap_uid = selfInfo["ldap_uid"] if "ldap_uid" in selfInfo else None if not ldap_uid: return "" # Filter out white listed users if self.whitelisted_users and not ldap_uid in self.whitelisted_users: return "" company_id = particiantInfo["company_id"] if "company_id" in particiantInfo else None contact_name = particiantInfo["contact_name"] if "contact_name" in particiantInfo else None contact_phone = particiantInfo["contact_phone"] if "contact_phone" in particiantInfo else None company_name = particiantInfo["company_name"] if "company_name" in particiantInfo else None company_phone = particiantInfo["company_phone"] if "company_phone" in particiantInfo else None if not (contact_name or company_name or company_phone or contact_phone): return "" # Connect to GOforge db sess = self.env.getDatabaseSession("fetcher-goforge") # Lookup GOforge user_id from ldap_uid res = sess.execute(select(["user_id"], Column(String(), name="user_name").__eq__(ldap_uid), "user")).fetchone() if not res: sess.close() return "" user_id = int(res[0]) # Lookup GOforge customer ID from sugar company_id customer_id = None if company_id: res = sess.execute( select( ["customer_id"], Column(String(), name="customer_unique_ldap_attribute").__eq__(company_id), "customer", ) ).fetchone() if res: customer_id = int(res[0]) # Assemble new entry for TB date = datetime.strftime(datetime.utcnow(), "%Y.%m.%d") minutes = int(math.ceil(float(event["Duration"]) / 60)) details = "Please amend" comment = "Phone call with %s" % contact_name or contact_phone or company_name or company_phone if customer_id: sess.execute( """ INSERT INTO doingreport (user_id, customer_id, date, minutes, details, comments, flag) VALUES (:user_id, :customer_id, :date, :minutes, :details, :comments, '?')""", dict( user_id=user_id, customer_id=customer_id, date=date, minutes=minutes, details=mr(details).encode("ascii", "xmlcharrefreplace"), comment=mr(comment).encode("ascii", "xmlcharrefreplace"), ), ) else: sess.execute( """ INSERT INTO doingreport (user_id, date, minutes, details, comments, flag) VALUES (:user_id, :date, :minutes, :details, :comments, '?')""", dict( user_id=user_id, date=date, minutes=minutes, details=mr(details).encode("ascii", "xmlcharrefreplace"), comments=mr(comment).encode("ascii", "xmlcharrefreplace"), ), ) # Eventually we need to create an entry in doing_account in order # to make the TB editable. res = sess.execute( select( ["id"], and_(Column(String(), name="date").__eq__(date), Column(String(), name="user_id").__eq__(user_id)), "doing_account", ) ).fetchone() if not res: sess.execute( """ INSERT INTO doing_account (date, user_id, account_user, account_billing) VALUES(:date, :user_id, 'no', 'no'); """, dict(date=date, user_id=user_id), ) sess.close() return ""