Beispiel #1
0
def loadLoads(cursor):
  print('Importing loads...')
  cnt = 0
  starttime = time()
  # Note: The sorting of the loads is not really necessary, but helps to make
  # the planning progress consistent across runs and database engines.
  cursor.execute('''
    SELECT
      operation_id, resource_id, quantity, effective_start, effective_end, name,
      priority, setup, search, skill_id
    FROM resourceload
    WHERE alternate IS NULL OR alternate = ''
    ORDER BY operation_id, resource_id
    ''')
  curresname = None
  for i, j, k, l, m, n, o, p, q, r in cursor.fetchall():
    cnt += 1
    try:
      if j != curresname:
        curresname = j
        curres = frepple.resource(name=curresname)
      curload = frepple.load(operation=frepple.operation(name=i), resource=curres, quantity=k)
      if l: curload.effective_start = l
      if m: curload.effective_end = m
      if n: curload.name = n
      if o: curload.priority = o
      if p: curload.setup = p
      if q: curload.search = q
      if r: curload.skill = frepple.skill(name=r)
    except Exception as e: print("Error:", e)
  cursor.execute('''
    SELECT
      operation_id, resource_id, quantity, effective_start, effective_end,
      name, alternate, priority, setup, search, skill_id
    FROM resourceload
    WHERE alternate IS NOT NULL AND alternate <> ''
    ORDER BY operation_id, resource_id
    ''')
  curresname = None
  for i, j, k, l, m, n, o, p, q, r, s in cursor.fetchall():
    cnt += 1
    try:
      if j != curresname:
        curresname = j
        curres = frepple.resource(name=curresname)
      curload = frepple.load(operation=frepple.operation(name=i), resource=curres, quantity=k)
      if l: curload.effective_start = l
      if m: curload.effective_end = m
      if n: curload.name = n
      if o: curload.alternate = o
      if p: curload.priority = p
      if q: curload.setup = q
      if r: curload.search = r
      if s: curload.skill = frepple.skill(name=s)
    except Exception as e: print("Error:", e)
  print('Loaded %d loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #2
0
def loadResources(cursor):
  print('Importing resources...')
  cnt = 0
  starttime = time()
  Resource.rebuildHierarchy(database=cursor.db.alias)
  cursor.execute('''SELECT
    name, description, maximum, maximum_calendar_id, location_id, type, cost,
    maxearly, setup, setupmatrix_id, category, subcategory, owner_id
    FROM %s order by lvl asc, name'''% connections[database].ops.quote_name('resource'))
  for i,j,t,k,l,m,n,o,p,q,r,s,u in cursor.fetchall():
    cnt += 1
    try:
      if m == "infinite":
        x = frepple.resource_infinite(name=i,description=j,category=r,subcategory=s)
      elif not m or m == "default":
        x = frepple.resource_default(name=i,description=j,category=r,subcategory=s)
        if k: x.maximum_calendar = frepple.calendar(name=k)
        if o: x.maxearly = o
        if t: x.maximum = t
      else:
        raise ValueError("Resource type '%s' not recognized" % m)
      if l: x.location = frepple.location(name=l)
      if n: x.cost = n
      if p: x.setup = p
      if q: x.setupmatrix = frepple.setupmatrix(name=q)
      if u: x.owner = frepple.resource(name=u)
    except Exception as e: print("Error:", e)
  print('Loaded %d resources in %.2f seconds' % (cnt, time() - starttime))
Beispiel #3
0
  def run(cls, database=DEFAULT_DB_ALIAS, **kwargs):
    import frepple

    if cls.filter:
      filter_and = "and %s " % cls.filter
      filter_where = "where %s " % cls.filter
    else:
      filter_and = ""
      filter_where = ""

    with connections[database].chunked_cursor() as cursor:
      cnt = 0
      starttime = time()
      cursor.execute('''
        SELECT
          resource_id, skill_id, effective_start, effective_end, priority, source
        FROM resourceskill %s
        ORDER BY skill_id, priority, resource_id
        ''' % filter_where)
      for i in cursor:
        cnt += 1
        try:
          cur = frepple.resourceskill(
            resource=frepple.resource(name=i[0]), skill=frepple.skill(name=i[1]),
            priority=i[4] or 1, source=i[5]
            )
          if i[2]:
            cur.effective_start = i[2]
          if i[3]:
            cur.effective_end = i[3]
        except Exception as e:
          logger.error("**** %s ****" % e)
      logger.info('Loaded %d resource skills in %.2f seconds' % (cnt, time() - starttime))
Beispiel #4
0
 def loadResourceSkills(self):
     print('Importing resource skills...')
     cnt = 0
     starttime = time()
     self.cursor.execute('''
   SELECT
     resource_id, skill_id, effective_start, effective_end, priority, source
   FROM resourceskill %s
   ORDER BY skill_id, priority, resource_id
   ''' % self.filter_where)
     for i in self.cursor.fetchall():
         cnt += 1
         try:
             cur = frepple.resourceskill(
                 resource=frepple.resource(name=i[0]),
                 skill=frepple.skill(name=i[1]),
                 priority=i[4] or 1,
                 source=i[5])
             if i[2]:
                 cur.effective_start = i[2]
             if i[3]:
                 cur.effective_end = i[3]
         except Exception as e:
             print("Error:", e)
     print('Loaded %d resource skills in %.2f seconds' %
           (cnt, time() - starttime))
Beispiel #5
0
  def run(cls, database=DEFAULT_DB_ALIAS, **kwargs):
    import frepple

    if cls.filter:
      filter_and = "and %s " % cls.filter
      filter_where = "where %s " % cls.filter
    else:
      filter_and = ""
      filter_where = ""

    with connections[database].cursor() as cursor:
      cnt = 0
      starttime = time()
      cursor.execute('''
        SELECT
          supplier_id, item_id, location_id, sizeminimum, sizemultiple,
          cost, priority, effective_start, effective_end, source, leadtime,
          resource_id, resource_qty, fence
        FROM itemsupplier %s
        ORDER BY supplier_id, item_id, location_id, priority desc
        ''' % filter_where)
      cursuppliername = None
      curitemname = None
      for i in cursor.fetchall():
        cnt += 1
        try:
          if i[0] != cursuppliername:
            cursuppliername = i[0]
            cursupplier = frepple.supplier(name=cursuppliername)
          if i[1] != curitemname:
            curitemname = i[1]
            curitem = frepple.item(name=curitemname)
          curitemsupplier = frepple.itemsupplier(
            supplier=cursupplier, item=curitem, source=i[9],
            leadtime=i[10].total_seconds() if i[10] else 0,
            fence=i[13].total_seconds() if i[13] else 0,
            resource_qty=i[12]
            )
          if i[2]:
            curitemsupplier.location = frepple.location(name=i[2])
          if i[3]:
            curitemsupplier.size_minimum = i[3]
          if i[4]:
            curitemsupplier.size_multiple = i[4]
          if i[5]:
            curitemsupplier.cost = i[5]
          if i[6]:
            curitemsupplier.priority = i[6]
          if i[7]:
            curitemsupplier.effective_start = i[7]
          if i[8]:
            curitemsupplier.effective_end = i[8]
          if i[11]:
            curitemsupplier.resource = frepple.resource(name=i[11])
        except Exception as e:
          print("Error:", e)
      print('Loaded %d item suppliers in %.2f seconds' % (cnt, time() - starttime))
Beispiel #6
0
  def run(cls, database=DEFAULT_DB_ALIAS, **kwargs):
    import frepple

    if cls.filter:
      filter_and = "and %s " % cls.filter
      filter_where = "where %s " % cls.filter
    else:
      filter_and = ""
      filter_where = ""

    with connections[database].chunked_cursor() as cursor:
      cnt = 0
      starttime = time()
      cursor.execute('''
        SELECT
          origin_id, item_id, location_id, sizeminimum, sizemultiple,
          cost, priority, effective_start, effective_end, source,
          leadtime, resource_id, resource_qty, fence
        FROM itemdistribution %s
        ORDER BY origin_id, item_id, location_id, priority desc
        ''' % filter_where)
      curoriginname = None
      curitemname = None
      for i in cursor:
        cnt += 1
        try:
          if i[0] != curoriginname:
            curoriginname = i[0]
            curorigin = frepple.location(name=curoriginname)
          if i[1] != curitemname:
            curitemname = i[1]
            curitem = frepple.item(name=curitemname)
          curitemdistribution = frepple.itemdistribution(
            origin=curorigin, item=curitem, source=i[9],
            leadtime=i[10].total_seconds() if i[10] else 0,
            fence=i[13].total_seconds() if i[13] else 0,
            resource_qty=i[12]
            )
          if i[2]:
            curitemdistribution.destination = frepple.location(name=i[2])
          if i[3]:
            curitemdistribution.size_minimum = i[3]
          if i[4]:
            curitemdistribution.size_multiple = i[4]
          if i[5]:
            curitemdistribution.cost = i[5]
          if i[6]:
            curitemdistribution.priority = i[6]
          if i[7]:
            curitemdistribution.effective_start = i[7]
          if i[8]:
            curitemdistribution.effective_end = i[8]
          if i[11]:
            curitemdistribution.resource = frepple.resource(name=i[11])
        except Exception as e:
          logger.error("**** %s ****" % e)
      logger.info('Loaded %d item distributions in %.2f seconds' % (cnt, time() - starttime))
Beispiel #7
0
 def loadResources(self):
   print('Importing resources...')
   cnt = 0
   starttime = time()
   Resource.rebuildHierarchy(database=self.database)
   self.cursor.execute('''
     SELECT
       name, description, maximum, maximum_calendar_id, location_id, type, cost,
       maxearly, setup, setupmatrix_id, category, subcategory, owner_id, source
     FROM %s %s
     ORDER BY lvl ASC, name
     ''' % (connections[self.cursor.db.alias].ops.quote_name('resource'), self.filter_where) )
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       if i[5] == "infinite":
         x = frepple.resource_infinite(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
       elif i[5] == "buckets":
         x = frepple.resource_buckets(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
         if i[3]:
           x.maximum_calendar = frepple.calendar(name=i[3])
         if i[7]:
           x.maxearly = i[7]
       elif not i[5] or i[5] == "default":
         x = frepple.resource_default(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
         if i[3]:
           x.maximum_calendar = frepple.calendar(name=i[3])
         if i[7]:
           x.maxearly = i[7]
         if i[2]:
           x.maximum = i[2]
       else:
         raise ValueError("Resource type '%s' not recognized" % i[5])
       if i[4]:
         x.location = frepple.location(name=i[4])
       if i[6]:
         x.cost = i[6]
       if i[8]:
         x.setup = i[8]
       if i[9]:
         x.setupmatrix = frepple.setupmatrix(name=i[9])
       if i[12]:
         x.owner = frepple.resource(name=i[12])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d resources in %.2f seconds' % (cnt, time() - starttime))
Beispiel #8
0
 def loadResources(self):
   print('Importing resources...')
   cnt = 0
   starttime = time()
   Resource.rebuildHierarchy(database=self.database)
   self.cursor.execute('''
     SELECT
       name, description, maximum, maximum_calendar_id, location_id, type, cost,
       maxearly, setup, setupmatrix_id, category, subcategory, owner_id, source
     FROM %s %s
     ORDER BY lvl ASC, name
     ''' % (connections[self.cursor.db.alias].ops.quote_name('resource'), self.filter_where) )
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       if i[5] == "infinite":
         x = frepple.resource_infinite(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
       elif i[5] == "buckets":
         x = frepple.resource_buckets(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
         if i[3]:
           x.maximum_calendar = frepple.calendar(name=i[3])
         if i[7]:
           x.maxearly = i[7]
       elif not i[5] or i[5] == "default":
         x = frepple.resource_default(
           name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
           )
         if i[3]:
           x.maximum_calendar = frepple.calendar(name=i[3])
         if i[7]:
           x.maxearly = i[7].total_seconds()
         if i[2]:
           x.maximum = i[2]
       else:
         raise ValueError("Resource type '%s' not recognized" % i[5])
       if i[4]:
         x.location = frepple.location(name=i[4])
       if i[6]:
         x.cost = i[6]
       if i[8]:
         x.setup = i[8]
       if i[9]:
         x.setupmatrix = frepple.setupmatrix(name=i[9])
       if i[12]:
         x.owner = frepple.resource(name=i[12])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d resources in %.2f seconds' % (cnt, time() - starttime))
Beispiel #9
0
 def loadItemDistributions(self):
     print('Importing item distributions...')
     cnt = 0
     starttime = time()
     self.cursor.execute('''
   SELECT
     origin_id, item_id, location_id, sizeminimum, sizemultiple,
     cost, priority, effective_start, effective_end, source,
     leadtime, resource_id, resource_qty, fence
   FROM itemdistribution %s
   ORDER BY origin_id, item_id, location_id, priority desc
   ''' % self.filter_where)
     curoriginname = None
     curitemname = None
     for i in self.cursor.fetchall():
         cnt += 1
         try:
             if i[0] != curoriginname:
                 curoriginname = i[0]
                 curorigin = frepple.location(name=curoriginname)
             if i[1] != curitemname:
                 curitemname = i[1]
                 curitem = frepple.item(name=curitemname)
             curitemdistribution = frepple.itemdistribution(
                 origin=curorigin,
                 item=curitem,
                 source=i[9],
                 leadtime=i[10].total_seconds() if i[10] else 0,
                 fence=i[13].total_seconds() if i[13] else 0,
                 resource_qty=i[12])
             if i[2]:
                 curitemdistribution.destination = frepple.location(
                     name=i[2])
             if i[3]:
                 curitemdistribution.size_minimum = i[3]
             if i[4]:
                 curitemdistribution.size_multiple = i[4]
             if i[5]:
                 curitemdistribution.cost = i[5]
             if i[6]:
                 curitemdistribution.priority = i[6]
             if i[7]:
                 curitemdistribution.effective_start = i[7]
             if i[8]:
                 curitemdistribution.effective_end = i[8]
             if i[11]:
                 curitemdistribution.resource = frepple.resource(name=i[11])
         except Exception as e:
             print("Error:", e)
     print('Loaded %d item itemdistributions in %.2f seconds' %
           (cnt, time() - starttime))
Beispiel #10
0
 def loadLoads(self):
     print('Importing loads...')
     cnt = 0
     starttime = time()
     # Note: The sorting of the loads is not really necessary, but helps to make
     # the planning progress consistent across runs and database engines.
     self.cursor.execute('''
   SELECT
     operation_id, resource_id, quantity, effective_start, effective_end, name,
     priority, setup, search, skill_id, source
   FROM resourceload %s
   ORDER BY operation_id, resource_id
   ''' % self.filter_where)
     curresname = None
     for i in self.cursor.fetchall():
         cnt += 1
         try:
             if i[1] != curresname:
                 curresname = i[1]
                 curres = frepple.resource(name=curresname)
             curload = frepple.load(operation=frepple.operation(name=i[0]),
                                    resource=curres,
                                    quantity=i[2],
                                    source=i[10])
             if i[3]:
                 curload.effective_start = i[3]
             if i[4]:
                 curload.effective_end = i[4]
             if i[5]:
                 curload.name = i[5]
             if i[6]:
                 curload.priority = i[6]
             if i[7]:
                 curload.setup = i[7]
             if i[8]:
                 curload.search = i[8]
             if i[9]:
                 curload.skill = frepple.skill(name=i[9])
         except Exception as e:
             print("Error:", e)
     self.cursor.execute('''
   SELECT count(*)
   FROM resourceload
   WHERE alternate IS NOT NULL AND alternate <> ''
   ''')
     if self.cursor.fetchone()[0]:
         raise ValueError(
             "Load.alternate field is not used any longer. Use only load.name"
         )
     print('Loaded %d loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #11
0
 def loadItemDistributions(self):
   print('Importing item distributions...')
   cnt = 0
   starttime = time()
   self.cursor.execute('''
     SELECT
       origin_id, item_id, location_id, sizeminimum, sizemultiple,
       cost, priority, effective_start, effective_end, source,
       leadtime, resource_id, resource_qty, fence
     FROM itemdistribution %s
     ORDER BY origin_id, item_id, location_id, priority desc
     ''' % self.filter_where)
   curoriginname = None
   curitemname = None
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       if i[0] != curoriginname:
         curoriginname = i[0]
         curorigin = frepple.location(name=curoriginname)
       if i[1] != curitemname:
         curitemname = i[1]
         curitem = frepple.item(name=curitemname)
       curitemdistribution = frepple.itemdistribution(
         origin=curorigin, item=curitem, source=i[9],
         leadtime=i[10].total_seconds() if i[10] else 0,
         fence=i[13].total_seconds() if i[13] else 0,
         resource_qty=i[12]
         )
       if i[2]:
         curitemdistribution.destination = frepple.location(name=i[2])
       if i[3]:
         curitemdistribution.size_minimum = i[3]
       if i[4]:
         curitemdistribution.size_multiple = i[4]
       if i[5]:
         curitemdistribution.cost = i[5]
       if i[6]:
         curitemdistribution.priority = i[6]
       if i[7]:
         curitemdistribution.effective_start = i[7]
       if i[8]:
         curitemdistribution.effective_end = i[8]
       if i[11]:
         curitemdistribution.resource = frepple.resource(name=i[11])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d item itemdistributions in %.2f seconds' % (cnt, time() - starttime))
Beispiel #12
0
  def run(cls, database=DEFAULT_DB_ALIAS, **kwargs):
    import frepple

    if cls.filter:
      filter_and = "and %s " % cls.filter
      filter_where = "where %s " % cls.filter
    else:
      filter_and = ""
      filter_where = ""

    with connections[database].chunked_cursor() as cursor:
      cnt = 0
      starttime = time()
      # Note: The sorting of the loads is not really necessary, but helps to make
      # the planning progress consistent across runs and database engines.
      cursor.execute('''
        SELECT
          operation_id, resource_id, quantity, effective_start, effective_end, name,
          priority, setup, search, skill_id, source
        FROM operationresource %s
        ORDER BY operation_id, resource_id
        ''' % filter_where)
      for i in cursor:
        cnt += 1
        try:
          curload = frepple.load(
            operation=frepple.operation(name=i[0]),
            resource=frepple.resource(name=i[1]),
            quantity=i[2],
            source=i[10]
            )
          if i[3]:
            curload.effective_start = i[3]
          if i[4]:
            curload.effective_end = i[4]
          if i[5]:
            curload.name = i[5]
          if i[6]:
            curload.priority = i[6]
          if i[7]:
            curload.setup = i[7]
          if i[8]:
            curload.search = i[8]
          if i[9]:
            curload.skill = frepple.skill(name=i[9])
        except Exception as e:
          logger.error("**** %s ****" % e)
      logger.info('Loaded %d resource loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #13
0
 def loadItemSuppliers(self):
     print('Importing item suppliers...')
     cnt = 0
     starttime = time()
     self.cursor.execute('''
   SELECT
     supplier_id, item_id, location_id, sizeminimum, sizemultiple,
     cost, priority, effective_start, effective_end, source, leadtime,
     resource_id, resource_qty
   FROM itemsupplier %s
   ORDER BY supplier_id, item_id, location_id, priority desc
   ''' % self.filter_where)
     cursuppliername = None
     curitemname = None
     for i in self.cursor.fetchall():
         cnt += 1
         try:
             if i[0] != cursuppliername:
                 cursuppliername = i[0]
                 cursupplier = frepple.supplier(name=cursuppliername)
             if i[1] != curitemname:
                 curitemname = i[1]
                 curitem = frepple.item(name=curitemname)
             curitemsupplier = frepple.itemsupplier(supplier=cursupplier,
                                                    item=curitem,
                                                    source=i[9],
                                                    leadtime=i[10] or 0,
                                                    resource_qty=i[12])
             if i[2]:
                 curitemsupplier.location = frepple.location(name=i[2])
             if i[3]:
                 curitemsupplier.size_minimum = i[3]
             if i[4]:
                 curitemsupplier.size_multiple = i[4]
             if i[5]:
                 curitemsupplier.cost = i[5]
             if i[6]:
                 curitemsupplier.priority = i[6]
             if i[7]:
                 curitemsupplier.effective_start = i[7]
             if i[8]:
                 curitemsupplier.effective_end = i[8]
             if i[11]:
                 curitemsupplier.resource = frepple.resource(name=i[11])
         except Exception as e:
             print("Error:", e)
     print('Loaded %d item suppliers in %.2f seconds' %
           (cnt, time() - starttime))
Beispiel #14
0
def loadResourceSkills(cursor):
  print('Importing resource skills...')
  cnt = 0
  starttime = time()
  cursor.execute('''SELECT
    resource_id, skill_id, effective_start, effective_end, priority
    FROM resourceskill
    ORDER BY skill_id, priority, resource_id''')
  for i,j,k,l,m in cursor.fetchall():
    cnt += 1
    try:
      cur = frepple.resourceskill(resource=frepple.resource(name=i), skill=frepple.skill(name=j), priority=m or 1)
      if k: cur.effective_start = k
      if l: cur.effective_end = l
    except Exception as e: print("Error:", e)
  print('Loaded %d resource skills in %.2f seconds' % (cnt, time() - starttime))
Beispiel #15
0
 def loadItemSuppliers(self):
   print('Importing item suppliers...')
   cnt = 0
   starttime = time()
   self.cursor.execute('''
     SELECT
       supplier_id, item_id, location_id, sizeminimum, sizemultiple,
       cost, priority, effective_start, effective_end, source, leadtime,
       resource_id, resource_qty
     FROM itemsupplier %s
     ORDER BY supplier_id, item_id, location_id, priority desc
     ''' % self.filter_where)
   cursuppliername = None
   curitemname = None
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       if i[0] != cursuppliername:
         cursuppliername = i[0]
         cursupplier = frepple.supplier(name=cursuppliername)
       if i[1] != curitemname:
         curitemname = i[1]
         curitem = frepple.item(name=curitemname)
       curitemsupplier = frepple.itemsupplier(
         supplier=cursupplier, item=curitem, source=i[9],
         leadtime=i[10] or 0, resource_qty=i[12]
         )
       if i[2]:
         curitemsupplier.location = frepple.location(name=i[2])
       if i[3]:
         curitemsupplier.size_minimum = i[3]
       if i[4]:
         curitemsupplier.size_multiple = i[4]
       if i[5]:
         curitemsupplier.cost = i[5]
       if i[6]:
         curitemsupplier.priority = i[6]
       if i[7]:
         curitemsupplier.effective_start = i[7]
       if i[8]:
         curitemsupplier.effective_end = i[8]
       if i[11]:
         curitemsupplier.resource = frepple.resource(name=i[11])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d item suppliers in %.2f seconds' % (cnt, time() - starttime))
Beispiel #16
0
 def loadLoads(self):
   print('Importing loads...')
   cnt = 0
   starttime = time()
   # Note: The sorting of the loads is not really necessary, but helps to make
   # the planning progress consistent across runs and database engines.
   self.cursor.execute('''
     SELECT
       operation_id, resource_id, quantity, effective_start, effective_end, name,
       priority, setup, search, skill_id, source
     FROM resourceload %s
     ORDER BY operation_id, resource_id
     ''' % self.filter_where)
   curresname = None
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       if i[1] != curresname:
         curresname = i[1]
         curres = frepple.resource(name=curresname)
       curload = frepple.load(operation=frepple.operation(name=i[0]), resource=curres, quantity=i[2], source=i[10])
       if i[3]:
         curload.effective_start = i[3]
       if i[4]:
         curload.effective_end = i[4]
       if i[5]:
         curload.name = i[5]
       if i[6]:
         curload.priority = i[6]
       if i[7]:
         curload.setup = i[7]
       if i[8]:
         curload.search = i[8]
       if i[9]:
         curload.skill = frepple.skill(name=i[9])
     except Exception as e:
       print("Error:", e)
   self.cursor.execute('''
     SELECT count(*)
     FROM resourceload
     WHERE alternate IS NOT NULL AND alternate <> ''
     ''')
   if self.cursor.fetchone()[0]:
     raise ValueError("Load.alternate field is not used any longer. Use only load.name")
   print('Loaded %d loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #17
0
def loadResourceSkills(cursor):
    print('Importing resource skills...')
    cnt = 0
    starttime = time()
    cursor.execute('''SELECT
    resource_id, skill_id, effective_start, effective_end, priority
    FROM resourceskill
    ORDER BY skill_id, priority, resource_id''')
    for i, j, k, l, m in cursor.fetchall():
        cnt += 1
        try:
            cur = frepple.resourceskill(resource=frepple.resource(name=i),
                                        skill=frepple.skill(name=j),
                                        priority=m or 1)
            if k: cur.effective_start = k
            if l: cur.effective_end = l
        except Exception as e:
            print("Error:", e)
    print('Loaded %d resource skills in %.2f seconds' %
          (cnt, time() - starttime))
Beispiel #18
0
 def loadOperationResources(self):
   print('Importing operation resources...')
   cnt = 0
   starttime = time()
   # Note: The sorting of the loads is not really necessary, but helps to make
   # the planning progress consistent across runs and database engines.
   self.cursor.execute('''
     SELECT
       operation_id, resource_id, quantity, effective_start, effective_end, name,
       priority, setup, search, skill_id, source
     FROM operationresource %s
     ORDER BY operation_id, resource_id
     ''' % self.filter_where)
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       curload = frepple.load(
         operation=frepple.operation(name=i[0]),
         resource=frepple.resource(name=i[1]),
         quantity=i[2],
         source=i[10]
         )
       if i[3]:
         curload.effective_start = i[3]
       if i[4]:
         curload.effective_end = i[4]
       if i[5]:
         curload.name = i[5]
       if i[6]:
         curload.priority = i[6]
       if i[7]:
         curload.setup = i[7]
       if i[8]:
         curload.search = i[8]
       if i[9]:
         curload.skill = frepple.skill(name=i[9])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d resource loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #19
0
 def loadOperationResources(self):
   print('Importing operation resources...')
   cnt = 0
   starttime = time()
   # Note: The sorting of the loads is not really necessary, but helps to make
   # the planning progress consistent across runs and database engines.
   self.cursor.execute('''
     SELECT
       operation_id, resource_id, quantity, effective_start, effective_end, name,
       priority, setup, search, skill_id, source
     FROM operationresource %s
     ORDER BY operation_id, resource_id
     ''' % self.filter_where)
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       curload = frepple.load(
         operation=frepple.operation(name=i[0]),
         resource=frepple.resource(name=i[1]),
         quantity=i[2],
         source=i[10]
         )
       if i[3]:
         curload.effective_start = i[3]
       if i[4]:
         curload.effective_end = i[4]
       if i[5]:
         curload.name = i[5]
       if i[6]:
         curload.priority = i[6]
       if i[7]:
         curload.setup = i[7]
       if i[8]:
         curload.search = i[8]
       if i[9]:
         curload.skill = frepple.skill(name=i[9])
     except Exception as e:
       print("Error:", e)
   print('Loaded %d resource loads in %.2f seconds' % (cnt, time() - starttime))
Beispiel #20
0
def loadResources(cursor):
    print('Importing resources...')
    cnt = 0
    starttime = time()
    Resource.rebuildHierarchy(database=cursor.db.alias)
    cursor.execute('''SELECT
    name, description, maximum, maximum_calendar_id, location_id, type, cost,
    maxearly, setup, setupmatrix_id, category, subcategory, owner_id
    FROM %s order by lvl asc, name''' %
                   connections[cursor.db.alias].ops.quote_name('resource'))
    for i, j, t, k, l, m, n, o, p, q, r, s, u in cursor.fetchall():
        cnt += 1
        try:
            if m == "infinite":
                x = frepple.resource_infinite(name=i,
                                              description=j,
                                              category=r,
                                              subcategory=s)
            elif not m or m == "default":
                x = frepple.resource_default(name=i,
                                             description=j,
                                             category=r,
                                             subcategory=s)
                if k: x.maximum_calendar = frepple.calendar(name=k)
                if o: x.maxearly = o
                if t: x.maximum = t
            else:
                raise ValueError("Resource type '%s' not recognized" % m)
            if l: x.location = frepple.location(name=l)
            if n: x.cost = n
            if p: x.setup = p
            if q: x.setupmatrix = frepple.setupmatrix(name=q)
            if u: x.owner = frepple.resource(name=u)
        except Exception as e:
            print("Error:", e)
    print('Loaded %d resources in %.2f seconds' % (cnt, time() - starttime))
Beispiel #21
0
 def loadResourceSkills(self):
   print('Importing resource skills...')
   cnt = 0
   starttime = time()
   self.cursor.execute('''
     SELECT
       resource_id, skill_id, effective_start, effective_end, priority, source
     FROM resourceskill %s
     ORDER BY skill_id, priority, resource_id
     ''' % self.filter_where)
   for i in self.cursor.fetchall():
     cnt += 1
     try:
       cur = frepple.resourceskill(
         resource=frepple.resource(name=i[0]), skill=frepple.skill(name=i[1]),
         priority=i[4] or 1, source=i[5]
         )
       if i[2]:
         cur.effective_start = i[2]
       if i[3]:
         cur.effective_end = i[3]
     except Exception as e:
       print("Error:", e)
   print('Loaded %d resource skills in %.2f seconds' % (cnt, time() - starttime))
Beispiel #22
0
###
print("\nTesting the comparison operator")
print("makeoper < shipoper", makeoper < shipoper)
print("shipoper < makeoper", shipoper < makeoper)
print("shipoper != makeoper", shipoper != makeoper)
print("shipoper == makeoper", shipoper == makeoper)
print("shipoper == shipoper", shipoper == shipoper)
try:
    print("makeoper == item", makeoper == item)
except Exception as e:
    print("Catching exception %s: %s" % (e.__class__.__name__, e))

###
print("\nCreating a resource")
frepple.resource(name="machine",
                 maximum_calendar=frepple.calendar(name="Cal2"))

###
print("\nCreating customers")
mycustomer = frepple.customer(name="client")

###
print("\nCreating locations")
locA = frepple.location(name="locA")
locB = frepple.location(name="locB")

###
print("\nCreating some buffers")

buf = frepple.buffer(name="end item", producing=choice, item=item)
Beispiel #23
0
###
print("\nTesting the comparison operator")
print("makeoper < shipoper", makeoper < shipoper)
print("shipoper < makeoper", shipoper < makeoper)
print("shipoper != makeoper", shipoper != makeoper)
print("shipoper == makeoper", shipoper == makeoper)
print("shipoper == shipoper", shipoper == shipoper)
try:
  print("makeoper == item", makeoper == item)
except Exception as e:
  print("Catching exception %s: %s" % (e.__class__.__name__, e))

###
print("\nCreating a resource")
frepple.resource(name="machine", maximum_calendar=frepple.calendar(name="Cal2"))

###
print("\nCreating customers")
mycustomer = frepple.customer(name="client")

###
print("\nCreating locations")
locA = frepple.location(name="locA")
locB = frepple.location(name="locB")

###
print("\nCreating some buffers")

buf = frepple.buffer(name="end item", producing=choice, item=item)
Beispiel #24
0
  def run(cls, database=DEFAULT_DB_ALIAS, **kwargs):
    import frepple

    if cls.filter:
      filter_and = "and %s " % cls.filter
      filter_where = "where %s " % cls.filter
    else:
      filter_and = ""
      filter_where = ""

    with connections[database].chunked_cursor() as cursor:
      cnt = 0
      starttime = time()
      Resource.rebuildHierarchy(database=database)
      cursor.execute('''
        SELECT
          name, description, maximum, maximum_calendar_id, location_id, type,
          cost, maxearly, setup, setupmatrix_id, category, subcategory,
          owner_id, source, available_id
        FROM %s %s
        ORDER BY lvl ASC, name
        ''' % (connections[cursor.db.alias].ops.quote_name('resource'), filter_where) )
      for i in cursor:
        cnt += 1
        try:
          if i[5] == "infinite":
            x = frepple.resource_infinite(
              name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
              )
          elif i[5] == "buckets":
            x = frepple.resource_buckets(
              name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
              )
            if i[3]:
              x.maximum_calendar = frepple.calendar(name=i[3])
            if i[7] is not None:
              x.maxearly = i[7]
          elif not i[5] or i[5] == "default":
            x = frepple.resource_default(
              name=i[0], description=i[1], category=i[10], subcategory=i[11], source=i[13]
              )
            if i[3]:
              x.maximum_calendar = frepple.calendar(name=i[3])
            if i[7] is not None:
              x.maxearly = i[7].total_seconds()
            if i[2] is not None:
              x.maximum = i[2]
          else:
            raise ValueError("Resource type '%s' not recognized" % i[5])
          if i[4]:
            x.location = frepple.location(name=i[4])
          if i[6]:
            x.cost = i[6]
          if i[8]:
            x.setup = i[8]
          if i[9]:
            x.setupmatrix = frepple.setupmatrix(name=i[9])
          if i[12]:
            x.owner = frepple.resource(name=i[12])
          if i[14]:
            x.available = frepple.calendar(name=i[14])
        except Exception as e:
          logger.error("**** %s ****" % e)
      logger.info('Loaded %d resources in %.2f seconds' % (cnt, time() - starttime))
Beispiel #25
0
def loadLoads(cursor):
    print('Importing loads...')
    cnt = 0
    starttime = time()
    # Note: The sorting of the loads is not really necessary, but helps to make
    # the planning progress consistent across runs and database engines.
    cursor.execute('''
    SELECT
      operation_id, resource_id, quantity, effective_start, effective_end, name,
      priority, setup, search, skill_id
    FROM resourceload
    WHERE alternate IS NULL OR alternate = ''
    ORDER BY operation_id, resource_id
    ''')
    curresname = None
    for i, j, k, l, m, n, o, p, q, r in cursor.fetchall():
        cnt += 1
        try:
            if j != curresname:
                curresname = j
                curres = frepple.resource(name=curresname)
            curload = frepple.load(operation=frepple.operation(name=i),
                                   resource=curres,
                                   quantity=k)
            if l: curload.effective_start = l
            if m: curload.effective_end = m
            if n: curload.name = n
            if o: curload.priority = o
            if p: curload.setup = p
            if q: curload.search = q
            if r: curload.skill = frepple.skill(name=r)
        except Exception as e:
            print("Error:", e)
    cursor.execute('''
    SELECT
      operation_id, resource_id, quantity, effective_start, effective_end,
      name, alternate, priority, setup, search, skill_id
    FROM resourceload
    WHERE alternate IS NOT NULL AND alternate <> ''
    ORDER BY operation_id, resource_id
    ''')
    curresname = None
    for i, j, k, l, m, n, o, p, q, r, s in cursor.fetchall():
        cnt += 1
        try:
            if j != curresname:
                curresname = j
                curres = frepple.resource(name=curresname)
            curload = frepple.load(operation=frepple.operation(name=i),
                                   resource=curres,
                                   quantity=k)
            if l: curload.effective_start = l
            if m: curload.effective_end = m
            if n: curload.name = n
            if o: curload.alternate = o
            if p: curload.priority = p
            if q: curload.setup = q
            if r: curload.search = r
            if s: curload.skill = frepple.skill(name=s)
        except Exception as e:
            print("Error:", e)
    print('Loaded %d loads in %.2f seconds' % (cnt, time() - starttime))