Commit Graph

420 Commits

Author SHA1 Message Date
Oliver Walters
95032141ce Toot toot! It's the refactor tractor.
- Create helper functions to qualify media and static files
2020-04-07 11:38:57 +10:00
Oliver Walters
b28487760a Rename Part.URL -> part.link
- Previous migration needed some tweaking to get it to run... because.. why?
- It seems to pass when running manage.py migrate but fails when running manage.py test
- Stumped on this one
2020-04-06 11:16:39 +10:00
Oliver Walters
8b61acb048 PEP fixes 2020-04-05 00:38:25 +11:00
Oliver Walters
afa31b3415 Generate thumbnails for any part images existing in the database 2020-04-05 00:19:05 +11:00
Oliver Walters
aee0970e49 Part image field now uses django-stdimage 2020-04-04 15:47:05 +11:00
Oliver Walters
713d7960a8 Fix on_order calculation
- Take into account the number "received"
- Also fix unit tests
2020-03-26 17:56:44 +11:00
Oliver Walters
6a78f6d451 Include quantity currently being build in Part API 2020-03-26 17:43:02 +11:00
Oliver Walters
41bbbdcd43 Improve query speed when calculating how many parts are on order 2020-03-26 17:31:59 +11:00
maxbachmann
b162c97226
use rapidfuzz instead of fuzzywuzzy 2020-03-22 22:31:15 +01:00
Oliver Walters
56a6943438 Add an 'attachment' page for the PurchaseOrder view 2020-03-22 18:13:34 +11:00
Oliver Walters
a661d7e1a6 Abstract the PartAttachment class
Now "Attachments" are much easier to implement for different models
2020-03-22 17:59:23 +11:00
Oliver Walters
15bc457714 Improve calculation of BOM item overage 2020-03-19 10:15:43 +11:00
Oliver Walters
2b08b0f2b9 Add new fields for Part object
- Creation date
- Creation user
- Responsible user
2020-03-18 21:50:18 +11:00
Oliver Walters
8eaaf62eda Limit choices for Part selection
Based on is_template / virtual / active status
2020-03-18 21:28:11 +11:00
Oliver Walters
3b9f57fc80 Bug fix - Multiplying float by decimal
- Overage percentage now uses explicit decimal multiplication
2020-03-18 20:44:45 +11:00
Oliver Walters
4a2fa36e30 Allow 'notes' field in Part object to be blank 2020-02-23 20:02:33 +11:00
Oliver Walters
d04fb0d826 Use decimal2string instead of normalize 2020-02-12 10:08:35 +11:00
Oliver Walters
520b8d7b2b Fix for BOM pricing weirdness 2020-02-12 10:06:17 +11:00
Oliver Walters
55aa63dab4 Override save() method for Part model
- Delete old thumbnails if they are no longer being used
2020-02-11 20:27:06 +11:00
Oliver Walters
dee47bdea8 Prevent django_cleanup from deleting part thumbs that are used elsewhere
- Will need to implement a method for automatically deleting part thumbs...
2020-02-11 00:29:29 +11:00
Oliver Walters
d4fe83170f Select existing image and upload successfully 2020-02-10 23:48:45 +11:00
Oliver Walters
725eb3c538 Do not duplicate images when copying a part
- Simply reference the existing image
2020-02-10 23:04:58 +11:00
Oliver Walters
9cef038d6a IPN must match regex validator (if one is provided) 2020-02-03 21:09:24 +11:00
Oliver Walters
c546ed5dcd Update requirements
- Use markdownify for rendering
- Use markdownx for editing
2020-01-31 21:42:30 +11:00
Oliver Walters
5e9b012031 Bug fix for static lookup of blank image 2019-12-09 20:40:04 +11:00
Oliver Walters
1a6f06cceb normalize decimal fields 2019-12-06 22:40:27 +11:00
Oliver Walters
98374ca466 Update to more recent libraries
- Specify exact module versions
2019-12-05 14:12:05 +11:00
Oliver Walters
9da8189899 Allow non-integer stock movement 2019-11-19 10:17:20 +11:00
Oliver Walters
6e90ac367e Massaging unit tests
- Decimal fields are useful but VERY ANNOYING to use
- Needed to fix some test cases
2019-11-19 08:59:56 +11:00
Oliver Walters
400941c10f Change item quantity field from PositiveInteger to Decimal
- Allow 'partial' quantity e.g. '0.45kg'
- Need to change some maths functions as Decimal type is pernickity
2019-11-19 08:49:54 +11:00
Oliver Walters
5ffbfe8eb8 Add translation strings for part models 2019-11-19 08:42:10 +11:00
Oliver Walters
a77fd23fcf Add a reminder for future-self 2019-09-17 20:19:27 +10:00
Oliver Walters
db04f399c1 Simplify exporting of BOM for a part 2019-09-15 22:21:12 +10:00
Oliver Walters
4ac8353099 Create a custom URL field, which allows the user-specified validators
- Ref: https://stackoverflow.com/questions/41756572/django-urlfield-with-custom-scheme
- Apply this to the URL field in the Part model
2019-09-14 00:04:08 +10:00
Oliver Walters
e4fc44c135 More test 2019-09-08 20:36:51 +10:00
Oliver Walters
2a203be5cc Tests for part parameters 2019-09-08 20:18:21 +10:00
Oliver Walters
dac61eafa2 Fixed tests
- Tree classes now need extra configuration in the fixture
- Check for null pk when cleaning a tree node
2019-09-08 19:41:54 +10:00
Oliver Walters
a5189b8f3f Replace a recursive function 2019-09-08 19:28:40 +10:00
Oliver Walters
0d6a3d3b28 BOM table now refreshes the table rather than the page 2019-09-08 19:24:47 +10:00
Oliver Walters
3eb3c43e5c Change foreign keys to TreeForeignKey 2019-09-08 19:19:39 +10:00
Oliver Walters
678157aac4 Update StockLocation and PartCategory models
- Use the MPTT functionality once more
2019-09-08 19:13:13 +10:00
Oliver Walters
13270617b9 Ensure PartParameterTemplate name is unique 2019-09-07 19:43:41 +10:00
Oliver Walters
37d9c59a0e Add API endpoint for validating a BOM item 2019-09-05 19:29:51 +10:00
Oliver Walters
0508c2dcaf Use the hash for each line item to calculate the total BOM hash 2019-09-05 13:10:26 +10:00
Oliver Walters
7671eb2b22 Add a checksum field to the bom line item 2019-09-05 12:58:11 +10:00
Oliver Walters
43967e302b Add ablity to serialize an existing quantity of stock
- Do not have to serialize all the stock
- Add tests
- Add function to copy entire stock transaction history
2019-08-28 21:12:16 +10:00
Oliver Walters
d5ad53c788 Add docstring 2019-08-28 19:44:46 +10:00
Oliver Walters
f94be40857 Style fixes 2019-08-28 19:44:02 +10:00
Oliver Walters
c68c79ea43 Create view / form / URL for PartParameter creation 2019-08-20 14:14:21 +10:00
Oliver Walters
db834802e3 Add uniqueness check for PartParameterTemplate name field
- Case insensitive
2019-08-20 13:08:06 +10:00
Oliver Walters
a228b38e5d Fix parameter lookup 2019-08-20 13:03:36 +10:00
Oliver Walters
e6819b5396 Change model - add PartParameterTemplate 2019-08-20 13:02:00 +10:00
Oliver Walters
6393ddad53 Add param tab to Part detail view 2019-08-20 12:44:00 +10:00
Oliver Walters
2f6357b136 Add PartParameter table 2019-08-20 12:31:43 +10:00
Oliver Walters
3dca7ba353 Include supplier information in BOM 2019-08-07 09:12:53 +10:00
Oliver Walters
0a328687a5 BOM hash includes reference fields 2019-08-02 11:11:28 +10:00
Oliver Walters
482a5dae4b Save the selected BOM data 2019-07-10 12:27:19 +10:00
Oliver Walters
ff5af8f217 Add a button to create a new part if necessary 2019-07-07 11:56:44 +10:00
Oliver Walters
bd30ac037b Generate a list of allowed BOM items and pass to the form template 2019-07-07 11:22:01 +10:00
Oliver Walters
b6a6e2dae7 Change the manner in which active parts are filtered for BOM
- Prevented BOM from displaying for an inactive part
- Now manually filter the queryset in the form view
2019-06-28 10:00:23 +10:00
Oliver Walters
3085db44af Add 'reference' field to BOM item model 2019-06-27 21:44:40 +10:00
Oliver Walters
d6fcf85cd2 Set part category for multiple parts at once 2019-06-25 19:15:39 +10:00
Oliver Walters
a5306ec81b Add 'revision' field to part
- e.g. different versions of a product
- Can keep old versions in database and mark as inactive
2019-06-20 21:46:16 +10:00
Oliver Walters
8328e7e13c Improve uniqueness checking for Part 2019-06-20 21:37:25 +10:00
Oliver Walters
c9c851bead Add 'virtual' part flag 2019-06-18 18:34:07 +10:00
Oliver Walters
16b6ae8d61 Fixed up some stupid recursion on the Tree model template 2019-06-18 00:59:54 +10:00
Oliver Walters
642660d76e Improved speed of stock tree 2019-06-18 00:09:42 +10:00
Oliver Walters
037dc6a0d6 Reduced tree time with some better queries 2019-06-17 23:52:49 +10:00
Oliver Walters
bc05146e72 First pass at 'order parts' fom
- Select parts in modal form window
2019-06-11 23:37:32 +10:00
Oliver Walters
8e82488f70 Display 'net stock' value on front page 2019-06-11 21:58:20 +10:00
Oliver Walters
3954b33fb7 Use 'on_order' count in calculation for parts we need to order 2019-06-10 23:05:14 +10:00
Oliver Walters
b8bcc5ce0c Separate display of open and closed purchase orders (per part) 2019-06-10 22:31:19 +10:00
Oliver Walters
9efdd836f4 Tweak the 'on_order' calculation 2019-06-10 21:56:50 +10:00
Oliver Walters
31ad31365a Calculate parts on order for a Part / SupplierPart 2019-06-07 08:37:25 +10:00
Oliver Walters
67248ec4dd List purchase orders for a given part 2019-06-05 21:47:22 +10:00
Oliver Walters
f731c45ce8 Replace other choice fields with commonized status code 2019-06-04 23:38:52 +10:00
Oliver Walters
219c438b82 Part name uniqueness is case insensitive 2019-06-02 20:37:59 +10:00
Oliver Walters
ba26acd487 Rename some fields
- Oops didn't think that through, gotta go through and fix the data now...
2019-06-02 19:46:30 +10:00
Oliver Walters
91a5a7f051 Simplify part model
- Remove 'varian't or ''revision' field
- Part name must be unique across database
2019-05-26 12:16:57 +10:00
Oliver Walters
41eb195940 Thanks, PEP 2019-05-26 00:42:40 +10:00
Oliver Walters
2138977b07 Include template attachments in attachment count 2019-05-26 00:39:36 +10:00
Oliver Walters
7881a67db4 Calculate stock based on variant stock if part is a template 2019-05-26 00:01:01 +10:00
Oliver Walters
c45a506a10 Rename field part.has_variants to part.is_template 2019-05-25 23:58:31 +10:00
Oliver Walters
bc778c1451 Prevent a Part from both having variants and being a variant of something else 2019-05-25 22:43:47 +10:00
Oliver Walters
1a2fb9e170 Add 'has_variants' and 'variant_of' field for Part
- StockItem cannot point to a part which is a template part
2019-05-25 22:27:36 +10:00
Oliver Walters
ecfde46838 Fix error in BomItem creation 2019-05-25 21:57:59 +10:00
Oliver Walters
d386c2a6f9 Include total stock in PartBrief serializer 2019-05-23 21:51:27 +10:00
Oliver Walters
d1dfad591d Pepperoni 2019-05-21 15:38:22 +10:00
Oliver Walters
988a35d237 Serialize BOMItem pricing information
- Account for quantity
- Prefetch required items
2019-05-21 15:15:54 +10:00
Oliver Walters
2817e6ca31 Added further part pricing 2019-05-21 14:08:40 +10:00
Oliver Walters
9d5b938ced Don't serialize 'available_stock' in PartSerializer 2019-05-21 07:57:44 +10:00
Oliver Walters
ca9d6e6e25 PEP fixes 2019-05-21 00:54:48 +10:00
Oliver Walters
72aba30e81 More hungry fetching 2019-05-21 00:16:00 +10:00
Oliver Walters
157919f47a More prefetching
-
2019-05-21 00:06:57 +10:00
Oliver Walters
6ae48d07c4 Cleanup pricing algorithms 2019-05-20 23:53:39 +10:00
Oliver Walters
d15b09a5f4 Don't serialize pricing
- Saves MANY queries and provides drastic speedup
2019-05-20 23:03:19 +10:00
Oliver Walters
18ff80312b Fixes 2019-05-20 22:53:01 +10:00
Oliver Walters
ee2ddbf512 Reduce some database queries by using aggregate Sum 2019-05-20 21:47:30 +10:00
Oliver Walters
54ccf6c7b3 PEP 2019-05-18 23:09:04 +10:00
Oliver Walters
b64a29b897 Display build pricing information 2019-05-18 23:09:00 +10:00
Oliver Walters
2b098942b0 Fix pricing bug
- Include BOM item pricing in API
2019-05-18 23:08:56 +10:00
Oliver Walters
2a1fd2b03b More complex pricing calculations
- Calculate BOM price for a part
- Calculate total pricing for a part (build or purchase)
- Display pricing information in BOM table
2019-05-18 23:08:51 +10:00
Oliver Walters
cdc55bb5d3 PEP fixes 2019-05-18 23:08:42 +10:00
Oliver Walters
a3d1591929 Display part pricing in Part view
- Calculate min_price and max_price based on provided supplier information
2019-05-18 23:08:38 +10:00
Oliver Walters
0cfb243eb3 Move SupplierPart and SupplierPriceBreak to the 'Company' app
- https://docs.djangoproject.com/en/2.2/ref/models/options/#django.db.models.Options.db_table
- https://stackoverflow.com/questions/3519143/django-how-to-specify-a-database-for-a-model
- And others, presumably
2019-05-18 23:08:34 +10:00
Oliver Walters
5043c354b1 Set default value for SupplierPriceBreak
Edit or Delete a SupplierPriceBreak
2019-05-18 23:08:30 +10:00
Oliver Walters
1163f60b23 Return price breaks in the correct order 2019-05-18 23:08:21 +10:00
Oliver Walters
a3cd54875c Update validator for supplier price break 2019-05-18 23:08:17 +10:00
Oliver Walters
92632b2ef7 PartAttachment attachment file is actually required! 2019-05-18 23:08:13 +10:00
Oliver Walters
613c96e093 Part attachment comment field is required 2019-05-18 23:08:04 +10:00
Oliver Walters
a2dbdfe794 Remove 'single_price' field from supplier part
- Instead we will rely entirely on the SupplierPriceBreak model
2019-05-18 23:07:58 +10:00
Oliver Walters
fae44c3002 Bug fix for part deep-copy
- Don't copy an image if an image doesn't exist
2019-05-15 09:21:31 +10:00
Oliver Walters
c6331255de Fixes 2019-05-15 07:23:55 +10:00
Oliver Walters
68ae38a7d7 Calculate total quantity required for a build (including overages) 2019-05-15 00:36:02 +10:00
Oliver Walters
a80c11f3ce Add function to infer default_supplier for a Part 2019-05-15 00:22:10 +10:00
Oliver Walters
f6baf5d2ae Add 'overage' field to BOM item
- Accepts absolute or percentage numbers
- Default = blank
- Now with custom validator! (for limited time only, limit one per customer)
2019-05-15 00:16:34 +10:00
Oliver Walters
0ffe2666b3 Added some missing help text 2019-05-14 23:36:22 +10:00
Oliver Walters
0842bd5833 Add 'default_keywords' field to a category 2019-05-14 17:30:24 +10:00
Oliver Walters
02033c2157 Add 'keywords' field to Part
- Shows up in search results
2019-05-14 17:23:20 +10:00
Oliver Walters
e1e5cde60f Renamed copyBomFrom to deepCopy
- Allows passing of more data (in the future) e.g. tags, etc
- Performs copy of the part image
2019-05-13 21:54:52 +10:00
Oliver Walters
00f7ece6b4 PEP fixes 2019-05-13 21:42:05 +10:00
Oliver Walters
2408318eae Add new view to duplicate a part
- Allows 'deep_copy' (copies all BOM items for the duplicated part)
2019-05-13 21:41:32 +10:00
Oliver Walters
42bbf95c42 Include the sub_part ID in the BOM hash 2019-05-13 18:09:59 +10:00
Oliver Walters
e3a9a70678 Add a form/view/etc for BOM validation 2019-05-12 16:27:50 +10:00
Oliver Walters
9149619f38 Make BOM tab badge red if the BOM is not validated 2019-05-12 13:12:04 +10:00
Oliver Walters
06deccca1c Rename check_bom to validate_bom 2019-05-12 13:01:41 +10:00
Oliver Walters
985986a844 New functions for Part model
- is_bom_valid() - Tests if bom checksums match
- check_bom() function to mark the BOM as valid
2019-05-12 12:53:56 +10:00
Oliver Walters
2431ba2a04 Add new fields to Part model
- bom_checksum (stores checksum calculated when the BOM was checked)
- bom_checked_by (User who checked the BOM)
- bom_checked_date (When the BOM was last checked)
2019-05-12 12:47:28 +10:00
Oliver Walters
4c3032e2f0 Add function to calculate BOM hash
- Uses hashlib.md5
2019-05-12 12:42:20 +10:00
Oliver Walters
82fb43e1e3 PEP 2019-05-12 12:29:16 +10:00
Oliver Walters
1d36ea3e2e Add a 'full_name' field for Part
- Combines IPN | Name | Variant
- Use this to display in most views
2019-05-12 12:16:04 +10:00
Oliver Walters
84d2fce8ca Add a 'confirm_creation' input if there are possible part matches 2019-05-11 12:29:02 +10:00
Oliver Walters
d9c0d2f5e3 Update PartCreate form
- Display list of close matches
- Invalidate form (for now)
2019-05-11 11:55:17 +10:00
Oliver Walters
1b8ca34ddb Added fuzzy search function for matching against part names 2019-05-11 10:36:24 +10:00
Oliver Walters
7f1cdaf73f PEP 2019-05-10 22:52:45 +10:00
Oliver Walters
8ac180a9e3 Add validator to part name
- Check for 'illegal' characters
- Mostly just as a test for validators!
2019-05-10 22:52:06 +10:00
Oliver Walters
f76f1f54ae Add 'variant' field to Part model
- Display 'long_name' which is concatenation of name and variant
2019-05-10 22:17:13 +10:00
Oliver Walters
01778f996e PEP fixes 2019-05-10 20:12:15 +10:00
Oliver Walters
ba2f565e35 docstring improvements
- Added Attribute docstring to all model objects
2019-05-10 20:11:52 +10:00
Oliver
793b4f8063
Merge pull request #288 from SchrodingersGat/tree-badges
Tree badges
2019-05-09 23:06:32 +10:00
Oliver Walters
bff0f30b13 Save tree state 'per tree'
- Separate save state for Part and Stock tree
2019-05-09 21:41:44 +10:00
Oliver Walters
45223fb607 Display count badges in sidenav tree
Uses the 'tags' parameter as according to the docs - https://github.com/jonmiles/bootstrap-treeview

