thecore_print_commons 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -2
- data/app/models/printer.rb +5 -5
- data/app/workers/print_worker.rb +6 -62
- data/lib/thecore_print_commons.rb +3 -0
- data/lib/thecore_print_commons/version.rb +1 -1
- metadata +16 -9
- data/app/models/print_job.rb +0 -16
- data/app/models/print_template.rb +0 -52
- data/db/migrate/20160407141529_create_print_jobs.rb +0 -10
- data/db/migrate/20160407152547_add_fields_to_print_job.rb +0 -9
- data/db/migrate/20160407181202_change_column_errors_to_print_job.rb +0 -5
- data/db/migrate/20160519093702_create_print_templates.rb +0 -13
- data/db/migrate/20160519124051_add_print_template_id_to_printer.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b0bc42cfcd52643cc6969d1c01ee83f66b7228d
|
4
|
+
data.tar.gz: a5290b56a7c9c0dfb4a786289b56a43ccb34db83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99b0b8a85f04f109051373ae141e60d0c89d4f6855aa0a7506284836bc3cbe8670a2d527eea606f91680074c0144b3783846d29b0c11e4d12fa10d94095e063d
|
7
|
+
data.tar.gz: d51fad54ac14533fd04848b0a94d3f956b3faf7d6ca1602bf09cc6f9be626c61898c2ebddbf2a366424db013138a850acbfd5be8c1ca0eff3fac8487bfbaabc2
|
data/README.md
CHANGED
@@ -1,10 +1,20 @@
|
|
1
1
|
# ThecorePrintCommons
|
2
|
-
|
2
|
+
This gem brings cups interaction into Thecore apps, allowing printing on all configured printers (be they local or remote), using cups' standardized interface.
|
3
3
|
|
4
4
|
## Usage
|
5
|
-
|
5
|
+
Add all the needed printers and be sure you can print on them.
|
6
|
+
to add printers to CUPS you can use http://localhost:631, but before it could be bettere to relax a bit
|
7
|
+
the authentications needed for adding printers, to do so, please edit /etc/cups/cupsd.conf and replace all the Authentication directives with Authentication None.
|
8
|
+
|
9
|
+
When you enter the printers section and add a new printer in Thecore backend, you'll just see available (through cups) printers and you can just select one of these.
|
6
10
|
|
7
11
|
## Installation
|
12
|
+
First of all, please install libcups2-dev:
|
13
|
+
|
14
|
+
```shell
|
15
|
+
sudo apt install libcups2-dev
|
16
|
+
```
|
17
|
+
|
8
18
|
Add this line to your application's Gemfile:
|
9
19
|
|
10
20
|
```ruby
|
data/app/models/printer.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
class Printer < ApplicationRecord
|
2
2
|
#serialize :translation, Hash
|
3
3
|
|
4
|
-
has_many :print_jobs, dependent: :destroy, inverse_of: :printer
|
5
|
-
belongs_to :print_template, inverse_of: :printers
|
6
|
-
|
7
4
|
validates :name, presence: true
|
8
5
|
validates :ip, presence: true
|
9
|
-
validates :temperature, presence: true
|
10
6
|
|
11
7
|
# before_save :check_if_unique_default
|
12
8
|
# validates :qty, presence: true, numericality: { only_integer: true, greater_than: 0 }
|
@@ -38,6 +34,11 @@ class Printer < ApplicationRecord
|
|
38
34
|
# where(used_in: (USED.index(section.to_sym) + 1))
|
39
35
|
# end
|
40
36
|
|
37
|
+
def ip_enum
|
38
|
+
# Getting from CUPS the list of configured printers
|
39
|
+
CupsPrinter.get_all_printer_names
|
40
|
+
end
|
41
|
+
|
41
42
|
RailsAdmin.config do |config|
|
42
43
|
config.model 'Printer' do
|
43
44
|
navigation_label I18n.t("admin.settings.label")
|
@@ -47,7 +48,6 @@ class Printer < ApplicationRecord
|
|
47
48
|
field :ip
|
48
49
|
field :default, :toggle
|
49
50
|
field :temperature
|
50
|
-
field :print_template
|
51
51
|
field :description
|
52
52
|
|
53
53
|
list do
|
data/app/workers/print_worker.rb
CHANGED
@@ -1,68 +1,12 @@
|
|
1
1
|
require 'ipaddr'
|
2
2
|
class PrintWorker
|
3
3
|
include Sidekiq::Worker
|
4
|
-
def perform
|
5
|
-
# Checking status only for telnet printers, samba ones cannot be checked
|
6
|
-
is_telnet_printer = IPAddr.new(printer).ipv4? rescue false
|
7
|
-
status = if is_telnet_printer
|
8
|
-
check_status(printer)
|
9
|
-
else
|
10
|
-
"OK"
|
11
|
-
end
|
12
|
-
if status == "OK"
|
13
|
-
begin
|
14
|
-
if is_telnet_printer
|
15
|
-
# Use TCPSocket
|
16
|
-
TCPSocket.new(printer, 9100) do |s|
|
17
|
-
# Rails.logger.debug "TEMPERATURE: #{text}"
|
18
|
-
s.puts(text)
|
19
|
-
end
|
20
|
-
# @printed += 1
|
21
|
-
return true
|
22
|
-
else
|
23
|
-
# Use File.open to print on a windows share
|
24
|
-
# Must be in this format: "\\\\host\\share"
|
25
|
-
# remember to escape \
|
26
|
-
File.open(printer) do |f|
|
27
|
-
f.print(text)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
rescue
|
31
|
-
@pjob.update(iserror: true, description: "PRINTER ERROR: TIMEOUT")
|
32
|
-
return false
|
33
|
-
end
|
34
|
-
else
|
35
|
-
@pjob.update(iserror: true, description: "PRINTER ERROR: #{status}")
|
36
|
-
return false
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def check_status printer
|
4
|
+
def perform printer_cups_name, text
|
41
5
|
begin
|
42
|
-
|
43
|
-
|
44
|
-
# Printer.template può essere anche
|
45
|
-
# una parola di comando epr chiedere lo stato della stampante, solo nel caso sia ok,
|
46
|
-
# Allora mando la stampa
|
47
|
-
s.puts("~HS")
|
48
|
-
# Attende per la risposta (si mette in wait)
|
49
|
-
response = []
|
50
|
-
while (response_text = s.gets)
|
51
|
-
response << response_text
|
52
|
-
break if response.count == 3
|
53
|
-
end
|
54
|
-
s.close
|
55
|
-
Rails.logger.info "PrintIt: RESPONSE: #{response.inspect}"
|
56
|
-
first = response[0].split(",")
|
57
|
-
second = response[1].split(",")
|
58
|
-
return "HEAD UP" if second[2].to_i == 1
|
59
|
-
return "RIBBON OUT" if second[3].to_i == 1
|
60
|
-
return "PAPER OUT" if first[1].to_i == 1
|
61
|
-
return "PAUSE" if first[2].to_i == 1
|
62
|
-
return "OK"
|
6
|
+
printer = CupsPrinter.new printer_cups_name
|
7
|
+
printer.print_data text, 'text/plain'
|
63
8
|
rescue
|
64
|
-
|
65
|
-
return "UNREACHABLE"
|
9
|
+
Rails.logger.debug("PRINTER #{printer_cups_name} ERROR: TIMEOUT")
|
66
10
|
end
|
67
|
-
|
68
|
-
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thecore_print_commons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriele Tassoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thecore
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cupsffi
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
41
55
|
description: Thecorized thecore_print_commons full description.
|
42
56
|
email:
|
43
57
|
- gabriele.tassoni@gmail.com
|
@@ -49,8 +63,6 @@ files:
|
|
49
63
|
- README.md
|
50
64
|
- Rakefile
|
51
65
|
- app/assets/config/thecore_print_commons_manifest.js
|
52
|
-
- app/models/print_job.rb
|
53
|
-
- app/models/print_template.rb
|
54
66
|
- app/models/printer.rb
|
55
67
|
- app/workers/print_worker.rb
|
56
68
|
- config/initializers/abilities_thecore_print_commons_concern.rb
|
@@ -60,12 +72,7 @@ files:
|
|
60
72
|
- config/locales/telnet_print.it.yml
|
61
73
|
- config/routes.rb
|
62
74
|
- db/migrate/20160323152041_create_printers.rb
|
63
|
-
- db/migrate/20160407141529_create_print_jobs.rb
|
64
|
-
- db/migrate/20160407152547_add_fields_to_print_job.rb
|
65
|
-
- db/migrate/20160407181202_change_column_errors_to_print_job.rb
|
66
75
|
- db/migrate/20160413115407_add_temperature_to_printer.rb
|
67
|
-
- db/migrate/20160519093702_create_print_templates.rb
|
68
|
-
- db/migrate/20160519124051_add_print_template_id_to_printer.rb
|
69
76
|
- db/migrate/20160629140729_add_default_to_printer.rb
|
70
77
|
- lib/tasks/thecore_print_commons_tasks.rake
|
71
78
|
- lib/thecore_print_commons.rb
|
data/app/models/print_job.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
class PrintJob < ApplicationRecord
|
2
|
-
belongs_to :printer, inverse_of: :print_jobs
|
3
|
-
|
4
|
-
RailsAdmin.config do |config|
|
5
|
-
config.model 'PrintJob' do
|
6
|
-
# rails_admin do
|
7
|
-
navigation_label I18n.t("admin.settings.label")
|
8
|
-
navigation_icon 'fa fa-check-square'
|
9
|
-
parent Printer
|
10
|
-
|
11
|
-
field :printer
|
12
|
-
field :created_at
|
13
|
-
field :description
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
class PrintTemplate < ApplicationRecord
|
2
|
-
has_many :printers, inverse_of: :print_template
|
3
|
-
|
4
|
-
validates :name, presence: true
|
5
|
-
validates :template, presence: true
|
6
|
-
|
7
|
-
# def translate args
|
8
|
-
# # Rails.logger.info("COME CAZZO SEI FATTO? #{args.inspect}")
|
9
|
-
# temp = template.clone
|
10
|
-
# temp.gsub!("TEMPERATURE", args[:temperature].to_s)
|
11
|
-
# number_of_barcodes.times.with_index do |i|
|
12
|
-
# #Rails.logger.debug "MAMAMAMA! #{args[:items][i]}"
|
13
|
-
# item = (ChosenItem.find(args[:items][i]) rescue false)
|
14
|
-
# HashWithIndifferentAccess.new(YAML.load(translation_matrix)).each_pair do |k, v|
|
15
|
-
# Rails.logger.debug "ITEM: #{item.inspect} AND THE STRING: #{v}"
|
16
|
-
# temp.gsub!(k, item.is_a?(FalseClass) ? "" : v.split(".").inject(item, :send))
|
17
|
-
# end
|
18
|
-
# # Rails.logger.debug "MAMAMAMA! #{item.inspect}"
|
19
|
-
# # Se item è stringa vuota (quindi non ha .barcode), allora ritorna il campo FD remmato
|
20
|
-
# temp.gsub!("BARCODE#{i.to_s.rjust(2, '0')}", (item.barcode rescue "BARCODE#{i.to_s.rjust(2, '0')}"))
|
21
|
-
# end
|
22
|
-
# # Deleting the lines with BARCODE\d\d in them
|
23
|
-
# pivot = ""
|
24
|
-
# temp.each_line do |el|
|
25
|
-
# pivot += el if /BARCODE\d\d/.match(el).blank?
|
26
|
-
# end
|
27
|
-
# Rails.logger.info pivot
|
28
|
-
# pivot
|
29
|
-
# end
|
30
|
-
|
31
|
-
RailsAdmin.config do |config|
|
32
|
-
config.model 'PrintTemplate' do
|
33
|
-
navigation_label I18n.t("admin.settings.label")
|
34
|
-
navigation_icon 'fa fa-file-text'
|
35
|
-
parent Printer
|
36
|
-
|
37
|
-
field :name
|
38
|
-
field :description
|
39
|
-
field :number_of_barcodes
|
40
|
-
|
41
|
-
edit do
|
42
|
-
field :template
|
43
|
-
field :translation_matrix
|
44
|
-
end
|
45
|
-
|
46
|
-
show do
|
47
|
-
field :template
|
48
|
-
field :translation_matrix
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
class AddFieldsToPrintJob < ActiveRecord::Migration[4.2]
|
2
|
-
def change
|
3
|
-
add_column :print_jobs, :errors, :boolean
|
4
|
-
add_column :print_jobs, :description, :string
|
5
|
-
add_index :print_jobs, :description
|
6
|
-
add_column :print_jobs, :printed, :integer
|
7
|
-
add_column :print_jobs, :total, :integer
|
8
|
-
end
|
9
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class CreatePrintTemplates < ActiveRecord::Migration[4.2]
|
2
|
-
def change
|
3
|
-
create_table :print_templates do |t|
|
4
|
-
t.string :name
|
5
|
-
t.text :description
|
6
|
-
t.text :template
|
7
|
-
t.integer :number_of_barcodes
|
8
|
-
t.text :translation_matrix
|
9
|
-
|
10
|
-
t.timestamps null: false
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|