예제 #1
0
파일: db.go 프로젝트: sisteamnik/guseful
func (u *University) FacultyCreate(title, shortname string) (Faculty, error) {
	f := Faculty{}
	f.Title = title
	f.ShortName = shortname
	f.Slug = chpu.Chpu(shortname)
	err := u.db.Insert(&f)
	return f, err
}
예제 #2
0
파일: db.go 프로젝트: sisteamnik/guseful
func getSlug(db *gorp.DbMap, title string) string {
	title = chpu.Chpu(title)
	for {
		id, _ := db.SelectInt("select Id from New where Slug = ?", title)
		if id != 0 {
			title = strinc.Inc(title)
		} else {
			break
		}
	}
	return title
}
예제 #3
0
파일: db.go 프로젝트: sisteamnik/guseful
func (u *University) GroupCreate(g Group) (Group, error) {
	g.Created = time.Now().UTC().UnixNano()
	g.Slug = chpu.Chpu(fmt.Sprintf("%s-%d-%d", g.Title, g.Start, g.End))
	if g.Parent != 0 {
		gp, err := u.GroupGet(g.Parent)
		if err != nil {
			return g, err
		}
		g.Start = gp.Start
		g.End = gp.End
		g.Code = gp.Code
		g.Faculty = gp.Faculty
		g.TrainingDirection = gp.TrainingDirection
	}
	err := u.db.Insert(&g)
	return g, err
}
예제 #4
0
func Create(db *gorp.DbMap, c ChangeLog) (ChangeLog, error) {
	c.Slug = chpu.Chpu(c.Title)
	for {
		id, _ := db.SelectInt("select Id from ChangeLog where Slug = ?", c.Slug)
		if id != 0 {
			c.Slug = strinc.Inc(c.Slug)
		} else {
			break
		}
	}
	r := rate.Rate{}

	t := time.Now().UTC()
	c.Created = t.UnixNano()
	err := db.Insert(&c)
	r.Create(db, 6, c.Id)
	return c, err
}
예제 #5
0
파일: db.go 프로젝트: sisteamnik/guseful
func (u *University) GroupUpdate(g Group) error {
	g.Updated = time.Now().UTC().UnixNano()
	g.Slug = chpu.Chpu(fmt.Sprintf("%s-%d-%d", g.Title, g.Start, g.End))
	_, err := u.db.Update(&g)
	return err
}
예제 #6
0
파일: db.go 프로젝트: sisteamnik/guseful
func (u *University) FacultyUpdate(f Faculty) error {
	f.Slug = chpu.Chpu(f.ShortName)
	_, err := u.db.Update(&f)
	return err
}
예제 #7
0
파일: api.go 프로젝트: sisteamnik/guseful
func (a *Api) Create(data []byte, name, descr, imgtype string, lon, lat float64) (Img, error) {
	bts := bytes.NewReader(data)
	img, _, err := image.Decode(bts)
	if err != nil {
		return Img{}, err
	}

	tm := time.Now()

	if name == "" {
		name = randName()
	}

	name = chpu.Chpu(name)

	title := name

	if len(name) <= int(a.nesting) {
		name = randName()
	}

	//TODO bad code
	for {
		found, err := a.ExistName(name)
		if err != nil {
			return Img{}, err
		}
		if found {
			name = randName()
		}
		if !found {
			break
		}
	}

	path := a.getPath(name)

	os.MkdirAll(path, 0777)

	out, err := os.Create(path + "/" + name + ".jpg")
	if err != nil {
		return Img{}, err
	}
	defer out.Close()
	jpeg.Encode(out, img, nil)

	//todo remove this(fly generated)
	if a.WebpAddr != "" {
		cmd := exec.Command(a.WebpAddr, path+"/"+name+".jpg", "-o",
			path+"/"+name+".webp")
		err := cmd.Run()
		if err != nil {
			fmt.Println(err)
			return Img{}, errors.New("Webp Not Working")
		}
	}

	im := Img{
		Name:        title,
		Slug:        name,
		Description: descr,
		Created:     tm.UnixNano(),
		Updated:     tm.UnixNano(),
		Width:       img.Bounds().Dx(),
		Height:      img.Bounds().Dy(),
		Hash:        int64(imghash.Average(img)),
		Type:        imgtype,
	}

	err = a.Db.Insert(&im)
	if err != nil {
		fmt.Println(err)
		return Img{}, err
	}
	return im, nil
}
예제 #8
0
파일: obj.go 프로젝트: zhuharev/micro
func (o Object) Slug() string {
	return chpu.Chpu(o.Title) + "_" + fmt.Sprint(o.Id)
}