- Part
- Stock
2019-05-09 20:30:23 +10:00
Oliver Walters
1a115104d2 If a part has no bom items, the 'can_build' function now returns zero 2019-05-09 18:35:55 +10:00
Oliver
fa2bf947ab
Merge pull request #267 from SchrodingersGat/bom-img
BOM table improvements
2019-05-09 00:42:33 +10:00
Oliver Walters
94ad378b9d Part and company images return the 'no image found' image if they do not have an image 2019-05-09 00:39:51 +10:00
Oliver Walters
f05e05664b PEP fix 2019-05-08 23:33:37 +10:00
Oliver Walters
e9c904076f Added help text for model fields 2019-05-08 23:32:57 +10:00
Oliver Walters
416b5c9820 Include part image URL in Part API 2019-05-08 15:25:28 +10:00
Oliver Walters
b9e5afa768 PEP 2019-05-05 22:35:39 +10:00
Oliver Walters
b85a4d0895 Limit choices for BomItem Part foreignkey fields
- Only allow 'active' Parts
2019-05-05 22:34:00 +10:00
Oliver Walters
bbd164407f Display 'starred' status on the Part information page 2019-05-05 10:54:35 +10:00
Oliver Walters
919f04044b Enforce uniqueness constraint 2019-05-05 08:48:41 +10:00
Oliver Walters
9919bebaa2 Add PartStart model
- Links parts to users
2019-05-05 08:46:23 +10:00
Oliver Walters
e2ced18753 Added some more BomItem tests 2019-05-05 00:00:30 +10:00
Oliver Walters
1f80e8c655 More tests for Part
- barcode
- category_path
2019-05-04 23:35:52 +10:00
Oliver Walters
bc7f3f77de PEPEP 2019-05-04 21:57:43 +10:00
Oliver Walters
67eda51cd2 Add part category tree traversal
- If a category doesn't have a default_location, look at the parent category
- And so on and so on
2019-05-04 21:56:18 +10:00
Oliver Walters
71972f4454 Add function to get the default location for a part
- If field not specified, look at the part category
2019-05-04 19:06:39 +10:00
Oliver Walters
4ffaad3f1a Add a default_location to the PartCategory model
- If a part does not specify a default location, look at the default location of  the category
2019-05-04 19:00:11 +10:00
Oliver Walters
9aa1a70f18 QR code improvements
- Display QR codes as links to served images
- The qr_code plugin caches these images in the background
- Make a qr_code template to push out as a modal form
- Create a QRCodeView to simplify display of QR codes
- Add option to launchModalForm() to disable the 'submit' button

