# class Project

### Attributes

error_code[RW]

### Public Class Methods

access_options() click to toggle source

    # File app/models/project.rb, line 85
    def access_options
      UsersProject.access_roles
    end

active() click to toggle source

    # File app/models/project.rb, line 52
    def active
      joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC")
    end

create_by_user(params, user) click to toggle source

    # File app/models/project.rb, line 60
    def create_by_user(params, user)
      project = Project.new params

      Project.transaction do
        project.owner = user
        project.save!

        # Add user as project master
        project.users_projects.create!(project_access: UsersProject::MASTER, user: user)

        # when project saved no team member exist so
        # project repository should be updated after first user add
        project.update_repository
      end

      project
    rescue Gitlab::Gitolite::AccessDenied => ex
      project.error_code = :gitolite
      project
    rescue => ex
      project.error_code = :db
      project.errors.add(:base, "Can't save project. Please try again later")
      project
    end

search(query) click to toggle source

    # File app/models/project.rb, line 56
    def search query
      where("name LIKE :query OR code LIKE :query OR path LIKE :query", query: "%#{query}%")
    end

### Public Instance Methods

build_commit_note(commit) click to toggle source

    # File app/models/project.rb, line 124
    def build_commit_note(commit)
      notes.new(noteable_id: commit.id, noteable_type: "Commit")
    end

check_limit() click to toggle source

    # File app/models/project.rb, line 98
    def check_limit
      unless owner.can_create_project?
        errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
      end
    rescue
      errors[:base] << ("Can't check your ability to create project")
    end

commit_line_notes(commit) click to toggle source

    # File app/models/project.rb, line 132
    def commit_line_notes(commit)
      notes.where(noteable_id: commit.id, noteable_type: "Commit").where("line_code IS NOT NULL")
    end

commit_notes(commit) click to toggle source

    # File app/models/project.rb, line 128
    def commit_notes(commit)
      notes.where(noteable_id: commit.id, noteable_type: "Commit", line_code: nil)
    end

common_notes() click to toggle source

    # File app/models/project.rb, line 120
    def common_notes
      notes.where(noteable_type: ["", nil]).inc_author_project
    end

git_error?() click to toggle source

    # File app/models/project.rb, line 90
    def git_error?
      error_code == :gitolite
    end

issues_labels() click to toggle source

    # File app/models/project.rb, line 160
    def issues_labels
      issues.tag_counts_on(:labels)
    end

last_activity() click to toggle source

    # File app/models/project.rb, line 144
    def last_activity
      last_event
    end

last_activity_date() click to toggle source

    # File app/models/project.rb, line 148
    def last_activity_date
      last_event.try(:created_at) || updated_at
    end

private?() click to toggle source

    # File app/models/project.rb, line 140
    def private?
      private_flag
    end

project_id() click to toggle source

    # File app/models/project.rb, line 156
    def project_id
      self.id
    end

public?() click to toggle source

    # File app/models/project.rb, line 136
    def public?
      !private_flag
    end

repo_name() click to toggle source

    # File app/models/project.rb, line 106
    def repo_name
      if path == "gitolite-admin"
        errors.add(:path, " like 'gitolite-admin' is not allowed")
      end
    end

saved?() click to toggle source

    # File app/models/project.rb, line 94
    def saved?
      id && valid?
    end

to_param() click to toggle source

    # File app/models/project.rb, line 112
    def to_param
      code
    end

web_url() click to toggle source

    # File app/models/project.rb, line 116
    def web_url
      [Gitlab.config.url, code].join("/")
    end

wiki_notes() click to toggle source

    # File app/models/project.rb, line 152
    def wiki_notes
      Note.where(noteable_id: wikis.pluck(:id), noteable_type: 'Wiki', project_id: self.id)
    end