python(05) 实战Django-models

想给自己工作写款工具,因各种原因delay...
1:在选定python后,买了三本以上的python来看,跟着书做练习。
2:认为自己不会写前台代码,于是花了近1个月的业余时间在freecodecamp上练习闯关301关。
这两项花了近2个月的业余时间

即使花了这么多的时间,发现自己还是不知道从什么地方开始,于是去找python语言开发的项目,选中jumpserver,在它的基础之上自己增加了一个应用管理功能,实现应用增加、修改、删除、检查应用状态、启动应用、停止应用、导入和导出等,总共消耗时间不超过3天。

在这个过程中,才察觉之前那些都不是最佳学习路径,旁枝末节可以给自己增加无谓的信心,但对主要做的事情影响并不大,最快速的学习方式模仿,参考已有案例开始实践,在需要用到具体技能时才开始学习,而不是一开始捧着本厚厚的书,学会了N多细小的点,却不知如何串联使用,慢慢消耗激情。

jumpserver选中的是Django框架,首要学习Django框架是如何运行起来的,可参考前面python(02)--(04),知道这些后就可以开始正式开发工作啦。

需求:监控jenkins中项目的构建,对已打标记的构建,做版本发布,并提交给实施部门,实施部门根据接收到的发布版本进行升级工作。
现状:
1)发布包没地方管,当前在各个测试人员的电脑上
2)已发布版本找不到SVN/Git上的对应的地址
3)不知道现网是哪个版本
4)不知道已发布的包情况(有没有升级,升级包质量好还是坏)
设计:
PCI:在管理中和jenkins关联的项目
PCI_BUILD: jenkins中项目的构建信息
PCI_RELEASE: 出包
ONLINE_VERSION: 现网版本管理

在modle阶段

  1. 字段下拉列表选择数据

    UPGRADE_RESULT =(
      ('SUCCESS', u"SUCCESS"),
      ('FAIL', u"FAIL"),
    )
    upgrade_result = models.CharField(choices=UPGRADE_RESULT,max_length=512, blank=True)  #升级结果:升级成功、升级失败
    
  2. 用到属性CharField、IntegerField、DateTimeField、TextField、FileField

     release_url = models.FileField(upload_to='./releaseStorage/%Y/%m/%d',blank=True,null=True)   #发布包的文件上传文件存储目录和按年月日目录进行存储
    
  3. 用到外键pro = models.ForeignKey(Project)

  4. 用到组合主键

     class Meta:
          unique_together = ("pci_build", "pro") 
    
  5. 外键引用时显示该对象想要显示的名字 而不是Object

       def __unicode__(self):
             return self.build_name
        __str__ = __unicode__
    
  6. 字段值唯一unique=True

      job_name = models.CharField(max_length=50,blank=True,unique=True)
    
  7. 默认值

      feedback_info = models.CharField(max_length=512,default= 'Not    upgraded')  #跟着发布包的后续(升级成功、升级失败及原因、未升级)
    

全类如下:

# coding: utf-8
from django.db import models
from projects.models import Project

__all__ = ['PCI','PCI_BUILDS','PCI_RELEASE','ONLINE_VERSION']

UPGRADE_RESULT =(
    ('SUCCESS', u"SUCCESS"),
    ('FAIL', u"FAIL"),
    )

class PCI(models.Model) :
    pro = models.ForeignKey(Project)
    job_name = models.CharField(max_length=50,blank=True,unique=True) #在jenkins中名字 ,持续集成名称--同项目名
    last_build_number = models.IntegerField(blank=True, null=True) #在jenkins中最新的一次构建号
    last_build_result = models.CharField(max_length=1024,blank=True) #在jenkins中最新的一次构建结果
    last_build_url = models.CharField(max_length=1024,blank=True) #在jenkins中最新的一次构建URL
    last_update_time =  models.DateTimeField(blank=True, null=True)  #更新时间
    pro_scm =  models.CharField(max_length=20,blank=True) #项目是SVN,还是GIT

    def __unicode__(self):
        return self.job_name
    __str__ = __unicode__

class PCI_BUILDS(models.Model) :
    pci = models.ForeignKey(PCI)
    pro = models.ForeignKey(Project)
    build_name = models.CharField(max_length=512,blank=True, null=True)
    build_number = models.IntegerField(blank=True, null=True,verbose_name=u"构建号") #在jenkins中最新的一次构建号
    build_result = models.CharField(max_length=1024,blank=True) #在jenkins中最新的一次构建结果
    build_url = models.CharField(max_length=1024,blank=True) #在jenkins中最新的一次构建URL
    update_time =  models.DateTimeField(blank=True, null=True)  #更新时间
    build_tags = models.CharField(max_length=1024,null=True) #在jenkins中tags

    def __unicode__(self):
        return self.build_name
    __str__ = __unicode__

class PCI_RELEASE(models.Model):
    pro = models.ForeignKey(Project)
    pci_build = models.ForeignKey(PCI_BUILDS)
    build_name = models.CharField(max_length=512, blank=True, null=True)
    release_name = models.CharField(max_length=512,null=True, blank=True)  #发布包名
    release_date = models.DateTimeField(null=True, blank=True)             #发布时间
    release_info = models.TextField(blank=True,null=True)      #发包信息
    release_url = models.FileField(upload_to='./releaseStorage/%Y/%m/%d',blank=True,null=True)   #发布包的文件
    release_user = models.CharField(max_length=20, blank=True,null=True,)  # 出包人
    feedback_info = models.CharField(max_length=512,default= 'Not upgraded')  #跟着发布包的后续(升级成功、升级失败及原因、未升级)

    class Meta:
        unique_together = ("pci_build", "pro") #这是重点

    def __unicode__(self):
        return self.build_name
    __str__ = __unicode__

class ONLINE_VERSION(models.Model):
    pro = models.ForeignKey(Project)
    pci_release = models.ForeignKey(PCI_RELEASE)
    release_name = models.CharField(max_length=512, blank=True)  # 发布包名
    IM_plan = models.TextField(blank=True)                   #实施方案
    upgrade_date = models.DateField(null=True, blank=True)             #升级时间
    upgrade_result = models.CharField(choices=UPGRADE_RESULT, max_length=512, blank=True)  #升级结果:升级成功、升级失败
    upgrade_fail_desc = models.CharField(max_length=1024, blank=True)   #升级失败的描述
    upgrade_user = models.CharField(max_length=20, blank=True)  # 升级的操作者

    def __unicode__(self):
        return self.release_name
    __str__ = __unicode__
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容