Refactored QR code display for

- StockLocation
- StockItem
- Part
2019-05-04 18:46:57 +10:00
Oliver Walters
4af59f0ca9 Fixed part image upload
- Image was being saved twice
- Don't call super().post in AjaxUpdateView
- Instead, handle properly
2019-05-04 00:38:17 +10:00
Oliver
6482b54bc9
Merge pull request #205 from SchrodingersGat/qr-codes
Qr codes
2019-05-02 21:15:34 +10:00
Oliver Walters
5a234a1070 Added barcode for Part object 2019-05-02 20:57:53 +10:00
Oliver Walters
194a0962f3 PEP fixes 2019-05-02 20:19:08 +10:00
Oliver Walters
38100520df Add 'to_order' and 'to_build' collapsible panels 2019-05-02 20:18:34 +10:00
Oliver Walters
fbb120da53 Use collapse template in allocation page 2019-05-02 18:53:03 +10:00
Oliver Walters
ad6f4e19b1 Add 'comment' field to part attachment model 2019-05-02 01:06:06 +10:00
Oliver Walters
7c11d917de Bug fixes
- Part creation form was setting a field as HiddenInput() rather than its widget
- Added 'comment' file to FileAttachment model
2019-05-01 09:40:49 +10:00
Oliver Walters
c29827e45a Add API endpoint and serializer for BuildItem model 2019-04-29 22:59:42 +10:00
Oliver Walters
6326d6d050 Fixed spelling mistake 2019-04-29 22:21:18 +10:00
Oliver Walters
c2a35b6656 Add 'active' field to Part model 2019-04-28 23:00:38 +10:00
Oliver Walters
ba49b080b0 Some small tweaks 2019-04-28 11:46:53 +10:00
Oliver Walters
ed3ae30248 Documentation for Part app 2019-04-27 22:18:07 +10:00
Oliver Walters
95be2755f4 Adjust SupplierPart supplier foreignkey
- Limit choices to 'is_supplier'
2019-04-27 13:10:21 +10:00
Oliver Walters
e57a8cdcd1 Fix rendering of BOM table view
- Edit and delete rows now works
2019-04-26 23:32:22 +10:00
Oliver Walters
accec07fe9 BOM serializer now validates against model
- Need to call instance.clean()
- https://stackoverflow.com/questions/40697648/django-dry-model-form-serializer-validation
2019-04-26 22:36:44 +10:00
Oliver Walters
e6617fef80 reverse URL lookup for BomItem and SupplierPart
- created empty test files
2019-04-25 01:05:08 +10:00
Oliver Walters
0bc5617825 Reverse url lookup for Part model 2019-04-25 01:00:01 +10:00
Oliver Walters
f9db3b680d Reverse lookup for part category URL
- Added some test cases for PartCategory model
2019-04-25 00:28:40 +10:00
Oliver
6b05078fd2
Merge pull request #133 from SchrodingersGat/part-files
Part files
2019-04-18 00:23:09 +10:00
Oliver Walters
e707eb3a2b Provide download link for part attachments
- Better upload management for attachment files (separated based on part ID)
2019-04-18 00:14:53 +10:00
Oliver Walters
cb7e98aa1c Add extra BOM export format options
- Uses tablib (already used by django-import-export plugin)
- Needs cleanup but works well
- Problem exporting XLSX data (needs work!)
2019-04-17 23:52:15 +10:00
Oliver Walters
19a11eac1a PEP fixes 2019-04-17 07:49:46 +10:00
Oliver Walters
52c3a63c61 Updated SupplierPriceBreak page 2019-04-17 00:48:01 +10:00
Oliver Walters
150bc1e674 Add API interface for SupplierPriceBreak 2019-04-17 00:35:49 +10:00
Oliver Walters
a3b544e2a4 typo fix 2019-04-17 00:21:11 +10:00
Oliver Walters
5cd837be07 Limit supplierpart part link to purchasable parts only 2019-04-17 00:14:22 +10:00
Oliver Walters
cd0b6a6511 Updated Supplier models
- Added cost calculation for supplier part
- Added more validators and help text
2019-04-17 00:09:39 +10:00
Oliver Walters
01bdf2f19b PEP fixes 2019-04-16 22:32:43 +10:00
Oliver Walters
7eea9d1a20 Launch a modal to select BOM download format
- This will have to change! A client-side hack for now..
- Work out a better way to do this!
2019-04-16 21:46:12 +10:00
Oliver Walters
c706f00733 Skeletong for exporting BOM in different formats 2019-04-16 14:22:27 +10:00
Oliver Walters
bafce641a7 Limit sub-part choices to consumable parts only 2019-04-16 01:45:16 +10:00
Oliver Walters
6e2b111b9c Add 'consumable' field to Part
- Indicates that a part can be used to make other parts
- This is the inverse of 'buildable'
- Add this field to the serializer and edit forms
- Display parameter on part info page
- BOM edit window only requests sub-parts that are marked as 'consumable'
- Also added option to edit 'units' field for part
2019-04-16 00:01:52 +10:00
Oliver Walters
ec98f7829e Add context flag to enable editing mode
- pass ?edit=1 to the BOM
- Display page differently if in editing mode
-
2019-04-15 18:32:15 +10:00
Oliver Walters
d5186fc615 Add 'note' field to BOM item model 2019-04-14 18:26:11 +10:00
Oliver Walters
9e5eed5d5e Move the export_bom function to the part model 2019-04-14 12:34:14 +10:00
Oliver Walters
cf374252c1 PEP fixes for /part 2019-04-14 09:25:46 +10:00
Oliver
7644617af0 Better string formatting for models
Allows for easier searching in drop-downs for ForeignKeys
2018-05-09 00:17:39 +10:00
Oliver
a2ff1d16f3 Introspection of build allocation
Yay for dicts
2018-04-30 22:45:11 +10:00
Oliver
b24ddac0b8 Part stuff 2018-04-30 22:30:15 +10:00