millworker 0.1.3 → 0.2.0

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.
data.tar.gz.sig CHANGED
@@ -1,3 +1,5 @@
1
- xy#�)L
2
- ��kom����1��%?].ő��
3
- L�+%��������F��׆����[��ӲeK\[�U/��h������>H�1-�?#�}�9
1
+ ��#׬�(��6A�T*��utVu�#��+�JT&d�@�ؽ3����M�!�/w|i����
2
+ �{��7�4T=A�ċ�테(j6BQx�._m�+z*g���8Y��J�q�t�y��
3
+ Ek�˚wT:�g*
4
+ _�66�pKBj���KM���d�oM��d�SA���Ot �+�n�J��I���r���Z҃
5
+ Vh�抸ek��p�Ör!GT��~6��)ǚ �)
@@ -1,3 +1,15 @@
1
+ === 0.2.0 / 2012-10-19
2
+
3
+ * 2 minor enhancements:
4
+
5
+ * Added Salesforce "checking logger" script
6
+ * Only execute tasks which do not end in ".example"
7
+
8
+ * 2 bug fixes:
9
+
10
+ * Added documentation for log_to_csv.rb.example script
11
+ * Rename all example tasks to end in ".example"
12
+
1
13
  === 0.1.3 / 2012-09-18
2
14
 
3
15
  * 1 bug fix:
@@ -5,7 +5,8 @@ Manifest.txt
5
5
  README.md
6
6
  Rakefile
7
7
  bin/millworker
8
- example_tasks/log_to_csv.rb
8
+ example_tasks/log_to_csv.rb.example
9
+ example_tasks/sf_logger.rb.example
9
10
  lib/millworker.rb
10
11
  lib/millworker/version.rb
11
12
  spec/spec.opts
@@ -61,7 +61,7 @@ command :setup do |c|
61
61
  File.open(CONFIG_PATH, "w") {|f| f.write({serial_port: port_name}.to_yaml)}
62
62
 
63
63
  puts "Copying example tasks to #{TASKS_DIR}"
64
- Dir["#{EXAMPLE_TASKS_DIR}/*"].map { |file|
64
+ Dir["#{EXAMPLE_TASKS_DIR}/*.example"].map { |file|
65
65
  FileUtils.cp file, TASKS_DIR
66
66
  FileUtils.chmod 0755, "#{TASKS_DIR}/#{File.basename(file)}"
67
67
  }
@@ -99,14 +99,15 @@ command :start do |c|
99
99
  next if rfid_id.nil?
100
100
 
101
101
  # Read task list in every time so the daemon does not need to be
102
- # restarted after changes
103
- tasks = Dir["#{TASKS_DIR}/*"]
102
+ # restarted after changes (ignore '.example' tasks)
103
+ tasks = Dir["#{TASKS_DIR}/*"].reject {|task| task[/\.example/]}
104
104
 
105
105
  if tasks.empty?
106
106
  logger.warn "No tasks to execute in '#{TASKS_DIR}'. Skipping."
107
107
  next
108
108
  else
109
109
  tasks.each do |task|
110
+
110
111
  command = "#{task} #{rfid_id}"
111
112
 
112
113
  execute(command) { |result|
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Overview
4
+ # ========
5
+ #
6
+ # Logs the identifier passed in with a timestamp of when it occurred to a CSV
7
+ # file named "millworker_log.csv".
8
+ #
9
+ # NOTE: Please read the 'Requirements' section before attempting to use this
10
+ # script as it will outline any customizations you must do or software you
11
+ # need to install in order for it to work properly.
12
+ #
13
+ # NOTE: You must rename this file so the filename does not end in ".example".
14
+ # The instructions below assume you have only removed the ".example" when
15
+ # you renamed the file.
16
+ #
17
+ # Usage
18
+ # =====
19
+ #
20
+ # ./log_to_csv.rb [BADGE ID HERE]
21
+ #
22
+ # Example
23
+ # ======
24
+ #
25
+ # ./log_to_csv.rb 12345
26
+ #
27
+ #
28
+ # Requirements
29
+ # ============
30
+ #
31
+ # - There are no requirements for this script outside of using Ruby 1.9.3+.
32
+ # However, if you would like to customize where the "millworker_log.csv" file
33
+ # is written, you can set the "MILLWORKER_CSV_DIR" environment variable to
34
+ # the full path to a directory you'd like it written to
35
+ # (default: $HOME/Desktop).
36
+
37
+ require 'csv'
38
+
39
+ CSV_FILENAME = "millworker_log.csv"
40
+ CSV_DIR = ENV["MILLWORKER_CSV_DIR"] || File.expand_path("#{ENV['HOME']}/Desktop")
41
+ CSV_PATH = "#{CSV_DIR}/#{CSV_FILENAME}"
42
+
43
+ when_new_file = !File.exists?(CSV_PATH)
44
+
45
+ CSV_OPTIONS = {headers: %w(timestamp card_id),
46
+ write_headers: when_new_file,
47
+ force_quotes: true
48
+ }
49
+ CSV.open(CSV_PATH, "a+", CSV_OPTIONS) {|csv| csv << [Time.now, ARGV[0]]}
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Overview
4
+ # ========
5
+ #
6
+ # Logs a "Checkin" event in Salesforce for the person with the specified
7
+ # badge number (a unique identifier passed in as an argument).
8
+ #
9
+ # NOTE: Please read the 'Requirements' section before attempting to use this
10
+ # script as it will outline any customizations you must do or software you
11
+ # need to install in order for it to work properly.
12
+ #
13
+ # NOTE: You must rename this file so the filename does not end in ".example".
14
+ # The instructions below assume you have only removed the ".example" when
15
+ # you renamed the file.
16
+ #
17
+ # Usage
18
+ # =====
19
+ #
20
+ # ./sf_checkin_logger.rb [BADGE ID HERE]
21
+ #
22
+ # Example
23
+ # ======
24
+ #
25
+ # ./sf_checkin_logger.rb 12345
26
+ #
27
+ #
28
+ # Requirements
29
+ # ============
30
+ #
31
+ # Script modification requirements
32
+ # --------------------------------
33
+ # - You must set the hostname, username, etc variables in the code below
34
+ # (denoted with "CUSTOM SETTINGS BELOW HERE" and
35
+ # "CUSTOM SETTINGS ABOVE HERE" lines)
36
+ #
37
+ # Software requirements:
38
+ # ----------------------
39
+ # - the databasedotcom ruby gem (run `gem install databasedotcom`)
40
+ #
41
+ # Requirements on Salesforce:
42
+ # ---------------------------
43
+ # - API access must be set up
44
+ # - Account credentials (security token, password, etc)
45
+ # - Custom "Check_in__c" object with the following fields (at a minimum)
46
+ # - Person__c
47
+ # - stores the Id of the Account to associate the checkin with
48
+ # - Check_In_Time_Date__c
49
+ # - stores a timestamp of when the "checkin" occurred
50
+ # - Incident__c
51
+ # - boolean field which was a required field of the system this was
52
+ # originally written for
53
+ # - Paid_Shift__c
54
+ # - boolean field which was a required field of the system this was
55
+ # originally written for
56
+
57
+
58
+ # CUSTOM SETTINGS BELOW HERE
59
+ hostname = "CHANGE_ME" # eg: "test.salesforce.com"
60
+ username = "CHANGE_ME" # eg: "jdoe@example.com"
61
+ password = "CHANGE_ME" # eg: "password"
62
+ security_token = "CHANGE_ME" # eg: "Ejy3282382923dsjsj"
63
+ client_secret = "CHANGE_ME" # eg: "74439232ds2832"
64
+ client_id = "CHANGE_ME" # eg: '3MVG9-REALLY-LONG-STRING-HERE'
65
+ # CUSTOM SETTINGS ABOVE HERE
66
+
67
+ # NOTE: No changes should be necessary below this line!
68
+
69
+ [hostname,
70
+ username,
71
+ password,
72
+ security_token,
73
+ client_secret,
74
+ client_id
75
+ ].each {|custom_setting|
76
+ if custom_setting == "CHANGE_ME"
77
+ $stderr.puts "Please verify all custom settings have been updated. Exiting."
78
+ exit 3
79
+ end
80
+ }
81
+
82
+ begin
83
+ require 'databasedotcom'
84
+ include Databasedotcom
85
+ rescue LoadError
86
+ $stderr.puts "You must install the 'databasedotcom' gem (run `gem install databasedotcom`). Exiting."
87
+ exit 1
88
+ end
89
+
90
+ badge_id = ARGV[0]
91
+
92
+ client = Client.new(host: hostname,
93
+ client_secret: client_secret,
94
+ client_id: client_id,
95
+ debugging: false)
96
+
97
+ client.authenticate :username => "info@mnmill.org.sandbox", :password => "#{password}#{security_token}"
98
+
99
+ Account = client.materialize("Account")
100
+ CheckIn = client.materialize("Check_in__c")
101
+
102
+ account = Account.find_by_Id_Badge__c(badge_id)
103
+ checkin_time = DateTime.now
104
+
105
+ if account.nil?
106
+ $stderr.puts "Could not find account with ID of #{badge_id}. Exiting."
107
+ exit 1
108
+ end
109
+
110
+ checkin = CheckIn.new(:Person__c => account.Id,
111
+ :Check_In_Time_Date__c => checkin_time,
112
+ :Incident__c => false,
113
+ :Paid_Shift__c => false)
114
+
115
+ if checkin.save
116
+ $stdout.puts "Checkin for #{account.Name} (ID: #{account.Id}) logged to Salesforce at '#{checkin_time.to_s}'"
117
+ exit 0
118
+ else
119
+ $stderr.puts "Checkin for #{account.Name} (ID: #{account.Id}) was not saved successfully for some reason. Please manually verify the script is functioning correctly. Exiting."
120
+ exit 2
121
+ end
@@ -1,3 +1,3 @@
1
1
  module Millworker
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: millworker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -36,7 +36,7 @@ cert_chain:
36
36
  L1dHTHNEVk9tZ0orZzR4b09pQ2U5WkVrZGE4SytsL0YKeVhXcUluUmxGSWxU
37
37
  dXdGVHhqMjZqYXVCb3NrQlBvejViZmtaRmphVlJoeVVuUm5Ha2E2Nmx2Y0RP
38
38
  R2ZrUlpXUQpOVkFESkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2012-09-19 00:00:00.000000000 Z
39
+ date: 2012-10-19 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: gli
@@ -209,7 +209,8 @@ files:
209
209
  - README.md
210
210
  - Rakefile
211
211
  - bin/millworker
212
- - example_tasks/log_to_csv.rb
212
+ - example_tasks/log_to_csv.rb.example
213
+ - example_tasks/sf_logger.rb.example
213
214
  - lib/millworker.rb
214
215
  - lib/millworker/version.rb
215
216
  - spec/spec.opts
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- ��$w����K���ړ^�e62Y��#�|��i�f������]8 �enE}�E��m���~uM\��^��2i�BbP�:�D��O����,��z��:Tie�O7�Ƞ󞻞�fb�p�E���$�q�2_�;W>x��].HihH���{[ ��A��F@�����[��R�zaPd��<k���E��D��]�/~�|iQ1�
2
- b��Ԅޣ��7&/m+����K8�?�VP���$�[�pE
1
+ �I2o������7f8=��f:��}:��}��liN���1�͋����}��Va�̾ �A���C/� ��]��ST��"GE���gi
2
+ ��+j��]װ���q
3
+ MJN�M0'�ӗ%z ��+簢}#^=�PƊ��3=�*��C
4
+ �c��_�2����.�c2�&(�xa���}_��0E+��g >Yx0@��
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'csv'
3
-
4
- CSV_FILENAME = "millworker_log.csv"
5
- CSV_DIR = ENV["MILLWORKER_CSV_DIR"] || File.expand_path("#{ENV['HOME']}/Desktop")
6
- CSV_PATH = "#{CSV_DIR}/#{CSV_FILENAME}"
7
-
8
- when_new_file = !File.exists?(CSV_PATH)
9
-
10
- CSV_OPTIONS = {headers: %w(timestamp card_id),
11
- write_headers: when_new_file,
12
- force_quotes: true
13
- }
14
- CSV.open(CSV_PATH, "a+", CSV_OPTIONS) {|csv| csv << [Time.now, ARGV[0]]}