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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62e90843f6877080a3acf29a144dc73c0aa7fa13
4
- data.tar.gz: 878fa8df3a6ebc7e906465b4e8f2da480f27a8c0
3
+ metadata.gz: 3b0bc42cfcd52643cc6969d1c01ee83f66b7228d
4
+ data.tar.gz: a5290b56a7c9c0dfb4a786289b56a43ccb34db83
5
5
  SHA512:
6
- metadata.gz: c9f5468ac6422c4205056c02664a7f041ab8b4a1de9834749f164efc10a858a441088e95eec4827ee1345c5a663409e68bb89f9527bf9e6e4a35ff4e7e62c406
7
- data.tar.gz: 93fafa9b3d21b5774763e33c2e9fd142c98fedfa1eb039e3660a5c7f7eccbe23e630e7b54f2075bc12be930d8727f65fd11cf61d0d5c836c4e00047fd26cdcd1
6
+ metadata.gz: 99b0b8a85f04f109051373ae141e60d0c89d4f6855aa0a7506284836bc3cbe8670a2d527eea606f91680074c0144b3783846d29b0c11e4d12fa10d94095e063d
7
+ data.tar.gz: d51fad54ac14533fd04848b0a94d3f956b3faf7d6ca1602bf09cc6f9be626c61898c2ebddbf2a366424db013138a850acbfd5be8c1ca0eff3fac8487bfbaabc2
data/README.md CHANGED
@@ -1,10 +1,20 @@
1
1
  # ThecorePrintCommons
2
- Short description and motivation.
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
- How to use my plugin.
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
@@ -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
@@ -1,68 +1,12 @@
1
1
  require 'ipaddr'
2
2
  class PrintWorker
3
3
  include Sidekiq::Worker
4
- def perform printer, text
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
- s = TCPSocket.new(printer, 9100)
43
- # Must create intepolation between item and template
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
- Rails.logger.info "PrintIt: STATUS: UNREACHABLE"
65
- return "UNREACHABLE"
9
+ Rails.logger.debug("PRINTER #{printer_cups_name} ERROR: TIMEOUT")
66
10
  end
67
- end
68
- end
11
+ end
12
+ end
@@ -1,4 +1,7 @@
1
1
  require "thecore_print_commons/engine"
2
+ require 'thecore'
3
+ require 'thecore_background_jobs'
4
+ require 'cupsffi'
2
5
 
3
6
  require 'thecore'
4
7
  module ThecorePrintCommons
@@ -1,3 +1,3 @@
1
1
  module ThecorePrintCommons
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  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.3
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-21 00:00:00.000000000 Z
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
@@ -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,10 +0,0 @@
1
- class CreatePrintJobs < ActiveRecord::Migration[4.2]
2
- def change
3
- create_table :print_jobs do |t|
4
- t.boolean :finished
5
- t.references :printer, index: true, foreign_key: true
6
-
7
- t.timestamps null: false
8
- end
9
- end
10
- 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,5 +0,0 @@
1
- class ChangeColumnErrorsToPrintJob < ActiveRecord::Migration[4.2]
2
- def change
3
- rename_column :print_jobs, :errors, :iserror
4
- end
5
- 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
@@ -1,5 +0,0 @@
1
- class AddPrintTemplateIdToPrinter < ActiveRecord::Migration[4.2]
2
- def change
3
- add_reference :printers, :print_template, index: true, foreign_key: true
4
- end
5
- end