使用Python在单个公司中进行报告

这个故事发生在一家真实的公司中,尽管有些名称和事件是虚构的。

Glory是N市一家小型公司的普通开发商。该公司从事为教育组织提供服务的工作。 有几个应用程序需要得到支持,并逐渐发展。 但是,荣耀当局不相信他的努力以及他吃面包的原因。 另外,信息技术领域的老板们并不是真正想要的,而是想了解销售部门(我必须说由一个半人组成)在做什么以及员工的生产效率。

当局狡猾地看着销售经理,问:今天您为祖国做了什么。 卖方回答:举行了很多次会议,为那么多人提供服务。 领导来到荣耀,并说:告诉我,员工是否在讲真话,他们在插科打.。 需要统计。

对话发生了:

-用户是否通过第三方服务付费以接收在线支付? 那呢
-是的
-公司管理层可以使用这项服务吗?
-有。
-因此,很可能在那儿卸货。
-有。
“但是您需要其他报告吗?”
-需要
-为什么?
-因为更方便,因为必须,因为“某某”。

公平地说,必须说需要补充数据。

毫不犹豫地,Glory完成了一个简单的查询,随后在Excel中进行了选择。

该报告是一页上一列中的数据集。 刚开始,他们在一天中的混乱中走近Glory,问了问。 但是,请给我一份有关该组织的报告,现在就这份报告。 Slava毫不犹豫地决定要忍受这一点就足够了,应该做一些美丽而统一的事情,以满足那些提出要求的人的需求。

出现了一个小脚本,它允许将新闻通讯发送给感兴趣的人:

import openpyxl, pymysql, os from smtplib import SMTP_SSL from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import datetime # Excel Settings today = datetime.date.today().strftime('%d.%m.%Y') excel_file = 'Oplata_polzovateley_' + today + '.xlsx' # SQL settings host = '' user = '' passwd = '' db = '' port=0000 headers = ['id', 'email', '', '', ' ', ' ', '', '- ', ' '] # SMTP Mail settings smtp_server = 'smtp.gmail.com' mail_login = '' mail_passwd = '' receiver = [''] cc = [''] def main(): # Fetch Data from SQL server conn = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=port) cursor = conn.cursor() cursor.execute('''select * from table''') data = cursor.fetchall() conn.close() # Write Data to Excel file wb = openpyxl.Workbook() contractors = {} for item in data: diff = item[6] - item[5] item = list(item) # print(item) if diff.days > 10: item.append('') else: item.append('') item = tuple(item) if item[0][:30] in contractors: contractors[item[0][:30]] += 1 else: wb.create_sheet(item[0][:30]) contractors[item[0][:30]] = 2 for i in range(1, len(headers) + 1): letter = openpyxl.utils.get_column_letter(i) wb[item[0][:30]][letter + '1'] = headers[i - 1] wb[item[0][:30]]['A' + str(contractors[item[0][:30]])] = contractors[item[0][:30]] - 1 for i in range(2, len(headers) + 1): letter = openpyxl.utils.get_column_letter(i) wb[item[0][:30]][letter + str(contractors[item[0][:30]])] = item[i] wb.save(excel_file) wb.remove(wb['Sheet']) wb.save(excel_file) # Compose attachment part = MIMEBase('application', "octet-stream") part.set_payload(open(excel_file, "rb").read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(excel_file)) # Compose message msg = MIMEMultipart() msg['From'] = mail_login msg['To'] = ', '.join(receiver) msg['Cc'] = ', '.join(cc) msg['Subject'] = excel_file msg.attach(part) # Send mail tosend = receiver + cc smtp = SMTP_SSL('smtp.gmail.com') smtp.connect(smtp_server) smtp.login(mail_login, mail_passwd) smtp.sendmail(mail_login, tosend, msg.as_string()) smtp.quit() # Wipe file os.remove(excel_file) if __name__ == '__main__': main() 

做出,当然,并没有真正想到荣耀。 但是正如他们所说:“嗯,那样做。”

每天早晨,Slava上班,运行脚本并向感兴趣的各方发送电子邮件。
下一步是设置自动发送。 它的工作原理如下:

docker build --tag =报告。
docker run -it --rm报告
用皇冠上的文字:
0 8 * * *泊坞窗运行--rm foo

每天早上8点寄信。 管理层甚至认为Slava每天早上8点开始工作,在Excel中起草一份报告,然后通过邮件发送给他。 他在周六,周日,下雪,下雨,极地之夜做到了。

Github

暂时,一切都很好,领导层忍受了一段时间,但时间不长。 曾经有一次会议宣布新的命令。 听着,听着,不要说你没有听到。 Sim声明,每一位员工每天都必须向更高甚至更高的职位报告。 好吧,一般而言,您了解。

“每天?”荣耀问。
-每天。 -回答了技术部门的负责人。
-也许不是?
-这是必要的荣耀,这是必要的。

Slava对这种情况有几个问题。 立即的责任是完成软件的定稿,其报告应包括以下内容:
壮举(模块)修复了NoteLineCount中的错误...不太重视...
upd(Module2)不要理会窗帘后面的人
已修复(Module3),有人告诉我不要理它,但是我有一个叫做OCD的东西,
*注意:提交消息的名称取自此处

荣耀决定他将基于他们起草报告。 一个星期过去了。 关于以下内容进行了新的对话:

-因此,您每天都发送报告,但是看不到进度。 例如:“在前端输入电话号码时已添加掩码”。
好吧,看 以前,您必须输入电话号码并检查数字位数,这很不方便。 因此很方便。
嗯 好啊 知道了 以及如何解释这一点:“对方模块的代码重构。 验证功能在单独的方法中。”
-好吧,你明白了。 有这样的事情-版本控制系统,它指示谁,何时以及做什么。 看这里 这是提交,这是已更改的代码。 这是添加的代码,这是删除的代码。
-好 那我们做吧。 根据您的提交进行报告,然后我们会聚在一起,检查您在这里写的内容如何。

最后-这是发生了什么:

Github

该脚本在存储库中进行了更改,并发送了一封关于已完成和未完成的信。

早些时候,Slava尴尬地报告说那些根本不检查的人根本不懂如何编写代码。 也许管理层了解销售,购买和各种东西并付了钱,但是您会以不太熟悉的语言看到某些代码行,观察从提交切换到提交时绿线和红线如何闪烁。

是的,Slava是负责任的人,这项工作很奏效,但是在某些时候,代码很难最终确定或者很懒惰。 无论如何,总的来说,该系统可以正常运行,并且不想添加另外15层抽象,但是每天都必须发送报告。

成为新的Mayakovsky并写一本带有梯子的插话,别无他法。 但是每天我并不是真的想发明一个新的。 结果,维亚切斯拉夫开始开发想到的第一个解决方案,结果证明它是一个简单的代码,其中在没有执行任何工作和进行任何更改的情况下,编写了一份报告。 它看起来像这样:

Github

仍有待完成,以便随后的提交形成伪造的代码。 有必要这样做吗? 时间会证明一切。

PS:荣耀的故事并没有就此结束。 还有更多的事件影响了他的命运,但这是一个完全不同的故事。 有趣的是,可以在评论中阅读生活中的类似故事以及根据其做出的决定。 根据这些评论,可能会进一步开发该项目。

Source: https://habr.com/ru/post/zh-CN446740/


All Articles