Remove activity feeds
This commit is contained in:
parent
65da94dd92
commit
e38415c088
|
@ -1,39 +0,0 @@
|
||||||
RosaABF.controller('ActivityFeedController', ['$scope', 'ActivityService', 'ProjectSelectService',
|
|
||||||
function($scope, ActivityService, ProjectSelectService) {
|
|
||||||
$scope.feed = [];
|
|
||||||
$scope.next_link_present = false;
|
|
||||||
$scope.owner_tmp = "";
|
|
||||||
$scope.project_tmp = "";
|
|
||||||
$scope.no_loading = false;
|
|
||||||
|
|
||||||
var owner_uname, project_name;
|
|
||||||
|
|
||||||
$scope.getFeed = function(options, no_loading) {
|
|
||||||
if($scope.requesting) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$scope.no_loading = no_loading;
|
|
||||||
if(ProjectSelectService.project) {
|
|
||||||
if(!options) {
|
|
||||||
options = {};
|
|
||||||
}
|
|
||||||
var split = ProjectSelectService.project.split('/');
|
|
||||||
options.owner_uname = split[0];
|
|
||||||
options.project_name = split[1];
|
|
||||||
}
|
|
||||||
$scope.requesting = true;
|
|
||||||
ActivityService.getFeed(options).then(function(res) {
|
|
||||||
$scope.requesting = false;
|
|
||||||
$scope.next_link_present = res.next_link_present;
|
|
||||||
$scope.feed = res.feed;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.$watch(function() {
|
|
||||||
return ProjectSelectService.project;
|
|
||||||
}, function() {
|
|
||||||
$scope.getFeed();
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.getFeed();
|
|
||||||
}]);
|
|
|
@ -1,85 +0,0 @@
|
||||||
angular.module("RosaABF").factory('ActivityService', ["$http", "$filter", function($http, $filter) {
|
|
||||||
var ActivityService = {};
|
|
||||||
|
|
||||||
var feed;
|
|
||||||
var next_page_link = null;
|
|
||||||
|
|
||||||
var last_date;
|
|
||||||
var last_is_own = false;
|
|
||||||
var processFeed = function(feed) {
|
|
||||||
var res = [];
|
|
||||||
|
|
||||||
_.each(feed, function(item) {
|
|
||||||
var cur_date = $filter('amDateFormat')(item.date, 'll')
|
|
||||||
if(cur_date != last_date) {
|
|
||||||
res.push({kind: 'new_day', date: cur_date, class: 'timeline-day'});
|
|
||||||
last_date = cur_date;
|
|
||||||
}
|
|
||||||
res.push(item);
|
|
||||||
});
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
ActivityService.getFeed = function(options) {
|
|
||||||
if(Object.prototype.toString.apply(options) != '[object Object]') {
|
|
||||||
options = {is_own: last_is_own, load_next_page: false};
|
|
||||||
}
|
|
||||||
|
|
||||||
var url;
|
|
||||||
if(!options['load_next_page']) {
|
|
||||||
last_date = null;
|
|
||||||
feed = {};
|
|
||||||
params = {format: 'json'};
|
|
||||||
if(options['owner_uname']) {
|
|
||||||
params['owner_filter'] = options['owner_uname'];
|
|
||||||
}
|
|
||||||
if(options['project_name']) {
|
|
||||||
params['project_name_filter'] = options['project_name'];
|
|
||||||
}
|
|
||||||
last_is_own = options['is_own'];
|
|
||||||
url = options['is_own'] ? Routes.own_activity_path(params) : Routes.activity_feeds_path(params);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(!next_page_link) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
url = next_page_link;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $http.get(url).then(function(res) {
|
|
||||||
next_page_link = res.data.next_page_link;
|
|
||||||
|
|
||||||
var new_feed = processFeed(res.data.feed);
|
|
||||||
var ret;
|
|
||||||
if(options['load_next_page']) {
|
|
||||||
ret = feed;
|
|
||||||
ret.push.apply(ret, new_feed);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
feed = ret = new_feed;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {feed: ret, next_link_present: !!next_page_link};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
ActivityService.getOwnersList = function(val) {
|
|
||||||
var path = Routes.get_owners_list_path({term: val});
|
|
||||||
|
|
||||||
return $http.get(path).then(function(res) {
|
|
||||||
return res.data;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
ActivityService.getProjectNamesList = function(owner_uname, val) {
|
|
||||||
var path = Routes.get_project_names_list_path({owner_uname: owner_uname, term: val});
|
|
||||||
|
|
||||||
return $http.get(path).then(function(res) {
|
|
||||||
return res.data;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return ActivityService;
|
|
||||||
}]);
|
|
|
@ -6,39 +6,6 @@ class HomeController < ApplicationController
|
||||||
redirect_to projects_path
|
redirect_to projects_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def activity(is_my_activity = false)
|
|
||||||
@activity_feeds = current_user.activity_feeds
|
|
||||||
.by_project_name(params[:project_name_filter])
|
|
||||||
.by_owner_uname(params[:owner_filter])
|
|
||||||
|
|
||||||
@activity_feeds = if is_my_activity
|
|
||||||
@activity_feeds.where(creator_id: current_user)
|
|
||||||
else
|
|
||||||
@activity_feeds.where.not(creator_id: current_user)
|
|
||||||
end
|
|
||||||
|
|
||||||
@activity_feeds = @activity_feeds.paginate page: current_page
|
|
||||||
|
|
||||||
if @activity_feeds.next_page
|
|
||||||
if is_my_activity
|
|
||||||
method = :own_activity_path
|
|
||||||
else
|
|
||||||
method = :activity_feeds_path
|
|
||||||
end
|
|
||||||
@next_page_link = method.to_proc.call(self, page: @activity_feeds.next_page, owner_filter: params[:owner_filter],
|
|
||||||
project_name_filter: params[:project_name_filter], format: :json)
|
|
||||||
end
|
|
||||||
|
|
||||||
respond_to do |format|
|
|
||||||
format.json { render 'activity' }
|
|
||||||
format.atom
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def own_activity
|
|
||||||
activity(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_owners_list
|
def get_owners_list
|
||||||
if params[:term].present?
|
if params[:term].present?
|
||||||
users = User.opened.search(params[:term]).first(5)
|
users = User.opened.search(params[:term]).first(5)
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
module ActivityFeedsHelper
|
|
||||||
def get_feed_title_from_content(content)
|
|
||||||
# removes html tags and haml generator indentation whitespaces and new line chars:
|
|
||||||
feed_title = strip_tags(content).gsub(/(^\s+|\n| )/, ' ')
|
|
||||||
# removes multiple whitespaces in a row and strip it:
|
|
||||||
feed_title = feed_title.gsub(/\s{2,}/, ' ').strip
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_user_from_activity_item(item)
|
|
||||||
email = item.data[:creator_email]
|
|
||||||
User.where(email: email).first || User.new(email: email) if email.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def user_link(user, user_name, full_url = false)
|
|
||||||
user.persisted? ? link_to(user_name, full_url ? user_url(user) : user_path(user)) : user_name
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_feed_build_list_status_message(status)
|
|
||||||
message, error = case status
|
|
||||||
when BuildList::BUILD_PENDING
|
|
||||||
['pending', nil]
|
|
||||||
when BuildList::BUILD_PUBLISHED
|
|
||||||
['published', nil]
|
|
||||||
when BuildList::SUCCESS
|
|
||||||
['success', nil]
|
|
||||||
else ['failed', t("layout.build_lists.statuses.#{BuildList::HUMAN_STATUSES[status]}")]
|
|
||||||
end
|
|
||||||
" #{t("notifications.bodies.build_status.#{message}", error: error)}"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -14,11 +14,6 @@ class RemoveOutdatedItemsJob < BaseActiveRecordJob
|
||||||
end
|
end
|
||||||
counter_pbl = ProductBuildList.outdated.count
|
counter_pbl = ProductBuildList.outdated.count
|
||||||
ProductBuildList.outdated.destroy_all
|
ProductBuildList.outdated.destroy_all
|
||||||
User.find_each(batch_size: 50) do |u|
|
|
||||||
u.activity_feeds.outdated.find_each(batch_size: 100) do |a|
|
|
||||||
a.destroy
|
|
||||||
end
|
|
||||||
end
|
|
||||||
File.open(log_file, "w") do |f|
|
File.open(log_file, "w") do |f|
|
||||||
f.puts "Build Lists deleted: #{counter_bl}"
|
f.puts "Build Lists deleted: #{counter_bl}"
|
||||||
f.puts "Mass Builds deleted: #{counter_mb}"
|
f.puts "Mass Builds deleted: #{counter_mb}"
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
class UserMailer < ActionMailer::Base
|
class UserMailer < ActionMailer::Base
|
||||||
add_template_helper ActivityFeedsHelper
|
|
||||||
|
|
||||||
default from: "\"#{APP_CONFIG['project_name']}\" <#{APP_CONFIG['do-not-reply-email']}>"
|
default from: "\"#{APP_CONFIG['project_name']}\" <#{APP_CONFIG['do-not-reply-email']}>"
|
||||||
default_url_options.merge!(protocol: 'https') if APP_CONFIG['mailer_https_url']
|
default_url_options.merge!(protocol: 'https') if APP_CONFIG['mailer_https_url']
|
||||||
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
class ActivityFeed < ActiveRecord::Base
|
|
||||||
|
|
||||||
BUILD = %w(build_list_notification)
|
|
||||||
|
|
||||||
belongs_to :user
|
|
||||||
belongs_to :creator, class_name: 'User'
|
|
||||||
serialize :data
|
|
||||||
|
|
||||||
default_scope { order created_at: :desc }
|
|
||||||
scope :outdated, -> { offset(1000) }
|
|
||||||
scope :by_project_name, ->(name) { where(project_name: name) if name.present? }
|
|
||||||
scope :by_owner_uname, ->(owner) { where(project_owner: owner) if owner.present? }
|
|
||||||
|
|
||||||
self.per_page = 20
|
|
||||||
|
|
||||||
def partial
|
|
||||||
"home/partials/#{self.kind}"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -2,7 +2,6 @@ class BuildList < ActiveRecord::Base
|
||||||
include CommitAndVersion
|
include CommitAndVersion
|
||||||
include FileStoreClean
|
include FileStoreClean
|
||||||
include AbfWorkerMethods
|
include AbfWorkerMethods
|
||||||
include Feed::BuildList
|
|
||||||
include BuildListObserver
|
include BuildListObserver
|
||||||
include EventLoggable
|
include EventLoggable
|
||||||
include ExternalNodable
|
include ExternalNodable
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
module Feed::BuildList
|
|
||||||
extend ActiveSupport::Concern
|
|
||||||
|
|
||||||
included do
|
|
||||||
after_update :build_list_notifications
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def build_list_notifications
|
|
||||||
if mass_build.blank? && ( # Do not show mass build activity in activity feeds
|
|
||||||
status_changed? && [
|
|
||||||
BuildList::BUILD_PENDING,
|
|
||||||
BuildList::BUILD_PUBLISHED,
|
|
||||||
BuildList::SUCCESS,
|
|
||||||
BuildList::BUILD_ERROR,
|
|
||||||
BuildList::FAILED_PUBLISH,
|
|
||||||
BuildList::TESTS_FAILED
|
|
||||||
].include?(status)
|
|
||||||
)
|
|
||||||
|
|
||||||
updater = publisher || user
|
|
||||||
(project.all_members | [publisher]).compact.each do |recipient|
|
|
||||||
ActivityFeed.create(
|
|
||||||
user: recipient,
|
|
||||||
kind: 'build_list_notification',
|
|
||||||
project_owner: project.owner_uname,
|
|
||||||
project_name: project.name,
|
|
||||||
creator_id: updater.id,
|
|
||||||
data: {
|
|
||||||
build_list_id: id,
|
|
||||||
status: status,
|
|
||||||
updated_at: updated_at,
|
|
||||||
project_id: project_id,
|
|
||||||
creator_name: updater.name,
|
|
||||||
creator_email: updater.email
|
|
||||||
}
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -20,8 +20,6 @@ class User < Avatar
|
||||||
has_one :notifier, class_name: 'SettingsNotifier', dependent: :destroy #:notifier
|
has_one :notifier, class_name: 'SettingsNotifier', dependent: :destroy #:notifier
|
||||||
has_one :builds_setting, class_name: 'UserBuildsSetting', dependent: :destroy
|
has_one :builds_setting, class_name: 'UserBuildsSetting', dependent: :destroy
|
||||||
|
|
||||||
has_many :activity_feeds, dependent: :destroy
|
|
||||||
|
|
||||||
has_many :authentications, dependent: :destroy
|
has_many :authentications, dependent: :destroy
|
||||||
has_many :build_lists, dependent: :destroy
|
has_many :build_lists, dependent: :destroy
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
atom_feed do |feed|
|
|
||||||
feed.title(t("layout.activity_feed.atom_title"))
|
|
||||||
feed.updated(@activity_feeds[0].created_at) if @activity_feeds.length > 0
|
|
||||||
|
|
||||||
@activity_feeds.each do |activity_feed|
|
|
||||||
feed.entry(activity_feed, url: root_url(anchor: "feed#{activity_feed.id}")) do |entry|
|
|
||||||
feed_content = raw(render(inline: true, partial: activity_feed.partial,
|
|
||||||
locals: activity_feed.data.merge(activity_feed: activity_feed,
|
|
||||||
project_owner: activity_feed.project_owner,
|
|
||||||
project_name: activity_feed.project_name)))
|
|
||||||
|
|
||||||
entry.title(truncate(get_feed_title_from_content(feed_content), length: 50))
|
|
||||||
entry.content(feed_content, type: 'html')
|
|
||||||
|
|
||||||
entry.author do |author|
|
|
||||||
author.name(activity_feed.data[:creator_name])
|
|
||||||
author.email(activity_feed.data[:creator_email])
|
|
||||||
end if activity_feed.kind != 'git_delete_branch_notification'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,25 +0,0 @@
|
||||||
if @activity_feeds.next_page
|
|
||||||
json.next_page_link @next_page_link
|
|
||||||
end
|
|
||||||
|
|
||||||
json.feed do
|
|
||||||
json.array!(@activity_feeds) do |item|
|
|
||||||
json.cache! item, expires_in: 10.minutes do
|
|
||||||
json.date item.created_at
|
|
||||||
json.kind item.kind
|
|
||||||
user = get_user_from_activity_item(item)
|
|
||||||
json.user do
|
|
||||||
json.link user_path(user) if user.persisted?
|
|
||||||
json.image avatar_url(user, :small) if user.persisted?
|
|
||||||
json.uname (user.fullname || user.email)
|
|
||||||
end if user
|
|
||||||
|
|
||||||
project_name_with_owner = "#{item.project_owner}/#{item.project_name}"
|
|
||||||
@project = Project.find_by_owner_and_name(project_name_with_owner)
|
|
||||||
|
|
||||||
json.project_name_with_owner project_name_with_owner
|
|
||||||
json.partial! item.partial, item: item, project_name_with_owner: project_name_with_owner
|
|
||||||
json.id item.id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -6,8 +6,6 @@ html
|
||||||
base href="/"
|
base href="/"
|
||||||
== csrf_meta_tag
|
== csrf_meta_tag
|
||||||
= display_meta_tags site: APP_CONFIG['project_name'], reverse: true, separator: '-'
|
= display_meta_tags site: APP_CONFIG['project_name'], reverse: true, separator: '-'
|
||||||
- if user_signed_in?
|
|
||||||
= auto_discovery_link_tag :atom, atom_activity_feeds_path(format: 'atom', token: current_user.authentication_token), title: t("layout.atom_link_tag_title", nickname: current_user.uname, app_name: APP_CONFIG['project_name'])
|
|
||||||
script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js" type="text/javascript"
|
script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js" type="text/javascript"
|
||||||
link href='//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' rel='stylesheet'
|
link href='//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' rel='stylesheet'
|
||||||
link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous"
|
link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous"
|
||||||
|
|
|
@ -5,8 +5,6 @@ html
|
||||||
meta content="text/html; charset=utf-8" http-equiv="Content-Type"
|
meta content="text/html; charset=utf-8" http-equiv="Content-Type"
|
||||||
== csrf_meta_tag
|
== csrf_meta_tag
|
||||||
= display_meta_tags site: APP_CONFIG['project_name'], reverse: true, separator: '-'
|
= display_meta_tags site: APP_CONFIG['project_name'], reverse: true, separator: '-'
|
||||||
- if user_signed_in?
|
|
||||||
= auto_discovery_link_tag :atom, atom_activity_feeds_path(format: 'atom', token: current_user.authentication_token), title: t("layout.atom_link_tag_title", nickname: current_user.uname, app_name: APP_CONFIG['project_name'])
|
|
||||||
script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js" type="text/javascript"
|
script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js" type="text/javascript"
|
||||||
link href='//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' rel='stylesheet'
|
link href='//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' rel='stylesheet'
|
||||||
link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous"
|
link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous"
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
en:
|
|
||||||
layout:
|
|
||||||
activity_feed:
|
|
||||||
header: Activity Feed
|
|
||||||
own_header: Own Activity Feed
|
|
||||||
my_last_projects: My last projects
|
|
||||||
all_my_projects: All my projects
|
|
||||||
all_my_builds: All my builds
|
|
||||||
my_builds_by_day: My today builds
|
|
||||||
new_project: Create project
|
|
||||||
load_messages: show previous messages
|
|
||||||
atom_title: Activity Feed
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
subjects:
|
|
||||||
update_code: "[%{project_name}] Update of project"
|
|
||||||
new_comment_notification: New comment to your task
|
|
||||||
new_commit_comment_notification: New comment to commit
|
|
||||||
new_issue_notification: New task added to project
|
|
||||||
new_user_notification: Registered on project «%{ project_name }»
|
|
||||||
issue_assign_notification: New task assigned
|
|
||||||
invite_approve_notification: Invitation to ABF
|
|
||||||
for_arch: for arch %{arch}.
|
|
||||||
metadata_regeneration: Metadata regeneration «%{status}»
|
|
||||||
|
|
||||||
bodies:
|
|
||||||
view_it_on: View it on
|
|
||||||
new_comment_notification:
|
|
||||||
title: '%{user_link} added a new comment'
|
|
||||||
content: in issue %{issue_link}
|
|
||||||
commit_content: in commit %{commit_link}
|
|
||||||
new_issue_notification: '%{user_link} added a new <a href="%{issue_link}">issue</a>'
|
|
||||||
new_user_notification:
|
|
||||||
title: Hello, %{user_name}.
|
|
||||||
content: You have registered in project «ROSA ABF» and now you can sign in.
|
|
||||||
email: ==Your email %{user_email}
|
|
||||||
password: ==Your password %{user_password}
|
|
||||||
issue_assign_notification: You have been assigned to issue %{issue_link}
|
|
||||||
wiki_new_commit_notification: '%{user_link} has been updated %{history_link}'
|
|
||||||
invite_approve_notification: Invite to ABF
|
|
||||||
project: in project %{project_link}
|
|
||||||
delete_branch: '%{user_link} deleted a %{branch_name}'
|
|
||||||
create_branch: '%{user_link} created a new branch %{branch_name}'
|
|
||||||
update_branch: '%{user_link} pushed to branch %{branch_name}'
|
|
||||||
build_task: 'Build <a href="%{task_link}">task #%{id}</a>'
|
|
||||||
build_status:
|
|
||||||
published: published successfully
|
|
||||||
success: completed successfully
|
|
||||||
failed: completed with error "%{error}"
|
|
||||||
pending: build is pending
|
|
||||||
more_commits: '%{count} more %{commits}'
|
|
||||||
|
|
||||||
footers:
|
|
||||||
support_team: Support team «ROSA ABF».
|
|
||||||
notifiers: You can configure notifications in
|
|
||||||
notification_center: Notification Center.
|
|
|
@ -1,57 +0,0 @@
|
||||||
ru:
|
|
||||||
layout:
|
|
||||||
activity_feed:
|
|
||||||
header: Лента активности
|
|
||||||
own_header: Мои действия
|
|
||||||
my_last_projects: Мои последние проекты
|
|
||||||
all_my_projects: Все мои проекты
|
|
||||||
all_my_builds: Все мои сборки
|
|
||||||
my_builds_by_day: Мои сборки за день
|
|
||||||
new_project: Создать проект
|
|
||||||
load_messages: показать предыдущие сообщения
|
|
||||||
atom_title: Лента активности
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
subjects:
|
|
||||||
update_code: "[%{project_name}] Обновление проекта"
|
|
||||||
new_comment_notification: Новый комментарий к Вашей задаче
|
|
||||||
new_commit_comment_notification: Новый комментарий к коммиту
|
|
||||||
new_issue_notification: Новая задача добавлена к проекту
|
|
||||||
new_user_notification: Регистрация на проекте «%{ project_name }»
|
|
||||||
issue_assign_notification: Вам назначили задачу
|
|
||||||
invite_approve_notification: Приглашение в ABF
|
|
||||||
for_arch: для архитектуры %{arch}.
|
|
||||||
metadata_regeneration: Регенерация метаданных «%{status}»
|
|
||||||
|
|
||||||
bodies:
|
|
||||||
view_it_on: Смотрите это на
|
|
||||||
new_comment_notification:
|
|
||||||
title: '%{user_link} добавил новый комментарий'
|
|
||||||
content: к задаче %{issue_link}
|
|
||||||
commit_content: к коммиту %{commit_link}
|
|
||||||
new_issue_notification: '%{user_link} добавил новую <a href="%{issue_link}">задачу</a>'
|
|
||||||
new_user_notification:
|
|
||||||
title: Здравствуйте, %{user_name}.
|
|
||||||
content: Вы зарегистрированы на проекте «ROSA ABF» и теперь можете войти в систему.
|
|
||||||
email: ==Ваш email %{user_email}
|
|
||||||
password: ==Ваш пароль %{user_password}
|
|
||||||
issue_assign_notification: Вам была назначена задача %{issue_link}
|
|
||||||
wiki_new_commit_notification: '%{user_link} обновил %{history_link}'
|
|
||||||
invite_approve_notification: Приглашение в ABF
|
|
||||||
project: в проекте %{project_link}
|
|
||||||
|
|
||||||
delete_branch: '%{user_link} удалил ветку %{branch_name}'
|
|
||||||
create_branch: '%{user_link} создал новую ветку %{branch_name}'
|
|
||||||
update_branch: '%{user_link} внес изменения в ветку %{branch_name}'
|
|
||||||
build_task: 'Сборочное <a href="%{task_link}">задание №%{id}</a>'
|
|
||||||
build_status:
|
|
||||||
published: успешно опубликовано
|
|
||||||
success: успешно собрано
|
|
||||||
failed: завершилось с ошибкой "%{error}"
|
|
||||||
pending: ожидает сборки
|
|
||||||
more_commits: 'еще %{count} %{commits} '
|
|
||||||
|
|
||||||
footers:
|
|
||||||
support_team: Команда поддержки «ROSA ABF».
|
|
||||||
notifiers: Вы можете настроить уведомления в
|
|
||||||
notification_center: Центре уведомлений.
|
|
|
@ -124,10 +124,6 @@ Rails.application.routes.draw do
|
||||||
get '/forbidden' => 'pages#forbidden', as: 'forbidden'
|
get '/forbidden' => 'pages#forbidden', as: 'forbidden'
|
||||||
get '/terms-of-service' => 'pages#tos', as: 'tos'
|
get '/terms-of-service' => 'pages#tos', as: 'tos'
|
||||||
|
|
||||||
get '/activity.:format' => 'home#activity', as: 'activity_feeds', format: /json/
|
|
||||||
get '/activity_feeds.:format' => 'home#activity', as: 'atom_activity_feeds', format: /atom/
|
|
||||||
get '/own_activity.:format' => 'home#own_activity', as: 'own_activity', format: /json/
|
|
||||||
|
|
||||||
if APP_CONFIG['anonymous_access']
|
if APP_CONFIG['anonymous_access']
|
||||||
authenticated do
|
authenticated do
|
||||||
root to: 'home#index'
|
root to: 'home#index'
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class DestroyActivityFeeds < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
drop_table :activity_feeds
|
||||||
|
end
|
||||||
|
end
|
267
db/schema.rb
267
db/schema.rb
|
@ -11,32 +11,21 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20160326104007) do
|
ActiveRecord::Schema.define(version: 20190210140249) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
enable_extension "hstore"
|
enable_extension "hstore"
|
||||||
|
|
||||||
create_table "activity_feeds", force: :cascade do |t|
|
|
||||||
t.integer "user_id", null: false, index: {name: "index_activity_feeds_on_user_id_and_kind", with: ["kind"]}
|
|
||||||
t.string "kind"
|
|
||||||
t.text "data"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "project_owner", index: {name: "index_activity_feeds_on_project_owner"}
|
|
||||||
t.string "project_name", index: {name: "index_activity_feeds_on_project_name"}
|
|
||||||
t.integer "creator_id", index: {name: "index_activity_feeds_on_creator_id"}
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "arches", force: :cascade do |t|
|
create_table "arches", force: :cascade do |t|
|
||||||
t.string "name", null: false, index: {name: "index_arches_on_name", unique: true}
|
t.string "name", :null=>false, :index=>{:name=>"index_arches_on_name", :unique=>true}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "authentications", force: :cascade do |t|
|
create_table "authentications", force: :cascade do |t|
|
||||||
t.integer "user_id", index: {name: "index_authentications_on_user_id"}
|
t.integer "user_id", :index=>{:name=>"index_authentications_on_user_id"}
|
||||||
t.string "provider", index: {name: "index_authentications_on_provider_and_uid", with: ["uid"], unique: true}
|
t.string "provider", :index=>{:name=>"index_authentications_on_provider_and_uid", :with=>["uid"], :unique=>true}
|
||||||
t.string "uid"
|
t.string "uid"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
|
@ -46,58 +35,58 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.integer "level"
|
t.integer "level"
|
||||||
t.integer "status"
|
t.integer "status"
|
||||||
t.integer "build_list_id", index: {name: "index_build_list_items_on_build_list_id"}
|
t.integer "build_list_id", :index=>{:name=>"index_build_list_items_on_build_list_id"}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "version"
|
t.string "version"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "build_list_packages", force: :cascade do |t|
|
create_table "build_list_packages", force: :cascade do |t|
|
||||||
t.integer "build_list_id", index: {name: "index_build_list_packages_on_build_list_id"}
|
t.integer "build_list_id", :index=>{:name=>"index_build_list_packages_on_build_list_id"}
|
||||||
t.integer "project_id", index: {name: "index_build_list_packages_on_project_id"}
|
t.integer "project_id", :index=>{:name=>"index_build_list_packages_on_project_id"}
|
||||||
t.integer "platform_id", index: {name: "index_build_list_packages_on_platform_id"}
|
t.integer "platform_id", :index=>{:name=>"index_build_list_packages_on_platform_id"}
|
||||||
t.string "fullname"
|
t.string "fullname"
|
||||||
t.string "name", index: {name: "index_build_list_packages_on_name_and_project_id", with: ["project_id"]}
|
t.string "name", :index=>{:name=>"index_build_list_packages_on_name_and_project_id", :with=>["project_id"]}
|
||||||
t.string "version"
|
t.string "version"
|
||||||
t.string "release"
|
t.string "release"
|
||||||
t.string "package_type"
|
t.string "package_type"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.boolean "actual", default: false, index: {name: "index_build_list_packages_on_actual_and_platform_id", with: ["platform_id"]}
|
t.boolean "actual", :default=>false, :index=>{:name=>"index_build_list_packages_on_actual_and_platform_id", :with=>["platform_id"]}
|
||||||
t.string "sha1"
|
t.string "sha1"
|
||||||
t.integer "epoch"
|
t.integer "epoch"
|
||||||
t.text "dependent_packages"
|
t.text "dependent_packages"
|
||||||
t.index name: "build_list_packages_ordering", expression: "lower((name)::text), length((name)::text)"
|
t.index :name=>"build_list_packages_ordering", :expression=>"lower((name)::text), length((name)::text)"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "build_lists", force: :cascade do |t|
|
create_table "build_lists", force: :cascade do |t|
|
||||||
t.integer "status"
|
t.integer "status"
|
||||||
t.string "project_version"
|
t.string "project_version"
|
||||||
t.integer "project_id", index: {name: "index_build_lists_on_project_id"}
|
t.integer "project_id", :index=>{:name=>"index_build_lists_on_project_id"}
|
||||||
t.integer "arch_id", index: {name: "index_build_lists_on_arch_id"}
|
t.integer "arch_id", :index=>{:name=>"index_build_lists_on_arch_id"}
|
||||||
t.datetime "notified_at"
|
t.datetime "notified_at"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", index: {name: "index_build_lists_on_updated_at", order: {"updated_at"=>:desc}}
|
t.datetime "updated_at", :index=>{:name=>"index_build_lists_on_updated_at", :order=>{"updated_at"=>:desc}}
|
||||||
t.boolean "is_circle", default: false
|
t.boolean "is_circle", :default=>false
|
||||||
t.text "additional_repos"
|
t.text "additional_repos"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "update_type"
|
t.string "update_type"
|
||||||
t.integer "build_for_platform_id"
|
t.integer "build_for_platform_id"
|
||||||
t.integer "save_to_platform_id"
|
t.integer "save_to_platform_id"
|
||||||
t.text "include_repos"
|
t.text "include_repos"
|
||||||
t.integer "user_id", index: {name: "index_build_lists_on_user_id"}
|
t.integer "user_id", :index=>{:name=>"index_build_lists_on_user_id"}
|
||||||
t.string "package_version"
|
t.string "package_version"
|
||||||
t.string "commit_hash"
|
t.string "commit_hash"
|
||||||
t.integer "priority", default: 0, null: false
|
t.integer "priority", :default=>0, :null=>false
|
||||||
t.datetime "started_at"
|
t.datetime "started_at"
|
||||||
t.integer "duration"
|
t.integer "duration"
|
||||||
t.integer "mass_build_id", index: {name: "index_build_lists_on_mass_build_id_and_status", with: ["status"]}
|
t.integer "mass_build_id", :index=>{:name=>"index_build_lists_on_mass_build_id_and_status", :with=>["status"]}
|
||||||
t.integer "save_to_repository_id"
|
t.integer "save_to_repository_id"
|
||||||
t.text "results"
|
t.text "results"
|
||||||
t.boolean "new_core", default: true
|
t.boolean "new_core", :default=>true
|
||||||
t.string "last_published_commit_hash"
|
t.string "last_published_commit_hash"
|
||||||
t.integer "container_status"
|
t.integer "container_status"
|
||||||
t.boolean "auto_create_container", default: false
|
t.boolean "auto_create_container", :default=>false
|
||||||
t.text "extra_repositories"
|
t.text "extra_repositories"
|
||||||
t.text "extra_build_lists"
|
t.text "extra_build_lists"
|
||||||
t.integer "publisher_id"
|
t.integer "publisher_id"
|
||||||
|
@ -106,21 +95,21 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
t.string "external_nodes"
|
t.string "external_nodes"
|
||||||
t.integer "builder_id"
|
t.integer "builder_id"
|
||||||
t.boolean "include_testing_subrepository"
|
t.boolean "include_testing_subrepository"
|
||||||
t.string "auto_publish_status", default: "default", null: false
|
t.string "auto_publish_status", :default=>"default", :null=>false
|
||||||
t.boolean "use_cached_chroot", default: false, null: false
|
t.boolean "use_cached_chroot", :default=>false, :null=>false
|
||||||
t.boolean "use_extra_tests", default: true, null: false
|
t.boolean "use_extra_tests", :default=>true, :null=>false
|
||||||
t.boolean "save_buildroot", default: false, null: false
|
t.boolean "save_buildroot", :default=>false, :null=>false
|
||||||
t.string "hostname"
|
t.string "hostname"
|
||||||
t.string "fail_reason"
|
t.string "fail_reason"
|
||||||
t.boolean "native_build", default: false
|
t.boolean "native_build", :default=>false
|
||||||
end
|
end
|
||||||
add_index "build_lists", ["project_id", "save_to_repository_id", "build_for_platform_id", "arch_id"], name: "maintainer_search_index"
|
add_index "build_lists", ["project_id", "save_to_repository_id", "build_for_platform_id", "arch_id"], :name=>"maintainer_search_index"
|
||||||
|
|
||||||
create_table "event_logs", force: :cascade do |t|
|
create_table "event_logs", force: :cascade do |t|
|
||||||
t.integer "user_id", index: {name: "index_event_logs_on_user_id"}
|
t.integer "user_id", :index=>{:name=>"index_event_logs_on_user_id"}
|
||||||
t.string "user_name"
|
t.string "user_name"
|
||||||
t.integer "eventable_id"
|
t.integer "eventable_id"
|
||||||
t.string "eventable_type", index: {name: "index_event_logs_on_eventable_type_and_eventable_id", with: ["eventable_id"]}
|
t.string "eventable_type", :index=>{:name=>"index_event_logs_on_eventable_type_and_eventable_id", :with=>["eventable_id"]}
|
||||||
t.string "eventable_name"
|
t.string "eventable_name"
|
||||||
t.string "ip"
|
t.string "ip"
|
||||||
t.string "kind"
|
t.string "kind"
|
||||||
|
@ -133,10 +122,10 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "flash_notifies", force: :cascade do |t|
|
create_table "flash_notifies", force: :cascade do |t|
|
||||||
t.text "body_ru", null: false
|
t.text "body_ru", :null=>false
|
||||||
t.text "body_en", null: false
|
t.text "body_en", :null=>false
|
||||||
t.string "status", null: false
|
t.string "status", :null=>false
|
||||||
t.boolean "published", default: true, null: false
|
t.boolean "published", :default=>true, :null=>false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
@ -146,7 +135,7 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "uname"
|
t.string "uname"
|
||||||
t.integer "own_projects_count", default: 0, null: false
|
t.integer "own_projects_count", :default=>0, :null=>false
|
||||||
t.text "description"
|
t.text "description"
|
||||||
t.string "avatar_file_name"
|
t.string "avatar_file_name"
|
||||||
t.string "avatar_content_type"
|
t.string "avatar_content_type"
|
||||||
|
@ -156,56 +145,56 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "key_pairs", force: :cascade do |t|
|
create_table "key_pairs", force: :cascade do |t|
|
||||||
t.text "public", null: false
|
t.text "public", :null=>false
|
||||||
t.text "encrypted_secret", null: false
|
t.text "encrypted_secret", :null=>false
|
||||||
t.string "key_id", null: false
|
t.string "key_id", :null=>false
|
||||||
t.integer "user_id", null: false
|
t.integer "user_id", :null=>false
|
||||||
t.integer "repository_id", null: false, index: {name: "index_key_pairs_on_repository_id", unique: true}
|
t.integer "repository_id", :null=>false, :index=>{:name=>"index_key_pairs_on_repository_id", :unique=>true}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "key_pairs_backup", force: :cascade do |t|
|
create_table "key_pairs_backup", force: :cascade do |t|
|
||||||
t.integer "repository_id", null: false, index: {name: "index_key_pairs_backup_on_repository_id", unique: true}
|
t.integer "repository_id", :null=>false, :index=>{:name=>"index_key_pairs_backup_on_repository_id", :unique=>true}
|
||||||
t.integer "user_id", null: false
|
t.integer "user_id", :null=>false
|
||||||
t.string "key_id", null: false
|
t.string "key_id", :null=>false
|
||||||
t.text "public", null: false
|
t.text "public", :null=>false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "mass_builds", force: :cascade do |t|
|
create_table "mass_builds", force: :cascade do |t|
|
||||||
t.integer "build_for_platform_id", null: false
|
t.integer "build_for_platform_id", :null=>false
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "arch_names"
|
t.string "arch_names"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "build_lists_count", default: 0, null: false
|
t.integer "build_lists_count", :default=>0, :null=>false
|
||||||
t.boolean "stop_build", default: false, null: false
|
t.boolean "stop_build", :default=>false, :null=>false
|
||||||
t.text "projects_list"
|
t.text "projects_list"
|
||||||
t.integer "missed_projects_count", default: 0, null: false
|
t.integer "missed_projects_count", :default=>0, :null=>false
|
||||||
t.text "missed_projects_list"
|
t.text "missed_projects_list"
|
||||||
t.boolean "new_core", default: true
|
t.boolean "new_core", :default=>true
|
||||||
t.integer "save_to_platform_id", null: false
|
t.integer "save_to_platform_id", :null=>false
|
||||||
t.text "extra_repositories"
|
t.text "extra_repositories"
|
||||||
t.text "extra_build_lists"
|
t.text "extra_build_lists"
|
||||||
t.boolean "increase_release_tag", default: false, null: false
|
t.boolean "increase_release_tag", :default=>false, :null=>false
|
||||||
t.boolean "use_cached_chroot", default: true, null: false
|
t.boolean "use_cached_chroot", :default=>true, :null=>false
|
||||||
t.boolean "use_extra_tests", default: false, null: false
|
t.boolean "use_extra_tests", :default=>false, :null=>false
|
||||||
t.string "description"
|
t.string "description"
|
||||||
t.string "auto_publish_status", default: "none", null: false
|
t.string "auto_publish_status", :default=>"none", :null=>false
|
||||||
t.text "extra_mass_builds"
|
t.text "extra_mass_builds"
|
||||||
t.boolean "include_testing_subrepository", default: false, null: false
|
t.boolean "include_testing_subrepository", :default=>false, :null=>false
|
||||||
t.boolean "auto_create_container", default: false, null: false
|
t.boolean "auto_create_container", :default=>false, :null=>false
|
||||||
t.integer "status", default: 2000, null: false
|
t.integer "status", :default=>2000, :null=>false
|
||||||
t.string "external_nodes"
|
t.string "external_nodes"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "platform_arch_settings", force: :cascade do |t|
|
create_table "platform_arch_settings", force: :cascade do |t|
|
||||||
t.integer "platform_id", null: false, index: {name: "index_platform_arch_settings_on_platform_id_and_arch_id", with: ["arch_id"], unique: true}
|
t.integer "platform_id", :null=>false, :index=>{:name=>"index_platform_arch_settings_on_platform_id_and_arch_id", :with=>["arch_id"], :unique=>true}
|
||||||
t.integer "arch_id", null: false
|
t.integer "arch_id", :null=>false
|
||||||
t.integer "time_living", null: false
|
t.integer "time_living", :null=>false
|
||||||
t.boolean "default"
|
t.boolean "default"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
|
@ -213,27 +202,27 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
|
|
||||||
create_table "platforms", force: :cascade do |t|
|
create_table "platforms", force: :cascade do |t|
|
||||||
t.string "description"
|
t.string "description"
|
||||||
t.string "name", null: false, index: {name: "index_platforms_on_name", unique: true, case_sensitive: false}
|
t.string "name", :null=>false, :index=>{:name=>"index_platforms_on_name", :unique=>true, :case_sensitive=>false}
|
||||||
t.integer "parent_platform_id"
|
t.integer "parent_platform_id"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.boolean "released", default: false, null: false
|
t.boolean "released", :default=>false, :null=>false
|
||||||
t.integer "owner_id"
|
t.integer "owner_id"
|
||||||
t.string "owner_type"
|
t.string "owner_type"
|
||||||
t.string "visibility", default: "open", null: false
|
t.string "visibility", :default=>"open", :null=>false
|
||||||
t.string "platform_type", default: "main", null: false
|
t.string "platform_type", :default=>"main", :null=>false
|
||||||
t.string "distrib_type"
|
t.string "distrib_type"
|
||||||
t.integer "status"
|
t.integer "status"
|
||||||
t.datetime "last_regenerated_at"
|
t.datetime "last_regenerated_at"
|
||||||
t.integer "last_regenerated_status"
|
t.integer "last_regenerated_status"
|
||||||
t.string "last_regenerated_log_sha1"
|
t.string "last_regenerated_log_sha1"
|
||||||
t.string "automatic_metadata_regeneration"
|
t.string "automatic_metadata_regeneration"
|
||||||
t.string "default_branch", null: false
|
t.string "default_branch", :null=>false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "product_build_lists", force: :cascade do |t|
|
create_table "product_build_lists", force: :cascade do |t|
|
||||||
t.integer "product_id", index: {name: "index_product_build_lists_on_product_id"}
|
t.integer "product_id", :index=>{:name=>"index_product_build_lists_on_product_id"}
|
||||||
t.integer "status", null: false
|
t.integer "status", :null=>false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
|
@ -245,13 +234,13 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
t.integer "arch_id"
|
t.integer "arch_id"
|
||||||
t.integer "time_living"
|
t.integer "time_living"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.boolean "not_delete", default: false
|
t.boolean "not_delete", :default=>false
|
||||||
t.boolean "autostarted", default: false
|
t.boolean "autostarted", :default=>false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "products", force: :cascade do |t|
|
create_table "products", force: :cascade do |t|
|
||||||
t.string "name", null: false
|
t.string "name", :null=>false
|
||||||
t.integer "platform_id", null: false
|
t.integer "platform_id", :null=>false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -265,7 +254,7 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
|
|
||||||
create_table "project_imports", force: :cascade do |t|
|
create_table "project_imports", force: :cascade do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "name", index: {name: "index_project_imports_on_name_and_platform_id", with: ["platform_id"], unique: true, case_sensitive: false}
|
t.string "name", :index=>{:name=>"index_project_imports_on_name_and_platform_id", :with=>["platform_id"], :unique=>true, :case_sensitive=>false}
|
||||||
t.string "version"
|
t.string "version"
|
||||||
t.datetime "file_mtime"
|
t.datetime "file_mtime"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
|
@ -274,70 +263,70 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "project_statistics", force: :cascade do |t|
|
create_table "project_statistics", force: :cascade do |t|
|
||||||
t.integer "average_build_time", default: 0, null: false
|
t.integer "average_build_time", :default=>0, :null=>false
|
||||||
t.integer "build_count", default: 0, null: false
|
t.integer "build_count", :default=>0, :null=>false
|
||||||
t.integer "arch_id", null: false
|
t.integer "arch_id", :null=>false
|
||||||
t.integer "project_id", null: false, index: {name: "index_project_statistics_on_project_id_and_arch_id", with: ["arch_id"], unique: true}
|
t.integer "project_id", :null=>false, :index=>{:name=>"index_project_statistics_on_project_id_and_arch_id", :with=>["arch_id"], :unique=>true}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "project_to_repositories", force: :cascade do |t|
|
create_table "project_to_repositories", force: :cascade do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "repository_id", index: {name: "index_project_to_repositories_on_repository_id_and_project_id", with: ["project_id"], unique: true}
|
t.integer "repository_id", :index=>{:name=>"index_project_to_repositories_on_repository_id_and_project_id", :with=>["project_id"], :unique=>true}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.hstore "autostart_options"
|
t.hstore "autostart_options"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "projects", force: :cascade do |t|
|
create_table "projects", force: :cascade do |t|
|
||||||
t.string "name", index: {name: "index_projects_on_name_and_owner_id_and_owner_type", with: ["owner_id", "owner_type"], unique: true, case_sensitive: false}
|
t.string "name", :index=>{:name=>"index_projects_on_name_and_owner_id_and_owner_type", :with=>["owner_id", "owner_type"], :unique=>true, :case_sensitive=>false}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.integer "owner_id"
|
t.integer "owner_id"
|
||||||
t.string "owner_type"
|
t.string "owner_type"
|
||||||
t.string "visibility", default: "open"
|
t.string "visibility", :default=>"open"
|
||||||
t.string "ancestry"
|
t.string "ancestry"
|
||||||
t.string "srpm_file_name"
|
t.string "srpm_file_name"
|
||||||
t.string "srpm_content_type"
|
t.string "srpm_content_type"
|
||||||
t.integer "srpm_file_size"
|
t.integer "srpm_file_size"
|
||||||
t.datetime "srpm_updated_at"
|
t.datetime "srpm_updated_at"
|
||||||
t.string "default_branch", default: "master"
|
t.string "default_branch", :default=>"master"
|
||||||
t.boolean "is_package", default: true, null: false
|
t.boolean "is_package", :default=>true, :null=>false
|
||||||
t.integer "maintainer_id"
|
t.integer "maintainer_id"
|
||||||
t.boolean "publish_i686_into_x86_64", default: false
|
t.boolean "publish_i686_into_x86_64", :default=>false
|
||||||
t.string "owner_uname", null: false
|
t.string "owner_uname", :null=>false
|
||||||
t.boolean "architecture_dependent", default: false, null: false
|
t.boolean "architecture_dependent", :default=>false, :null=>false
|
||||||
t.integer "autostart_status"
|
t.integer "autostart_status"
|
||||||
t.integer "alias_from_id", index: {name: "index_projects_on_alias_from_id"}
|
t.integer "alias_from_id", :index=>{:name=>"index_projects_on_alias_from_id"}
|
||||||
t.string "github_organization"
|
t.string "github_organization"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "relations", force: :cascade do |t|
|
create_table "relations", force: :cascade do |t|
|
||||||
t.integer "actor_id"
|
t.integer "actor_id"
|
||||||
t.string "actor_type", index: {name: "index_relations_on_actor_type_and_actor_id", with: ["actor_id"]}
|
t.string "actor_type", :index=>{:name=>"index_relations_on_actor_type_and_actor_id", :with=>["actor_id"]}
|
||||||
t.integer "target_id"
|
t.integer "target_id"
|
||||||
t.string "target_type", index: {name: "index_relations_on_target_type_and_target_id", with: ["target_id"]}
|
t.string "target_type", :index=>{:name=>"index_relations_on_target_type_and_target_id", :with=>["target_id"]}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "role"
|
t.string "role"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "repositories", force: :cascade do |t|
|
create_table "repositories", force: :cascade do |t|
|
||||||
t.string "description", null: false
|
t.string "description", :null=>false
|
||||||
t.integer "platform_id", null: false, index: {name: "index_repositories_on_platform_id"}
|
t.integer "platform_id", :null=>false, :index=>{:name=>"index_repositories_on_platform_id"}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "name", null: false
|
t.string "name", :null=>false
|
||||||
t.boolean "publish_without_qa", default: true
|
t.boolean "publish_without_qa", :default=>true
|
||||||
t.boolean "synchronizing_publications", default: false, null: false
|
t.boolean "synchronizing_publications", :default=>false, :null=>false
|
||||||
t.string "publish_builds_only_from_branch"
|
t.string "publish_builds_only_from_branch"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "repository_statuses", force: :cascade do |t|
|
create_table "repository_statuses", force: :cascade do |t|
|
||||||
t.integer "repository_id", null: false, index: {name: "index_repository_statuses_on_repository_id_and_platform_id", with: ["platform_id"], unique: true}
|
t.integer "repository_id", :null=>false, :index=>{:name=>"index_repository_statuses_on_repository_id_and_platform_id", :with=>["platform_id"], :unique=>true}
|
||||||
t.integer "platform_id", null: false
|
t.integer "platform_id", :null=>false
|
||||||
t.integer "status", default: 0
|
t.integer "status", :default=>0
|
||||||
t.datetime "last_regenerated_at"
|
t.datetime "last_regenerated_at"
|
||||||
t.integer "last_regenerated_status"
|
t.integer "last_regenerated_status"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
|
@ -346,62 +335,62 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "settings_notifiers", force: :cascade do |t|
|
create_table "settings_notifiers", force: :cascade do |t|
|
||||||
t.integer "user_id", null: false
|
t.integer "user_id", :null=>false
|
||||||
t.boolean "can_notify", default: true
|
t.boolean "can_notify", :default=>true
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.boolean "new_build", default: true
|
t.boolean "new_build", :default=>true
|
||||||
t.boolean "new_associated_build", default: true
|
t.boolean "new_associated_build", :default=>true
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "statistics", force: :cascade do |t|
|
create_table "statistics", force: :cascade do |t|
|
||||||
t.integer "user_id", null: false, index: {name: "index_statistics_on_user_id"}
|
t.integer "user_id", :null=>false, :index=>{:name=>"index_statistics_on_user_id"}
|
||||||
t.string "email", null: false
|
t.string "email", :null=>false
|
||||||
t.integer "project_id", null: false, index: {name: "index_statistics_on_project_id"}
|
t.integer "project_id", :null=>false, :index=>{:name=>"index_statistics_on_project_id"}
|
||||||
t.string "project_name_with_owner", null: false
|
t.string "project_name_with_owner", :null=>false
|
||||||
t.string "key", null: false, index: {name: "index_statistics_on_key"}
|
t.string "key", :null=>false, :index=>{:name=>"index_statistics_on_key"}
|
||||||
t.integer "counter", default: 0, null: false
|
t.integer "counter", :default=>0, :null=>false
|
||||||
t.datetime "activity_at", null: false, index: {name: "index_statistics_on_activity_at"}
|
t.datetime "activity_at", :null=>false, :index=>{:name=>"index_statistics_on_activity_at"}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
add_index "statistics", ["key", "activity_at"], name: "index_statistics_on_key_and_activity_at"
|
add_index "statistics", ["key", "activity_at"], :name=>"index_statistics_on_key_and_activity_at"
|
||||||
add_index "statistics", ["project_id", "key", "activity_at"], name: "index_statistics_on_project_id_and_key_and_activity_at"
|
add_index "statistics", ["project_id", "key", "activity_at"], :name=>"index_statistics_on_project_id_and_key_and_activity_at"
|
||||||
add_index "statistics", ["user_id", "key", "activity_at"], name: "index_statistics_on_user_id_and_key_and_activity_at"
|
add_index "statistics", ["user_id", "key", "activity_at"], :name=>"index_statistics_on_user_id_and_key_and_activity_at"
|
||||||
add_index "statistics", ["user_id", "project_id", "key", "activity_at"], name: "index_statistics_on_all_keys", unique: true
|
add_index "statistics", ["user_id", "project_id", "key", "activity_at"], :name=>"index_statistics_on_all_keys", :unique=>true
|
||||||
|
|
||||||
create_table "tokens", force: :cascade do |t|
|
create_table "tokens", force: :cascade do |t|
|
||||||
t.integer "subject_id", null: false, index: {name: "index_tokens_on_subject_id_and_subject_type", with: ["subject_type"]}
|
t.integer "subject_id", :null=>false, :index=>{:name=>"index_tokens_on_subject_id_and_subject_type", :with=>["subject_type"]}
|
||||||
t.string "subject_type", null: false
|
t.string "subject_type", :null=>false
|
||||||
t.integer "creator_id", null: false
|
t.integer "creator_id", :null=>false
|
||||||
t.integer "updater_id"
|
t.integer "updater_id"
|
||||||
t.string "status", default: "active"
|
t.string "status", :default=>"active"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
t.string "authentication_token", null: false, index: {name: "index_tokens_on_authentication_token", unique: true}
|
t.string "authentication_token", :null=>false, :index=>{:name=>"index_tokens_on_authentication_token", :unique=>true}
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "user_builds_settings", force: :cascade do |t|
|
create_table "user_builds_settings", force: :cascade do |t|
|
||||||
t.integer "user_id", null: false, index: {name: "index_user_builds_settings_on_user_id", unique: true}
|
t.integer "user_id", :null=>false, :index=>{:name=>"index_user_builds_settings_on_user_id", :unique=>true}
|
||||||
t.text "platforms", default: [], null: false, array: true
|
t.text "platforms", :default=>[], :null=>false, :array=>true
|
||||||
t.string "external_nodes"
|
t.string "external_nodes"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "users", force: :cascade do |t|
|
create_table "users", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "email", default: "", null: false, index: {name: "index_users_on_email", unique: true}
|
t.string "email", :default=>"", :null=>false, :index=>{:name=>"index_users_on_email", :unique=>true}
|
||||||
t.string "encrypted_password", default: "", null: false
|
t.string "encrypted_password", :default=>"", :null=>false
|
||||||
t.string "reset_password_token", index: {name: "index_users_on_reset_password_token", unique: true}
|
t.string "reset_password_token", :index=>{:name=>"index_users_on_reset_password_token", :unique=>true}
|
||||||
t.datetime "reset_password_sent_at"
|
t.datetime "reset_password_sent_at"
|
||||||
t.datetime "remember_created_at"
|
t.datetime "remember_created_at"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "uname", index: {name: "index_users_on_uname", unique: true}
|
t.string "uname", :index=>{:name=>"index_users_on_uname", :unique=>true}
|
||||||
t.string "role"
|
t.string "role"
|
||||||
t.string "language", default: "en"
|
t.string "language", :default=>"en"
|
||||||
t.integer "own_projects_count", default: 0, null: false
|
t.integer "own_projects_count", :default=>0, :null=>false
|
||||||
t.string "confirmation_token", index: {name: "index_users_on_confirmation_token", unique: true}
|
t.string "confirmation_token", :index=>{:name=>"index_users_on_confirmation_token", :unique=>true}
|
||||||
t.datetime "confirmed_at"
|
t.datetime "confirmed_at"
|
||||||
t.datetime "confirmation_sent_at"
|
t.datetime "confirmation_sent_at"
|
||||||
t.text "professional_experience"
|
t.text "professional_experience"
|
||||||
|
@ -412,13 +401,13 @@ ActiveRecord::Schema.define(version: 20160326104007) do
|
||||||
t.string "avatar_content_type"
|
t.string "avatar_content_type"
|
||||||
t.integer "avatar_file_size"
|
t.integer "avatar_file_size"
|
||||||
t.datetime "avatar_updated_at"
|
t.datetime "avatar_updated_at"
|
||||||
t.integer "failed_attempts", default: 0
|
t.integer "failed_attempts", :default=>0
|
||||||
t.string "unlock_token", index: {name: "index_users_on_unlock_token", unique: true}
|
t.string "unlock_token", :index=>{:name=>"index_users_on_unlock_token", :unique=>true}
|
||||||
t.datetime "locked_at"
|
t.datetime "locked_at"
|
||||||
t.string "authentication_token", index: {name: "index_users_on_authentication_token"}
|
t.string "authentication_token", :index=>{:name=>"index_users_on_authentication_token"}
|
||||||
t.integer "build_priority", default: 50
|
t.integer "build_priority", :default=>50
|
||||||
t.boolean "sound_notifications", default: true
|
t.boolean "sound_notifications", :default=>true
|
||||||
t.boolean "hide_email", default: true, null: false
|
t.boolean "hide_email", :default=>true, :null=>false
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe ActivityFeed do
|
|
||||||
|
|
||||||
it 'is valid given valid attributes' do
|
|
||||||
FactoryGirl.build(:activity_feed).should be_valid
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
Loading…
Reference in New Issue